10#include "gtest/gtest.h"
34const RankTwoTensor kSigmaOld(30.0, -10.0, 15.0, 4.0, -3.0, 6.0);
62 const RankFourTensor J = rate(makeInputs(C, dL),
true).cauchy_jacobian;
65 for (
unsigned int k = 0; k < 3; ++k)
66 for (
unsigned int l = 0; l < 3; ++l)
71 const RankTwoTensor d = (rate(makeInputs(C, dLp),
false).cauchy_stress -
72 rate(makeInputs(C, dLm),
false).cauchy_stress) /
74 for (
unsigned int i = 0; i < 3; ++i)
75 for (
unsigned int j = 0; j < 3; ++j)
76 Jfd(i, j, k, l) =
d(i, j);
83TEST(LagrangianObjectiveRateTest, zeroIncrement)
91 EXPECT_LT((
truesdell(in,
false).cauchy_stress - expected).L2norm(), 1.0e-12);
92 EXPECT_LT((
jaumann(in,
false).cauchy_stress - expected).L2norm(), 1.0e-12);
93 EXPECT_LT((
greenNaghdi(in,
false).cauchy_stress - expected).L2norm(), 1.0e-12);
94 EXPECT_LT((
rashid(in,
false).cauchy_stress - expected).L2norm(), 1.0e-12);
98TEST(LagrangianObjectiveRateTest, truesdellJacobian)
103TEST(LagrangianObjectiveRateTest, jaumannJacobian)
108TEST(LagrangianObjectiveRateTest, rashidJacobian)
114 checkJacobianFD(&
rashid, isotropicC(), dL);
TEST(LagrangianObjectiveRateTest, zeroIncrement)
void fillFromInputVector(const std::vector< T > &input, FillMethod fill_method)
static RankFourTensorTempl< T > IdentityFour()
RankTwoTensorTempl< T > transpose() const
static RankTwoTensorTempl Identity()
Objective-stress-rate updates as stateless free functions.
Outputs jaumann(const Inputs &in, bool need_jacobian)
sigma_{n+1} = J(dW)^{-1} (sigma_n + Deltasigma). Jaumann rate.
Outputs greenNaghdi(const Inputs &in, bool need_jacobian)
sigma_{n+1} = J(dO)^{-1} (sigma_n + Deltasigma), with dO built from the polar rotation increment.
Outputs truesdell(const Inputs &in, bool need_jacobian)
sigma_{n+1} = J(dL)^{-1} (sigma_n + Deltasigma). Truesdell rate.
Outputs rashid(const Inputs &in, bool need_jacobian)
sigma_{n+1} = r_hat (sigma_n + Deltasigma) r_hat^T, r_hat = exp(Deltaw).
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
Per-qp outputs a rate produces.