NDMaterial.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 ** Additions and changes by:                                          **
00021 **   Boris Jeremic (@ucdavis.edu)                                     **
00022 **                                                                    **
00023 **                                                                    **
00024 ** ****************************************************************** */
00025 
00026 // $Revision: 1.19 $
00027 // $Date: 2006/09/05 21:25:35 $
00028 // $Source: /usr/local/cvs/OpenSees/SRC/material/nD/NDMaterial.h,v $
00029 
00030 
00031 #ifndef NDMaterial_h
00032 #define NDMaterial_h
00033 
00034 // File: ~/material/NDMaterial.h
00035 //
00036 // Written: MHS
00037 // Created: Feb 2000
00038 // Revision: A
00039 //
00040 // Description: This file contains the class definition for NDMaterial.
00041 // NDMaterial is an abstract base class and thus no objects of it's type
00042 // can be instantiated. It has pure virtual functions which must be
00043 // implemented in it's derived classes.
00044 //
00045 // What: "@(#) NDMaterial.h, revA"
00046 
00047 #include <Material.h>
00048 #include <Tensor.h>
00049 
00050 class Matrix;
00051 class ID;
00052 class Vector;
00053 class Information;
00054 class Response;
00055 
00056 class NDMaterial : public Material
00057 {
00058   public:
00059     NDMaterial(int tag, int classTag);
00060     NDMaterial();
00061     virtual ~NDMaterial();
00062 
00063     // methods to set state and retrieve state using Matrix and Vector classes
00064     virtual double getRho(void);
00065 
00066     virtual int setTrialStrain(const Vector &v);
00067     virtual int setTrialStrain(const Vector &v, const Vector &r);
00068     virtual int setTrialStrainIncr(const Vector &v);
00069     virtual int setTrialStrainIncr(const Vector &v, const Vector &r);
00070     virtual const Matrix &getTangent(void);
00071     virtual const Matrix &getInitialTangent(void) {return this->getTangent();};
00072 
00073     virtual const Vector &getStress(void);
00074     virtual const Vector &getStrain(void);
00075 
00076     // new methods for recorder requested by Zhouhui Yang .. MAY NOT STAY
00077     virtual const Vector &getCommittedStress(void);
00078     virtual const Vector &getCommittedStrain(void);
00079 
00080     // methods to set and retrieve state using the Tensor class
00081     virtual int setTrialStrain(const Tensor &v);
00082     virtual int setTrialStrain(const Tensor &v, const Tensor &r);
00083     virtual int setTrialStrainIncr(const Tensor &v);
00084     virtual int setTrialStrainIncr(const Tensor &v, const Tensor &r);
00085     virtual const Tensor& getTangentTensor(void);
00086     virtual const stresstensor& getStressTensor(void);
00087     virtual const straintensor& getStrainTensor(void);
00088     //Added Joey Aug. 13, 2001
00089     virtual const straintensor& getPlasticStrainTensor(void);
00090 
00091 // added Sept 22 2003 for Large Deformation, F is the Deformation Gradient
00092     virtual int setTrialF(const straintensor &f);
00093     virtual int setTrialFIncr(const straintensor &df);
00094     virtual int setTrialC(const straintensor &c);
00095     virtual int setTrialCIncr(const straintensor &dc);
00096     virtual const stresstensor& getPK1StressTensor(void);
00097     virtual const stresstensor& getCauchyStressTensor(void);
00098     virtual const straintensor& getF(void);
00099     virtual const straintensor& getC(void);
00100     virtual const straintensor& getFp(void);
00101 // Only For Large Deformation, END////////////////////////////////////////
00102 
00103     virtual int commitState(void) = 0;
00104     virtual int revertToLastCommit(void) = 0;
00105     virtual int revertToStart(void) = 0;
00106 
00107     virtual NDMaterial *getCopy(void) = 0;
00108     virtual NDMaterial *getCopy(const char *code);
00109 
00110     virtual const char *getType(void) const = 0;
00111     virtual int getOrder(void) const {return 0;};  //??
00112 
00113     virtual Response *setResponse (const char **argv, int argc, 
00114                                    Information &matInformation, 
00115                                    OPS_Stream &s);
00116     virtual int getResponse (int responseID, Information &matInformation);
00117 
00118 // AddingSensitivity:BEGIN //////////////////////////////////////////
00119     virtual const Vector & getStressSensitivity     (int gradNumber, bool conditional);
00120     virtual const Vector & getStrainSensitivity     (int gradNumber);
00121     virtual const Matrix & getTangentSensitivity    (int gradNumber);
00122     virtual const Matrix & getDampTangentSensitivity(int gradNumber);
00123     virtual double         getRhoSensitivity        (int gradNumber);
00124     virtual int            commitSensitivity        (Vector & strainGradient, int gradNumber, int numGrads);
00125 // AddingSensitivity:END ///////////////////////////////////////////
00126 
00127   protected:
00128 
00129   private:
00130     static Matrix errMatrix;
00131     static Vector errVector;
00132     static Tensor errTensor;
00133     static stresstensor errstresstensor;
00134     static straintensor errstraintensor;
00135 };
00136 
00137 
00138 #endif

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