EL_NLEp.cppGo to the documentation of this file.00001 /* 00002 //================================================================================ 00003 # COPYRIGHT (C): :-)) # 00004 # PROJECT: Object Oriented Finite Element Program # 00005 # PURPOSE: Cam clay model evolution law # 00006 # # 00007 # # 00008 # CLASS: EvolutionLaw_NL_Ep (on plastic volumetric strain) # 00009 # # 00010 # VERSION: # 00011 # LANGUAGE: C++.ver >= 2.0 ( Borland C++ ver=3.00, SUN C++ ver=2.1 ) # 00012 # TARGET OS: DOS || UNIX || . . . # 00013 # DESIGNER(S): Boris Jeremic, Zhaohui Yang # 00014 # PROGRAMMER(S): Boris Jeremic, Zhaohui Yang # 00015 # # 00016 # # 00017 # DATE: Mar. 28, 2001 # 00018 # UPDATE HISTORY: # 00019 # # 00020 # # 00021 # # 00022 # SHORT EXPLANATION: This is a nonlinear evolution law for the evoltion of a # 00023 # scalar variable po which depends on plastic vol. strain # 00024 # i.e. dpo = (1+eo)po/(lamda-kappa)*de_p # 00025 //================================================================================ 00026 */ 00027 00028 #ifndef EL_NLEp_CPP 00029 #define EL_NLEp_CPP 00030 00031 #include "EL_NLEp.h" 00032 #include <basics.h> 00033 00034 //================================================================================ 00035 // Default constructor 00036 //================================================================================ 00037 EvolutionLaw_NL_Ep::EvolutionLaw_NL_Ep( double eod, double lambdad, double kappad ) 00038 :eo(eod), lambda(lambdad), kappa(kappad) 00039 {} 00040 00041 //================================================================================ 00042 // Copy constructor 00043 //================================================================================ 00044 00045 EvolutionLaw_NL_Ep::EvolutionLaw_NL_Ep(const EvolutionLaw_NL_Ep &LE ) 00046 { 00047 this->eo = LE.geteo(); 00048 this->lambda = LE.getlambda(); 00049 this->kappa = LE.getkappa(); 00050 } 00051 00052 00053 //================================================================================ 00054 // Create a clone of itself 00055 //================================================================================ 00056 // Alpha machine has problem on this 00057 //EvolutionLaw_NL_Ep * EvolutionLaw_NL_Ep::newObj() { 00058 EvolutionLaw_S * EvolutionLaw_NL_Ep::newObj() 00059 { 00060 EvolutionLaw_S *newEL = new EvolutionLaw_NL_Ep( *this ); 00061 00062 return newEL; 00063 } 00064 00069 // 00070 //void EvolutionLaw_NL_Ep::InitVars(EPState *EPS) { 00071 // 00072 // // set initial E_Young corresponding to current stress state 00073 // //double p_atm = 100.0; //Kpa atmospheric pressure 00074 // //double p = EPS->getStress().p_hydrostatic(); 00075 // //double E = EPS->getEo() * pow( (p/p_atm), geta()); 00076 // EPS->setE( EPS->getEo() ); 00077 // 00078 //} 00079 00080 00081 //================================================================================ 00082 // Set initial value of D once the current stress hit the yield surface 00083 // for MD model only 00084 //================================================================================ 00085 // 00086 //void EvolutionLaw_NL_Ep::setInitD(EPState *EPS) { 00087 // 00088 //} 00089 00090 00091 //================================================================================ 00092 // Evaluating h_s = a * pow( 2.0*Rij_dev * Rij_dev/3.0, 0.5) (For the evaluation of Kp) 00093 //================================================================================ 00094 00095 double EvolutionLaw_NL_Ep::h_s( EPState *EPS, PotentialSurface *PS){ 00096 00097 //========================================================================= 00098 // Getting de_eq / dLambda 00099 stresstensor dQods = PS->dQods( EPS ); 00100 //dQods.reportshort("dQods"); 00101 00102 //Evaluate the norm of the deviator of dQods 00103 //temp1 = dQods("ij")*dQods("ij"); 00104 double dQods_p = dQods.p_hydrostatic(); 00105 00106 double de_podL = dQods_p; 00107 00108 //Evaluating dSodeeq 00109 00110 double po = EPS->getScalarVar( 1 ); 00111 double dSodep = (1.0+geteo())*po/( getlambda()-getkappa() ); 00112 00113 double h = dSodep * de_podL; 00114 00115 return h; 00116 00117 } 00118 00119 00120 //================================================================================ 00121 // Print vars defined in Linear Evolution Law 00122 //================================================================================ 00123 void EvolutionLaw_NL_Ep::print() 00124 { 00125 opserr << (*this); 00126 } 00127 00128 00129 //================================================================================ 00130 double EvolutionLaw_NL_Ep::geteo() const 00131 { 00132 return eo; 00133 } 00134 00135 //================================================================================ 00136 double EvolutionLaw_NL_Ep::getlambda() const 00137 { 00138 return lambda; 00139 } 00140 00141 //================================================================================ 00142 double EvolutionLaw_NL_Ep::getkappa() const 00143 { 00144 return kappa; 00145 } 00146 00147 00148 //================================================================================ 00149 OPS_Stream& operator<< (OPS_Stream& os, const EvolutionLaw_NL_Ep & LEL) 00150 { 00151 // os.unsetf( ios::scientific ); 00152 os.precision(5); 00153 00154 os.width(10); 00155 os << endln << "Nonlinear Scalar Evolution Law(Cam Clay model)'s parameters:" << endln; 00156 os << "eo = " << LEL.geteo() << "; " << endln; 00157 os << "lambda = " << LEL.getlambda() << "; " << endln; 00158 os << "kappa = " << LEL.getkappa() << "; " << endln; 00159 00160 return os; 00161 } 00162 00163 #endif 00164 |