vtf-logo

shells/materials/porousPlasticity/PorousPlasticity.h

Go to the documentation of this file.
00001 /* -*- C++ -*- */
00002 /*
00003  * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00004  *
00005  *                          Alejandro Mota and Fehmi Cirak
00006  *                        California Institute of Technology
00007  *                           (C) 2005 All Rights Reserved
00008  *
00009  * <LicenseText>
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(); // use createMaterial instead
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 // inlined functions
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

Generated on Fri Aug 24 13:00:24 2007 for SFC Thin-Shell Finite Element Solver by  doxygen 1.4.7