https://mooseframework.inl.gov
ComputeLagrangianObjectiveStress.h
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://mooseframework.inl.gov
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
10 #pragma once
11 
14 
30 {
31 public:
34 
35 protected:
37  virtual void initQpStatefulProperties() override;
38 
40  virtual void computeQpCauchyStress() override;
41 
43  // This method must provide the _small_stress and _small_jacobian
44  virtual void computeQpSmallStress() = 0;
45 
48 
51 
54 
57 
60 
63 
66 
69 
72 
74  enum class ObjectiveRate
75  {
76  Truesdell,
77  Jaumann,
79  } _rate;
80 
82  const bool _polar_decomp;
83 
86 
89 
92 
95 
96 private:
99 
102 
105 
107  std::tuple<RankTwoTensor, RankFourTensor> advectStress(const RankTwoTensor & S0,
108  const RankTwoTensor & dQ) const;
109 
111  RankFourTensor updateTensor(const RankTwoTensor & Q) const;
112 
115 
117  RankFourTensor cauchyJacobian(const RankFourTensor & Jinv, const RankFourTensor & U) const;
118 
120  void polarDecomposition();
121 };
void polarDecomposition()
Perform polar decomposition.
RankFourTensor stressAdvectionDerivative(const RankTwoTensor &S) const
Derivative of the action to advect stress with respect to the kinematic tensor.
const MaterialProperty< RankTwoTensor > & _mechanical_strain
Provided for material models that use the integrated strain.
ObjectiveRate
Types of objective integrations.
const MaterialProperty< RankTwoTensor > & _strain_increment
Provided for material models that use the strain increment.
MaterialProperty< RankTwoTensor > * _stretch
Current stretch, i.e. U in polar decomposition F = RU.
RankFourTensor updateTensor(const RankTwoTensor &Q) const
Make the tensor used to advect the stress.
virtual void computeQpSmallStress()=0
Method to implement to provide the small stress update.
const MaterialProperty< RankTwoTensor > & _vorticity_increment
Provided for material models that use the vorticity increment.
Provide the Cauchy stress via an objective integration of a small stress.
virtual void initQpStatefulProperties() override
Initialize the new (small) stress.
const MaterialProperty< RankTwoTensor > & _def_grad_old
Deformation gradient.
static const std::string S
Definition: NS.h:163
RankTwoTensor objectiveUpdateTruesdell(const RankTwoTensor &dS)
Objective update using the Truesdell rate.
const MaterialProperty< RankTwoTensor > & _def_grad
Deformation gradient.
std::tuple< RankTwoTensor, RankFourTensor > advectStress(const RankTwoTensor &S0, const RankTwoTensor &dQ) const
Advect the stress using the provided kinematic tensor.
const MaterialProperty< RankTwoTensor > * _rotation_old
Rotation at the begining of this step.
enum ComputeLagrangianObjectiveStress::ObjectiveRate _rate
const MaterialProperty< RankTwoTensor > & _cauchy_stress_old
We need the old Cauchy stress to do the objective integration.
MaterialProperty< RankFourTensor > * _d_rotation_d_def_grad
Derivative of rotation w.r.t. the deformation gradient.
const bool _polar_decomp
Whether we need to perform polar decomposition.
MaterialProperty< RankTwoTensor > * _rotation
Current rotation, i.e. R in polar decomposition F = RU.
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.
RankTwoTensor objectiveUpdateJaumann(const RankTwoTensor &dS)
Objective update using the Jaumann rate.
MaterialProperty< RankFourTensor > & _small_jacobian
The updated small algorithmic tangent.
ComputeLagrangianObjectiveStress(const InputParameters &parameters)
MaterialProperty< RankTwoTensor > & _small_stress
The updated small stress.
const InputParameters & parameters() const
RankFourTensor cauchyJacobian(const RankFourTensor &Jinv, const RankFourTensor &U) const
Compute the consistent tangent.
RankTwoTensor objectiveUpdateGreenNaghdi(const RankTwoTensor &dS)
Objective update using the Green-Naghdi rate.