00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #ifndef POROUSPLASTICITY_H
00014 #define POROUSPLASTICITY_H
00015
00016 #include "../MaterialBase.h"
00017
00018
00019 namespace shells {
00020
00021 class PorousPlasticity : public MaterialBase {
00022 private:
00023 PorousPlasticity();
00024 void computeMaterialParameters(double * history);
00025
00026 public:
00027 ~PorousPlasticity();
00028
00029 void updateStress(double * const stress,
00030 double const * const gstrain,
00031 double const dtime = 0.0,
00032 double * const internal=NULL,
00033 double const * const gstrainPrv=NULL);
00034
00035 double density();
00036 double estimatedElasticityConst();
00037
00038 void initialization(double * history);
00039
00040 static MaterialBase * createMaterial() {
00041 return new PorousPlasticity();
00042 }
00043
00044 private:
00045
00046 static const int _numberMaterialParameters = 43;
00047 static const int _numberInternalVariables = 16;
00048 static const int _temperatureOffset = 3;
00049 static const int _plasticDefGradOffset = 5;
00050
00051 double _materialParameters[ _numberMaterialParameters ];
00052 double _internalVariables[ _numberInternalVariables ];
00053
00054 double _youngModulus;
00055 double _poissonRatio;
00056 double _yieldStress;
00057 double _referencePlasticStrain;
00058 double _referencePlasticStrainRate;
00059 double _rateSensitivityExponent;
00060 double _hardeningExponent;
00061 double _thermalSofteningCoefficient;
00062 double _meltingTemperature;
00063 double _referenceTemperature;
00064 double _thermalExpansionCoefficient;
00065 double _specificHeat;
00066 double _voidRadius;
00067 double _massDensity;
00068 double _voidDensity;
00069 };
00070
00071 }
00072
00073
00074
00075 inline double shells::PorousPlasticity::density()
00076 {
00077 return _massDensity;
00078 }
00079
00080 inline double shells::PorousPlasticity::estimatedElasticityConst()
00081 {
00082 return _youngModulus;
00083 }
00084
00085 inline void shells::PorousPlasticity::initialization(double * history)
00086 {
00087 computeMaterialParameters(history);
00088
00089 return;
00090 }
00091
00092 #endif // POROUSPLASTICITY_H