PressureDependentElastic3D.h

Go to the documentation of this file.
00001 //========================================================================
00002 //# COPYRIGHT (C): Woody's license (by BJ):
00003 //                 ``This    source  code is Copyrighted in
00004 //                 U.S.,  for  an  indefinite  period,  and anybody
00005 //                 caught  using it without our permission, will be
00006 //                 mighty good friends of ourn, cause we don't give
00007 //                 a  darn.  Hack it. Compile it. Debug it. Run it.
00008 //                 Yodel  it.  Enjoy it. We wrote it, that's all we
00009 //                 wanted to do.''
00010 //
00011 //# PROJECT:           Object Oriented Finite Element Program
00012 //# PURPOSE:           Pressure dependent elastic isotropic material implementation:
00013 //# CLASS:             PressureDependentElastic3D
00014 //#
00015 //# VERSION:           0.61803398874989 (golden section)
00016 //# LANGUAGE:          C++
00017 //# TARGET OS:         all...
00018 //# DESIGN:            Zhaohui Yang, Boris Jeremic (jeremic@ucdavis.edu)
00019 //# PROGRAMMER(S):     Zhaohui Yang, Boris Jeremic
00020 //#
00021 //#
00022 //# DATE:              07July2001
00023 //# UPDATE HISTORY:    22Nov2002 small fixes, formating...
00024 //#
00025 //#
00026 //===============================================================================
00027 
00028 
00029 #ifndef PressureDependentElastic3D_h
00030 #define PressureDependentElastic3D_h
00031 
00032 #include <ElasticIsotropicMaterial.h>
00033 
00034 #include <Channel.h>
00035 
00036 
00037 class PressureDependentElastic3D : public ElasticIsotropicMaterial
00038 {
00039   public:
00040     PressureDependentElastic3D (int tag,
00041                                 double E,
00042                                 double nu,
00043                                 double rhop,
00044                                 double expp = 0.6,
00045                                 double pr = 100.0,
00046                                 double pop = 0.5);
00047     PressureDependentElastic3D ();
00048     ~PressureDependentElastic3D ();
00049 
00050     const char *getClassType(void) const {return "PressureDependentElastic";};
00051 
00052     int setTrialStrain (const Tensor &v);
00053     int setTrialStrain (const Tensor &v, const Tensor &r);
00054     int setTrialStrainIncr (const Tensor &v);
00055     int setTrialStrainIncr (const Tensor &v, const Tensor &r);
00056     const Tensor &getTangentTensor (void);
00057     const stresstensor& getStressTensor (void);
00058     const straintensor& getStrainTensor (void);
00059     
00060     // For elastoplastic material model
00061     int setStressTensor(const Tensor& stressIn);
00062 
00063     int commitState (void);
00064     int revertToLastCommit (void);
00065     int revertToStart (void);
00066 
00067     NDMaterial *getCopy (void);
00068     const char *getType (void) const;
00069     //int getOrder (void) const;
00070 
00071     int sendSelf(int commitTag, Channel &theChannel);
00072     int recvSelf(int commitTag, Channel &theChannel, FEM_ObjectBroker &theBroker);
00073 
00074     void Print(OPS_Stream &s, int flag =0);
00075 
00076   //Private functions
00077   private:
00078     const Tensor& ComputeElasticStiffness(void);
00079 
00080   protected:
00081 
00082   private:
00083     double exp0;                 // exponent usually 0.6
00084     double p_ref;                // Reference pressure, usually atmosphere pressure, i.e. 100kPa
00085     double p_cutoff;             // Cutoff pressure of this material point
00086 
00087     static stresstensor Stress;  // Stress tensor
00088     static Tensor Dt;            // Elastic constants tensor
00089     straintensor Strain;         // Strain tensor
00090     
00091     stresstensor CStrain;
00092     stresstensor CStress;
00093 };
00094 
00095 #endif
00096 

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