00001 00012 #ifndef _MATERIAL_BASSO_H_ 00013 #define _MATERIAL_BASSO_H_ 00014 00015 // std includes 00016 00017 // Basso includes 00018 #include "basso.h" 00019 #include "StressState.h" 00020 00021 namespace basso { 00022 00023 00029 class MaterialState { 00030 00031 public: 00032 MaterialState() { fSStrainv = new nArray(3); clear(*fSStrainv); } 00033 virtual ~MaterialState() { delete fSStrainv; } 00034 00041 nArray &Strain() { return *fSStrainv; } 00042 00043 protected: 00045 nArray *fSStrainv; 00046 00047 }; 00048 00049 00058 class Material { 00059 00060 public: 00061 00062 // PUBLIC DEFS 00063 00064 // CONSTRUCTORS 00066 Material() { } 00067 00068 virtual ~Material() { } 00069 00070 // ACCESSORS 00072 virtual Numeric Density( const MaterialState sv=MaterialState() ) const = 0; 00073 00074 // MEMBER FUNCTIONS 00080 virtual void ComputeStress( nArray &stress, const StressState *ssptr, const MaterialState &sv ) = 0; 00081 00087 virtual void ComputeStress( nMatrix &stress, const StressState *ssptr, const MaterialState &sv ) = 0; 00088 00094 virtual void ComputeTangentStiffness( nMatrix &cmat, const StressState *ssptr, const MaterialState sv=MaterialState() ) const = 0; 00095 00096 protected: 00097 00098 }; 00099 00100 } // end namespace 00101 00102 #endif 00103 00104