00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
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
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
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
00077 private:
00078 const Tensor& ComputeElasticStiffness(void);
00079
00080 protected:
00081
00082 private:
00083 double exp0;
00084 double p_ref;
00085 double p_cutoff;
00086
00087 static stresstensor Stress;
00088 static Tensor Dt;
00089 straintensor Strain;
00090
00091 stresstensor CStrain;
00092 stresstensor CStress;
00093 };
00094
00095 #endif
00096