EL_LEij.cpp

Go 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 

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