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