FluidSolidPorousMaterial.h

Go to the documentation of this file.
00001 // $Revision: 1.13 $
00002 // $Date: 2006/08/04 18:29:48 $
00003 // $Source: /usr/local/cvs/OpenSees/SRC/material/nD/soil/FluidSolidPorousMaterial.h,v $
00004                                                                         
00005 // Written: ZHY
00006 // Created: August 2000
00007 // Revision: A
00008 //
00009 // Description: This file contains the class prototype for FluidSolidPorousMaterial.
00010 //
00011 // What: "@(#) FluidSolidPorousMaterial.h, revA"
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      // Initialization constructor
00027      FluidSolidPorousMaterial (int tag, int nd, NDMaterial &soilMat,
00028                                double combinedBulkModul, double atm=101.);
00029 
00030      // Default constructor
00031      FluidSolidPorousMaterial ();
00032 
00033      // Copy constructor
00034      FluidSolidPorousMaterial (const FluidSolidPorousMaterial &);
00035 
00036      // Destructor: clean up memory storage space.
00037      virtual ~FluidSolidPorousMaterial ();
00038 
00039      const char *getClassType(void) const {return "FluidSolidPorousMaterial";};
00040 
00041      // Sets the values of the trial strain tensor.
00042      int setTrialStrain (const Vector &strain);
00043 
00044      // Sets the values of the trial strain and strain rate tensors.
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      // Calculates current tangent stiffness.
00051      const Matrix &getTangent (void);
00052      const Matrix &getInitialTangent (void);
00053 
00054      double getRho(void);
00055 
00056      // Calculates the corresponding stress increment (rate), for a given strain increment. 
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      // Accepts the current trial strain values as being on the solution path, and updates 
00064      // all model parameters related to stress/strain states. Return 0 on success.
00065      int commitState (void);
00066 
00067      // Revert the stress/strain states to the last committed states. Return 0 on success.
00068      int revertToLastCommit (void);
00069 
00070      int revertToStart(void);
00071 
00072      // Return an exact copy of itself.
00073      NDMaterial *getCopy (void);
00074 
00075      // Return a copy of itself if "code"="PlainStrain" or "ThreeDimensional", otherwise return null.
00076      NDMaterial *getCopy (const char *code);
00077 
00078      // Return the string "PlaneStrain" or "ThreeDimensional".
00079      const char *getType (void) const ;
00080 
00081      // Return 3 or 6.
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      // RWB; PyLiq1 & TzLiq1 need to see the excess pore pressure and initial stresses.
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 

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