FatigueMaterial.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/18 23:00:31 $
00023 // $Source: /usr/local/cvs/OpenSees/SRC/material/uniaxial/FatigueMaterial.h,v $
00024                                                       
00025 // Written: Patxi
00026 // Created: Aug 2003
00027 //
00028 // Description: This file contains the class definition for 
00029 // FatigueMaterial.  FatigueMaterial wraps a UniaxialMaterial
00030 // and imposes fatigue limits. More information about this material can
00031 // be found in the doctoral dissertation of Patxi Uriz:
00032 //
00033 //   Uriz, Patxi, "Towards Earthquake Resistant Design of 
00034 //      Concentrically Braced Steel Frames," Ph.D. Dissertation, 
00035 //      Structural Engineering, Mechanics, and Materials, Civil 
00036 //      and Envrironmental Engineering, University of California, 
00037 //      Berkeley, December 2005
00038 //
00039 
00040 
00041 
00042 #ifndef FatigueMaterial_h
00043 #define FatigueMaterial_h
00044 
00045 #include <UniaxialMaterial.h>
00046 
00047 class FatigueMaterial : public UniaxialMaterial
00048 {
00049  public:
00050   // Default calibrated values from Ballio and Castiglioni Calibrations for 
00051   // European steel, wide flange sections.
00052 
00053   FatigueMaterial(int tag, UniaxialMaterial &material, 
00054                   double Dmax    =  1.0,
00055                   double E0      =  0.191,
00056                   double m       = -0.458,
00057                   double minStrain = -1.0e16,
00058                   double maxStrain =  1.0e16 );
00059   
00060   FatigueMaterial();
00061   ~FatigueMaterial();
00062 
00063   const char *getClassType(void) const {return "FatigueMaterial";};
00064   
00065   int setTrialStrain(double strain, double strainRate = 0.0); 
00066   double getStrain(void);          
00067   double getStrainRate(void);
00068   double getStress(void);
00069   double getTangent(void);
00070   double getDampTangent(void);
00071   double getInitialTangent(void) {return theMaterial->getInitialTangent();}
00072   
00073   int commitState(void);
00074   int revertToLastCommit(void);    
00075   int revertToStart(void);        
00076   
00077   UniaxialMaterial *getCopy(void);
00078   
00079   int sendSelf(int commitTag, Channel &theChannel);  
00080   int recvSelf(int commitTag, Channel &theChannel, 
00081                FEM_ObjectBroker &theBroker);    
00082   
00083   void Print(OPS_Stream &s, int flag =0);
00084 
00085   Response *setResponse (const char **argv, int argc, Information &matInformation, OPS_Stream &s);
00086   int getResponse (int responseID, Information &matInformation);    
00087   
00088  protected:
00089   
00090  private:
00091   UniaxialMaterial *theMaterial;
00092   
00093   double DI; //Damage index
00094   double  X; //Range in consideration
00095   double  Y; //Previous Adjacent Range
00096   double  A; //Peak or valley 1
00097   double  B; //Peak or valley 2
00098   double  C; //Peak or valley 2
00099   double  D; //Peak or valley 4
00100   int   PCC; /*Previous Cycle counter flag if >1 then previous 'n' 
00101                cycles did not flag a complete cycle */
00102   int   R1F; //Flag for first  peak count
00103   int   R2F; //Flag for second peak count
00104   double CS; //Current Slope
00105   double PS; //Previous slope
00106   double EP; //Previous Strain
00107   int    SF; /*Start Flag = 0 if very first strain, 
00108                (i.e. when initializing)    = 1 otherwise */
00109   double DL; //Damage if current strain was last peak.
00110   
00111   double Dmax;
00112   double E0;
00113   double m;
00114   
00115   double minStrain;
00116   double maxStrain;
00117   
00118   bool Cfailed;
00119   double trialStrain;
00120 
00121   // added 6/9/2006
00122   // For recording strain ranges (SRXX) and Number of Cycles (NCXX)
00123   double SR1;  // Committed strain range at peak
00124   double NC1;  // Committed number of cycles at SR1 (i.e. 1.0 or 0.5)
00125   double SR2;  // Committed strain range 2 at PSUEDO peak - there are potentially two ranges
00126   double NC2;  // Committed number of cycles at SR2 2 (at PSUEDO peak) - there are potentially two ranges
00127   double SR3;  // Committed strain range 3 at PSUEDO peak - there are potentially two ranges
00128   double NC3;  // Committed number of cycles at SR2 3 (at PSUEDO peak) - there are potentially two ranges
00129   
00130 };
00131 
00132 
00133 #endif
00134 

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