36 #include "AbstractMaterialLaw.hpp" 38 template<
unsigned DIM>
40 : mpChangeOfBasisMatrix(nullptr)
44 template<
unsigned DIM>
47 c_matrix<double,DIM,DIM>& rSigma)
51 c_matrix<double,DIM,DIM> C = prod(trans(rF), rF);
52 c_matrix<double,DIM,DIM> invC =
Inverse(C);
54 c_matrix<double,DIM,DIM> T;
65 for (
unsigned i=0; i<DIM; i++)
67 for (
unsigned j=0; j<DIM; j++)
70 for (
unsigned M=0; M<DIM; M++)
72 for (
unsigned N=0; N<DIM; N++)
74 rSigma(i,j) += rF(i,M)*T(M,N)*rF(j,N);
82 template<
unsigned DIM>
85 c_matrix<double,DIM,DIM>& rS)
87 c_matrix<double,DIM,DIM> C = prod(trans(rF), rF);
88 c_matrix<double,DIM,DIM> invC =
Inverse(C);
90 c_matrix<double,DIM,DIM> T;
96 rS = prod(T, trans(rF));
99 template<
unsigned DIM>
102 c_matrix<double,DIM,DIM>& rT)
104 c_matrix<double,DIM,DIM> invC =
Inverse(rC);
112 template<
unsigned DIM>
115 EXCEPTION(
"[the material law you are using]::ScaleMaterialParameters() has not been implemented\n");
119 template<
unsigned DIM>
125 template<
unsigned DIM>
131 template<
unsigned DIM>
133 c_matrix<double,DIM,DIM>& rCTransformed, c_matrix<double,DIM,DIM>& rInvCTransformed)
148 rInvCTransformed = rInvC;
152 template<
unsigned DIM>
160 static c_matrix<double,DIM,DIM> T_transformed_times_Ptrans;
void TransformStressAndStressDerivative(c_matrix< double, DIM, DIM > &rT, FourthOrderTensor< DIM, DIM, DIM, DIM > &rDTdE, bool transformDTdE)
void ResetToNoChangeOfBasisMatrix()
boost::numeric::ublas::c_matrix< T, 1, 1 > Inverse(const boost::numeric::ublas::c_matrix< T, 1, 1 > &rM)
#define EXCEPTION(message)
T Determinant(const boost::numeric::ublas::c_matrix< T, 1, 1 > &rM)
void ComputeCauchyStress(c_matrix< double, DIM, DIM > &rF, double pressure, c_matrix< double, DIM, DIM > &rSigma)
void Compute1stPiolaKirchoffStress(c_matrix< double, DIM, DIM > &rF, double pressure, c_matrix< double, DIM, DIM > &rS)
void ComputeTransformedDeformationTensor(c_matrix< double, DIM, DIM > &rC, c_matrix< double, DIM, DIM > &rInvC, c_matrix< double, DIM, DIM > &rCTransformed, c_matrix< double, DIM, DIM > &rInvCTransformed)
c_matrix< double, DIM, DIM > * mpChangeOfBasisMatrix
virtual void ComputeStressAndStressDerivative(c_matrix< double, DIM, DIM > &rC, c_matrix< double, DIM, DIM > &rInvC, double pressure, c_matrix< double, DIM, DIM > &rT, FourthOrderTensor< DIM, DIM, DIM, DIM > &rDTdE, bool computeDTdE)=0
void Compute2ndPiolaKirchoffStress(c_matrix< double, DIM, DIM > &rC, double pressure, c_matrix< double, DIM, DIM > &rT)
void SetChangeOfBasisMatrix(c_matrix< double, DIM, DIM > &rChangeOfBasisMatrix)
virtual void ScaleMaterialParameters(double scaleFactor)