EL_NLEp.cpp

Go 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 

Generated on Mon Oct 23 15:05:16 2006 for OpenSees by doxygen 1.5.0