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
00030
00031 #ifndef NDMaterial_h
00032 #define NDMaterial_h
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047 #include <Material.h>
00048 #include <Tensor.h>
00049
00050 class Matrix;
00051 class ID;
00052 class Vector;
00053 class Information;
00054 class Response;
00055
00056 class NDMaterial : public Material
00057 {
00058 public:
00059 NDMaterial(int tag, int classTag);
00060 NDMaterial();
00061 virtual ~NDMaterial();
00062
00063
00064 virtual double getRho(void);
00065
00066 virtual int setTrialStrain(const Vector &v);
00067 virtual int setTrialStrain(const Vector &v, const Vector &r);
00068 virtual int setTrialStrainIncr(const Vector &v);
00069 virtual int setTrialStrainIncr(const Vector &v, const Vector &r);
00070 virtual const Matrix &getTangent(void);
00071 virtual const Matrix &getInitialTangent(void) {return this->getTangent();};
00072
00073 virtual const Vector &getStress(void);
00074 virtual const Vector &getStrain(void);
00075
00076
00077 virtual const Vector &getCommittedStress(void);
00078 virtual const Vector &getCommittedStrain(void);
00079
00080
00081 virtual int setTrialStrain(const Tensor &v);
00082 virtual int setTrialStrain(const Tensor &v, const Tensor &r);
00083 virtual int setTrialStrainIncr(const Tensor &v);
00084 virtual int setTrialStrainIncr(const Tensor &v, const Tensor &r);
00085 virtual const Tensor& getTangentTensor(void);
00086 virtual const stresstensor& getStressTensor(void);
00087 virtual const straintensor& getStrainTensor(void);
00088
00089 virtual const straintensor& getPlasticStrainTensor(void);
00090
00091
00092 virtual int setTrialF(const straintensor &f);
00093 virtual int setTrialFIncr(const straintensor &df);
00094 virtual int setTrialC(const straintensor &c);
00095 virtual int setTrialCIncr(const straintensor &dc);
00096 virtual const stresstensor& getPK1StressTensor(void);
00097 virtual const stresstensor& getCauchyStressTensor(void);
00098 virtual const straintensor& getF(void);
00099 virtual const straintensor& getC(void);
00100 virtual const straintensor& getFp(void);
00101
00102
00103 virtual int commitState(void) = 0;
00104 virtual int revertToLastCommit(void) = 0;
00105 virtual int revertToStart(void) = 0;
00106
00107 virtual NDMaterial *getCopy(void) = 0;
00108 virtual NDMaterial *getCopy(const char *code);
00109
00110 virtual const char *getType(void) const = 0;
00111 virtual int getOrder(void) const {return 0;};
00112
00113 virtual Response *setResponse (const char **argv, int argc,
00114 Information &matInformation,
00115 OPS_Stream &s);
00116 virtual int getResponse (int responseID, Information &matInformation);
00117
00118
00119 virtual const Vector & getStressSensitivity (int gradNumber, bool conditional);
00120 virtual const Vector & getStrainSensitivity (int gradNumber);
00121 virtual const Matrix & getTangentSensitivity (int gradNumber);
00122 virtual const Matrix & getDampTangentSensitivity(int gradNumber);
00123 virtual double getRhoSensitivity (int gradNumber);
00124 virtual int commitSensitivity (Vector & strainGradient, int gradNumber, int numGrads);
00125
00126
00127 protected:
00128
00129 private:
00130 static Matrix errMatrix;
00131 static Vector errVector;
00132 static Tensor errTensor;
00133 static stresstensor errstresstensor;
00134 static straintensor errstraintensor;
00135 };
00136
00137
00138 #endif