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