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
00036
00037
00038 #ifndef Pinching4Material_h
00039 #define Pinching4Material_h
00040
00041 #include <UniaxialMaterial.h>
00042 #include <FileStream.h>
00043 #include <OPS_Stream.h>
00044 #include <Vector.h>
00045
00046 class Pinching4Material : public UniaxialMaterial
00047 {
00048 public :
00049 Pinching4Material(int tag,
00050 double stress1p, double strain1p, double stress2p, double strain2p,
00051 double stress3p, double strain3p, double stress4p, double strain4p,
00052 double stress1n, double strain1n, double stress2n, double strain2n,
00053 double stress3n, double strain3n, double stress4n, double strain4n,
00054 double rDispP, double rForceP, double uForceP,
00055 double rDispN, double rForceN, double uForceN,
00056 double gammaK1, double gammaK2, double gammaK3,
00057 double gammaK4, double gammaKLimit,
00058 double gammaD1, double gammaD2, double gammaD3,
00059 double gammaD4, double gammaDLimit,
00060 double gammaF1, double gammaF2, double gammaF3,
00061 double gammaF4, double gammaFLimit, double gammaE, int DmgCyc);
00062
00063 Pinching4Material(int tag,
00064 double stress1p, double strain1p, double stress2p, double strain2p,
00065 double stress3p, double strain3p, double stress4p, double strain4p,
00066 double rDispP, double rForceP, double uForceP,
00067 double gammaK1, double gammaK2, double gammaK3,
00068 double gammaK4, double gammaKLimit,
00069 double gammaD1, double gammaD2, double gammaD3,
00070 double gammaD4, double gammaDLimit,
00071 double gammaF1, double gammaF2, double gammaF3,
00072 double gammaF4, double gammaFLimit, double gammaE, int DmgCyc);
00073
00074 Pinching4Material();
00075 ~Pinching4Material();
00076
00077 int setTrialStrain(double strain, double strainRate = 0.0);
00078 double getStrain(void);
00079 double getStress(void);
00080 double getTangent(void);
00081 double getInitialTangent(void);
00082
00083 int commitState(void);
00084 int revertToLastCommit(void);
00085 int revertToStart(void);
00086
00087 UniaxialMaterial *getCopy(void);
00088
00089 int sendSelf(int commitTag, Channel &theChannel);
00090 int recvSelf(int commitTag, Channel &theChannel,
00091 FEM_ObjectBroker &theBroker);
00092
00093 void Print(OPS_Stream &s, int flag = 0);
00094
00095 protected:
00096
00097 private:
00098
00099 double stress1p; double strain1p; double stress2p; double strain2p;
00100 double stress3p; double strain3p; double stress4p; double strain4p;
00101 double stress1n; double strain1n; double stress2n; double strain2n;
00102 double stress3n; double strain3n; double stress4n; double strain4n;
00103 Vector envlpPosStress; Vector envlpPosStrain;
00104 Vector envlpNegStress; Vector envlpNegStrain;
00105
00106 int tagMat;
00107
00108
00109
00110 double gammaK1; double gammaK2; double gammaK3; double gammaK4; double gammaKLimit;
00111 double gammaD1; double gammaD2; double gammaD3; double gammaD4; double gammaDLimit;
00112 double gammaF1; double gammaF2; double gammaF3; double gammaF4; double gammaFLimit;
00113 double gammaE;
00114 double TnCycle, CnCycle;
00115 int DmgCyc;
00116
00117
00118 double rDispP; double rForceP; double uForceP;
00119 double rDispN; double rForceN; double uForceN;
00120
00121 Vector state3Stress; Vector state3Strain; Vector state4Stress; Vector state4Strain;
00122
00123 Vector envlpPosDamgdStress; Vector envlpNegDamgdStress;
00124
00125
00126 double Tstress;
00127 double Tstrain;
00128 double Ttangent;
00129
00130
00131 int Cstate;
00132 double Cstrain;
00133 double Cstress;
00134 double CstrainRate;
00135 double lowCstateStrain;
00136 double lowCstateStress;
00137 double hghCstateStrain;
00138 double hghCstateStress;
00139 double CminStrainDmnd;
00140 double CmaxStrainDmnd;
00141 double Cenergy;
00142 double CgammaK;
00143 double CgammaD;
00144 double CgammaF;
00145 double gammaKUsed;
00146 double gammaFUsed;
00147
00148
00149 int Tstate;
00150 double dstrain;
00151 double TstrainRate;
00152 double lowTstateStrain;
00153 double lowTstateStress;
00154 double hghTstateStrain;
00155 double hghTstateStress;
00156 double TminStrainDmnd;
00157 double TmaxStrainDmnd;
00158 double Tenergy;
00159 double TgammaK;
00160 double TgammaD;
00161 double TgammaF;
00162
00163
00164 double kElasticPos;
00165 double kElasticNeg;
00166 double kElasticPosDamgd;
00167 double kElasticNegDamgd;
00168 double uMaxDamgd;
00169 double uMinDamgd;
00170
00171
00172
00173 double energyCapacity;
00174 double kunload;
00175 double elasticStrainEnergy;
00176
00177 void SetEnvelope(void);
00178 void getstate(double, double);
00179 double posEnvlpStress(double);
00180 double posEnvlpTangent(double);
00181 double negEnvlpStress(double);
00182 double negEnvlpTangent(double);
00183 void getState3(Vector& , Vector& , double);
00184 void getState4(Vector& , Vector& , double);
00185 double Envlp3Tangent(Vector , Vector , double);
00186 double Envlp3Stress(Vector , Vector , double);
00187 double Envlp4Tangent(Vector , Vector , double);
00188 double Envlp4Stress(Vector , Vector , double);
00189 void updateDmg(double, double);
00190
00191 };
00192 #endif