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 #ifndef Steel01_h
00027 #define Steel01_h
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041 #include <UniaxialMaterial.h>
00042
00043
00044 #define STEEL_01_DEFAULT_A1 0.0
00045 #define STEEL_01_DEFAULT_A2 55.0
00046 #define STEEL_01_DEFAULT_A3 0.0
00047 #define STEEL_01_DEFAULT_A4 55.0
00048
00049 class Steel01 : public UniaxialMaterial
00050 {
00051 public:
00052 Steel01(int tag, double fy, double E0, double b,
00053 double a1 = STEEL_01_DEFAULT_A1, double a2 = STEEL_01_DEFAULT_A2,
00054 double a3 = STEEL_01_DEFAULT_A3, double a4 = STEEL_01_DEFAULT_A4);
00055 Steel01();
00056 ~Steel01();
00057
00058 const char *getClassType(void) const {return "Steel01";};
00059
00060 int setTrialStrain(double strain, double strainRate = 0.0);
00061 int setTrial (double strain, double &stress, double &tangent, double strainRate = 0.0);
00062 double getStrain(void);
00063 double getStress(void);
00064 double getTangent(void);
00065 double getInitialTangent(void) {return E0;};
00066
00067 int commitState(void);
00068 int revertToLastCommit(void);
00069 int revertToStart(void);
00070
00071 UniaxialMaterial *getCopy(void);
00072
00073 int sendSelf(int commitTag, Channel &theChannel);
00074 int recvSelf(int commitTag, Channel &theChannel,
00075 FEM_ObjectBroker &theBroker);
00076
00077 void Print(OPS_Stream &s, int flag =0);
00078
00079
00080 int setParameter(const char **argv, int argc, Parameter ¶m);
00081 int updateParameter (int parameterID, Information &info);
00082 int activateParameter (int parameterID);
00083 double getStressSensitivity (int gradNumber, bool conditional);
00084 double getInitialTangentSensitivity(int gradNumber);
00085 int commitSensitivity (double strainGradient, int gradNumber, int numGrads);
00086
00087
00088 protected:
00089
00090 private:
00091
00092 double fy;
00093 double E0;
00094 double b;
00095 double a1;
00096 double a2;
00097 double a3;
00098 double a4;
00099
00100
00101 double CminStrain;
00102 double CmaxStrain;
00103 double CshiftP;
00104 double CshiftN;
00105 int Cloading;
00106
00107
00108
00109
00110
00111 double Cstrain;
00112 double Cstress;
00113 double Ctangent;
00114
00115
00116 double TminStrain;
00117 double TmaxStrain;
00118 double TshiftP;
00119 double TshiftN;
00120 int Tloading;
00121
00122
00123 double Tstrain;
00124 double Tstress;
00125 double Ttangent;
00126
00127
00128
00129 void determineTrialState (double dStrain);
00130
00131
00132 void detectLoadReversal (double dStrain);
00133
00134
00135 int parameterID;
00136 Matrix *SHVs;
00137
00138 };
00139
00140 #endif