hp2FEM  0.1
include/material/DamagedNeoHookeanMaterial.h
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_
 All Classes Files Functions Variables Typedefs Friends Defines