19 MooseEnum objectiveRate(
"truesdell jaumann green_naghdi rashid",
"truesdell");
21 "objective_rate", objectiveRate,
"Which type of objective integration to use");
25 "If true, the rate runs in passthrough mode: `cauchy_stress = small_stress` (no outer " 26 "rotation applied). Use when wrapping a material with `perform_finite_strain_rotations = " 27 "true` whose own internal rotation already produces the correct cumulative Cauchy stress " 28 "(needs the strain calculator to publish a non-identity `rotation_increment` via " 29 "`publish_rotation_increment = true`). `cauchy_jacobian` is still computed via the rate's " 30 "chain rule. Default false preserves the standard objective-rate pipeline.");
38 _small_stress(declareProperty<
RankTwoTensor>(_base_name +
"small_stress")),
39 _small_stress_old(getMaterialPropertyOld<
RankTwoTensor>(_base_name +
"small_stress")),
40 _small_jacobian(declareProperty<
RankFourTensor>(_base_name +
"small_jacobian")),
41 _dcauchy_stress_d_eigenstrain(
42 declareProperty<
RankFourTensor>(_base_name +
"dcauchy_stress_d_eigenstrain")),
43 _cauchy_stress_old(getMaterialPropertyOld<
RankTwoTensor>(_base_name +
"cauchy_stress")),
44 _mechanical_strain(getMaterialPropertyByName<
RankTwoTensor>(_base_name +
"mechanical_strain")),
45 _strain_increment(getMaterialPropertyByName<
RankTwoTensor>(_base_name +
"strain_increment")),
47 getMaterialPropertyByName<
RankTwoTensor>(_base_name +
"vorticity_increment")),
48 _deformation_gradient_increment(getMaterialPropertyByName<
RankTwoTensor>(
49 _base_name +
"spatial_deformation_gradient_increment")),
50 _d_deformation_gradient_increment_d_F(getMaterialPropertyByName<
RankFourTensor>(
51 _base_name +
"d_spatial_deformation_gradient_increment_d_deformation_gradient")),
52 _d_vorticity_increment_d_F(getMaterialPropertyByName<
RankFourTensor>(
53 _base_name +
"d_vorticity_increment_d_deformation_gradient")),
54 _def_grad(getMaterialPropertyByName<
RankTwoTensor>(_base_name +
"deformation_gradient")),
55 _def_grad_old(getMaterialPropertyOldByName<
RankTwoTensor>(_base_name +
"deformation_gradient")),
56 _objective_rate(getParam<
MooseEnum>(
"objective_rate")),
57 _rotate_old_stress(getParam<bool>(
"rotate_old_stress"))
67 _base_name +
"d_rotation_d_deformation_gradient");
FEProblemBase & _fe_problem
const MaterialProperty< RankTwoTensor > * _rotation
Polar-decomposition rotation R of F (and its old value and derivative), published by the strain calcu...
const MaterialProperty< RankTwoTensor > & _inv_def_grad
Inverse F-bar-stabilized deformation gradient (= _F^{-1}).
const MaterialProperty< RankFourTensor > & _d_deformation_gradient_increment_d_F
d(dL)/dF, stored by the strain calculator
bool _large_kinematics
If true use large deformations.
const bool & currentlyComputingResidualAndJacobian() const
const std::string _base_name
Prepend to the material properties.
virtual void computeQpSmallStress()=0
Method to implement to provide the small stress update.
virtual void initQpStatefulProperties() override
Initialize everything with zeros.
static InputParameters validParams()
const MaterialProperty< RankTwoTensor > & _vorticity_increment
Provided for material models that use the vorticity increment.
const MooseEnum & _objective_rate
Which objective rate to use (truesdell / jaumann / green_naghdi / rashid).
const bool _rotate_old_stress
If true, the rate runs in passthrough mode – the host discards the rate's own outer rotation and set...
virtual void initQpStatefulProperties() override
Initialize the new (small) stress.
const MaterialProperty< RankTwoTensor > * _rotation_old
MaterialProperty< RankTwoTensor > & _cauchy_stress
The Cauchy stress.
const MaterialProperty< RankTwoTensor > & _cauchy_stress_old
We need the old Cauchy stress to do the objective integration.
const MaterialProperty< RankTwoTensor > & _deformation_gradient_increment
The spatial velocity gradient increment (dL)
Native interface for providing the Cauchy stress.
const MaterialProperty< RankTwoTensor > & _small_stress_old
We need the old value to get the increment.
virtual void computeQpCauchyStress() override
Implement the objective update.
const MaterialProperty< RankTwoTensor > & _inv_df
Inverse incremental deformation gradient.
MaterialProperty< RankFourTensor > & _small_jacobian
The updated small algorithmic tangent.
ComputeLagrangianObjectiveStress(const InputParameters ¶meters)
const MaterialProperty< RankFourTensor > * _d_rotation_d_F
MaterialProperty< RankTwoTensor > & _small_stress
The updated small stress.
const MaterialProperty< RankFourTensor > & _d_vorticity_increment_d_F
d(dW)/dF from the strain calculator, consumed by Jaumann and Rashid
const bool & currentlyComputingJacobian() const
MaterialProperty< RankFourTensor > & _dcauchy_stress_d_eigenstrain
Derivative of the Cauchy stress with respect to the eigenstrain at this step, d_sigma/d_eigenstrain =...
MaterialProperty< RankFourTensor > & _cauchy_jacobian
The derivative of the Cauchy stress wrt the increment in the spatial velocity gradient.
Outputs compute(const MooseEnum &rate, const Inputs &in, bool need_jacobian)
Dispatch to the rate selected by the objective_rate enum (truesdell / jaumann / green_naghdi / rashid...
static InputParameters validParams()