36 #include "SchmidCostaExponentialLaw2d.hpp"
57 for (
unsigned M=0; M<2; M++)
59 for (
unsigned N=0; N<2; N++)
67 c_matrix<double,2,2>& rInvC,
69 c_matrix<double,2,2>& rT,
73 static c_matrix<double,2,2> C_transformed;
74 static c_matrix<double,2,2> invC_transformed;
86 c_matrix<double,2,2> E = 0.5*(C_transformed -
mIdentity);
89 for (
unsigned M=0; M<2; M++)
91 for (
unsigned N=0; N<2; N++)
93 QQ +=
mB[M][N]*E(M,N)*E(M,N);
97 double multiplier =
mA*exp(QQ)/2;
100 for (
unsigned M=0; M<2; M++)
102 for (
unsigned N=0; N<2; N++)
104 rT(M,N) = multiplier*
mB[M][N]*E(M,N) - pressure*invC_transformed(M,N);
108 for (
unsigned P=0; P<2; P++)
110 for (
unsigned Q=0; Q<2; Q++)
112 rDTdE(M,N,P,Q) = multiplier *
mB[M][N] * (M==P)*(N==Q)
113 + 2*multiplier*
mB[M][N]*
mB[P][Q]*E(M,N)*E(P,Q)
114 + 2*pressure*invC_transformed(M,P)*invC_transformed(Q,N);
void TransformStressAndStressDerivative(c_matrix< double, DIM, DIM > &rT, FourthOrderTensor< DIM, DIM, DIM, DIM > &rDTdE, bool transformDTdE)
double GetZeroStrainPressure()
void ComputeStressAndStressDerivative(c_matrix< double, 2, 2 > &rC, c_matrix< double, 2, 2 > &rInvC, double pressure, c_matrix< double, 2, 2 > &rT, FourthOrderTensor< 2, 2, 2, 2 > &rDTdE, bool computeDTdE)
c_matrix< double, 2, 2 > mIdentity
std::vector< std::vector< double > > mB
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)
std::vector< std::vector< double > > GetB()
SchmidCostaExponentialLaw2d()