EL_LEij.cppGo 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_L_Eij (on plastic equivalent 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: 09-13-2000 # 00018 # UPDATE HISTORY: # 00019 # # 00020 # # 00021 # # 00022 # SHORT EXPLANATION: This is a linear evolution law for the evoltion of a # 00023 # tensorial variable k which depends on plastic strain # 00024 # i.e. dalpha = a*de_ij_p # 00025 //================================================================================ 00026 */ 00027 00028 #ifndef EL_LEij_CPP 00029 #define EL_LEij_CPP 00030 00031 #include "EL_LEij.h" 00032 #include <basics.h> 00033 00034 //================================================================================ 00035 // Default constructor 00036 //================================================================================ 00037 EvolutionLaw_L_Eij::EvolutionLaw_L_Eij( double ad) 00038 : a(ad) 00039 {} 00040 00041 //================================================================================ 00042 // Copy constructor 00043 //================================================================================ 00044 00045 EvolutionLaw_L_Eij::EvolutionLaw_L_Eij(const EvolutionLaw_L_Eij &LE ) 00046 { 00047 this->a = LE.geta(); 00048 } 00049 00050 00051 //================================================================================ 00052 // Create a clone of itself 00053 //================================================================================ 00054 EvolutionLaw_T * EvolutionLaw_L_Eij::newObj() { 00055 00056 EvolutionLaw_T *newEL = new EvolutionLaw_L_Eij( *this ); 00057 00058 return newEL; 00059 00060 } 00061 00066 // 00067 //void EvolutionLaw_L_Eij::InitVars(EPState *EPS) { 00068 // 00069 // // set initial E_Young corresponding to current stress state 00070 // //double p_atm = 100.0; //Kpa atmospheric pressure 00071 // //double p = EPS->getStress().p_hydrostatic(); 00072 // //double E = EPS->getEo() * pow( (p/p_atm), geta()); 00073 // EPS->setE( EPS->getEo() ); 00074 // 00075 //} 00076 00077 00078 //================================================================================ 00079 // Set initial value of D once the current stress hit the yield surface 00080 // for L model only 00081 // 00082 // 00083 //================================================================================ 00084 // 00085 //void EvolutionLaw_L_Eij::setInitD(EPState *EPS) { 00086 // 00087 //} 00088 00089 00090 //================================================================================ 00091 // Evaluating h_s = a * dSodeij = a*Rij (For the evaluation of Kp) 00092 //================================================================================ 00093 00094 tensor EvolutionLaw_L_Eij::h_t( EPState *EPS, PotentialSurface *PS){ 00095 00096 //========================================================================= 00097 // Getting de_ij / dLambda 00098 stresstensor dQods = PS->dQods( EPS ); 00099 //dQods.reportshort("dQods"); 00100 00101 tensor de_ijodLam = dQods; 00102 00103 //Evaluating dSodeeq 00104 double dSodeij = geta(); 00105 00106 tensor h = de_ijodLam*dSodeij; 00107 00108 return h; 00109 00110 } 00111 00112 00113 //================================================================================ 00114 // Print vars defined in Linear Evolution Law 00115 //================================================================================ 00116 void EvolutionLaw_L_Eij::print() 00117 { 00118 opserr << (*this); 00119 } 00120 00121 00122 //================================================================================ 00123 double EvolutionLaw_L_Eij::geta() const 00124 { 00125 return a; 00126 } 00127 00128 //================================================================================ 00129 OPS_Stream& operator<< (OPS_Stream& os, const EvolutionLaw_L_Eij & LEL) 00130 { 00131 // os.unsetf( ios::scientific ); 00132 os.precision(5); 00133 00134 os.width(10); 00135 os << endln << "Linear Tensorial Evolution Law's parameters:" << endln; 00136 os << "a = " << LEL.geta() << "; " << endln; 00137 00138 return os; 00139 } 00140 00141 #endif 00142 |