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 ABSTRACTMATERIALLAW_HPP_
00031 #define ABSTRACTMATERIALLAW_HPP_
00032
00033 #include "UblasCustomFunctions.hpp"
00034 #include <cassert>
00035 #include <vector>
00036 #include "Exception.hpp"
00037 #include "FourthOrderTensor.hpp"
00038
00047 template<unsigned DIM>
00048 class AbstractMaterialLaw
00049 {
00050 public :
00051
00070 virtual void ComputeStressAndStressDerivative(c_matrix<double,DIM,DIM>& rC,
00071 c_matrix<double,DIM,DIM>& rInvC,
00072 double pressure,
00073 c_matrix<double,DIM,DIM>& rT,
00074 FourthOrderTensor<DIM,DIM,DIM,DIM>& rDTdE,
00075 bool computeDTdE)=0;
00076
00092 void ComputeCauchyStress(c_matrix<double,DIM,DIM>& rF, double pressure, c_matrix<double,DIM,DIM>& rSigma);
00093
00112 void Compute1stPiolaKirchoffStress(c_matrix<double,DIM,DIM>& rF, double pressure, c_matrix<double,DIM,DIM>& rS);
00113
00127 void Compute2ndPiolaKirchoffStress(c_matrix<double,DIM,DIM>& rC, double pressure, c_matrix<double,DIM,DIM>& rT);
00128
00132 virtual ~AbstractMaterialLaw();
00133
00144 virtual void ScaleMaterialParameters(double scaleFactor);
00145
00155 virtual void SetChangeOfBasisMatrix(c_matrix<double,DIM,DIM>& rChangeOfBasisMatrix)=0;
00156 };
00157
00158 #endif