ReinforcingSteel.h

Go 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.4 $
00022 // $Date: 2006/08/03 23:42:19 $
00023 // $Source: /usr/local/cvs/OpenSees/SRC/material/uniaxial/ReinforcingSteel.h,v $
00024 
00025 /* ****************************************************************** **
00026 ** THIS FILE WAS DEVELOPED AT UC DAVIS                                **
00027 **                                                                    **
00028 ** Programmed by: Jon Mohle (jfmohle@ucdavis.edu)                     **
00029 ** Supervisor: Sashi Kunnath (skkunnath@ucdavis.edu)                  **
00030 **                                                                    **
00031 ********************************************************************* */
00032 // Written: Jon Mohle
00033 // Created: October 2003
00034 // Updated: September 2005
00035 // Description: This file contains the class definition for 
00036 // ReinforcingSteel.
00037 
00038 #ifndef ReinforcingSteel_h
00039 #define ReinforcingSteel_h
00040 #define HelpDebugMat        //Debugging info, JFM
00041 
00042 #include "UniaxialMaterial.h"
00043 
00044 // LastRule_RS must be greater than or equal to 12.  Add branches 4 at a time
00045 // eq 12, 16, 20, 24 etc... failure to add branches 4 at a time will cause problems.
00046 // A higher number will result in better tracking of the loop memory effects at the cost of additional memory usage
00047 // each pair of rules requires 11 additional double variables.
00048 const int LastRule_RS=20;  // must be divisable by 4!!!!!!!!!!!
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   // natural stress-strain variables
00098   double p;
00099   double Esp;   // natural Elastic Modulus
00100   double eshp;  // natural Hardening Strain
00101   double fshp;  // natural Hardening Stress
00102   double Eshp;  // natural Hardening Modulus
00103   double esup;  // natural Strain at Peak Stress
00104   double fsup;  // natural Peak Stress
00105   double Esup;  // natural peak stress Modulus
00106   double Eypp;  // natural Yield Plateu Modulus
00107   double fint;  // natural Stress yield plateu intersect
00108   double eyp;   // natural strain at yield
00109   double fyp;   // natural yield stress
00110 
00111   double esh;   // engineering hardening strain (user input)
00112   double Esh;   // engineering hardening slope (user input)
00113 
00114   double eshpa; // Curve smoothing Parameters (at SH transition)
00115   double Eshpb; // These are used to eliminate a sudden discontinuity in stiffness
00116 
00117   double a1;    // Linear Hardening Constant (with relation to accumulated plastic strain)
00118   double hardLim;
00119 
00120   double THardFact;
00121   double CHardFact;
00122 
00123   // Strength degradation parameters
00124   double T_ePlastic[LastRule_RS/2+1];
00125   double C_ePlastic[LastRule_RS/2+1];
00126   //double Nbf;               // Cyclic Backbone factor used correct backbone proporsional to return strain
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   // Menegotto-Pinto Calibration Constants
00137   double RC1;
00138   double RC2;
00139   double RC3;
00140 
00141   // Menegotto-Pinto Equation paramenters
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   // Converged Menegotto-Pinto Equation paramenters
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   // Trial History Variables
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   // Converged History Variables
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   // Trial State Variables
00191   double TStrain;           // Trial strain
00192   double TStress;           // Trial stress
00193   double TTangent;          // Trial tangent
00194 
00195   // Converged History Variables
00196   double CStrain;
00197   double CStress;
00198   double CTangent;
00199 
00200   // Private Functions
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 

Generated on Mon Oct 23 15:05:22 2006 for OpenSees by doxygen 1.5.0