00001 #ifndef MECHTOP_H
00002 #define MECHTOP_H
00003
00004 #include <stdio.h>
00005 #include "alias.h"
00006 #include "iotools.h"
00007 class node;
00008 class element;
00009 class endnodem;
00010 class edgem;
00011 class siftop;
00012 struct matrix;
00013 struct vector;
00014 struct ivector;
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 class mechtop
00030 {
00031 public:
00032 mechtop (void);
00033 ~mechtop (void);
00034 void read (XFILE *in);
00035 void print (FILE *out);
00036
00037 void searching_hanging_nodes (FILE *Out);
00038 void elemprescdisp (void);
00039 void elempresctemp (long lcid);
00040 elemtype give_elem_type (long eid);
00041 long give_ndofe (long eid);
00042 long give_ndofn (long nid);
00043 long give_dof (long nid,long n);
00044 void give_nodal_coord (long nid, vector &c);
00045 long give_nne (long eid);
00046 long give_nip (long eid, long ri, long ci);
00047 long give_intordsm (long eid, long ri, long ci);
00048 long give_tnip (long eid);
00049 long give_totnip (long eid);
00050 long give_ncomp (long eid,long bid);
00051 long give_tncomp (long eid);
00052 long give_ned (long eid);
00053 long give_nned (long eid);
00054 long give_nsurf (long eid);
00055 long give_nnsurf (long eid);
00056 long give_napfun (long eid);
00057 long give_dimension (long eid);
00058 long give_nb (long eid);
00059 long give_nb_te (elemtype te);
00060
00061 strastrestate give_ssst (long eid,long bi);
00062 long give_degree (long eid);
00063 void give_edge_nodes (long eid,long edid,long *nodes);
00064 void give_elemnodes (long eid,ivector &nodes);
00065 void give_code_numbers (long eid,long *cn);
00066 void give_node_code_numbers (long nid,long *cn);
00067 void give_mult_code_numbers (long nid,long lid,long *cn);
00068 void give_node_coord1d (vector &x,long eid);
00069 void give_node_coord2d (vector &x,vector &y,long eid);
00070 void give_node_coord2dxz (vector &x,vector &z,long eid);
00071 void give_node_coord3d (vector &x,vector &y,vector &z,long eid);
00072 void give_ipcoord_elem(long eid, matrix &coord);
00073 double give_length(long eid);
00074 double give_area(long eid);
00075 double give_volume(long eid);
00076 double give_domain_vol();
00077 void give_maxncompstr (long &max_ncompstrn, long &max_ncompstre);
00078 void give_maxncompo (long &max_nncompo, long &max_encompo);
00079 long give_maxndofn();
00080 long locsystems (ivector &nod);
00081 void comreacnod (void);
00082 void comreacelem (void);
00083 void comreac (void);
00084 void strain_nodal_values (ivector &nod,vector &nx,vector &ny,vector &nz,
00085 double *lhs,long dim,long fi,long ncomp,long lcid);
00086 void stress_nodal_values (ivector &nod,vector &nx,vector &ny,vector &nz,
00087 double *lhs,long dim,long fi,long ncomp,long lcid);
00088 void other_nodal_values (ivector &nod,vector &nx,vector &ny,vector &nz,
00089 double *lhs,long dim,long fi,long ncomp);
00090 void give_nodal_strain(long nid, vector &stra);
00091 void give_nodal_stress(long nid, vector &stre);
00092 void give_nodal_other(long nid, vector &othv);
00093
00094 void store_code_num_elem(void);
00095 void alloc_nodes_arrays (void);
00096 void alloc_enodes ();
00097 void alloc_edges ();
00098 void alloc_prep (long nn, long ne, elemtype *el_type);
00099 void alloc_meaning ();
00100 void alloc_growstr ();
00101 void define_meaning ();
00102
00103 void gencodnumlagrmult (long &n);
00104 long compare_edges (long *enod, long *enodc, long nned);
00105
00106
00107
00108 void give_noddispl_1d (ivector &nodes,vector &u);
00109 void give_noddispl_2d (ivector &nodes,vector &u,vector &v);
00110 void give_noddispl_3d (ivector &nodes,vector &u,vector &v,vector &w);
00111
00112 void init_from_siftop (siftop *Top);
00113
00114 void clean_nodes ();
00115
00116 void initial_displ (long lcid);
00117 void initial_displ_nodes (long lcid);
00118 void save_nodedispl_bc (long lcid, double time, double prev_time);
00119
00120 void save_node_inidispl(long lcid, double time, double prev_time);
00121
00122 void save_elem_inidispl(long lcid, long *ifn);
00123
00124 void clean_ip_new_elem();
00125 void save_nodval(long lcid);
00126 void restore_nodval (double *lhs,long n);
00127 void save_nodforce(double *f);
00128 void restore_nodforce(double *rhs,long n);
00129 void rhs_save (double *rhs);
00130 void rhs_restore (double *rhs,long n);
00131 long mesh_check(void);
00132
00133
00134 long nn;
00135
00136 long ncn;
00137
00138 long ne;
00139
00140
00141
00142 long nln;
00143
00144
00145 long max_ndofn;
00146
00147
00148 node *nodes;
00149
00150 element *elements;
00151
00152 endnodem *enodes;
00153
00154 edgem *edges;
00155
00156
00157
00158
00159 long *nadjip;
00160
00161 long **adjip;
00162
00163 double **dist;
00164
00165
00166
00167 long tned;
00168
00169
00170
00171
00172 long *nodebcid;
00173
00174
00175 double **nodedispl;
00176
00177
00178 double **nodeforce;
00179
00180
00181 double domvol;
00182 };
00183
00184 #endif