⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mechmat.h

📁 Finite element program for mechanical problem. It can solve various problem in solid problem
💻 H
字号:
#ifndef MECHMAT_H#define MECHMAT_H#include <stdio.h>#include "alias.h"#include "aepoints.h"#include "iotools.h"class intpoints;class elastisomat;class elastgmat3d;class splas1d;class j2flow;class j2flow2;class microM4;class microSIM;class microfiber;class mohrcoulomb;class mohrcoulombpar;class boermat;class drprag;class camclay;class shefplast;class glasgmech;class glasgowdam;class creepdam;class timeswmat;class svisplas;class simviscous;class lemaitre;class scaldam;class scaldamcc;class scaldamtime;class anisodam;class aci78;class cebfip78;class graphmat;class graphmattime;class b3mat;class rspecmat;class dplmat;class creepb;class consol;class winpast;class nonlocmicroM4;struct matrix;struct vector;class therisomat;class therisomattime;class nonlocplast;class nonlocdamg;class damplast;class geoelastmat;class visplast;class elasttime;class normmat;class chen;class lenjonesmat;class contactmat;/**   class mechmat      it is one of the 5 most important classes of the program   (probdesc, mechtop, mechmat, mechbclc, mechcrsec)      class mechmat contains data about materials in problem      basic data   nip (long) - stands for number of all integration points for stiffness matrix computation in problem   nmt (long) - stands for number of material types      class mechmat creates   nip objects of class intpoints      JK, TK*/class mechmat{ public:  mechmat ();  ~mechmat ();  long intpnum (void);  void intpointalloc ();  void readip (FILE *in);  void init_ip_1 (void);  void init_ip_2 (void);  void intpointinit ();  void readmatchar (XFILE *in);  void readlcsip (FILE *in);  void read (XFILE *in);  void matstiff (matrix &d,long ipp,long im=0,long ido=0);  void elmatstiff (matrix &d,long ipp);  void elmatcompl (matrix &c,long ipp);  double give_actual_ym(long ipp, long im=0, long ido=0);  double give_actual_ft (long ipp, long im=0, long ido=0);    // **********************************************************  //  plasticity  // **********************************************************  double yieldfunction (long ipp, long idpm, matrix &sig, vector &q);  void dfdsigma (long ipp, long idpm, matrix &sig, vector &q, vector &dfds);  void dgdsigma (long ipp, long idpm, matrix &sig, vector &q, vector &dgds);  void dfdsigmadsigma (long ipp, long idpm, matrix &sig, matrix &dfdsds);  void dgdsigmadsigma (long ipp, long idpm, matrix &sig, matrix &dgdsds);  void dfdqpar (long ipp, long idpm,matrix &sig,vector &q, vector &dq);  void dgdqpar (long ipp, long idpm,matrix &sig,vector &q, vector &dq);  void dfdsigmadq (long ipp, long idpm,matrix &sig,vector &q,matrix &dfdsdq);  void dgdsigmadq (long ipp, long idpm,matrix &sig,vector &q,matrix &dgdsdq);  void dhdsigma (long ipp,long idpm,matrix &sigt,vector &q,matrix &dhds);  void dhdgamma (long ipp,long idpm,vector &epsp,matrix &sig,vector &q,vector &dhdc);  void dhdqpar (long ipp,long idpm,matrix &sigt,vector &q,matrix &dhdq);  void hardsoftfunction (long ipp,long idpm,matrix &sigt,vector &q,vector &h);  //  //void dfunctdqdq (long ipp, long idpm, matrix &sig, vector &q, matrix &dfdqdq);  void dhardfdq(long int, long int, long int, double, vector&, matrix&);  void dqdsigma(long int, long int, matrix&, vector&, matrix&);    //double plasmodscalar(long ipp, long idpm, long ido,matrix &sig, vector &eps, vector &epsp, vector &qtr,double gamma);  void plasmodscalar(double &denom,long ipp, long idpm, long ido,matrix &sig, vector &eps, vector &epsp, vector &qtr,double gamma);  //void plasticmoduli (long ipp,long idpm,vector &epsp,matrix &sig,matrix &h);  void updateq (long ipp, long idpm, long ido, double dgamma, vector &eps, vector &epsp, matrix &sig, vector &q);  void giveirrstrains(long ipp, long im, long ido, vector &epsirr);  double givedamage(long ipp, long im, long ido);      // **********************************************************    // **********************************************************  void storestrain (long lcid,long ipp,vector &eps);  void storestrain (long lcid,long ipp,long fi,vector &eps);  void storestrain (long lcid,long ipp,long fi,long ncomp,vector &eps);  void givestrain (long lcid,long ipp,vector &eps);  void givestrain (long lcid,long ipp,long fi,vector &eps);  void givestrain (long lcid,long ipp,long fi,long ncomp,vector &eps);  void cleanstrain ();  void storestress (long lcid,long ipp,vector &sig);  void storestress (long lcid,long ipp,long fi,vector &sig);  void storestress (long lcid,long ipp,long fi,long ncomp,vector &sig);  void givestress (long lcid,long ipp,vector &sig);  void givestress (long lcid,long ipp,long fi,vector &sig);  void givestress (long lcid,long ipp,long fi,long ncomp,vector &sig);  void storeeigstrain (long ipp,vector &eps);  void storeeigstrain (long ipp,long fi,long ncomp,vector &eps);  void giveeigstrain (long ipp,vector &eps);  void giveeigstrain (long ipp,long fi,long ncomp,vector &eps);  void storeeigstress (long ipp,vector &sig);  void storeeigstress (long ipp,long fi,long ncomp,vector &sig);  void giveeigstress (long ipp,vector &sig);  void giveeigstress (long ipp,long fi,long ncomp,vector &sig);    void storeeqother (long ipp,long fi,long ncomp,double *comp);  void giveeqother (long ipp,long fi,long ncomp,double *comp);    // **********************************************************  long give_num_interparam (long ipp,long idpm);  void give_interparam (long ipp,long im,long ido,vector &q);  void store_interparam (long ipp,long im,long ido,vector &q);  long givencompother (long ipp,long im);  long givencompeqother (long ipp,long im);  void compute_averstrains ();  void temprstrains (long lcid);  void transformstrain ();  void computenlstresses (long ipp, long im=0, long ido=0);  void compnonloc_nlstresses (long ipp, long im=0, long ido=0);  void cutting_plane (long ipp,long im,long ido,double &gamma,vector &epsn,vector &epsp,vector &q,long ni,double err);  void mult_surf_cutting_plane (long ipp,vector &epsn,vector &epsp,vector &gamma,vector &q);  void newton_stress_return (long ipp,long im,long ido,double &gamma,vector &epsn,vector &epsp,vector &q,long ni,double err);  void newton_stress_return_2 (long ipp,long im,long ido,double &gamma,vector &epsn,vector &epsp,vector &q,long ni,double err);    void damfuncpar(long ipp, long im, vector &eps, vector &kappa);  double damfunction(long ipp, long im, long ido,vector &kappa, vector &eps);  double epsefunction(long ipp, long idem);  double scal_dam_sol (long ipp,long im,long ido,vector &eps,vector &kappa, vector &sigma);  void stiff_deps_vispl (long ipp,long im,long ido,vector &sig,vector &q,double dt);  void stiff_deps_creep (long ipp, long im,vector &epscr,long ncomp,long ncomph);  void stiff_eps (long ipp);  double nonlocradius (long ipp,long im=0);  void matdilat (matrix &d,long ipp);  void updateipval (void);  void updateipvalmat (long ipp,long im,long ido);  void initvalues (long ipp,long im,long ido);  void nonlocaverage(long ipp,long im=0);  //  void visc_cutting_plane (long ipp,double &gamma,vector &epsn,vector &epsp,vector &q,  //double gt,double gdt);  //  void visc_closest_point_proj (long ipp,vector &epsn,vector &epsp,double &gamma,vector &q);  double give_consparam (long ipp, long im=0, long ido=0);  void refresh_plast (long im=0, long ido=0);    void storeipvol (long ipp,double vol);    void alloceigstrains ();  void alloceigstresses ();  void alloctempstrains ();  void eigstrmod ();  void totstrains ();  void totstrains (long ipp);  void tempstr_eigstr();    void clean_ip ();  void save_intpoints (FILE *aux, long ido1, long ncompo);  void restore_intpoints (FILE *aux, long ido1, long ncompo);  double give_dampar (long ipp,long im,long ido);  void alloc_tempr ();  /************************************/  //part for creep  void creep_matstiff (matrix &d, long ipp,long im,long ido);  double creep_matstiffchange (long ipp,long im,long ido);  void creep_updateval(long ipp,long im,long ido);  void creep_phase1 (long ipp,long im,long ido);  void creep_phase2 (long ipp,long im,long ido);  void creep_hidden_strains (matrix &screep,vector sig,vector emu, double mi, long n_ret_times, vector ret_times, double actualtime, double dt,strastrestate ss);  void creep_giveirrstrains (long ipp, long ido, vector &epscr);  long creep_number_rettimes(long ipp,long im);  long creep_ncompo (long ipp,long im);  /************************************/    double give_first_derivative (long ipp,double r);  double give_second_derivative (long ipp,double r);      ///  indicator of plastic regime in domain  long plast;    ///  type of eigstrain  eigstraintype est;    ///  number of material types  long nmt;  ///  total number of all integration points  long tnip;  ///  integration points  intpoints *ip;  ///  integration point - element correspondation  ///  elip[number of int point] = number of element  long *elip;  ///  pointers to local coordinate systems in integration points  long *lcsip;  ///  array containing local coordinate system basis for integration points  double **lcsbase;  /// array with initial conditions at integration points (allocated at mechbclc::readinic)  double **ic;    ///  array containing volume appropriate to integration points  double *ipv;  /// maximum number of component of strain/stress arrays at nodes  long max_ncompstrn;  /// maximum number of component of strain/stress array on elements  long max_ncompstre;  /// maximum number of component of other array at nodes  long max_nncompo;  /// maximum number of component of eqother array on elements  long max_encompo;  ///  array containing eigenstrains  ///  the array is allocated only for several problems  ///  eigstrains[number of int. point][number of component]  ///  the array is allocated in function mechbclc::read  double **eigstrains;  ///  array containing eigenstresses  ///  the array is allocated only for several problems  ///  eigstresses[number of int. point][number of component]  double **eigstresses;  ///  array containing strains caused by temperature  ///  tempstrains[number of int. point][number of component]  double **tempstrains;      ///  array containing temperatures at integration points  ///  temp[number of integ. point] - temperature at the required integration point  double *tempr;  ///  array containing moistures at integration points  ///  moist[number of integ. point] - moisture at the required integration point  double *moist;          ///  elastic isotropic linear material  elastisomat *eliso;  ///  elastic general 3D material  elastgmat3d *elgm3d;  ///  simple plastic 1D material  splas1d *spl1d;  ///  J2 flow material  j2flow *j2f;  j2flow2 *j2f2;  ///  Mohr-Coulomb material  mohrcoulomb *mcoul;  ///  Prabolic Mohr-Coulomb material  mohrcoulombpar *mcpar;  ///  Boer model of plasticity  boermat *boerm;  ///  Drucker-Prager model of plasticity  drprag *drprm;  ///  modified cam-clay model  camclay *cclay;  ///  Sheffield plasticity model  shefplast *shpl;  /// Glasgow scalar damage with a thermal influence    glasgmech *glasgmat;  /// Glasgow damage model  glasgowdam *glasgdam;  ///  artificial model for combination of damage and creep model  creepdam *crdam;  ///  artificial model for combination of several time dependent material models switched on in the given time   timeswmat *tswmat;      ///  microplane M4  microM4 *mpM4;  ///  microSIM *mpSIM;  ///  microfiber *mpfib;    ///  simple model of viscosity  simviscous *svis;  ///  simple visco-plastic material  svisplas *svipl;  ///  Lemaitre visco-plastic model  lemaitre *lmtr;  ///  isotropic damage material model  scaldam *scdam;  ///  simple damage 3D material with crack closure  scaldamcc *scdamcc;  /// scalar damage for time dependent problems  scaldamtime *scdamtime;  ///  anisotropic damage material model  anisodam *anidam;  ///  aci78 model for creep and shrinkage  aci78 *aci78mod;  ///  cebfip78 model for creep and shrinkage  cebfip78 *cebfip78mod;  /// material with explicit prescribed diagram force/displacement  graphmat *grmat;  /// material with explicit prescribed diagram force/displacement or stiffness/displacement  graphmattime *grmattime;    /// combination of plasticity and special kind of elasticity (different loading and unloading modulus)  geoelastmat *geoel;  ///  B3 model of creep based on Bazant theory  b3mat *crb3;  ///  retardation spectrum  rspecmat *crrs;  ///  Double power law model of creep based on Bazant theory  dplmat *crdpl;  ///  model of creep based on Bazant theory  creepb *crbaz;  ///  consolidation model  consol *csol;  ///  Winkler-Pasternak material model of subsoil  winpast *wpast;  nonlocmicroM4 *nmpM4;  ///  thermal isotropic dilatancy model  therisomat *tidilat;  ///  thermal isotropic dilatancy model with time dependent temperature  therisomattime *tidilattime;  /// nonlocal plasticity models  nonlocplast *nlplast;  /// nonlocal damage models  nonlocdamg *nldamg;  ///  artificial model for combination of damage and plasticity model  damplast * dampl;  ///  visplast *visplas;  ///  artificial model for time dependent problem  elasttime *eltimemat;    ///  material model based on Eurocode  normmat *normm;    ///  Chen model of plasticity of concrete  chen *chplast;  ///  strain/stress points  aepoints stra,stre;    ///  Lennard-Jones interatomic potential  lenjonesmat *lenjon;  ///  material model for contact problems  contactmat *conmat;};#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -