00001 #ifndef MECHMAT_H 00002 #define MECHMAT_H 00003 00004 00005 #include <stdio.h> 00006 #include "alias.h" 00007 #include "aepoints.h" 00008 #include "iotools.h" 00009 #include "selection.h" 00010 00011 class intpoints; 00012 class elastisomat; 00013 class elastortomat; 00014 class elastgmat3d; 00015 class splas1d; 00016 class j2flow; 00017 class j2flow2; 00018 class microM4; 00019 class microSIM; 00020 class microfiber; 00021 class mohrcoulomb; 00022 class mohrcoulombpar; 00023 class boermat; 00024 class drprag; 00025 class doubdp; 00026 class drprag2; 00027 class camclay; 00028 class camclaycoup; 00029 class shefplast; 00030 class hissplas; 00031 class glasgmech; 00032 class glasgowdam; 00033 class creepdam; 00034 class timeswmat; 00035 class effstress; 00036 class svisplas; 00037 class simviscous; 00038 class lemaitre; 00039 class scaldam; 00040 class fixortodam; 00041 class scaldamcc; 00042 class ortodam; 00043 class ortodamrot; 00044 class anisodam; 00045 class anisodamrot; 00046 class aci78; 00047 class cebfip78; 00048 class graphmat; 00049 class varelastisomat; 00050 class b3mat; 00051 class rspecmat; 00052 class dplmat; 00053 class creepb; 00054 class creep_effym; 00055 class consol; 00056 class winpast; 00057 class nonlocmicroM4; 00058 struct matrix; 00059 struct vector; 00060 class therisomat; 00061 class nonlocplast; 00062 class nonlocdamg; 00063 class damplast; 00064 class geoelastmat; 00065 class visplast; 00066 class chen; 00067 class lenjonesmat; 00068 class contactmat; 00069 class cebfipcontactmat; 00070 class layplate; 00071 class relaxeuroc; 00072 class shrinkmat; 00073 class hypoplast; 00074 00075 00076 /** 00077 Class mechmat: 00078 00079 It is one of the 5 most important classes of the program. 00080 (probdesc, mechtop, mechmat, mechbclc, mechcrsec) 00081 00082 Class mechmat contains data about materials in problem. 00083 00084 basic data: 00085 - nip (long) - stands for number of all integration points for stiffness matrix computation in problem 00086 - nmt (long) - stands for number of material types 00087 00088 Class mechmat creates nip objects of class intpoints. 00089 00090 Created by JK, TKo 00091 */ 00092 class mechmat 00093 { 00094 public: 00095 mechmat (); 00096 ~mechmat (); 00097 00098 /// determines number of integration points and sets integration point pointers on elements 00099 long intpnum (void); 00100 00101 /// allocation of array of integration points 00102 void intpointalloc (); 00103 00104 /// allocation of array of intial conditions 00105 void alloc_ic (); 00106 00107 /// allocation of array of non-mechanical quantities 00108 void alloc_nonmechq(long n); 00109 00110 /// obsolate function for reading material properties on individual integration points 00111 void readip (XFILE *in); 00112 00113 /// zero stage of int. point intialization - copying material ids from elements to int. points 00114 void intpointinit (); 00115 00116 /// the first stage of int. point intialization - setting of ncompstr, ssst according to used elements 00117 void init_ip_1 (void); 00118 00119 /// the second stage of int. point intialization - allocation of strain/stress/eqother/other on int. points 00120 void init_ip_2 (void); 00121 00122 /// reading of materials and their parameters 00123 void read (XFILE *in); 00124 00125 /// reading of materials and their parameters 00126 void readmatchar (XFILE *in); 00127 00128 /// reading of numinst material parameters for the given material type 00129 void readmattype (XFILE *in, mattype mtype, long numinst); 00130 00131 /// printing of materials 00132 void print (FILE *out); 00133 00134 /// printing of individual materials and their parameters 00135 void printmatchar (FILE *out, mattype mt, long numinst); 00136 00137 /// allocates array for eigenstrain storage 00138 void alloceigstrains (); 00139 00140 /// stes eigenstrains to zero 00141 void nulleigstrains (); 00142 00143 /// allocates array for thermal strain storage 00144 void alloctempstrains (); 00145 00146 /// sets thermal strains to zero 00147 void nulltempstrains (); 00148 00149 void nullstrains (); 00150 00151 void nullstresses (); 00152 00153 /// allocates array for eigenstress storage set it to zero 00154 void alloceigstresses (); 00155 00156 /// initailizes material models for all int. points before begining of main computation procedure 00157 void initmaterialmodels (long lcid); 00158 00159 /// initailizes material models for the given int. point 00160 void initvalues (long lcid, long ipp,long im,long ido); 00161 00162 00163 00164 // ***************************************************************************** 00165 // Function used for access to stress/strain/eqother/other arrays on int. points 00166 // ***************************************************************************** 00167 00168 /// storage of strains on given int. point for given load case 00169 void storestrain (long lcid,long ipp,vector &eps); 00170 00171 /// storage of strain components from given index on int. point for given load case 00172 void storestrain (long lcid,long ipp,long fi,vector &eps); 00173 00174 /// storage of given number of strain components from given index on int. point for given load case 00175 void storestrain (long lcid,long ipp,long fi,long ncomp,vector &eps); 00176 00177 /// storage of given number of strain components from given index on int. point for given load case 00178 void storestrain (long lcid, long ipp, long fi, long ncomp, double *eps); 00179 00180 /// returns strains on given int. point for given load case 00181 void givestrain (long lcid,long ipp,vector &eps); 00182 00183 /// returns strain components from given index on int. point for given load case 00184 void givestrain (long lcid,long ipp,long fi,vector &eps); 00185 00186 /// retruns given number of strain components from given index on int. point for given load case 00187 void givestrain (long lcid,long ipp,long fi,long ncomp,vector &eps); 00188 00189 /// sets strains to zero 00190 void cleanstrain (); 00191 00192 /// storage of stresses on given int. point for given load case 00193 void storestress (long lcid,long ipp,vector &sig); 00194 00195 /// storage of stress components from given index on int. point for given load case 00196 void storestress (long lcid,long ipp,long fi,vector &sig); 00197 00198 /// storage of stress components from given index on int. point for given load case 00199 void storestress (long lcid,long ipp,long fi,long ncomp,vector &sig); 00200 00201 /// storage of stress components from given index on int. point for given load case 00202 void storestress (long lcid,long ipp,long fi,long ncomp,double *sig); 00203 00204 /// returns stresses on given int. point for given load case 00205 void givestress (long lcid,long ipp,vector &sig); 00206 00207 /// returns stress components from given index on int. point for given load case 00208 void givestress (long lcid,long ipp,long fi,vector &sig); 00209 00210 /// retruns given number of stress components from given index on int. point for given load case 00211 void givestress (long lcid,long ipp,long fi,long ncomp,vector &sig); 00212 00213 /// storage of eigenstrains for given int. point 00214 void storeeigstrain (long ipp,vector &eps); 00215 00216 /// store given eigenstrain components for given int. point 00217 void storeeigstrain (long ipp,long fi,long ncomp,vector &eps); 00218 00219 /// retruns eigenstrains for given int. point 00220 void giveeigstrain (long ipp,vector &eps); 00221 00222 /// retruns given eigenstrain components for given int. point 00223 void giveeigstrain (long ipp,long fi,long ncomp,vector &eps); 00224 00225 /// storage of eigenstresses for given int. point 00226 void storeeigstress (long ipp,vector &sig); 00227 00228 /// storage of given eigenstress components on given int. point 00229 void storeeigstress (long ipp,long fi,long ncomp,vector &sig); 00230 00231 /// returns eigenstresses for given int. point 00232 void giveeigstress (long ipp,vector &sig); 00233 00234 /// returns eigenstress components from given id on given int. point 00235 void giveeigstress (long ipp,long fi,vector &sig); 00236 00237 /// returns given eigenstress components on given int. point 00238 void giveeigstress (long ipp,long fi,long ncomp,vector &sig); 00239 00240 /// storage of given internal variable components on given int. point 00241 void storeeqother (long ipp,long fi,long ncomp,double *comp); 00242 00243 /// returns given internal variable components on given int. point 00244 void giveeqother (long ipp,long fi,long ncomp,double *comp); 00245 00246 /// storage of given internal variable components on given int. point 00247 void storeother (long ipp,long fi,long ncomp,double *comp); 00248 00249 /// returns the number of other array components on given int. point (num. of internal variables used by material models) 00250 long givencompother (long ipp,long im); 00251 00252 /// returns the number of eqother array components on given int. point (num. of internal variables used by material models) 00253 long givencompeqother (long ipp,long im); 00254 00255 /// storage of given nonlocal values on given integration point 00256 void storenonloc (long ipp,long fi,long ncomp,double *comp); 00257 00258 /// returns given nonlocal values from integration point 00259 void givenonloc (long ipp,long fi,long ncomp,double *comp); 00260 00261 00262 00263 // ****************************************************************** 00264 // Functions for retrieving of mechanical quantities from int. points 00265 // ****************************************************************** 00266 00267 /// returns tensor quantity for integral \int B^T \mbf{q} dV on element (nodal force computation) 00268 void givequantity (integratedquant iq,long lcid,long ipp,long fi,vector &ipv); 00269 00270 /// returns actual Young modulus for given integration point 00271 double give_actual_ym(long ipp, long im=0, long ido=0); 00272 00273 /// returns initial Young modulus for given integration point 00274 double give_initial_ym(long ipp, long im=0, long ido=0); 00275 00276 /// returns actual Poissons ratio for given integration point 00277 double give_actual_nu(long ipp, long im=0, long ido=0); 00278 00279 /// returns initial Poissons ratio for given integration point 00280 double give_initial_nu(long ipp, long im=0, long ido=0); 00281 00282 /// returns actual tensile strength (for damage models) 00283 double give_actual_ft (long ipp, long im=0, long ido=0); 00284 00285 /// returns actual compression strength (for damage models) 00286 double give_actual_fc (long ipp, long im=0, long ido=0); 00287 00288 /// returns required mechanical quantity for passed to TRFEL 00289 double givemechq(nontransquant qt, long ipp); 00290 00291 /// returns preconsolidation pressure for Cam-Clay type models 00292 double give_preconspress(long ipp, long im=0, long ido=0); 00293 00294 /// returns virgin porostity for Cam-Clay type models 00295 double give_virgporosity(long ipp, long im=0, long ido=0); 00296 00297 /// returns initial porosity for Cam-Clay type models 00298 double give_iniporosity(long ipp, long im=0, long ido=0); 00299 00300 /// returns consistency parameter for plasticity models 00301 double give_consparam (long ipp, long im=0, long ido=0); 00302 00303 /// returns damage parameter omega 00304 double give_dampar (long ipp,long im=0,long ido=0); 00305 00306 /// returns length of process zone 00307 double give_proczonelength (long ipp,long im=0,long ido=0); 00308 00309 /// returns crack width 00310 double give_crackwidth (long ipp,long im=0,long ido=0); 00311 00312 /// returns equivalent strain for damage models 00313 void give_kappa(long ipp,long im,long ido, vector &kappa); 00314 00315 /// return irreversible strains for nonlinear material models 00316 void giveirrstrains(long ipp, long im, long ido, vector &epsirr); 00317 00318 00319 00320 00321 // ********************************************************************** 00322 // Functions for retrieving of non-mechanical quantities from int. points 00323 // ********************************************************************** 00324 00325 /// searches for the number and types of required non-mechanical quantities at all material models 00326 long search_reqnmq(nonmechquant* &rnmq); 00327 00328 /// marks required types of non-mechanical quantities by the given material model in the given int. point 00329 void give_reqnmq(long ipp, long im, long *anmq); 00330 00331 /// returns given non-mechanical quantity from nonmechq array on given integration point 00332 double givenonmechq (nonmechquant qt, long ipp); 00333 00334 /// stores given non-mechanical quantity from nonmechq array on given integration point 00335 void storenonmechq (nonmechquant qt, long ipp, double val); 00336 00337 /// returns status of non-mechanical quantity (stored in nonmechq 1, otherwise 0) 00338 long givestatusnmq (nonmechquant qt); 00339 00340 /// returns status of non-mechanical quantity (stored in nonmechq 1, otherwise 0) 00341 long givenonmechqid (nonmechquant qt); 00342 00343 00344 00345 00346 // ******************************************* 00347 // Functions connected with stress calculation 00348 // ******************************************* 00349 00350 /// computes the stiffness matrix for the given integration point and material 00351 void matstiff (matrix &d, long ipp, long im=0, long ido=0); 00352 00353 /// computes elastic stiffness matrix 00354 void elmatstiff (matrix &d, long ipp); 00355 00356 /// computes elastic stiffness matrix in the local coordinate system 00357 void loc_elmatstiff (matrix &d, long ipp); 00358 00359 /// returns transformation %matrix to the material local coordinate system (x_g = T x_l) 00360 void loc_transf_mat (matrix &tmat, long ipp); 00361 00362 /// computes elastic complience matrix 00363 void elmatcompl (matrix &c, long ipp); 00364 00365 /// computes eigenstress and corresponding eigenstrains defined by relaxation material models 00366 void eigenstresses (vector &sig, long ipp, long id); 00367 00368 /// computes stresses with respect to material model and store them in the given int. point 00369 00370 void computenlstresses (long ipp, long im=0, long ido=0); 00371 00372 /// computes stress increments with respect to material model and store them in the given int. point 00373 void computenlstressesincr (long ipp, long im=0, long ido=0); 00374 00375 /// computes stress with respect to non-local material model and store them in the given int. point 00376 void compnonloc_nlstresses (long ipp, long im=0, long ido=0); 00377 00378 /// compute averaged values of strains //???!!! candidate for removal 00379 void compute_averstrains (); 00380 00381 /// compute strains due to temperature changes (thermal strains) 00382 void temprstrains (); 00383 00384 /// subtracts eigenstrains and thermal strains from total strains on integration points 00385 void eigstrmod (); 00386 00387 /// function adds macro-strain components to the strain %vector which contains fluctuation strains 00388 void add_macro_strains (vector ¯ostrains); 00389 00390 /// reassambles total strains - adds eigenstrains and thermal strains to strains on integration points 00391 void totstrains (); 00392 00393 /// computes thermal dilatancy matrix 00394 void matdilat (matrix &d, long ipp); 00395 00396 /// stores appropriate volume of element belonging to given int. point 00397 void storeipvol (long ipp, double vol); 00398 00399 /// computes averaged local values for non-loacl material models 00400 void nonlocaverage (long ipp, long im=0, long ido=0); 00401 00402 /// returns the number of averaged local values. 00403 long give_num_averq(long ipp, long im); 00404 00405 /// returns vector of averaged quantities 00406 void give_aver_quantv(long ipp, long im, long ido, vector &qv); 00407 00408 /// returns radius of averaged neighbourhood for non-local material models 00409 double nonlocradius (long ipp, long im); 00410 00411 /// returns id of the first non-local material model defined in the given int. point 00412 long givenonlocid(long ipp); 00413 00414 /// updates internal variables for all int. points for the attained equilibrium state 00415 void updateipval (void); 00416 00417 /// updates internal variables for given int. point after attaining of equilibrium state 00418 void updateipvalmat (long ipp,long im,long ido); 00419 00420 /// sets all arrays on int. points to zero 00421 void clean_ip (); 00422 00423 /// check time step size requirements which originate in material models for all integration points 00424 double dstep_red_mat(long im=0, long ido=0); 00425 00426 /// check time step size requirements which originate in material models for the given ip 00427 double dstep_red_ip(long ipp, long im, long ido); 00428 00429 00430 // ********************************************************** 00431 // Functions used for handling of stress return in plasticity 00432 // ********************************************************** 00433 00434 /// retruns actual value of yield function for plasticity materials 00435 double yieldfunction (long ipp, long idpm, matrix &sig, vector &q); 00436 00437 /// retruns derivative of yield function with respect to stress tensor 00438 void dfdsigma (long ipp, long idpm, matrix &sig, vector &q, vector &dfds); 00439 00440 /// retruns derivative of plastic potential with respect to stress tensor 00441 void dgdsigma (long ipp, long idpm, matrix &sig, vector &q, vector &dgds); 00442 00443 /// retruns the second derivative of yield function with respect to stress tensor 00444 void dfdsigmadsigma (long ipp, long idpm, matrix &sig, matrix &dfdsds); 00445 00446 /// retruns the second derivative of plastic potential with respect to stress tensor 00447 void dgdsigmadsigma (long ipp, long idpm, matrix &sig, matrix &dgdsds); 00448 00449 /// retruns derivative of yield function with respect to %vector of hardening parameters 00450 void dfdqpar (long ipp, long idpm,matrix &sig,vector &q, vector &dq); 00451 00452 /// retruns derivative of plastic potential with respect to %vector of hardening parameters 00453 void dgdqpar (long ipp, long idpm,matrix &sig,vector &q, vector &dq); 00454 00455 /// retruns the second derivative of yield function with respect to stress tensor and %vector of hardening parameters 00456 void dfdsigmadq (long ipp, long idpm,matrix &sig,vector &q,matrix &dfdsdq); 00457 00458 /// retruns the second derivative of plastic potential with respect to stress tensor and %vector of hardening parameters 00459 void dgdsigmadq (long ipp, long idpm,matrix &sig,vector &q,matrix &dgdsdq); 00460 00461 /// derivative of hardening function with respect to stress tensor 00462 void dhdsigma (long ipp,long idpm,matrix &sigt,vector &q,matrix &dhds); 00463 00464 /// derivative of hardening function with respect to consistency parameter 00465 void dhdgamma (long ipp,long idpm,vector &epsp,matrix &sig,vector &q,vector &dhdc); 00466 00467 /// derivative of hardening function with respect to %vector of hardening parameters 00468 void dhdqpar (long ipp, long idpm, long ido, matrix &sigt, double dgamma, vector &q, matrix &dhdq); 00469 00470 /// retruns the actual value of hardening/softening function 00471 void hardsoftfunction (long ipp,long idpm,matrix &sigt,vector &q,vector &h); 00472 00473 /// returns %matrix of plastic moduli 00474 void plasticmoduli (long ipp,long idpm,vector &epsp,matrix &sig,matrix &h); 00475 00476 /// returns contribution to denominator from hardening in cutting plane stress return algorithm 00477 void plasmodscalar(double &denom,long ipp, long idpm, long ido,matrix &sig, vector &eps, vector &epsp, vector &qtr,double gamma); 00478 00479 /// returns the number of internal(hardening) parameters for plasticity models 00480 long give_num_interparam (long ipp,long idpm); 00481 00482 /// returns vector of hardening parameters 00483 void give_interparam (long ipp,long im,long ido,vector &q); 00484 00485 /// updates of hardening parameters 00486 void updateq (long ipp, long idpm, long ido, double dgamma, vector &eps, vector &epsp, matrix &sig, vector &q); 00487 00488 /// cutting plane stress return algorithm 00489 void cutting_plane (long ipp,long im,long ido,double &gamma,vector &epsn,vector &epsp,vector &q,long ni,double err); 00490 00491 /// cutting plane stress return algorithm with modification for the plane stress problems 00492 void cutting_plane2 (long ipp, long im, long ido, double &gamma, vector &epsn, vector &epsp, vector &q,long ni,double err); 00493 00494 /// multi-surface cutting plane stress return algorithm 00495 void mult_surf_cutting_plane (long ipp,vector &epsn,vector &epsp,vector &gamma,vector &q); 00496 00497 /// closest point projection stress return algorithm 00498 void newton_stress_return (long ipp,long im,long ido,double &gamma,vector &epsn,vector &epsp,vector &q,long ni,double err); 00499 00500 /// closest point projection stress return algorithm 00501 void newton_stress_return_2 (long ipp,long im,long ido,double &gamma,vector &epsn,vector &epsp,vector &q,long ni,double err); 00502 00503 /// detection of plasticity for adaptivity computations 00504 void refresh_plast (long im=0, long ido=0); 00505 //void dfunctdqdq (long ipp, long idpm, matrix &sig, vector &q, matrix &dfdqdq); 00506 //void store_interparam (long ipp,long im,long ido,vector &q); 00507 00508 00509 00510 // ************************************************* 00511 // Functions for handling of scalar damage materials 00512 // ************************************************* 00513 00514 /// computation of equivalent strain 00515 void damfuncpar(long ipp, long im, vector &eps, vector &kappa); 00516 00517 /// computation of new damage parameter omega 00518 double damfunction(long ipp, long im, long ido,vector &kappa, vector &eps, vector &omegao); 00519 00520 /// computation of intial elsatic strain for damage models 00521 double epsefunction(long ipp, long idem); 00522 00523 /// solver for scalar damage models 00524 double scal_dam_sol (long ipp,long im,long ido,vector &eps,vector &kappa,vector &omegao,vector &sigma,matrix &d); 00525 00526 00527 00528 // ************************************************* 00529 // Functions for handling of visco-plastic materials 00530 // ************************************************* 00531 00532 /// returns stress increments due to visco-plastic strains on int. point for given load case 00533 void givestressincr (long lcid,long ipp,long im,long ido,long fi,vector &sig); 00534 00535 //void storestressincr (long lcid,long ipp,long im,long ido,vector &sig); 00536 00537 /// computation of stresses Perzyna type visco-plastic materials 00538 void stiff_deps_vispl (long ipp,long im,long ido,vector &sig,vector &q,double dt); 00539 00540 /// computation of contribution to right hand side for creep models - obsolate, candidate for removal 00541 void stiff_eps (long ipp); 00542 00543 00544 00545 // ************************************************* 00546 // Functions connected with Len-Jons potential model 00547 // ************************************************* 00548 00549 /// returns the first derivative of lenjones potential 00550 double give_first_derivative (long ipp,double r); 00551 00552 /// returns the second derivative of lenjones potential 00553 double give_second_derivative (long ipp,double r); 00554 00555 00556 // ***************************************** 00557 // Funtions for backup of int. point content 00558 // ***************************************** 00559 00560 /// save content of int. points to one huge text file 00561 void save_intpoints_txt (FILE *aux, sel &selelems, sel *selother); 00562 00563 /// save content of int. points to several text files according to stored quantity 00564 void save_intpoints_txt (long ni, sel &selelems, sel *selother); 00565 00566 /// save content of int. points to one huge binary file 00567 void save_intpoints_bin (FILE *aux, sel &selelems, sel *selother); 00568 00569 /// save content of int. points to several binary files according to stored quantity 00570 void save_intpoints_bin (long ni, sel &selelems, sel *selother); 00571 00572 /// restore content of int. points to one huge text file 00573 void restore_intpoints_txt (FILE *aux, sel &selelems, sel *selother, long **selid); 00574 00575 /// restore content of int. points to several text files according to stored quantity 00576 void restore_intpoints_txt (sel &selelems, sel *selother, long **selid); 00577 00578 /// restore content of int. points to one huge binary file 00579 void restore_intpoints_bin (FILE *aux, sel &selelems, sel *selother, long **selid); 00580 00581 /// restore content of int. points to several binary files according to stored quantity 00582 void restore_intpoints_bin (sel &selelems, sel *selother, long **selid); 00583 00584 00585 00586 00587 00588 00589 /// indicator of plastic regime in domain 00590 long plast; 00591 00592 /// type of eigstrain 00593 eigstraintype est; 00594 00595 /// number of material types 00596 long nmt; 00597 /// total number of all integration points 00598 long tnip; 00599 /// integration points 00600 intpoints *ip; 00601 /// integration point - element correspondation 00602 /// elip[number of int point] = number of element 00603 long *elip; 00604 00605 /// pointers to local coordinate systems in integration points 00606 long *lcsip; 00607 /// array containing local coordinate system basis for integration points 00608 double **lcsbase; 00609 00610 /// array with initial conditions at integration points (allocated at mechbclc::readinic) 00611 double **ic; 00612 00613 /// array containing volume appropriate to integration points 00614 double *ipv; 00615 /// maximum number of component of strain/stress arrays at nodes 00616 long max_ncompstrn; 00617 /// maximum number of component of strain/stress array on elements 00618 long max_ncompstre; 00619 /// maximum number of component of other array at nodes 00620 long max_nncompo; 00621 /// maximum number of component of eqother array on elements 00622 long max_encompo; 00623 00624 /// array containing eigenstrains id 00625 /// the array is allocated in function mechbclc::read 00626 long **eigstrid; 00627 /// array containing eigenstrains 00628 /// the array is allocated only for several problems 00629 /// eigstrains[number of int. point][number of component] 00630 /// the array is allocated in function mechbclc::read 00631 double **eigstrains; 00632 /// array containing eigenstresses 00633 /// the array is allocated only for several problems 00634 /// eigstresses[number of int. point][number of component] 00635 /// the array is allocated in function mechbclc::read 00636 double **eigstresses; 00637 /// array containing strains caused by temperature 00638 /// tempstrains[number of int. point][number of component] 00639 double **tempstrains; 00640 00641 00642 /// array containing non-mechanical quantities used for coupled problems 00643 /// nonmechq[quantity no.][number of integ. point] - nonmechanical quantity at the required integration point 00644 double **nonmechq; 00645 /// number of actually used non-mechanical quantities (it is set by METR or according to temperature in the input file) 00646 long nnmq; 00647 /// array with ordering of used non-mechanical quantities (its size is nnmq) 00648 nonmechquant *nmqo; 00649 /// total number of known(=implemented) non-mechanical quantities 00650 static const long tnknmq = sizeof(nonmechquantstr)/sizeof(*nonmechquantstr); 00651 /// array of indices in nonmechq for particular non-mechanical quantities 00652 long nmqid[tnknmq]; 00653 00654 /// elastic isotropic linear material 00655 elastisomat *eliso; 00656 /// elastic orthotropic linear material 00657 elastortomat *elorto; 00658 /// elastic general 3D material 00659 elastgmat3d *elgm3d; 00660 00661 /// simple plastic 1D material 00662 splas1d *spl1d; 00663 /// J2 flow material 00664 j2flow *j2f; 00665 j2flow2 *j2f2; 00666 /// Mohr-Coulomb material 00667 mohrcoulomb *mcoul; 00668 /// Parabolic Mohr-Coulomb material 00669 mohrcoulombpar *mcpar; 00670 /// Boer model of plasticity 00671 boermat *boerm; 00672 /// Drucker-Prager model of plasticity 00673 drprag *drprm; 00674 /// Double Drucker-Prager model 00675 doubdp *ddpm; 00676 /// Drucker-Prager model of plasticity prepare by Standa Sysala from IGN 00677 drprag2 *drprm2; 00678 /// modified cam-clay model 00679 camclay *cclay; 00680 /// modified cam-clay model coupled with moisture transfer 00681 camclaycoup *cclayc; 00682 /// Sheffield plasticity model 00683 shefplast *shpl; 00684 /// HISS plasticity model (Desai model) 00685 hissplas *hisspl; 00686 /// Glasgow scalar damage with a thermal influence 00687 glasgmech *glasgmat; 00688 /// Glasgow damage model 00689 glasgowdam *glasgdam; 00690 /// artificial model for combination of damage and creep model 00691 creepdam *crdam; 00692 /// artificial model for combination of several time dependent material models switched on in the given time 00693 timeswmat *tswmat; 00694 /// artificial material for effective stress concept 00695 effstress *effstr; 00696 /// microplane M4 00697 microM4 *mpM4; 00698 /// simplifed version of microplane 00699 microSIM *mpSIM; 00700 /// 00701 microfiber *mpfib; 00702 00703 /// simple model of viscosity 00704 simviscous *svis; 00705 /// simple visco-plastic material 00706 svisplas *svipl; 00707 /// Lemaitre visco-plastic model 00708 lemaitre *lmtr; 00709 00710 /// isotropic damage material model 00711 scaldam *scdam; 00712 00713 /// orthotropic damage material model 00714 fixortodam *fixodam; 00715 00716 /// simple damage 3D material with crack closure 00717 scaldamcc *scdamcc; 00718 00719 /// ortotropic damage material model 00720 ortodam *ortdam; 00721 /// ortotropic damage material model with crack rotation 00722 ortodamrot *ortdamrot; 00723 /// anisotropic damage material model 00724 anisodam *anidam; 00725 /// anisotropic damage material model with crack rotation 00726 anisodamrot *anidamrot; 00727 /// aci78 model for creep and shrinkage 00728 aci78 *aci78mod; 00729 /// cebfip78 model for creep and shrinkage 00730 cebfip78 *cebfip78mod; 00731 00732 /// material with explicit prescribed diagram force/displacement 00733 graphmat *grmat; 00734 00735 /// material with variable elastic parameters E and nu 00736 varelastisomat *veliso; 00737 00738 /// combination of plasticity and special kind of elasticity (different loading and unloading modulus) 00739 geoelastmat *geoel; 00740 00741 /// B3 model of creep based on Bazant theory 00742 b3mat *crb3; 00743 /// retardation spectrum 00744 rspecmat *crrs; 00745 /// Double power law model of creep based on Bazant theory 00746 dplmat *crdpl; 00747 /// model of creep based on Bazant theory 00748 creepb *crbaz; 00749 /// model of creep based on effective Young modulus 00750 creep_effym *creffym; 00751 /// consolidation model 00752 consol *csol; 00753 /// Winkler-Pasternak material model of subsoil 00754 winpast *wpast; 00755 00756 nonlocmicroM4 *nmpM4; 00757 00758 /// thermal isotropic dilatancy model 00759 therisomat *tidilat; 00760 00761 /// model of stress relaxation based on Eurocode 2 00762 relaxeuroc *relaxec; 00763 00764 /// nonlocal plasticity models 00765 nonlocplast *nlplast; 00766 00767 /// nonlocal damage models 00768 nonlocdamg *nldamg; 00769 00770 /// artificial model for combination of damage and plasticity model 00771 damplast *dampl; 00772 /// 00773 visplast *visplas; 00774 00775 /// Chen model of plasticity of concrete 00776 chen *chplast; 00777 00778 /// strain/stress points 00779 aepoints stra,stre; 00780 00781 /// Lennard-Jones interatomic potential 00782 lenjonesmat *lenjon; 00783 00784 /// material model for contact problems 00785 contactmat *conmat; 00786 00787 /// material model for contact problems according to MC90 00788 cebfipcontactmat *cebfipconmat; 00789 00790 /// layered model for plates 00791 layplate *lplate; 00792 00793 /// hypoplastic material for unsaturated soils 00794 hypoplast *hypopl; 00795 00796 /// material types 00797 mattype *mtype; 00798 /// numbers of particular material types 00799 long *numtype; 00800 00801 /// material for shrinkage strain computation 00802 shrinkmat *shmat; 00803 00804 }; 00805 00806 #endif