Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

HystereticMaterial.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.3 $
00022 // $Date: 2001/06/20 04:37:09 $
00023 // $Source: /usr/local/cvs/OpenSees/SRC/material/uniaxial/HystereticMaterial.h,v $
00024 
00025 // Written: MHS
00026 // Created: July 2000
00027 //
00028 // Description: This file contains the class definition for 
00029 // HystereticMaterial.  HystereticMaterial provides the implementation
00030 // of a one-dimensional hysteretic model with pinching of both
00031 // force and deformation, damage due to deformation and energy, and
00032 // degraded unloading stiffness based on maximum ductility.  This
00033 // is a modified implementation of Hyster2.f90 by Filippou.
00034 
00035 #ifndef HystereticMaterial_h
00036 #define HystereticMaterial_h
00037 
00038 #include <UniaxialMaterial.h>
00039 
00041 class HystereticMaterial : public UniaxialMaterial
00042 {
00043  public:
00045   HystereticMaterial(int tag,
00046    double mom1p, double rot1p, double mom2p, double rot2p,
00047    double mom3p, double rot3p,
00048    double mom1n, double rot1n, double mom2n, double rot2n,
00049    double mom3n, double rot3n,
00050    double pinchX, double pinchY,
00051    double damfc1 = 0.0, double damfc2 = 0.0,
00052    double beta = 0.0);
00054   HystereticMaterial(int tag,
00055    double mom1p, double rot1p, double mom2p, double rot2p,
00056    double mom1n, double rot1n, double mom2n, double rot2n,
00057    double pinchX, double pinchY,
00058    double damfc1 = 0.0, double damfc2 = 0.0,
00059    double beta = 0.0);
00061   HystereticMaterial();
00063   ~HystereticMaterial();
00064 
00066      int setTrialStrain(double strain, double strainRate = 0.0);
00068      double getStrain(void);
00070   double getStress(void);
00072      double getTangent(void);
00073 
00075      int commitState(void);
00077   int revertToLastCommit(void);
00079      int revertToStart(void);
00080 
00082      UniaxialMaterial *getCopy(void);
00083   
00085   int sendSelf(int commitTag, Channel &theChannel);  
00087   int recvSelf(int commitTag, Channel &theChannel, 
00088    FEM_ObjectBroker &theBroker);    
00089     
00091   void Print(ostream &s, int flag =0);
00092 
00093  protected:
00094 
00095  private:
00097   double pinchX;  
00098   double pinchY;  // Force pinching
00099 
00101   double damfc1;  
00102   double damfc2;  // Energy
00103 
00105   double beta;
00106 
00108   double TrotMax;
00110   double TrotMin;
00112   double TrotPu;
00114   double TrotNu;
00116   double TenergyD;
00118   int TloadIndicator;
00119 
00121   double Ttangent;
00123   double Tstress;
00125   double Tstrain;
00126 
00128   double CrotMax;
00130   double CrotMin;
00132   double CrotPu;
00134   double CrotNu;
00136   double CenergyD;
00138   int CloadIndicator;
00139 
00141   double Cstress;
00143   double Cstrain;
00144 
00146   double E1p, E1n;
00148   double mom1p, mom1n;
00150   double rot1p, rot1n;
00152   double E2p, E2n;
00154   double mom2p, mom2n;
00156   double rot2p, rot2n;
00158   double E3p, E3n;
00160   double mom3p, mom3n;
00162   double rot3p, rot3n;
00163 
00165   double energyA;
00166 
00168   void setEnvelope(void);
00169 
00171   double posEnvlpStress(double strain);
00173   double negEnvlpStress(double strain);
00174 
00176   double posEnvlpTangent(double strain);
00178   double negEnvlpTangent(double strain);
00179 
00181   double posEnvlpRotlim(double strain);
00183   double negEnvlpRotlim(double strain);
00184 
00186   void positiveIncrement(double dStrain);
00188   void negativeIncrement(double dStrain);
00189 };
00190 
00191 #endif
00192 ÿ
Copyright Contact Us