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