PS.hGo to the documentation of this file.00001 00002 //################################################################################## 00003 //# COPYRIGHT (C): :-)) # 00004 //# PROJECT: Object Oriented Finite Element Program # 00005 //# PURPOSE: General platform for elaso-plastic constitutive model # 00006 //# implementation # 00007 //# CLASS: PotentialSurface(the base class for all potential surfaces) # 00008 //# # 00009 //# VERSION: # 00010 //# LANGUAGE: C++.ver >= 2.0 ( Borland C++ ver=3.00, SUN C++ ver=2.1 ) # 00011 //# TARGET OS: DOS || UNIX || . . . # 00012 //# DESIGNER(S): Boris Jeremic, Zhaohui Yang # 00013 //# PROGRAMMER(S): Boris Jeremic, Zhaohui Yang # 00014 //# # 00015 //# # 00016 //# DATE: 08-03-2000 # 00017 //# UPDATE HISTORY: # 00018 //# # 00019 //# # 00020 //# # 00021 //# # 00022 //# SHORT EXPLANATION: The goal is to create a platform for efficient and easy # 00023 //# implemetation of any elasto-plastic constitutive model! # 00024 //# # 00025 //################################################################################## 00026 // 00027 00028 #ifndef PS_H 00029 #define PS_H 00030 00031 #include <stresst.h> 00032 #include <straint.h> 00033 #include <BJtensor.h> 00034 00035 #include "EPState.h" 00036 00037 00038 class PotentialSurface 00039 { 00040 public: 00041 virtual PotentialSurface *newObj() = 0; //create a colne of itself 00042 virtual ~PotentialSurface() {}; // Codewizard requires virtual destructor 00043 double q() const { return 0.0; }; // Codewizard does not like function defined in class definition 00044 virtual tensor dQods(const EPState *EPS ) const = 0; //pure virtual func 00045 virtual tensor d2Qods2(const EPState *EPS ) const = 0; //pure virtual func 00046 virtual void print() = 0; //pure virtual func 00047 00048 // Added for Consistent Algorithm, Z. Cheng, Jan 2004 00049 // Ref. Jeremic & Sture, Mechanics of Cohesive-Frictional Materials, Vol.2 165-183 (1997) 00050 virtual tensor d2Qodsds1(const EPState *EPS ) const; 00051 virtual tensor d2Qodsds2(const EPState *EPS ) const; 00052 virtual tensor d2Qodsds3(const EPState *EPS ) const; 00053 virtual tensor d2Qodsds4(const EPState *EPS ) const; 00054 virtual tensor d2Qodsdt1(const EPState *EPS ) const; 00055 virtual tensor d2Qodsdt2(const EPState *EPS ) const; 00056 virtual tensor d2Qodsdt3(const EPState *EPS ) const; 00057 virtual tensor d2Qodsdt4(const EPState *EPS ) const; 00058 00059 //================================================================================ 00060 // Overloaded Insertion Operator 00061 // prints an PotentialSurface's contents 00062 //================================================================================ 00063 friend OPS_Stream& operator<< (OPS_Stream& os, const PotentialSurface & PS) 00064 { 00065 os << "Potential Surface Parameters: " << endln; 00066 return os; 00067 } 00068 }; 00069 00070 00071 #endif 00072 |