https://mooseframework.inl.gov
ComputeLagrangianStrainBase.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 
12 #include "Material.h"
13 #include "RankFourTensorForward.h"
14 #include "RankTwoTensorForward.h"
15 #include "StabilizationUtils.h"
16 #include "GradientOperator.h"
17 
41 template <class G>
42 class ComputeLagrangianStrainBase : public Material, public G
43 {
44 public:
45  static InputParameters baseParams();
48  virtual void initialSetup() override;
49 
50 protected:
51  virtual void initQpStatefulProperties() override;
52  virtual void computeProperties() override;
53  virtual void computeQpProperties() override;
55  virtual void computeQpIncrementalStrains(const RankTwoTensor & dL);
57  virtual void subtractQpEigenstrainIncrement(RankTwoTensor & strain);
61  virtual void computeDeformationGradient();
62 
63  // Displacements and displacement gradients
64  const unsigned int _ndisp;
65  std::vector<const VariableValue *> _disp;
66  std::vector<const VariableGradient *> _grad_disp;
67 
69  const std::string _base_name;
70 
72  const bool _large_kinematics;
73 
75  const bool _stabilize_strain;
76 
77  // The eigenstrains
78  std::vector<MaterialPropertyName> _eigenstrain_names;
79  std::vector<const MaterialProperty<RankTwoTensor> *> _eigenstrains;
80  std::vector<const MaterialProperty<RankTwoTensor> *> _eigenstrains_old;
81 
82  // The total strains
87 
90 
93 
96 
99 
100  // The average deformation gradient over the element for F-bar stabilization. Note that the
101  // average deformation gradient is undefined if stabilization is not active.
103 
104  // The deformation gradient. If stabilization is active, this will be the stabilized deformation
105  // gradient. Otherwise this will be equal to the unstabilized deformation gradient.
107 
110 
115 
117  std::vector<MaterialPropertyName> _homogenization_gradient_names;
118 
120  std::vector<const MaterialProperty<RankTwoTensor> *> _homogenization_contributions;
121 
124 };
MaterialProperty< RankTwoTensor > & _F
const MaterialProperty< RankTwoTensor > & _total_strain_old
virtual void computeQpUnstabilizedDeformationGradient()
Calculate the unstabilized deformation gradient at the quadrature point.
MaterialProperty< RankTwoTensor > & _spatial_velocity_increment
Spatial velocity gradient increment.
std::vector< const VariableGradient * > _grad_disp
const MaterialProperty< RankTwoTensor > & _mechanical_strain_old
std::vector< const MaterialProperty< RankTwoTensor > * > _homogenization_contributions
Actual homogenization contributions.
static const std::string G
Definition: NS.h:166
virtual void computeDeformationGradient()
Calculate the unstabilized and optionally the stabilized deformation gradients.
std::vector< const VariableValue * > _disp
MaterialProperty< RankTwoTensor > & _mechanical_strain
std::vector< MaterialPropertyName > _homogenization_gradient_names
Names of any extra homogenization gradients.
virtual void computeProperties() override
MaterialProperty< RankTwoTensor > & _F_ust
The unstabilized deformation gradient.
std::vector< const MaterialProperty< RankTwoTensor > * > _eigenstrains_old
virtual void initialSetup() override
std::vector< const MaterialProperty< RankTwoTensor > * > _eigenstrains
MaterialProperty< RankTwoTensor > & _total_strain
const MaterialProperty< RankTwoTensor > & _F_old
Old deformation gradient.
MaterialProperty< RankTwoTensor > & _F_avg
std::vector< MaterialPropertyName > _eigenstrain_names
virtual void initQpStatefulProperties() override
const bool _large_kinematics
If true the equilibrium conditions is calculated with large deformations.
virtual void subtractQpEigenstrainIncrement(RankTwoTensor &strain)
Subtract the eigenstrain increment to subtract from the total strain.
MaterialProperty< RankTwoTensor > & _strain_increment
Strain increment.
MaterialProperty< RankTwoTensor > & _F_inv
Inverse deformation gradient.
const bool _stabilize_strain
If true stabilize the strains with F_bar.
const std::string _base_name
Material system base name.
Calculate strains to use the MOOSE materials with the Lagrangian kernels.
const InputParameters & parameters() const
MaterialProperty< RankTwoTensor > & _vorticity_increment
Vorticity increment.
virtual void computeQpIncrementalStrains(const RankTwoTensor &dL)
Calculate the strains based on the spatial velocity gradient.
MaterialProperty< RankTwoTensor > & _rotation_increment
Rotation increment for "old" materials inheriting from ComputeStressBase.
static InputParameters validParams()
MaterialProperty< RankTwoTensor > & _f_inv
Inverse incremental deformation gradient.
ComputeLagrangianStrainBase(const InputParameters &parameters)
virtual void computeQpProperties() override