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
00035
00036
00037
00039
00040 #ifndef Clough_H
00041 #define Clough_H
00042
00043 #include <UniaxialMaterial.h>
00044 #include <Vector.h>
00045 #include <stdio.h>
00046
00047 class Clough : public UniaxialMaterial
00048 {
00049 public:
00050 Clough();
00051 Clough(int tag, Vector inputParam );
00052 virtual ~Clough();
00053 const char *getClassType(void) const {return "Clough";};
00054 int setTrialStrain(double d, double strainRate = 0.0);
00055 double getStrain(void);
00056
00057 double getStress(void);
00058 double getTangent(void);
00059 double getInitialTangent(void);
00060 int commitState(void);
00061 int revertToLastCommit(void);
00062 int revertToStart(void);
00063
00064
00065 UniaxialMaterial *getCopy(void);
00066
00067 int sendSelf(int commitTag, Channel &theChannel);
00068 int recvSelf(int commitTag, Channel &theChannel,FEM_ObjectBroker &theBroker);
00069
00070 void Print(OPS_Stream &s, int flag =0);
00071
00072 protected:
00073 void envelPosCap(double fy, double alphaPos, double alphaCap,
00074 double cpDsp, double d, double *f, double *ek );
00075
00076 void envelNegCap(double fy, double alphaNeg, double alphaCap,
00077 double cpDsp, double d, double *f, double *ek);
00078
00079 void recordInfo(int cond =0);
00080
00081
00082 private:
00083
00084 double elstk,fyieldPos,fyieldNeg,alpha,Resfac;
00085 double capSlope,capDispPos,capDispNeg;
00086 double ecaps,ecapk,ecapa,ecapd,cs,ck,ca,cd;
00087
00088
00089 double dyieldPos,dyieldNeg;
00090 double Enrgts,Enrgtk,Enrgta,Enrgtd;
00091
00092 double hsTrial[24], hsCommit[24], hsLastCommit[24];
00093
00094 };
00095
00096 #endif