hp2FEM
0.1
|
00001 #ifndef _MATERIAL_H_ 00002 #define _MATERIAL_H_ 00003 // --------------------------------------------- 00004 // company : 00005 // user : 00006 // date : 22 Mar 2015 17:24 00007 // file : Material.h 00008 // markers : Full 00009 // language : C++ 00010 // generator : Metamill 6.0 00011 // --------------------------------------------- 00012 00013 //#UBLK-BEG-HEADERH 00014 //============================================================== 00015 // Description : 00016 //-------------------------------------------------------------- 00017 // Author : Gilberto Luis 00018 // Created : 16 Aug 2011 00019 //-------------------------------------------------------------- 00020 // Change history : 00021 // 16 Aug 2011 (Gilberto Luis) Initial version generated 00022 // 00023 //============================================================== 00024 //#UBLK-END-HEADERH 00025 00026 /*================================================================================================= 00027 = = 00028 = Copyright 2010-2015 Marco Lucio Bittencourt / Fabiano Fernandes Bargos = 00029 = Gilberto Luis Valente / Jorge Luis Suzuki / Allan Patrick Cordeiro Dias = 00030 = = 00031 = Licensed under the Apache License, Version 2.0 (the "License"); = 00032 = you may not use this file except in compliance with the License. = 00033 = You may obtain a copy of the License at = 00034 = = 00035 = http://www.apache.org/licenses/LICENSE-2.0 = 00036 = = 00037 = Unless required by applicable law or agreed to in writing, software = 00038 = distributed under the License is distributed on an "AS IS" BASIS, = 00039 = WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. = 00040 = See the License for the specific language governing permissions and = 00041 = limitations under the License. = 00042 = = 00043 =================================================================================================*/ 00044 00045 00046 #include <cstdio> 00047 #include <math.h> 00048 #include "enumerations/ProblemType_E.h" 00049 #include "enumerations/MaterialProperty_E.h" 00050 #include "enumerations/MaterialType_E.h" 00051 #include "ds/BuiltInArray.h" 00052 #include "ds/Vector.h" 00053 #include "ds/SymmetricMatrix.h" 00054 00055 00063 class Material 00064 { 00065 //#UBLK-BEG-CLASSDEF mm:3a6cae54-400f-11e0-9dd5-8e5be057fed3 00066 //#UBLK-END-CLASSDEF 00067 00068 public: 00069 00070 // METHOD=mm:3ccf2242-400f-11e0-9dd5-8e5be057fed3 00071 Material(); 00072 00073 // METHOD=mm:3ccf2243-400f-11e0-9dd5-8e5be057fed3 00074 Material(unsigned long MaterialNumber, ProblemType_E Application); 00075 00076 // METHOD=mm:3ccf22dc-400f-11e0-9dd5-8e5be057fed3 00077 Material(Material& Instance); 00078 00079 // METHOD=mm:3ccf2246-400f-11e0-9dd5-8e5be057fed3 00080 virtual ~Material(); 00081 00082 // METHOD=mm:1ba4faa8-69b2-11e0-94a8-e19117dd202e 00083 Material& operator=(Material& Instance); 00084 00085 // METHOD=mm:3ccf22de-400f-11e0-9dd5-8e5be057fed3 00086 virtual void Read(FILE* File) = 0; 00087 00088 // METHOD=mm:3ccf22e0-400f-11e0-9dd5-8e5be057fed3 00089 virtual void Print(FILE* File, char* Message) = 0; 00090 00091 // METHOD=mm:3ccf22e3-400f-11e0-9dd5-8e5be057fed3 00092 virtual void Print(FILE* File = stdout) = 0; 00093 00094 // METHOD=mm:3ccf22e5-400f-11e0-9dd5-8e5be057fed3 00095 virtual void Save(FILE* File) = 0; 00096 00097 // METHOD=mm:3ccf237c-400f-11e0-9dd5-8e5be057fed3 00098 virtual void Restore(FILE* File) = 0; 00099 00100 // METHOD=mm:3ccf237e-400f-11e0-9dd5-8e5be057fed3 00101 virtual void Free(); 00102 00103 // METHOD=mm:0b8a849f-c342-11e0-840e-c6c47fa74d4c 00104 virtual ProblemType_E GetApplication(); 00105 00106 // METHOD=mm:0b8a89f9-c342-11e0-840e-c6c47fa74d4c 00107 virtual void SetApplication(ProblemType_E Application); 00108 00109 // METHOD=mm:3ccf237f-400f-11e0-9dd5-8e5be057fed3 00110 void SetNumber(unsigned long MaterialNumber = 1); 00111 00112 // METHOD=mm:3ccf2381-400f-11e0-9dd5-8e5be057fed3 00113 unsigned long GetNumber(); 00114 00115 // METHOD=mm:3ccf2382-400f-11e0-9dd5-8e5be057fed3 00116 virtual char* GetName() = 0; 00117 00118 // METHOD=mm:3ccf2385-400f-11e0-9dd5-8e5be057fed3 00119 virtual MaterialType_E GetMaterialType() = 0; 00120 00121 // METHOD=mm:3d679385-400f-11e0-9dd5-8e5be057fed3 00122 virtual void SetProperties(BuiltInArray<double>& Properties) = 0; 00123 00124 // METHOD=mm:3d679387-400f-11e0-9dd5-8e5be057fed3 00125 virtual void SetProperty(MaterialProperty_E Property, double Value) = 0; 00126 00127 // METHOD=mm:3d67938a-400f-11e0-9dd5-8e5be057fed3 00128 virtual void GetProperties(BuiltInArray<double>& Properties) = 0; 00129 00130 // METHOD=mm:3d67938c-400f-11e0-9dd5-8e5be057fed3 00131 virtual double GetProperty(MaterialProperty_E Property) = 0; 00132 00133 // METHOD=mm:3d679423-400f-11e0-9dd5-8e5be057fed3 00134 virtual unsigned long GetNumberProperties() = 0; 00135 00136 // METHOD=mm:3d679424-400f-11e0-9dd5-8e5be057fed3 00137 virtual void GetCMatrix(SymmetricMatrix& CMatrix) = 0; 00138 00139 // METHOD=mm:3d679426-400f-11e0-9dd5-8e5be057fed3 00140 virtual void GetDMatrix(SymmetricMatrix& DMatrix, double* Strain = NULL, double pbar = 0.0, double* DeltaDef = NULL, unsigned long ElementNumber = 0, unsigned long PointStateNumber = 0) = 0; 00141 00142 // METHOD=mm:3d6794b8-400f-11e0-9dd5-8e5be057fed3 00143 virtual unsigned long GetDMatrixOrder(unsigned long StrainOrder) = 0; 00144 00145 // METHOD=mm:3d6794ba-400f-11e0-9dd5-8e5be057fed3 00146 virtual void GetStress(double* Stress, double* Strain, double* StressTensor = NULL, double pbar = 0.0, unsigned long ElementNumber = 0, unsigned long PointStateNumber = 0) = 0; 00147 00148 // METHOD=mm:4d9c2ede-50ed-4903-aa14-74ef276e0f1e 00149 virtual void GetStressUpdate(double* Stress, double* Strain, SymmetricMatrix& DMatrix, double Damage_n, unsigned long IntPoint, double& Damage_n1, double* StressTensor, double pbar = 0.0, unsigned long ElementNumber = 0, unsigned long PointStateNumber = 0) = 0; 00150 00151 // METHOD=mm:3d6794c0-400f-11e0-9dd5-8e5be057fed3 00152 virtual unsigned long GetStressOrder(unsigned long StrainOrder) = 0; 00153 00154 // METHOD=mm:3d6794c2-400f-11e0-9dd5-8e5be057fed3 00155 virtual double GetStrainEnergyDensity(double* Strain, double pbar = 0.0, unsigned long ElementNumber = 0, unsigned long PointStateNumber = 0) = 0; 00156 00157 // METHOD=mm:3d67955c-400f-11e0-9dd5-8e5be057fed3 00158 virtual int GetStrainEnergyDensityOrder(unsigned long StrainOrder) = 0; 00159 00160 00161 protected: 00162 00168 // attr=mm:3ccf2240-400f-11e0-9dd5-8e5be057fed3 00169 unsigned long MaterialNum; 00170 // attr=mm:f23125a7-c338-11e0-840e-c6c47fa74d4c 00171 ProblemType_E MatApp; 00172 00173 00174 private: 00175 00176 //#UBLK-BEG-CLASSMEMB mm:3a6cae54-400f-11e0-9dd5-8e5be057fed3 00177 //#UBLK-END-CLASSMEMB 00178 }; 00179 00180 //#UBLK-BEG-GLOBALH 00181 //*** Removed methods: 13 May 2014 16:55 00182 //--- 00183 //uuid=mm:298f9d24-8a90-48cc-8733-786e0799b6f4 00184 // virtual void GetStressUpdate(double* Stress, double* Strain, double Damage_n, double& Damage_n1, double* StressTensor = NULL, double pbar = 0.0, unsigned long ElementNumber = 0, unsigned long PointStateNumber = 0) = 0; 00185 00186 //#UBLK-END-GLOBALH 00187 00188 00189 #endif // _MATERIAL_H_