00001 #ifndef MOHRC_H 00002 #define MOHRC_H 00003 00004 #include "iotools.h" 00005 #include "strretalg.h" 00006 struct matrix; 00007 struct vector; 00008 struct atsel; 00009 00010 00011 00012 /** 00013 The class defines nonassociated plastic material model with Mohr-Coulomb yield criterion. 00014 Single-surface stress return cutting plane algorithm is used for detection of active yield surfaces and 00015 if it is necessary, the multi-surface cutting plane algorithm is used. 00016 00017 Created by Tomas Koudelka, 00018 */ 00019 class mohrcoulomb 00020 { 00021 public: 00022 mohrcoulomb (void); 00023 ~mohrcoulomb (void); 00024 void read (XFILE *in); 00025 /** yield function from principal stresses for standard stress ordering 00026 psig[0] < psig[1] < psig[2] */ 00027 double yieldfunction (vector &psig); 00028 /** derivatives of yield function with respect of principal stresses for standard stress ordering 00029 sig1 < sig2 < sig3 */ 00030 void deryieldfsigma (vector &dfds); 00031 /** derivatives of plastic potential function with respect of principal stresses for standard stress ordering 00032 sig1 < sig2 < sig3 */ 00033 void derplaspotsigma (vector &dgds); 00034 /// stiffness matrix for given intgration point 00035 void matstiff (matrix &d,long ipp,long ido); 00036 /// tangent stiffness matrix for given integration point 00037 void tangentstiff (matrix &d,matrix &td,long ipp,long ido); 00038 /// elastic stiffness matrix for elastic isotropic material computed at principal stress directions 00039 void pelmatstiff (long ipp, matrix &d, double e, double nu); 00040 /// computes stresses at the given integration point 00041 void nlstresses (long ipp, long ido); 00042 /// computes stresses at the given integration point from the nonlocal strain values 00043 void nonloc_nlstresses (long ipp,long ido); 00044 /// cutting plane algorithm at principal stresses 00045 long cutting_plane(long ipp, double &gamma, vector &epsn, vector &epsp, vector &q, long ni, double err); 00046 /// returns hardening contribution for cutting_plane method 00047 double plasmodscalar(long ipp, vector &q); 00048 /// updates hardening parameters 00049 void updateq(long ipp, vector &epsp, vector &q); 00050 /// checks type of singularity region and returns singularity indicator 00051 long checkpsig(vector &psig); 00052 /// checks for index of out of plane principal stress in case plane stress problem 00053 long checkzeropsig(vector &psig); 00054 /// multisurface cutting plane algorithm at principal stresses 00055 void mc_msurf_cp(long ipp,double &gamma,vector &epsn,vector &epsp,vector &q, long mu,long ni,double err); 00056 /// returns hardening contribution for multisurface cutting plane method 00057 void plasmodscalar(long ipp, vector &q, long mu, matrix &hcpm); 00058 /** yield function from principal stresses for standard stress ordering and 00059 ordering given by mu and stat parameter */ 00060 void yieldfunction(vector &psig, long mu, long *stat, vector &f); 00061 /** yield function from principal stresses for standard stress ordering and 00062 ordering given by mu parameter */ 00063 void yieldfunction(vector &psig, long mu, vector &f); 00064 /** derivatives of yield function with respect of principal stresses for standard stress ordering and 00065 ordering given by mu parameter */ 00066 void dfdsigma(long *stat, long mu, matrix &dfds); 00067 /** derivatives of plastic potential function with respect of principal stresses for standard stress ordering and 00068 ordering given by mu parameter */ 00069 void dgdsigma(long *stat, long mu, matrix &dgds); 00070 /// updates values of the integration point eqother array with the new reached 00071 void updateval (long ipp,long im, long ido); 00072 /// returns plastic strains 00073 void giveirrstrains (long ipp, long ido, vector &epsp); 00074 /// returns consistency parameter 00075 double give_consparam (long ipp,long ido); 00076 /// function changes material parameters (used in stochastic calculations) 00077 void changeparam (atsel &atm,vector &val); 00078 00079 /// friction angle 00080 double phi; 00081 /// cohesion 00082 double c; 00083 /// dilatation 00084 double psi; 00085 00086 /// stress return algorithm 00087 strretalg sra; 00088 }; 00089 00090 #endif