00001 #ifndef PROBDESC_H 00002 #define PROBDESC_H 00003 00004 #include <stdio.h> 00005 #include "alias.h" 00006 #include "galias.h" 00007 #include "gfunct.h" 00008 #include "timecontr.h" 00009 #include "hdbcontr.h" 00010 #include "slesolv.h" 00011 #include "nonlinman.h" 00012 #include "eigvalsol.h" 00013 #include "xfile.h" 00014 00015 00016 class auxdatout; 00017 class gmatrix; 00018 00019 /** 00020 class probdesc 00021 00022 it is one of the five most important classes of the program 00023 (probdesc, mechtop, mechmat, mechbclc, mechcrsec) 00024 00025 00026 JK, TK 00027 */ 00028 00029 class probdesc 00030 { 00031 public: 00032 probdesc (); 00033 ~probdesc (); 00034 void read (XFILE *in); 00035 void print (FILE *out); 00036 00037 // for open dx 00038 long detnodstrain; 00039 00040 /// keyword processing option 00041 pkwd_sw kwdsw; 00042 00043 /// problem name 00044 char name[1001]; 00045 00046 /// type of problem 00047 problemtype tprob; 00048 00049 /// STORAGE TYPES 00050 /// type of storage of stiffness matrix 00051 storagetype tstorsm; 00052 /// type of storage of mass matrix 00053 storagetype tstormm; 00054 00055 00056 /// DAMPING 00057 /// type of damping 00058 damping damp; 00059 /// mass matrix coefficient 00060 double dmass; 00061 /// stiffness matrix coefficient 00062 double dstiff; 00063 00064 00065 /// time 00066 double time; 00067 /// actual time increment 00068 double dtime; 00069 /// time controller 00070 timecontr timecon; 00071 /// load coefficient 00072 double lambda; 00073 /// actual load coeficient increment 00074 double dlambda; 00075 /// index of actual load step (arclength,. ..) 00076 long istep; 00077 /// index of actual iteration step (Newton-Raphson) 00078 long jstep; 00079 00080 00081 /// number of subdomains in hemivariational inequalities 00082 ///long nsub; 00083 00084 00085 /// SOLVER TYPES 00086 /// type of eigenvibration solver 00087 eigvalsol eigsol; 00088 /// type of forced vibration solver 00089 forcedsolver tforvib; 00090 /// type of earth pressure solver 00091 epsolvertype tepsol; 00092 00093 /// data about solver of system of linear equations 00094 slesolv *ssle; 00095 /// data about solver of system of nonlinear equations 00096 nonlinman *nlman; 00097 /// data about solver of eigenvalues and eigenvectors 00098 //eigvalsol eig; 00099 00100 00101 /// threshold for rejection from compressed storages 00102 double limit; 00103 /// computer zero 00104 double zero; 00105 00106 00107 00108 00109 /// FORCED VIBRATION SOLVER 00110 /// coefficients of the Newmark method 00111 double alphafvn,deltafvn; 00112 00113 00114 00115 // VISCO-PROBLEM SOLVER 00116 00117 /** Flag for non-local matrial models 00118 phase=1 - evaluation of local variables 00119 phase=2 - evaluation of non-local variables */ 00120 long nonlocphase; 00121 00122 /** variable for computation of internal forces at nodes 00123 nodeintfor=0 - internal forces are not computed at nodes 00124 nodeintfor=1 - internal forces are computed at nodes */ 00125 long nodeintfor; 00126 00127 /** Stress computation flag 00128 strcomp=0 - stresses are not computed during evaluation of internal forces 00129 this is used for initiation of static nonlinear problems 00130 strcomp=1 - stresses are computed during evaluation of internal forces 00131 except of the previous case, this is always used */ 00132 long strcomp; 00133 00134 00135 /** Eigenstress computation flag 00136 strcomp=0 - Eigenstresses are not computed during evaluation of eigenstress forces 00137 this is used for computation of nodal forces due to pore pressures in partialy coupled problems 00138 strcomp=1 - Eigenstresses are computed during evaluation of eigenstress forces (due to prescribed eigenstrains or 00139 due to thermal starins. Except of the previous case, this is always used */ 00140 long eigstrcomp; 00141 00142 00143 // EARTH-PRESSURE SOLVER 00144 /// maximum number of increments 00145 long niep; 00146 /// required norm of vector of unbalanced forces 00147 double errep; 00148 /// load step size for the load iteration algorithm 00149 double stepep; 00150 /// required error of lambda value in the arclength method 00151 double rlerrep; 00152 /// number of selected nodes for earth pressure problems, where will be variable supports 00153 long nselnodep; 00154 /// selected nodes for earth pressure problems, where will be variable supports 00155 long *selnodep; 00156 /// coeficient for static load, which simulates excaving material; number of coef. equals to niep 00157 double *loadcoef; 00158 00159 00160 00161 /// type of material model (local x non-local) 00162 materialmodel matmodel; 00163 00164 /// compute strains 00165 /// straincomp=0 - strains are not computed 00166 /// straincomp=1 - strains are computed 00167 long straincomp; 00168 /// strain averaging 00169 /// strainaver=0 - values are not averaged 00170 /// strainaver=1 - values are averaged, arithmetic average is used 00171 /// strainaver=2 - values are averaged, volume average is used 00172 long strainaver; 00173 /// state of strain computation 00174 /// strainstate = 0 - strains at integration points have not been computed 00175 /// strainstate = 1 - strains at integration points have been computed 00176 long strainstate; 00177 /// position where strains are computed 00178 /// strainpos = 1 - integration points 00179 /// strainpos = 2 - nodes, values are copied from the closest integration point 00180 /// strainpos = 3 - nodes, values are computed at nodes 00181 long strainpos; 00182 00183 /// compute stresses 00184 /// stresscomp=0 - stresses are not computed 00185 /// stresscomp=1 - stresses are computed 00186 long stresscomp; 00187 /// stress averaging 00188 /// stressaver=0 - values are not averaged 00189 /// stressaver=1 - values are averaged, arithmetic average is used 00190 /// stressaver=2 - values are averaged, volume average is used 00191 long stressaver; 00192 /// state of stress computation 00193 /// stressstate = 0 - stresses at integration points have not been computed 00194 /// stressstate = 1 - stresses at integration points have been computed 00195 long stressstate; 00196 /// position where stresses are computed 00197 /// stresspos = 1 - integration points 00198 /// stresspos = 2 - nodes, values are copied from the closest integration point 00199 /// stresspos = 3 - nodes, values are computed at nodes 00200 long stresspos; 00201 00202 /// compute other values 00203 /// othercomp=0 - components of other array are not computed 00204 /// othercomp=1 - components of other array are computed 00205 long othercomp; 00206 /// other values averaging 00207 /// otheraver=0 - components of other array are not averaged 00208 /// otheraver=1 - components of other array are averaged, arithmetic average is used 00209 /// otheraver=2 - components of other array are averaged, volume average is used 00210 long otheraver; 00211 /// state of other computation 00212 /// otherstate = 0 - other components have not been computed 00213 /// otherstate = 1 - other components have been computed 00214 long otherstate; 00215 /// position where components of array other are computed 00216 /// otherpos = 1 - integration points 00217 /// otherpos = 2 - nodes, values are copied from the closest integration point 00218 long otherpos; 00219 00220 /// compute reactions 00221 /// reactcomp=0 - reactions are not computed 00222 /// reactcomp=1 - reactions are computed 00223 long reactcomp; 00224 00225 /// adaptivity calculation indicator 00226 /// adaptivity == 0 - no adaptivity calculation 00227 /// adaptivity == 1 - adaptivity calculation - SPR type 00228 /// adaptivity == 2 - adaptivity calculation - Z2 type 00229 long adaptivityflag; 00230 00231 /// stochastic calculation indicator 00232 /// stochasticcalc=0 - deterministic computation 00233 /// stochasticcalc=1 - stochastic/fuzzy computation, data are read all at once 00234 /// stochasticcalc=2 - stochastic/fuzzy computation, data are read sequentially 00235 /// stochasticcalc=3 - stochastic/fuzzy computation, data are generated in the code 00236 long stochasticcalc; 00237 00238 /// indicator of eigenstrains 00239 long eigstrains; 00240 00241 /// indicator of temperature 00242 /// temperature=0 - problem without influence of temperature 00243 /// temperature=1 - problem with influence of defined temperature 00244 /// temperature=2 - problem with influence of computed temperature 00245 long temperature; 00246 00247 /** indicator of pore pressures 00248 pore_press=0 - problem without influence of pore pressures 00249 pore_press=1 - problem with influence of defined pore pressure, partially coupled approach, set by MEFEL 00250 pore_press=2 - problem with influence of computed pore pressure, partially coupled approach, set by METR 00251 pore_press=3 - problem with influence of computed pore pressure, fully coupled approach, Set by METR 00252 */ 00253 long pore_press; 00254 00255 /// type of layered problem 00256 long tlm; 00257 00258 /// number of simulation 00259 long ns; 00260 00261 /// definition of homogenization 00262 /// homog = 0 - homogenization is switched off 00263 /// homog = 1 - homogenization is switched on 00264 /// homog = 2 - homogenization is based on Wang's tiles 00265 /// homog = 3 - homogenization is based on stress approach 00266 /// homog = 4 - homogenization is based on strain approach 00267 long homog; 00268 00269 /// type of macro-micro problem correspondence 00270 /// mami=1 - elements are connected with microproblems 00271 /// mami=2 - aggregates of elements are connected with microproblems, each element from the aggregate sends its own data 00272 /// mami=3 - aggregates of elements are connected with microproblems, values from elements are averaged and one packet of data is sent to microproblem 00273 macromicrotype mami; 00274 00275 /// the number of Wang's tiles (the number of 00276 /// different tiles, e.g. 8) 00277 long ntiletypes; 00278 00279 00280 /// number of particles in one cell describing molecular structure 00281 /// it has similar meaning as number nodes on one finite element 00282 long mcnne; 00283 00284 /// dimension of solved problem 00285 long dim; 00286 00287 /// estimated number of rigid body motions 00288 long ense; 00289 00290 /// number of iterations in method of variable stiffness 00291 long nivsm; 00292 00293 00294 // number of increments in floating subdomain problems 00295 long nincr; 00296 00297 // Decomposed filename of the output(input) filename 00298 char *path; /// path of the output(input) filename 00299 char *filename; /// filename of the output(input) filename 00300 char *suffix; /// suffix of the output(input) filename 00301 00302 // NEWTON-RAPHSON METHOD 00303 /// maximum number of iterations in inner loop 00304 /// maximum number of iterations in one increment 00305 long niilnr; 00306 /// required norm of vector of unbalanced forces 00307 double errnr; 00308 00309 /// type of fully coupled solver 00310 /// nrsolv = 1 - full newton method (matrices are recomputed in all internal loops) 00311 /// nrsolv = 2 - modified Newton method (matrices are recomputed only in new increment) 00312 nonlintimesolvertype nrsolv; 00313 00314 /// flag fro computing of initial displacements of new structure parts used in growing problems 00315 /// comp_inidispl = 0 (no - default value) - initial displacements are taken only from interface nodes 00316 /// comp_inidispl = 1 (yes) - initial displacements due to attained displacements on interface nodes are calculated 00317 answertype comp_inidispl; 00318 00319 /// minimum time increment 00320 double dtmin; 00321 00322 00323 /// type of time printing 00324 timetypeprin tpr; 00325 00326 /// type of algorithm for load balancing method 00327 /// lbtype=1 - program stops after negm is known 00328 /// lbtype=0 - program goes on after negm is known 00329 long lbtype; 00330 00331 /// backup controler 00332 hdbcontr hdbcont; 00333 00334 /// array used in connection with important times of the time controller 00335 /// hdbtime[i] = 0 (no) - the backup will not be performed in the i-th important time 00336 /// hdbtime[i] = 1 (yes) - the backup will performed in the i-th important time 00337 answertype *hdbtime; 00338 00339 /** Array used in the connection with important times of the time controller 00340 outdrv_time[i] = 0 (no) - the output of the outdriver will not be performed in the i-th important time 00341 outdrv_time[i] = 1 (yes) - the output of the oputdriver will performed in the i-th important time 00342 The array is taken into account only in the case that the time step selection is set to sel_impvalues in the outdriver 00343 otherwise is ignored. */ 00344 answertype *outdrv_time; 00345 }; 00346 00347 #endif