YS.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: YieldSurface (the base class for all yield 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 #ifndef YS_H 00028 #define YS_H 00029 00030 #include <stresst.h> 00031 #include <straint.h> 00032 #include <BJtensor.h> 00033 00034 #include "EPState.h" 00035 00036 class YieldSurface 00037 { 00038 public: 00039 YieldSurface() {} ; //Normal Constructor 00040 virtual YieldSurface *newObj() = 0; //create a clone of itself 00041 00042 virtual double f( const EPState *EPS ) const = 0; //pure virtual func 00043 virtual tensor dFods( const EPState *EPS ) const = 0; //pure virtual func 00044 virtual void print() = 0; //pure virtual func 00045 00046 // 1st derivative of F over scalar internal variables (at most 4 scalar internal vars allowed currently) 00047 virtual double xi_s1( const EPState *EPS ) const; 00048 virtual double xi_s2( const EPState *EPS ) const; 00049 virtual double xi_s3( const EPState *EPS ) const; 00050 virtual double xi_s4( const EPState *EPS ) const; 00051 00052 // 1st derivative of F over scalar internal variables (at most 4 tensor internal vars allowed currently) 00053 virtual tensor xi_t1( const EPState *EPS ) const; 00054 virtual tensor xi_t2( const EPState *EPS ) const; 00055 virtual tensor xi_t3( const EPState *EPS ) const; 00056 virtual tensor xi_t4( const EPState *EPS ) const; 00057 00058 00059 //================================================================================ 00060 // Overloaded Insertion Operator 00061 // prints an YieldSurface's contents 00062 //================================================================================ 00063 friend OPS_Stream& operator<< (OPS_Stream& os, const YieldSurface & YS); 00064 }; 00065 00066 00067 #endif 00068 |