EL_NLEijMD.h

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_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 

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