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/16 04:45:33 $ 00023 // $Source: /usr/local/cvs/OpenSees/SRC/material/section/SectionForceDeformation.h,v $ 00024 00025 00026 #ifndef SectionForceDeformation_h 00027 #define SectionForceDeformation_h 00028 00029 // File: ~/material/SectionForceDeformation.h 00030 // 00031 // Written: MHS 00032 // Created: Feb 2000 00033 // Revision: A 00034 // 00035 // Description: This file contains the class definition for SectionForceDeformation. 00036 // SectionForceDeformation 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: "@(#) SectionForceDeformation.h, revA" 00041 00042 #include <Material.h> 00043 #include <Matrix.h> 00044 #include <Vector.h> 00045 #include <ID.h> 00046 00047 #include <Information.h> 00048 #include <Response.h> 00049 00050 #define MAX_SECTION_RESPONSE_ID 10000 00051 00052 #define SECTION_RESPONSE_MZ 1 00053 #define SECTION_RESPONSE_P 2 00054 #define SECTION_RESPONSE_VY 3 00055 #define SECTION_RESPONSE_MY 4 00056 #define SECTION_RESPONSE_VZ 5 00057 #define SECTION_RESPONSE_T 6 00058 00066 class SectionForceDeformation : public Material 00067 { 00068 public: 00075 SectionForceDeformation (int tag, int classTag); 00076 00080 SectionForceDeformation (); 00081 00086 virtual ~SectionForceDeformation (); 00087 00088 00092 virtual int setTrialSectionDeformation (const Vector&) = 0; 00093 00097 virtual const Vector &getSectionDeformation (void) = 0; 00098 00099 00103 virtual const Vector &getStressResultant (void) = 0; 00104 00108 virtual const Matrix &getSectionTangent (void) = 0; 00109 00113 virtual const Matrix &getSectionFlexibility (void); 00114 00115 00123 virtual const Matrix &getSectionSecant (void) 00124 00125 {return this->getSectionTangent();}; 00126 00128 virtual double getRho(void); 00129 00130 00132 virtual int commitState (void) = 0; 00134 virtual int revertToLastCommit (void) = 0; 00136 virtual int revertToStart (void) = 0; 00137 00139 virtual SectionForceDeformation *getCopy (void) = 0; 00141 virtual const ID &getType (void) const = 0; 00143 virtual int getOrder (void) const = 0; 00144 00146 virtual Response *setResponse(char **argv, int argc, Information &info); 00148 virtual int getResponse(int responseID, Information &info); 00149 00150 protected: 00152 Matrix *fDefault; // Default flexibility matrix 00153 00154 private: 00155 }; 00156 00157 00158 #endif