00001 #ifndef GLOBPREP_H 00002 #define GLOBPREP_H 00003 00004 #include "vector.h" 00005 #include "siftop.h" 00006 #include "list.h" 00007 #include "alias.h" 00008 #include "global.h" 00009 #include "loadel.h" 00010 #include "hangnode.h" 00011 #include "bocon.h" 00012 #include "inicd.h" 00013 #include "dbcrs.h" 00014 #include "dbmat.h" 00015 #include "entityload.h" 00016 #include "pointset.h" 00017 #include "tempload.h" 00018 00019 #ifndef EXTERN 00020 #define EXTERN extern 00021 #endif 00022 00023 EXTERN FILE *Log; ///< Log file of mechprep 00024 EXTERN siftop *Top; ///< Sifel topology 00025 EXTERN dbmat *Dbmat; ///< database of materials and their parameters 00026 EXTERN dbcrs *Dbcrs; ///< database of cross-sections and their parameters 00027 00028 EXTERN long Nlc; ///< number of loading cases 00029 EXTERN long *Nslc; ///< number of loading cases 00030 EXTERN long *Nslc_cum;///< cumulative number of subload cases, Nslc_cum[i] = sum(0,j<i)(Nslc[j]) 00031 EXTERN long Tnslc; ///< total number of all subload cases 00032 EXTERN long Nlay; ///< number of layers for layered problems 00033 EXTERN long Nspd; ///< number of values of static prescribed displacements 00034 EXTERN long Ndpd; ///< number of values of dynamic prescribed displacements 00035 EXTERN long Numhn; ///< number of hanging nodes 00036 EXTERN long Ntempl; ///< indicator of temprature load 00037 EXTERN gfunct *Tf; ///< array of time functions used in time dependent mechanical problems for each load case 00038 EXTERN dynload Tdload; ///< type of time dependent load 00039 EXTERN long *Tlt; /**< array of temperature load type for every load case 00040 usage: Tlt[i] = type of temperature load case for subloadces with cumulative number i */ 00041 EXTERN long *Npd; /**< array with numbers of prescribed displacements used in growing mechanical problems 00042 usage: Npd[i] = number of prescribed displacements in subloadces with cumulative number i */ 00043 EXTERN double **Spd; /**< array with values of prescribed displacements used for particular subloadcases in growing mechanical problems 00044 usage: Spd[i][j]= value of j-th prescribed displacement for subloadcase with cumulative number i */ 00045 EXTERN long Nmstrc; ///< number of macro stress components in homogenization problem 00046 EXTERN double **Mstrc; ///< array of macro stress components for particular load cases Mstrc[lcid][comp_id] 00047 00048 // Following arrays have size equal to number of nodes (first index has to be node number) 00049 EXTERN hangnode **Nod_hang; ///< connectivity of hanging nodes 00050 EXTERN long *Nod_ndof; ///< number of degrees of freedom (dofs) at nodes 00051 EXTERN bocon **Nod_bocon; ///< boundary conditions at nodes (prescribed values of unknowns) 00052 EXTERN long **Nod_ccn; ///< prescribed coupled dofs at nodes 00053 EXTERN crsectype *Nod_cst; ///< cross-section types at nodes 00054 EXTERN long *Nod_csti; ///< cross-section indeces at nodes 00055 EXTERN long *Nod_cstdbi; ///< cross-section type indeces of nodes in cross-section database 00056 EXTERN vector **Nod_lcs; ///< base vectors of local coordinate systems at nodes 00057 EXTERN double ***Nod_load; ///< load components at nodes, Nod_load[nod_id][lcid][comp_id] 00058 EXTERN gfunct ***Nod_tdload; ///< time dependent load components at nodes, Nod_tdload[nod_id][lcid][comp_id] = gfunct for given load component 00059 EXTERN inicd ***Nod_inicd; ///< initial conditions at nodes, Nod_inicd[nod_id][lcid] = pointer to initial condition structure 00060 EXTERN tempload ***Nod_temper; ///< temperature load at nodes, Nod_temper[nod_id][lcid] = pointer to the temperature load 00061 EXTERN long **Nod_nsprmat; ///< Nod_nsprmat[nod_id][dir] = number of materials for spring support at node nod_id and direction dir 00062 EXTERN mattype ***Nod_sprmattype; ///< Nod_sprmattype[nod_id][dir][idm] = idm-th material type for spring support at node nod_id and direction dir 00063 EXTERN long ***Nod_sprmatid; ///< Nod_sprmatid[nod_id][dir][idm] = idm-th material index for spring support at node nod_id and direction dir 00064 EXTERN long ***Nod_sprmatdbi; ///< Nod_sprmatdbi[nod_id][dir][idm] = index of idm-th material type in dbmat for spring support at node nod_id and direction dir 00065 00066 // Following arrays have size equal to number of elements (first index has to be element number) 00067 EXTERN elemtype *El_type; ///< type of elements 00068 EXTERN strastrestate *El_ssst; ///< strain/stress state of elements 00069 EXTERN long *El_nmat; ///< number of material types assigned to particular elements 00070 EXTERN mattype **El_mattype;///< material type of elements 00071 EXTERN long **El_matid; ///< material indeces of elements 00072 EXTERN long **El_matdbi; ///< material type indeces of elements in material database 00073 EXTERN crsectype *El_cst; ///< cross-section of elements 00074 EXTERN long *El_csti; ///< cross-section indeces of elements 00075 EXTERN long *El_cstdbi; ///< cross-section type indeces of elements in cross-section database 00076 EXTERN vector **El_lcs; ///< base vectors of local coordinate systems at elements 00077 EXTERN loadel ***El_load; ///< element load, El_load[el_id][lcid] = pointer to loadel structure 00078 EXTERN long ***El_loadln; ///< lines where the edge|surface|volume El_load has been assigned firstly, El_loadln[el_id][lcid][0|1|2] first line with assignment of edge|surface|volume load 00079 EXTERN long ***El_loadcol;///< columns where the edge|surface|volume El_load has been assigned firstly, El_loadln[el_id][lcid][0|1|2] first column with assignment of edge|surface|volume load 00080 EXTERN long *El_tfunc; ///< indeces of time fucntions for switching elements on/off 00081 EXTERN long **El_eigstr; ///< indeces of gfuncts for particular eigenstrain components on elements, El_eigstr[el_id][k] = index of gfunct in list El_eigstrgf_lst which defines the k-th eigenstrain component 00082 EXTERN list El_eigstrgf_lst;///< list of gfuncts for eigenstrains on elements 00083 00084 // Auxiliary variables 00085 EXTERN long Check_unused_prop; ///< Flag for checking of unused properties 00086 00087 #endif