Concrete04.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.4 $ 00022 // $Date: 2006/08/03 23:42:19 $ 00023 // $Source: /usr/local/cvs/OpenSees/SRC/material/uniaxial/Concrete04.h,v $ 00024 00025 00026 #ifndef Concrete04_h 00027 #define Concrete04_h 00028 00029 // File: Concrete04.h 00030 // 00031 // Written: N.Mitra (nmitra@u.washington.edu) 00032 // Created: 09/04 00033 // Revision: A 00034 // 00035 // Description: This file contains the class definition for 00036 // Concrete04.h 00037 // - No tension 00038 // - Linear unloading/reloading 00039 // 00040 // What: "@(#) Concrete04.h, revA" 00041 // Revision: 1. Adding in Exponential tension part (05-16-05) 00042 00043 #include <UniaxialMaterial.h> 00044 00045 class Concrete04 : public UniaxialMaterial 00046 { 00047 public: 00048 // Concrete04 (int tag, double fpc, double eco, double ecu, double Ec0, double fct); 00049 Concrete04 (int tag, double fpc, double eco, double ecu, double Ec0, double fct, double etu); 00050 Concrete04 (int tag, double fpc, double eco, double ecu, double Ec0, double fct, double etu, double beta); 00051 Concrete04 (int tag, double fpc, double eco, double ecu, double Ec0); 00052 Concrete04 (); 00053 ~Concrete04(); 00054 00055 const char *getClassType(void) {return "Concrete04";}; 00056 00057 int setTrialStrain(double strain, double strainRate = 0.0); 00058 double getStrain(void); 00059 double getStress(void); 00060 double getTangent(void); 00061 double getInitialTangent(void) {return Ec0;} 00062 00063 int commitState(void); 00064 int revertToLastCommit(void); 00065 int revertToStart(void); 00066 00067 UniaxialMaterial *getCopy(void); 00068 00069 int sendSelf(int commitTag, Channel &theChannel); 00070 int recvSelf(int commitTag, Channel &theChannel, 00071 FEM_ObjectBroker &theBroker); 00072 00073 void Print(OPS_Stream &s, int flag =0); 00074 00075 // LOWES: add function for use with variable hinge lnegth model 00076 int getMaterialType(void); 00077 // LOWES: end 00078 00079 protected: 00080 00081 private: 00082 /*** Material Properties ***/ 00083 double fpc; // Compressive strength 00084 double epsc0; // Strain at compressive strength 00085 double epscu; // Strain at crushing strength 00086 double Ec0; // initial tangent 00087 double fct; // Concrete tensile strength 00088 double etu; // ultimate tensile strain 00089 double beta; // exponential curve parameter, residual stress (as a factor of ft) 00090 // at etu. 00091 00092 /*** CONVERGED History Variables ***/ 00093 double CminStrain; // Smallest previous concrete strain (compression) 00094 double CmaxStrain; 00095 double CunloadSlope; // Unloading (reloading) slope from CminStrain 00096 double CendStrain; // Strain at the end of unloading from CminStrain 00097 double CcompStrain; // strain value at which the compression unloading intersects the 00098 // zero stress value or the strain value at which tensile reloading starts. 00099 double CUtenStress; // tensile stress value at which unloading begins 00100 double CUtenSlope; // unloading tensile slope value 00101 00102 /*** CONVERGED State Variables ***/ 00103 double Cstrain; 00104 double Cstress; 00105 double Ctangent; // Don't need Ctangent other than for revert and sendSelf/recvSelf 00106 // Storing it is better than recomputing it!!! 00107 00108 double TminStrain; 00109 /*** TRIAL History Variables ***/ double TmaxStrain; 00110 double TunloadSlope; 00111 double TendStrain; 00112 double TcompStrain; 00113 double TUtenStress; 00114 double TUtenSlope; 00115 00116 /*** TRIAL State Variables ***/ 00117 double Tstrain; 00118 double Tstress; 00119 double Ttangent; // Not really a state variable, but declared here 00120 // for convenience 00121 00122 void CompReload(void); 00123 void CompEnvelope(void); 00124 void setCompUnloadEnv(void); 00125 void TensReload(void); 00126 void TensEnvelope(void); 00127 void setTenUnload(void); 00128 }; 00129 00130 00131 #endif |