hp2FEM
0.1
|
00001 #ifndef _NEOHOOKEANMATERIAL_H_ 00002 #define _NEOHOOKEANMATERIAL_H_ 00003 // --------------------------------------------- 00004 // company : 00005 // user : 00006 // date : 22 Mar 2015 17:24 00007 // file : NeoHookeanMaterial.h 00008 // markers : Full 00009 // language : C++ 00010 // generator : Metamill 6.0 00011 // --------------------------------------------- 00012 00013 //#UBLK-BEG-HEADERH 00014 //#UBLK-END-HEADERH 00015 00016 /*================================================================================================= 00017 = = 00018 = Copyright 2010-2015 Marco Lucio Bittencourt / Fabiano Fernandes Bargos = 00019 = Gilberto Luis Valente / Jorge Luis Suzuki / Allan Patrick Cordeiro Dias = 00020 = = 00021 = Licensed under the Apache License, Version 2.0 (the "License"); = 00022 = you may not use this file except in compliance with the License. = 00023 = You may obtain a copy of the License at = 00024 = = 00025 = http://www.apache.org/licenses/LICENSE-2.0 = 00026 = = 00027 = Unless required by applicable law or agreed to in writing, software = 00028 = distributed under the License is distributed on an "AS IS" BASIS, = 00029 = WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. = 00030 = See the License for the specific language governing permissions and = 00031 = limitations under the License. = 00032 = = 00033 =================================================================================================*/ 00034 00035 00036 #include "enumerations/MaterialType_E.h" 00037 #include "enumerations/MaterialProperty_E.h" 00038 00039 00043 class NeoHookeanMaterial : public Material 00044 { 00045 //#UBLK-BEG-CLASSDEF mm:4eb5ba95-445b-4746-b347-fad48e2be301 00046 //#UBLK-END-CLASSDEF 00047 00048 public: 00049 00050 // METHOD=mm:f27c709d-8953-437b-be55-14d5769fa0b3 00051 NeoHookeanMaterial(); 00052 00053 // METHOD=mm:311aeac7-d17c-432c-89ba-eaeb4798e8ea 00054 NeoHookeanMaterial(NeoHookeanMaterial& Instance); 00055 00056 // METHOD=mm:73f3d9dd-4fad-42e3-a84f-8be54f3c5bb3 00057 NeoHookeanMaterial(unsigned long MaterialNumber, ProblemType_E Application, double E = 0.0, double Nu = 0.0, double AlphaT = 0.0, double Rho = 0.0); 00058 00059 // METHOD=mm:5d1c67e4-e116-4e3d-8aa5-0f2fb76c8cdb 00060 NeoHookeanMaterial& operator=(NeoHookeanMaterial& Instance); 00061 00062 // METHOD=mm:62652220-c4b4-470e-85fb-eb59f57a26b7 00063 ~NeoHookeanMaterial(); 00064 00065 // METHOD=mm:bfdd7515-81dc-4c60-895b-045b0aea7da9 00066 void operator=(Material& Inst); 00067 00068 // METHOD=mm:007f613a-7ae3-412d-bffd-85b24b5d65ef 00069 void Read(FILE* File); 00070 00071 // METHOD=mm:5a669afb-087a-4cb8-84b0-824715344407 00072 void Print(FILE* File, char* Message); 00073 00074 // METHOD=mm:3a349f74-d296-49b4-9dac-cff9a5b35acd 00075 void Print(FILE* File); 00076 00077 // METHOD=mm:037eae49-04c0-427e-9e50-d3be2b079d55 00078 void Save(FILE* File); 00079 00080 // METHOD=mm:136e0050-193e-47cd-926c-fbbf7b67ca9f 00081 void Restore(FILE* File); 00082 00083 // METHOD=mm:14a97fb1-aec3-441c-b1dd-80057e5e2d24 00084 void Free(); 00085 00086 // METHOD=mm:a8fe4303-0e23-4181-9ce2-8f61f13a5e9d 00087 void SetApplication(ProblemType_E Application); 00088 00089 // METHOD=mm:2c6a7d66-da3c-4360-84de-6807884d2b3f 00090 ProblemType_E GetApplication(); 00091 00092 // METHOD=mm:d06d70f7-0d71-4cf0-ac63-620b74807ee7 00093 char* GetName(); 00094 00095 // METHOD=mm:d8470f38-46b9-470c-9ad3-b012353be2cc 00096 MaterialType_E GetMaterialType(); 00097 00098 // METHOD=mm:a5dbf8ba-fe1e-442b-8ded-a0346087c6f3 00099 void SetProperties(BuiltInArray<double>& Properties); 00100 00101 // METHOD=mm:2f9a2882-4d82-4061-b71d-f32c145304b7 00102 void SetProperty(MaterialProperty_E Property, double Value); 00103 00104 // METHOD=mm:81a31a68-39b6-40fe-be14-2249ff231eca 00105 void GetProperties(BuiltInArray<double>& Properties); 00106 00107 // METHOD=mm:02039488-23f2-4e50-9149-216277b6bee6 00108 double GetProperty(MaterialProperty_E Property); 00109 00110 // METHOD=mm:f8f1a407-b360-4e6c-97be-336205091ba2 00111 unsigned long GetNumberProperties(); 00112 00113 // METHOD=mm:016adb80-d5f2-4972-9b4a-3caa17465509 00114 void GetCMatrix(SymmetricMatrix& CMatrix); 00115 00116 // METHOD=mm:780f7563-a5b6-4b5d-8c44-6ec1d27bb458 00117 void GetDMatrix(SymmetricMatrix& DMatrix, double* Strain = NULL, double pbar = 0.0, double* DeltaDef = NULL, unsigned long ElementNumber = 0, unsigned long PointStateNumber = 0); 00118 00119 // METHOD=mm:3d3ef522-5746-4fb5-905b-0a6df743e5a4 00120 unsigned long GetDMatrixOrder(unsigned long StrainOrder); 00121 00122 // METHOD=mm:9d828bd2-564d-4601-b41d-a8ead9b16c57 00123 void GetStress(double* Stress, double* Strain, double* StressTensor = NULL, double pbar = 0.0, unsigned long ElementNumber = 0, unsigned long PointStateNumber = 0); 00124 00125 // METHOD=mm:a1a7b375-85e4-4e73-afe0-07867097823a 00126 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); 00127 00128 // METHOD=mm:e75ac412-f0da-4e4e-bf6d-6aaedf3bdcb3 00129 unsigned long GetStressOrder(unsigned long StrainOrder); 00130 00131 // METHOD=mm:f8739b5e-4a72-4349-be64-b768357c5897 00132 double GetStrainEnergyDensity(double* Strain, double pbar = 0.0, unsigned long ElementNumber = 0, unsigned long PointStateNumber = 0); 00133 00134 // METHOD=mm:7000f6a1-5117-487b-a0cd-e244283a1cfb 00135 int GetStrainEnergyDensityOrder(unsigned long StrainOrder); 00136 00137 00138 protected: 00139 00144 // attr=mm:ba3b49bd-4860-4f7d-947a-c8497367c17c 00145 double YoungModulus; 00146 00150 // attr=mm:28b67ee7-fc6e-4929-8c83-ee32baf77a52 00151 double PoissonRatio; 00152 00156 // attr=mm:b1714b86-01e9-4b9c-9a5e-631225796483 00157 double ThermalExpCoef; 00158 00165 // attr=mm:f61742d6-4d2c-479e-bd8b-5938391a7827 00166 double Density; 00167 00168 00169 private: 00170 00171 //#UBLK-BEG-CLASSMEMB mm:4eb5ba95-445b-4746-b347-fad48e2be301 00172 //#UBLK-END-CLASSMEMB 00173 }; 00174 00175 //#UBLK-BEG-GLOBALH 00176 //*** Removed methods: 13 May 2014 16:55 00177 //--- 00178 //uuid=mm:fe9eaea5-5927-42c5-a544-47a2a2b23aa3 00179 // 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); 00180 00181 //#UBLK-END-GLOBALH 00182 00183 00184 #endif // _NEOHOOKEANMATERIAL_H_