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
00032
00033
00034
00035 #ifndef HystereticMaterial_h
00036 #define HystereticMaterial_h
00037
00038 #include <UniaxialMaterial.h>
00039
00041 class HystereticMaterial : public UniaxialMaterial
00042 {
00043 public:
00045 HystereticMaterial(int tag,
00046 double mom1p, double rot1p, double mom2p, double rot2p,
00047 double mom3p, double rot3p,
00048 double mom1n, double rot1n, double mom2n, double rot2n,
00049 double mom3n, double rot3n,
00050 double pinchX, double pinchY,
00051 double damfc1 = 0.0, double damfc2 = 0.0,
00052 double beta = 0.0);
00054 HystereticMaterial(int tag,
00055 double mom1p, double rot1p, double mom2p, double rot2p,
00056 double mom1n, double rot1n, double mom2n, double rot2n,
00057 double pinchX, double pinchY,
00058 double damfc1 = 0.0, double damfc2 = 0.0,
00059 double beta = 0.0);
00061 HystereticMaterial();
00063 ~HystereticMaterial();
00064
00066 int setTrialStrain(double strain, double strainRate = 0.0);
00068 double getStrain(void);
00070 double getStress(void);
00072 double getTangent(void);
00073
00075 int commitState(void);
00077 int revertToLastCommit(void);
00079 int revertToStart(void);
00080
00082 UniaxialMaterial *getCopy(void);
00083
00085 int sendSelf(int commitTag, Channel &theChannel);
00087 int recvSelf(int commitTag, Channel &theChannel,
00088 FEM_ObjectBroker &theBroker);
00089
00091 void Print(ostream &s, int flag =0);
00092
00093 protected:
00094
00095 private:
00097 double pinchX;
00098 double pinchY;
00099
00101 double damfc1;
00102 double damfc2;
00103
00105 double beta;
00106
00108 double TrotMax;
00110 double TrotMin;
00112 double TrotPu;
00114 double TrotNu;
00116 double TenergyD;
00118 int TloadIndicator;
00119
00121 double Ttangent;
00123 double Tstress;
00125 double Tstrain;
00126
00128 double CrotMax;
00130 double CrotMin;
00132 double CrotPu;
00134 double CrotNu;
00136 double CenergyD;
00138 int CloadIndicator;
00139
00141 double Cstress;
00143 double Cstrain;
00144
00146 double E1p, E1n;
00148 double mom1p, mom1n;
00150 double rot1p, rot1n;
00152 double E2p, E2n;
00154 double mom2p, mom2n;
00156 double rot2p, rot2n;
00158 double E3p, E3n;
00160 double mom3p, mom3n;
00162 double rot3p, rot3n;
00163
00165 double energyA;
00166
00168 void setEnvelope(void);
00169
00171 double posEnvlpStress(double strain);
00173 double negEnvlpStress(double strain);
00174
00176 double posEnvlpTangent(double strain);
00178 double negEnvlpTangent(double strain);
00179
00181 double posEnvlpRotlim(double strain);
00183 double negEnvlpRotlim(double strain);
00184
00186 void positiveIncrement(double dStrain);
00188 void negativeIncrement(double dStrain);
00189 };
00190
00191 #endif
00192 ÿ