00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef ABSTRACTINCOMPRESSIBLEMATERIALLAW_HPP_
00031 #define ABSTRACTINCOMPRESSIBLEMATERIALLAW_HPP_
00032
00033 #include "UblasCustomFunctions.hpp"
00034 #include <cassert>
00035 #include <vector>
00036 #include "Exception.hpp"
00037 #include "FourthOrderTensor2.hpp"
00038
00047 template<unsigned DIM>
00048 class AbstractIncompressibleMaterialLaw
00049 {
00050 public :
00069 virtual void ComputeStressAndStressDerivative(c_matrix<double,DIM,DIM>& C,
00070 c_matrix<double,DIM,DIM>& invC,
00071 double pressure,
00072 c_matrix<double,DIM,DIM>& T,
00073 FourthOrderTensor2<DIM>& dTdE,
00074 bool computeDTdE)=0;
00075
00076
00092 void ComputeCauchyStress(c_matrix<double,DIM,DIM>& F, double pressure, c_matrix<double,DIM,DIM>& sigma);
00093 ;
00112 void Compute1stPiolaKirchoffStress(c_matrix<double,DIM,DIM>& F, double pressure, c_matrix<double,DIM,DIM>& S);
00113
00127 void Compute2ndPiolaKirchoffStress(c_matrix<double,DIM,DIM>& C, double pressure, c_matrix<double,DIM,DIM>& T);
00128
00132 virtual double GetZeroStrainPressure()=0;
00133
00134 virtual ~AbstractIncompressibleMaterialLaw();
00135
00144 virtual void ScaleMaterialParameters(double scaleFactor);
00145 };
00146
00147 #endif