Pinching4Material.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.2 $
00022 // $Date: 2004/10/06 19:21:12 $
00023 // $Source: /usr/local/cvs/OpenSees/SRC/material/uniaxial/Pinching4Material.h,v $
00024                                                                         
00025                                                                         
00026 // Written: NM (nmitra@u.washington.edu) 
00027 // Created: December 2001
00028 // Updated: September 2004
00029 //
00030 // Description: This file contains the class defination for 
00031 // Pinching material which is defined by 4 points on the positive and 
00032 // negative envelopes and a bunch of damage parameters. The material accounts for
00033 // 3 types of damage rules : Strength degradation, Stiffness degradation, 
00034 // unloading stiffness degradation. 
00035 // Updates: damage calculations and several bug fixes
00036 
00037 
00038 #ifndef Pinching4Material_h
00039 #define Pinching4Material_h
00040 
00041 #include <UniaxialMaterial.h>
00042 #include <FileStream.h>
00043 #include <OPS_Stream.h>
00044 #include <Vector.h>
00045 
00046 class Pinching4Material : public UniaxialMaterial
00047 {
00048 public :
00049         Pinching4Material(int tag,
00050                 double stress1p, double strain1p, double stress2p, double strain2p,
00051                 double stress3p, double strain3p, double stress4p, double strain4p,
00052                 double stress1n, double strain1n, double stress2n, double strain2n,
00053                 double stress3n, double strain3n, double stress4n, double strain4n,
00054                 double rDispP, double rForceP, double uForceP,
00055                 double rDispN, double rForceN, double uForceN,
00056                 double gammaK1, double gammaK2, double gammaK3,
00057                 double gammaK4, double gammaKLimit,
00058                 double gammaD1, double gammaD2, double gammaD3,
00059                 double gammaD4, double gammaDLimit,
00060                 double gammaF1, double gammaF2, double gammaF3,
00061                 double gammaF4, double gammaFLimit, double gammaE, int DmgCyc);
00062 
00063         Pinching4Material(int tag,
00064                 double stress1p, double strain1p, double stress2p, double strain2p,
00065                 double stress3p, double strain3p, double stress4p, double strain4p,
00066                 double rDispP, double rForceP, double uForceP,
00067                 double gammaK1, double gammaK2, double gammaK3,
00068                 double gammaK4, double gammaKLimit,
00069                 double gammaD1, double gammaD2, double gammaD3,
00070                 double gammaD4, double gammaDLimit,
00071                 double gammaF1, double gammaF2, double gammaF3,
00072                 double gammaF4, double gammaFLimit, double gammaE, int DmgCyc);
00073 
00074         Pinching4Material();
00075         ~Pinching4Material();
00076 
00077         int setTrialStrain(double strain, double strainRate = 0.0);
00078         double getStrain(void);
00079         double getStress(void);
00080         double getTangent(void);
00081         double getInitialTangent(void);
00082 
00083         int commitState(void);
00084         int revertToLastCommit(void);
00085         int revertToStart(void);
00086 
00087         UniaxialMaterial *getCopy(void);
00088 
00089         int sendSelf(int commitTag, Channel &theChannel);
00090         int recvSelf(int commitTag, Channel &theChannel,
00091                 FEM_ObjectBroker &theBroker);
00092 
00093         void Print(OPS_Stream &s, int flag = 0);
00094 
00095 protected:
00096 
00097 private:
00098         // Backbone parameters
00099             double stress1p; double strain1p; double stress2p; double strain2p;
00100                 double stress3p; double strain3p; double stress4p; double strain4p;
00101                 double stress1n; double strain1n; double stress2n; double strain2n;
00102                 double stress3n; double strain3n; double stress4n; double strain4n;
00103                 Vector envlpPosStress; Vector envlpPosStrain; 
00104                 Vector envlpNegStress; Vector envlpNegStrain;
00105 
00106                 int tagMat;  // material tag
00107 
00108         // Damage parameters
00109 
00110         double gammaK1; double gammaK2; double gammaK3; double gammaK4; double gammaKLimit;
00111         double gammaD1; double gammaD2; double gammaD3; double gammaD4; double gammaDLimit;
00112         double gammaF1; double gammaF2; double gammaF3; double gammaF4; double gammaFLimit;
00113         double gammaE;
00114         double TnCycle, CnCycle; // number of cycles contributing to damage calculation
00115         int DmgCyc; // flag for indicating whether no. of cycles are to be used for damage calculation
00116 
00117         // unloading-reloading parameters
00118         double rDispP; double rForceP; double uForceP;
00119         double rDispN; double rForceN; double uForceN;
00120 
00121         Vector state3Stress; Vector state3Strain; Vector state4Stress; Vector state4Strain;
00122 
00123         Vector envlpPosDamgdStress; Vector envlpNegDamgdStress;
00124 
00125         // Trial State Variables
00126         double Tstress;
00127         double Tstrain;
00128         double Ttangent;
00129 
00130         // Converged Material History parameters
00131         int Cstate;
00132         double Cstrain;
00133         double Cstress;
00134         double CstrainRate;
00135         double lowCstateStrain;
00136         double lowCstateStress;
00137         double hghCstateStrain;
00138         double hghCstateStress;
00139         double CminStrainDmnd;
00140         double CmaxStrainDmnd;
00141         double Cenergy;
00142         double CgammaK;
00143         double CgammaD;
00144         double CgammaF;
00145         double gammaKUsed;
00146         double gammaFUsed;
00147 
00148         // Trial Material History Parameters
00149         int Tstate;
00150         double dstrain;
00151         double TstrainRate;
00152         double lowTstateStrain;
00153         double lowTstateStress;
00154         double hghTstateStrain;
00155         double hghTstateStress;
00156         double TminStrainDmnd;
00157         double TmaxStrainDmnd;
00158         double Tenergy;
00159         double TgammaK;
00160         double TgammaD;
00161         double TgammaF;
00162 
00163         // strength and stiffness parameters;
00164         double kElasticPos;
00165         double kElasticNeg;
00166         double kElasticPosDamgd;
00167         double kElasticNegDamgd;
00168         double uMaxDamgd;
00169         double uMinDamgd;
00170 
00171 
00172         // energy parameters
00173         double energyCapacity;
00174         double kunload;
00175         double elasticStrainEnergy;
00176 
00177         void SetEnvelope(void);
00178         void getstate(double, double);
00179         double posEnvlpStress(double);
00180         double posEnvlpTangent(double);
00181         double negEnvlpStress(double);
00182         double negEnvlpTangent(double);
00183         void getState3(Vector& , Vector& , double);
00184         void getState4(Vector& , Vector& , double);
00185         double Envlp3Tangent(Vector , Vector , double);
00186         double Envlp3Stress(Vector , Vector , double);
00187         double Envlp4Tangent(Vector , Vector , double);
00188         double Envlp4Stress(Vector , Vector , double);
00189         void updateDmg(double, double);
00190 
00191 };
00192 #endif

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