|
FEBio
1.5.0
|
00001 #pragma once 00002 00003 #include "mat3d.h" 00004 #include "DumpFile.h" 00005 #include <vector> 00006 using namespace std; 00007 00008 //----------------------------------------------------------------------------- 00010 00016 00017 class FEMaterialPoint 00018 { 00019 public: 00020 FEMaterialPoint(FEMaterialPoint* ppt = 0) : m_pt(ppt){} 00021 virtual ~FEMaterialPoint() { if (m_pt) { delete m_pt; m_pt = 0; } } 00022 00024 virtual void Init(bool bflag) = 0; 00025 00026 virtual FEMaterialPoint* Copy() = 0; 00027 00028 virtual void Serialize(DumpFile& ar) = 0; 00029 00030 template <class T> 00031 T* ExtractData() 00032 { 00033 T* p = dynamic_cast<T*>(this); 00034 if (p) return p; 00035 else 00036 { 00037 if (m_pt) return m_pt->ExtractData<T>(); 00038 else return 0; 00039 } 00040 } 00041 00042 protected: 00043 FEMaterialPoint* m_pt; //<! nested point data 00044 00045 public: 00046 static double time; // time value 00047 static double dt; // time increment 00048 };
1.7.5.1