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 ReinforcingSteel_h
00039 #define ReinforcingSteel_h
00040 #define HelpDebugMat //Debugging info, JFM
00041
00042 #include "UniaxialMaterial.h"
00043
00044
00045
00046
00047
00048 const int LastRule_RS=20;
00049
00050 class ReinforcingSteel : public UniaxialMaterial
00051 {
00052 public:
00053 ReinforcingSteel(int tag, double fyield, double fultimate, double youngs, double youngs_hard,
00054 double estrainhard, double eultimate, int buckModel, double slenderness, double alpha, double r,
00055 double gama, double Fatigue1, double Fatigue2, double Degrade1,
00056 double RC1, double RC2, double RC3, double A1, double HardLim);
00057 ReinforcingSteel(int tag);
00058 ~ReinforcingSteel();
00059
00060 const char *getClassType(void) const {return "ReinforcingSteel";};
00061
00062 int setTrialStrain(double strain, double strainRate = 0.0);
00063 double getStrain(void);
00064 double getStress(void);
00065 double getTangent(void);
00066 double getInitialTangent(void);
00067
00068 int commitState(void);
00069 int revertToLastCommit(void);
00070 int revertToStart(void);
00071
00072 UniaxialMaterial *getCopy(void);
00073
00074 int sendSelf(int commitTag, Channel &theChannel);
00075 int recvSelf(int commitTag, Channel &theChannel,
00076 FEM_ObjectBroker &theBroker);
00077
00078 void Print(OPS_Stream &s, int flag =0);
00079
00080 protected:
00081
00082 private:
00083
00084 #ifdef HelpDebugMat
00085 static int classCount;
00086 int thisClassNumber;
00087 int thisClassCommit;
00088 int thisClassStep;
00089 #endif
00090
00091 double ZeroTol;
00092 double reduction;
00093 double fsu_fraction;
00094 double beta;
00095 int theBarFailed;
00096
00097
00098 double p;
00099 double Esp;
00100 double eshp;
00101 double fshp;
00102 double Eshp;
00103 double esup;
00104 double fsup;
00105 double Esup;
00106 double Eypp;
00107 double fint;
00108 double eyp;
00109 double fyp;
00110
00111 double esh;
00112 double Esh;
00113
00114 double eshpa;
00115 double Eshpb;
00116
00117 double a1;
00118 double hardLim;
00119
00120 double THardFact;
00121 double CHardFact;
00122
00123
00124 double T_ePlastic[LastRule_RS/2+1];
00125 double C_ePlastic[LastRule_RS/2+1];
00126
00127 double TFatDamage;
00128 double CFatDamage;
00129 double LDratio;
00130 double Fat1;
00131 double Fat2;
00132 double Deg1;
00133 int BuckleModel;
00134 double BackStress;
00135
00136
00137 double RC1;
00138 double RC2;
00139 double RC3;
00140
00141
00142 double TR;
00143 double Tfch;
00144 double TQ;
00145 double TEsec;
00146 double Tea;
00147 double Tfa;
00148 double TEa;
00149 double Teb;
00150 double Tfb;
00151 double TEb;
00152
00153 double re;
00154 double rE1;
00155 double rE2;
00156
00157
00158 double CR[LastRule_RS/2+1];
00159 double Cfch[LastRule_RS/2+1];
00160 double CQ[LastRule_RS/2+1];
00161 double CEsec[LastRule_RS/2+1];
00162 double Cea[LastRule_RS/2+1];
00163 double Cfa[LastRule_RS/2+1];
00164 double CEa[LastRule_RS/2+1];
00165 double Ceb[LastRule_RS/2+1];
00166 double Cfb[LastRule_RS/2+1];
00167 double CEb[LastRule_RS/2+1];
00168
00169
00170 int TBranchNum;
00171 int TBranchMem;
00172 double Teo_p;
00173 double Teo_n;
00174 double Temax;
00175 double Temin;
00176 double TeAbsMax;
00177 double TeAbsMin;
00178 double TeCumPlastic;
00179
00180
00181 int CBranchNum;
00182 double Ceo_p;
00183 double Ceo_n;
00184 double Cemax;
00185 double Cemin;
00186 double CeAbsMax;
00187 double CeAbsMin;
00188 double CeCumPlastic;
00189
00190
00191 double TStrain;
00192 double TStress;
00193 double TTangent;
00194
00195
00196 double CStrain;
00197 double CStress;
00198 double CTangent;
00199
00200
00201 int inline Sign(double x);
00202 double Backbone_f(double ess);
00203 double Backbone_fNat(double essp);
00204 double Backbone_E(double ess);
00205 double Buckled_stress_Dhakal(double ess, double fss);
00206 double Buckled_stress_Gomes(double ess, double fss);
00207 double Buckled_mod_Gomes(double ess, double fss, double Ess);
00208 double Buckled_mod_Dhakal(double ess, double fss, double Ess);
00209
00210 double inline MP_f(double e);
00211 double inline MP_E(double e);
00212 int SetMP(void);
00213 double MPfunc(double a);
00214 void inline SetTRp(void);
00215 void inline SetTRn(void);
00216 void inline SetTRp1(void);
00217 void inline SetTRn1(void);
00218 void SetPastCurve(int branch);
00219
00220 int BranchDriver(int res);
00221 int Rule1(int res);
00222 int Rule2(int res);
00223 int Rule3(int res);
00224 int Rule4(int res);
00225 int Rule5(int res);
00226 int Rule6(int res);
00227 int Rule7(int res);
00228 int Rule8(int res);
00229 int Rule9(int res);
00230 int Rule10(int res);
00231 int Rule11(int res);
00232 int Rule12(int res);
00233
00234 double inline damage(double ehalfPlastic);
00235 double inline getPlasticStrain(double ehalf, double stressAmp);
00236 double scalefactor();
00237 double inline ReturnSlope(double dea);
00238 void updateHardeningLoaction(double PlasticStrain);
00239 void updateHardeningLoactionParams(void);
00240 };
00241
00242 #endif
00243