Steel03.hGo to the documentation of this file.00001 /* ****************************************************************** ** 00002 ** OpenSees - Open System for Earthquake Engineering Simulation ** 00003 ** Pacific Earthquake Engineering Research Center ** 00004 ** ** 00005 ** ** 00006 ** (C) Copyright 1999, The Regents of the University of California ** 00007 ** All Rights Reserved. ** 00008 ** ** 00009 ** Commercial use of this program without express permission of the ** 00010 ** University of California, Berkeley, is strictly prohibited. See ** 00011 ** file 'COPYRIGHT' in main directory for information on usage and ** 00012 ** redistribution, and for a DISCLAIMER OF ALL WARRANTIES. ** 00013 ** ** 00014 ** Developed by: ** 00015 ** Frank McKenna (fmckenna@ce.berkeley.edu) ** 00016 ** Gregory L. Fenves (fenves@ce.berkeley.edu) ** 00017 ** Filip C. Filippou (filippou@ce.berkeley.edu) ** 00018 ** ** 00019 ** ****************************************************************** */ 00020 00021 // $Revision: 1.3 $ 00022 // $Date: 2006/08/03 23:42:19 $ 00023 // $Source: /usr/local/cvs/OpenSees/SRC/material/uniaxial/Steel03.h,v $ 00024 00025 00026 #ifndef Steel03_h 00027 #define Steel03_h 00028 00029 // File: Steel03.h 00030 // 00031 // Written: mackie 00032 // Created: 06/2005 00033 // Revision: A 00034 // 00035 // Description: This file contains the class definition for 00036 // Steel03.h. Steel03 is Steel01 verbatim but with added Giuffre-Menegotto-Pinto 00037 // transitions on the loading and unloading loops. 00038 // references: 00039 // 1.) Menegotto, M., and Pinto, P.E. (1973). Method of analysis of cyclically loaded 00040 // RC plane frames including changes in geometry and non-elastic behavior of 00041 // elements under normal force and bending. Preliminary Report IABSE, vol 13. 00042 // 2.) Dhakal, R.J., and Maekawa, K. (2002). Path-dependent cyclic stress-strain relationship 00043 // of reinforcing bar including buckling. Engineering Structures, 24(11): 1383-96. 00044 // 3.) Gomes, A., and Appleton, J. (1997). Nonlinear cyclic stress-strain relationship of 00045 // reinforcing bars including buckling. Engineering Structures, 19(10): 822-6. 00046 00047 // 00048 // 00049 // 00050 // What: "@(#) Steel03.h, revA" 00051 00052 00053 #include <UniaxialMaterial.h> 00054 00055 // Default values for isotropic hardening parameters a1, a2, a3, and a4 00056 #define STEEL_03_DEFAULT_A1 0.0 00057 #define STEEL_03_DEFAULT_A2 55.0 00058 #define STEEL_03_DEFAULT_A3 0.0 00059 #define STEEL_03_DEFAULT_A4 55.0 00060 00061 class Steel03 : public UniaxialMaterial 00062 { 00063 public: 00064 Steel03(int tag, double fy, double E0, double b, double r, double cR1, double cR2, 00065 double a1 = STEEL_03_DEFAULT_A1, double a2 = STEEL_03_DEFAULT_A2, 00066 double a3 = STEEL_03_DEFAULT_A3, double a4 = STEEL_03_DEFAULT_A4); 00067 Steel03(); 00068 ~Steel03(); 00069 00070 const char *getClassType(void) const {return "Steel03";}; 00071 00072 int setTrialStrain(double strain, double strainRate = 0.0); 00073 int setTrial (double strain, double &stress, double &tangent, double strainRate = 0.0); 00074 double getStrain(void); 00075 double getStress(void); 00076 double getTangent(void); 00077 double getInitialTangent(void) {return E0;}; 00078 00079 int commitState(void); 00080 int revertToLastCommit(void); 00081 int revertToStart(void); 00082 00083 UniaxialMaterial *getCopy(void); 00084 00085 int sendSelf(int commitTag, Channel &theChannel); 00086 int recvSelf(int commitTag, Channel &theChannel, 00087 FEM_ObjectBroker &theBroker); 00088 00089 void Print(OPS_Stream &s, int flag =0); 00090 00091 protected: 00092 00093 private: 00094 /*** Material Properties ***/ 00095 double fy; // Yield stress 00096 double E0; // Initial stiffness 00097 double b; // Hardening ratio (b = Esh/E0) 00098 double r; // radius of rounded corners 00099 double cR1; 00100 double cR2; 00101 double a1; 00102 double a2; 00103 double a3; 00104 double a4; // a1 through a4 are coefficients for isotropic hardening 00105 00106 /*** CONVERGED History Variables ***/ 00107 double CminStrain; // Minimum strain in compression 00108 double CmaxStrain; // Maximum strain in tension 00109 double CshiftP; // Shift in hysteresis loop for positive loading 00110 double CshiftN; // Shift in hysteresis loop for negative loading 00111 int Cloading; // Flag for loading/unloading 00112 // 1 = loading (positive strain increment) 00113 // -1 = unloading (negative strain increment) 00114 // 0 initially 00115 double CbStrain; 00116 double CbStress; 00117 double CrStrain; 00118 double CrStress; 00119 double Cplastic; 00120 00121 /*** CONVERGED State Variables ***/ 00122 double Cstrain; 00123 double Cstress; 00124 double Ctangent; 00125 double CcurR; 00126 00127 /*** TRIAL History Variables ***/ 00128 double TminStrain; 00129 double TmaxStrain; 00130 double TshiftP; 00131 double TshiftN; 00132 int Tloading; 00133 double TbStrain; 00134 double TbStress; 00135 double TrStrain; 00136 double TrStress; 00137 double Tplastic; 00138 00139 /*** TRIAL State Variables ***/ 00140 double Tstrain; 00141 double Tstress; 00142 double Ttangent; // Not really a state variable, but declared here 00143 // for convenience 00144 double TcurR; 00145 00146 // Calculates the trial state variables based on the trial strain 00147 void determineTrialState (double dStrain); 00148 double getR (double x_in); 00149 00150 }; 00151 00152 #endif |