DrainMaterial.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: 2003/02/14 23:01:38 $
00023 // $Source: /usr/local/cvs/OpenSees/SRC/material/uniaxial/DrainMaterial.h,v $
00024                                                                       
00025 // Written: MHS
00026 // Created: June 2001
00027 //
00028 // Description: This file contains the class definition for 
00029 // DrainMaterial. DrainMaterial wraps a Drain spring element subroutine
00030 // and converts it to the UniaxialMaterial interface for use in
00031 // zero length elements, beam sections, or anywhere else
00032 // UniaxialMaterials may be used.
00033 //
00034 // For more information see the Drain-2DX user guide:
00035 //    Allahabadi, R.; Powell, G. H.
00036 //    UCB/EERC-88/06, Berkeley: Earthquake Engineering Research Center,
00037 //    University of California, Mar. 1988, 1 vol.
00038 
00039 #ifndef DrainMaterial_h
00040 #define DrainMaterial_h
00041 
00042 #include <UniaxialMaterial.h>
00043 
00044 class DrainMaterial : public UniaxialMaterial
00045 {
00046   public:
00047     DrainMaterial(int tag, int classTag, int numHV, int numData, double beto = 0.0);
00048     virtual ~DrainMaterial();
00049 
00050     virtual int setTrialStrain(double strain, double strainRate = 0.0);
00051     virtual int setTrial(double strain, double &stress, double &tangent, double strainRate = 0.0); 
00052     virtual double getStrain(void);
00053     virtual double getStrainRate(void);
00054     virtual double getStress(void);
00055     virtual double getTangent(void);
00056     virtual double getDampTangent(void);
00057     virtual double getInitialTangent(void);
00058 
00059     virtual int commitState(void);
00060     virtual int revertToLastCommit(void);    
00061     virtual int revertToStart(void);        
00062 
00063     // WARNING -- if you wish to override any method in this base class, you must
00064     // also override the getCopy method to return a pointer to the derived class!!!
00065     virtual UniaxialMaterial *getCopy(void);
00066 
00067     virtual int sendSelf(int commitTag, Channel &theChannel);  
00068     virtual int recvSelf(int commitTag, Channel &theChannel, 
00069                          FEM_ObjectBroker &theBroker);    
00070     
00071     virtual void Print(OPS_Stream &s, int flag = 0);
00072 
00073   protected:
00074         // Invokes the Drain subroutine
00075         virtual int invokeSubroutine(void);
00076         
00077         double *data;           // Material parameters array
00078         double *hstv;           // History array: first half is committed, second half is trial
00079 
00080         int numData;            // Number of material parameters
00081         int numHstv;            // Number of history variables
00082 
00083         double epsilonP;        // Committed strain
00084         double sigmaP;          // Committed stress
00085         double tangentP;        // Committed tangent
00086 
00087         double beto;            // Stiffness proportional damping factor
00088         double initialTangent;  // initial tangent
00089 
00090   private:
00091         double epsilon;         // Trial strain
00092         double epsilonDot;      // Trial strain rate
00093         double sigma;           // Trial stress
00094         double tangent;         // Trial tangent
00095 };
00096 
00097 
00098 #endif
00099 

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