Bond_SP01.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.2 $ 00022 // $Date: 2006/08/03 22:06:26 $ 00023 00024 // Written: Jian Zhao, Iowa State University 04/2004 00025 // Revision: Jian Zhao, University of Wisconsin, Milwaukee 04/2006 00026 // 00027 // Description: This file contains the class defination for Uniaxial material Bond_SP01. 00028 // Bond_SP01: Strain penetration of rebars at footings w/o bond damage. 00029 /* *********************************************************************** ** 00030 ** Nonlinear material model with Menegoto-Pinto type functions to define ** 00031 ** envelope curve and loading-unloading-reloading curve. test data of ** 00032 ** rebar stress vs. rebar slip is needed to calibrate the model. ** 00033 ** *********************************************************************** */ 00034 00035 #ifndef Bond_SP01_h 00036 #define Bond_SP01_h 00037 00038 #include <UniaxialMaterial.h> 00039 #include <math.h> 00040 #include <Matrix.h> 00041 #include <Vector.h> 00042 00043 class Bond_SP01 : public UniaxialMaterial 00044 { 00045 public: 00046 Bond_SP01(int tag, double fy, double sy, double fu, double su, double Kz, double R, double Cd, double db, double fc, double la); 00047 Bond_SP01(int tag, double fy, double sy, double fu, double su, double Kz, double R); 00048 Bond_SP01(); 00049 ~Bond_SP01(); 00050 00051 const char *getClassType(void) const {return "Bond_SP01";}; 00052 00053 int setTrialStrain (double strain, double strainRate = 0.0); 00054 int setTrial (double strain, double &stress, double &tangent, double strainRate = 0.0); 00055 double getStrain(void); 00056 double getStress(void); 00057 double getTangent(void); 00058 double getInitialTangent(void); 00059 00060 int commitState(void); 00061 int revertToLastCommit(void); 00062 int revertToStart(void); 00063 00064 UniaxialMaterial *getCopy(void); 00065 00066 int sendSelf(int commitTag, Channel &theChannel); 00067 int recvSelf(int commitTag, Channel &theChannel, 00068 FEM_ObjectBroker &theBroker); 00069 00070 void Print(OPS_Stream &s, int flag =0); 00071 00072 protected: 00073 00074 private: 00075 /*** anchorage condition ***/ 00076 double db; // rebar diameter 00077 double fc; // concrete compressive strength (positive ksi) 00078 double lba; // bond length (can be shorter than current set -> rigid-body slip) 00079 double la; // required minimum anchorage length 00080 00081 /*** strain penetration ***/ 00082 double sy; // rebar slip at bar yielding 00083 double su; // rebar slip at bar failure (assume @ 1.5fy) 00084 double fy; // bar yield strength 00085 double fu; // bar ultimate strength (assume @ 1.5fy) 00086 double E0; // initial slope of the envelope 00087 double Kz; // initial hardening ratio (0.3), 0.25<Kz<0.5 00088 double Cr; // R factor for the envelope using menegoto-pinto curve 00089 double Ks; // reloading stop point (to avoid infinity slope with pinching) 00090 00091 /*** pinching condition ***/ 00092 double R; // R factor for reloading using menegoto-pinto type curve 00093 double Cd; // bond damage factor (currently no use) 00094 00095 /*** CONVERGED History Variables ***/ 00096 double CRSlip; // return slip 00097 double CRLoad; // return load 00098 double CRSlope; // return slope 00099 double CmaxHSlip; // Maximum slip in tension 00100 double CminHSlip; // Maximum slip in compression 00101 int Cloading; // Flag for Stressing/unStressing 00102 // 1 = loading (positive slip increment) 00103 // -1 = unloaading (negative slip increment) 00104 // 0 = initial state 00105 int CYieldFlag; // Flag for yielding 00106 // 1 = yielded 00107 // 0 = not yielded 00108 00109 /*** CONVERGED State Variables ***/ 00110 double Cslip; 00111 double Cload; 00112 double Ctangent; 00113 00114 /*** TRIAL History Variables ***/ 00115 double TRSlip; // return slip 00116 double TRLoad; // return load 00117 double TRSlope; // return slope 00118 double TmaxHSlip; // Maximum slip in tension 00119 double TminHSlip; // Maximum slip in compression 00120 int Tloading; // Flag for Stressing/unStressing 00121 int TYieldFlag; // Flag for yielding 00122 00123 /*** TRIAL State Variables ***/ 00124 double Tslip; 00125 double Tload; 00126 double Ttangent; 00127 00128 // Calculates the trial state variables based on the trial Strain 00129 void determineTrialState (double tslip, double dslip); 00130 00131 // Calculates envelope stress for a slip 00132 double getEnvelopeStress (double slip); 00133 00134 // Determines if a Stress reversal has occurred based on the trial Strain 00135 void detectStressReversal (double dslip); 00136 }; 00137 #endif |