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.6 $ 00022 // $Date: 2001/01/23 08:47:09 $ 00023 // $Source: /usr/local/cvs/OpenSees/SRC/material/nD/NDMaterial.h,v $ 00024 00025 00026 #ifndef NDMaterial_h 00027 #define NDMaterial_h 00028 00029 // File: ~/material/NDMaterial.h 00030 // 00031 // Written: MHS 00032 // Created: Feb 2000 00033 // Revision: A 00034 // 00035 // Description: This file contains the class definition for NDMaterial. 00036 // NDMaterial is an abstract base class and thus no objects of it's type 00037 // can be instantiated. It has pure virtual functions which must be 00038 // implemented in it's derived classes. 00039 // 00040 // What: "@(#) NDMaterial.h, revA" 00041 00042 #include <Material.h> 00043 #include <Tensor.h> 00044 00045 #include <Matrix.h> 00046 #include <ID.h> 00047 #include <Vector.h> 00048 #include <Information.h> 00049 #include <Response.h> 00050 00062 class NDMaterial : public Material 00063 { 00064 public: 00066 NDMaterial(int tag, int classTag); 00067 00069 NDMaterial(); 00071 virtual ~NDMaterial(); 00072 00074 virtual double getRho(void); 00076 virtual int setTrialStrain(const Vector &v); 00078 virtual int setTrialStrain(const Vector &v, const Vector &r); 00080 virtual int setTrialStrainIncr(const Vector &v); 00082 virtual int setTrialStrainIncr(const Vector &v, const Vector &r); 00084 virtual const Matrix &getTangent(void); 00086 virtual const Vector &getStress(void); 00088 virtual const Vector &getStrain(void); 00089 00091 virtual const Vector &getCommittedStress(void); 00093 virtual const Vector &getCommittedStrain(void); 00094 00096 virtual int setTrialStrain(const Tensor &v); 00098 virtual int setTrialStrain(const Tensor &v, const Tensor &r); 00100 virtual int setTrialStrainIncr(const Tensor &v); 00102 virtual int setTrialStrainIncr(const Tensor &v, const Tensor &r); 00104 virtual const Tensor &getTangentTensor(void); 00106 virtual const stresstensor getStressTensor(void); 00108 virtual const Tensor &getStrainTensor(void); 00109 00111 virtual int commitState(void) = 0; 00113 virtual int revertToLastCommit(void) = 0; 00115 virtual int revertToStart(void) = 0; 00116 00118 virtual NDMaterial *getCopy(void) = 0; 00120 virtual NDMaterial *getCopy(const char *code) = 0; 00121 00123 virtual const char *getType(void) const = 0; 00125 virtual int getOrder(void) const = 0; 00126 00128 virtual Response *setResponse (char **argv, int argc, Information &matInformation); 00130 virtual int getResponse (int responseID, Information &matInformation); 00131 00132 protected: 00133 00134 private: 00136 static Matrix errMatrix; 00138 static Vector errVector; 00140 static Tensor errTensor; 00142 static stresstensor errstresstensor; 00143 }; 00144 00145 00146 #endif