EL_NLEijMD.hGo to the documentation of this file.00001 00002 //================================================================================ 00003 // COPYRIGHT (C): :-)) | 00004 // PROJECT: Object Oriented Finite Element Program | 00005 // PURPOSE: General platform for elaso-plastic constitutive model | 00006 // implementation | 00007 // | 00008 // CLASS: EvolutionLaw_NL_EijMD (nonlinear tensorial Evolution law) | 00009 // | 00010 // | 00011 // VERSION: | 00012 // LANGUAGE: C++.ver >= 2.0 ( Borland C++ ver=3.00, SUN C++ ver=2.1 ) | 00013 // TARGET OS: DOS || UNIX || . . . | 00014 // DESIGNER(S): Boris Jeremic, Zhaohui Yang | 00015 // PROGRAMMER(S): Boris Jeremic, Zhaohui Yang | 00016 // | 00017 // | 00018 // DATE: 09-13-2000 | 00019 // UPDATE HISTORY: | 00020 // | 00021 // | 00022 // | 00023 // | 00024 //================================================================================ 00025 00026 #ifndef EL_NL_EIJMD_H 00027 #define EL_NL_EIJMD_H 00028 00029 #include <math.h> 00030 #include "EL_T.h" 00031 #include <OPS_Globals.h> 00032 00033 00034 class EvolutionLaw_NL_EijMD : public EvolutionLaw_T 00035 { 00036 // Private vars to define the MD evolution law 00037 private: 00038 // the exponential in G = Go (P/P_at)^a and K = Ko (P/P_at)^a 00039 double eo; //Initial void ratio 00040 double a; 00041 00042 //Critical state parameters 00043 double Mc; 00044 double Me; 00045 double Lambda; // slope of e vs. ln p 00046 double ec_ref; // critical void ratio at reference mean effective stress p 00047 double p_ref; // critical void ratio at reference mean effective stress p 00048 00049 //surface evolution parameters 00050 double kc_b; // b stands for bounding surface 00051 double kc_d; // d stands for dilatancy surface 00052 double ke_b; // e extension 00053 double ke_d; // c compression 00054 00055 //Hardening parameters 00056 //double h; // Being calculated using ho and b_ij * n_ij 00057 double ho; 00058 double Cm; 00059 //double e; // current void ratio ...Moved to EPState Joey 02-12-03 00060 00061 //Dilatancy parameter 00062 double D; //also copied to EPS's second scalar var(no direct contribution to hardening) 00063 double Ao; 00064 00065 //Get rid of the fabric tensor 00066 //Fabric parameters 00067 stresstensor F; //Fabric tensor which will evolve like alpha_{ij} 00068 double Fmax; 00069 double Cf; 00070 00071 public: 00072 //EvolutionLaw_L_EijMD( ); // default constructor---no parameters 00073 00074 // default constructor 00075 EvolutionLaw_NL_EijMD( 00076 double eod , 00077 double ad , 00078 double Mcd ,//1.14, 00079 double Med ,//1.14, 00080 double Lambdad , 00081 double ec_refd , 00082 double p_refd , 00083 double kc_bd , 00084 double kc_dd , 00085 double ke_bd , 00086 double ke_dd , 00087 double hod , 00088 double Cmd , 00089 double Aod , 00090 double Fmaxd , 00091 double Cfd ); 00092 //double ed = 0.85, 00093 00094 // Copy constructor 00095 EvolutionLaw_NL_EijMD(const EvolutionLaw_NL_EijMD &LEL ); 00096 00097 //create a clone of itself 00098 //EvolutionLaw_T *newObj(); 00099 EvolutionLaw_T *newObj(); 00100 00101 //double h( EPState *EPS, double norm_dQods); // Evaluating hardening function h 00102 tensor h_t( EPState *EPS, PotentialSurface *PS); // Evaluating hardening function h 00103 00104 //Overwrite updateEeDm 00105 //Updating E, e and D value according to current mean effective stress p and elastic strain 00106 int updateEeDm(EPState *EPS, double st_vol, double dLamda); 00107 00108 //void UpdateVar( EPState *EPS, double dlamda ); // Evolve corresponding var linearly using de_eq_p 00109 //Moved to CDriver.cpp 00110 00111 void print(); 00112 //g++ complaining if don't have this line 00113 virtual ~EvolutionLaw_NL_EijMD() {} 00114 00115 private: 00116 // some accessor functions 00117 00118 // set D once current stress hits the y.s. or 00119 // Set D value according to current EPState 00120 //void setD(EPState *EPS); 00121 00122 double geta() const; 00123 double getMc() const; 00124 double getMe() const; 00125 double getLambda() const; 00126 double getec_ref() const; 00127 double getp_ref() const; 00128 00129 double getkc_b() const; 00130 double getkc_d() const; 00131 double getke_b() const; 00132 double getke_d() const; 00133 double getho() const; 00134 double getCm() const; 00135 double geteo() const; 00136 //double gete() const; 00137 00138 //Dilatancy parameter 00139 double getAo() const; 00140 double getD() const; 00141 00142 double getFmax() const; 00143 stresstensor getF() const; 00144 double getCf() const; 00145 00146 // Interpolation function by Agyris 00147 double g_A(double theta, double e); 00148 00149 // Interpolation function by Willan-Warkne 00150 double g_WW(double theta, double e); 00151 00152 //================================================================================ 00153 // Overloaded Insertion Operator Zhaohui Added Aug. 13, 2000 00154 // prints Linear EvolutionLaw's contents 00155 //================================================================================ 00156 friend OPS_Stream& operator<< (OPS_Stream& os, const EvolutionLaw_NL_EijMD & MDEL); 00157 //friend ostream& operator<< (ostream& os, const EvolutionLaw_NL_EijMD & MDEL); 00158 00159 00160 }; 00161 00162 00163 #endif 00164 00165 00166 00167 |