hp2FEM
0.1
|
00001 #ifndef _DAMAGEDNEOHOOKEANMATERIAL_H_ 00002 #define _DAMAGEDNEOHOOKEANMATERIAL_H_ 00003 // --------------------------------------------- 00004 // company : 00005 // user : 00006 // date : 22 Mar 2015 17:24 00007 // file : DamagedNeoHookeanMaterial.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 DamagedNeoHookeanMaterial : public Material 00044 { 00045 //#UBLK-BEG-CLASSDEF mm:a71f1e3c-d6c1-4f95-92ff-017e9800650d 00046 //#UBLK-END-CLASSDEF 00047 00048 public: 00049 00050 // METHOD=mm:b850abfd-9487-4721-b7c2-f544732ca73a 00051 DamagedNeoHookeanMaterial(); 00052 00053 // METHOD=mm:888862a6-6591-4e15-b33f-13b869fd6b7f 00054 DamagedNeoHookeanMaterial(DamagedNeoHookeanMaterial& Instance); 00055 00056 // METHOD=mm:3d4957b9-6d97-412a-81cf-f6f6e7ea9037 00057 DamagedNeoHookeanMaterial(unsigned long MaterialNumber, ProblemType_E Application, double E = 0.0, double Nu = 0.0, double AlphaT = 0.0, double Rho = 0.0, double Dalpha = 0.0, double Dbeta = 0.0); 00058 00059 // METHOD=mm:392d833a-5f65-4156-b265-789ff47acb34 00060 DamagedNeoHookeanMaterial& operator=(DamagedNeoHookeanMaterial& Instance); 00061 00062 // METHOD=mm:1b37fe46-7dbf-4350-a10a-a7567ed9340e 00063 ~DamagedNeoHookeanMaterial(); 00064 00065 // METHOD=mm:804ff4cf-12dc-466a-bb71-e05a8a323fdc 00066 void operator=(Material& Inst); 00067 00068 // METHOD=mm:6466efb9-dcb4-49e4-934f-62acd93fa870 00069 void Read(FILE* File); 00070 00071 // METHOD=mm:a4ab2570-89f6-4cee-8fc2-07d31fd83c14 00072 void Print(FILE* File, char* Message); 00073 00074 // METHOD=mm:e66d738b-60bc-498c-8702-0cea346e09eb 00075 void Print(FILE* File); 00076 00077 // METHOD=mm:6307d578-e4b5-4a06-9c99-89684eb2a7cf 00078 void Save(FILE* File); 00079 00080 // METHOD=mm:173daccd-b4be-48cd-bcb4-3e72dc30aad7 00081 void Restore(FILE* File); 00082 00083 // METHOD=mm:d0055279-c339-4cea-ab2e-5a4b2899549c 00084 void Free(); 00085 00086 // METHOD=mm:0486f655-69f8-45fb-bcff-d2a3bc0a08f0 00087 void SetApplication(ProblemType_E Application); 00088 00089 // METHOD=mm:97f18302-8c02-46be-b7f3-68f1c45532b2 00090 ProblemType_E GetApplication(); 00091 00092 // METHOD=mm:1399289c-8f8d-431f-aa99-d8b112cd088e 00093 char* GetName(); 00094 00095 // METHOD=mm:b9b3d6cc-7a88-4c5c-9178-ee8810fe5233 00096 MaterialType_E GetMaterialType(); 00097 00098 // METHOD=mm:a4cc7cc9-b590-48de-8751-57833ef09a04 00099 void SetProperties(BuiltInArray<double>& Properties); 00100 00101 // METHOD=mm:c55f4443-851d-4757-8bbc-de20324cc91f 00102 void SetProperty(MaterialProperty_E Property, double Value); 00103 00104 // METHOD=mm:610009b9-ff18-4392-9dbb-0697dd503851 00105 void GetProperties(BuiltInArray<double>& Properties); 00106 00107 // METHOD=mm:d2e7e61c-5afb-4511-9978-bc07fffeb6ec 00108 double GetProperty(MaterialProperty_E Property); 00109 00110 // METHOD=mm:d5d03426-61f3-449e-868f-9117da0876ec 00111 unsigned long GetNumberProperties(); 00112 00113 // METHOD=mm:87c08188-9776-44e5-a703-22f093f126de 00114 void GetCMatrix(SymmetricMatrix& CMatrix); 00115 00116 // METHOD=mm:96e335e9-d633-4e8c-8036-97cec610e2df 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:6ea457e2-041d-41ac-9a6f-86b8573f5699 00120 unsigned long GetDMatrixOrder(unsigned long StrainOrder); 00121 00122 // METHOD=mm:ba592dbc-b64b-4d7e-b038-92fa89de503a 00123 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); 00124 00125 // METHOD=mm:27a88187-d8ba-4905-b192-3f7945bab506 00126 void GetStress(double* Stress, double* Strain, double* StressTensor = NULL, double pbar = 0.0, unsigned long ElementNumber = 0, unsigned long PointStateNumber = 0); 00127 00128 // METHOD=mm:695d552e-37da-492a-8b56-86abde5f257e 00129 unsigned long GetStressOrder(unsigned long StrainOrder); 00130 00131 // METHOD=mm:c5fbf151-b5e9-4ec6-8fa8-a9f8b1f5fe80 00132 double GetStrainEnergyDensity(double* Strain, double pbar = 0.0, unsigned long ElementNumber = 0, unsigned long PointStateNumber = 0); 00133 00134 // METHOD=mm:ab4d1ae8-38b5-454f-977a-33cd221857bf 00135 int GetStrainEnergyDensityOrder(unsigned long StrainOrder); 00136 00137 00138 protected: 00139 00144 // attr=mm:16171b0a-bb06-4177-adc8-d48d89f96136 00145 double YoungModulus; 00146 00150 // attr=mm:eb1a8c6d-0147-43d6-8c9a-eca0b6c6cd24 00151 double PoissonRatio; 00152 00156 // attr=mm:a419021d-808f-46b3-89cb-f8359c154af0 00157 double ThermalExpCoef; 00158 00165 // attr=mm:0f80dda0-1541-4f3f-94fd-9ca43dbc2c1c 00166 double Density; 00167 00171 // attr=mm:641b87e2-fcca-4622-8d99-c5988aca43e2 00172 double AlphaDamage; 00173 00177 // attr=mm:b3ee29fb-c47e-4cc1-88a6-4d3f8f6ad48b 00178 double BetaDamage; 00179 00180 00181 private: 00182 00183 //#UBLK-BEG-CLASSMEMB mm:a71f1e3c-d6c1-4f95-92ff-017e9800650d 00184 //#UBLK-END-CLASSMEMB 00185 }; 00186 00187 //#UBLK-BEG-GLOBALH 00188 //#UBLK-END-GLOBALH 00189 00190 00191 #endif // _DAMAGEDNEOHOOKEANMATERIAL_H_