00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #ifndef FluidSolidPorousMaterial_h
00014 #define FluidSolidPorousMaterial_h
00015
00016 #include <NDMaterial.h>
00017 #include <MultiYieldSurface.h>
00018 #include <Matrix.h>
00019 #include <Tensor.h>
00020
00021 class Response;
00022
00023 class FluidSolidPorousMaterial : public NDMaterial
00024 {
00025 public:
00026
00027 FluidSolidPorousMaterial (int tag, int nd, NDMaterial &soilMat,
00028 double combinedBulkModul, double atm=101.);
00029
00030
00031 FluidSolidPorousMaterial ();
00032
00033
00034 FluidSolidPorousMaterial (const FluidSolidPorousMaterial &);
00035
00036
00037 virtual ~FluidSolidPorousMaterial ();
00038
00039 const char *getClassType(void) const {return "FluidSolidPorousMaterial";};
00040
00041
00042 int setTrialStrain (const Vector &strain);
00043
00044
00045 int setTrialStrain(const Vector &v, const Vector &r);
00046
00047 int setTrialStrainIncr(const Vector &v);
00048 int setTrialStrainIncr(const Vector &v, const Vector &r);
00049
00050
00051 const Matrix &getTangent (void);
00052 const Matrix &getInitialTangent (void);
00053
00054 double getRho(void);
00055
00056
00057 const Vector &getStress (void);
00058 const Vector &getStrain (void);
00059 const Vector &getCommittedStress (void);
00060 const Vector &getCommittedStrain (void);
00061 const Vector &getCommittedPressure (void);
00062
00063
00064
00065 int commitState (void);
00066
00067
00068 int revertToLastCommit (void);
00069
00070 int revertToStart(void);
00071
00072
00073 NDMaterial *getCopy (void);
00074
00075
00076 NDMaterial *getCopy (const char *code);
00077
00078
00079 const char *getType (void) const ;
00080
00081
00082 int getOrder (void) const ;
00083
00084 int sendSelf(int commitTag, Channel &theChannel);
00085 int recvSelf(int commitTag, Channel &theChannel,
00086 FEM_ObjectBroker &theBroker);
00087 Response *setResponse (const char **argv, int argc, Information &matInfo, OPS_Stream &s);
00088 int getResponse (int responseID, Information &matInformation);
00089 void Print(OPS_Stream &s, int flag =0);
00090
00091 int updateParameter(int responseID, Information &eleInformation);
00092
00093
00094 friend class PyLiq1;
00095 friend class TzLiq1;
00096
00097 protected:
00098
00099 private:
00100 static int matCount;
00101 static int* ndmx;
00102 static int* loadStagex;
00103 static double* combinedBulkModulusx;
00104 static double pAtm;
00105 int matN;
00106 NDMaterial * theSoilMaterial;
00107 double trialExcessPressure;
00108 double currentExcessPressure;
00109 double trialVolumeStrain;
00110 double currentVolumeStrain;
00111 double initMaxPress;
00112 int e2p;
00113
00114 static Vector workV3;
00115 static Vector workV6;
00116 static Matrix workM3;
00117 static Matrix workM6;
00118 };
00119
00120 #endif
00121