https://mooseframework.inl.gov
ComputeMultipleInelasticCosseratStress.C
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 
11 
13 
16 {
18  params.addClassDescription("Compute state (stress and other quantities such as plastic "
19  "strains and internal parameters) using an iterative process, as well "
20  "as Cosserat versions of these quantities. Only elasticity is "
21  "currently implemented for the Cosserat versions. "
22  "Combinations of creep models and plastic models may be used");
23  return params;
24 }
25 
27  const InputParameters & parameters)
28  : ComputeMultipleInelasticStress(parameters),
29  _curvature(getMaterialProperty<RankTwoTensor>("curvature")),
30  _elastic_flexural_rigidity_tensor(
31  getMaterialProperty<RankFourTensor>("elastic_flexural_rigidity_tensor")),
32  _couple_stress(declareProperty<RankTwoTensor>("couple_stress")),
33  _couple_stress_old(getMaterialPropertyOld<RankTwoTensor>("couple_stress")),
34  _Jacobian_mult_couple(declareProperty<RankFourTensor>("couple_Jacobian_mult")),
35  _compliance(getMaterialProperty<RankFourTensor>(_base_name + "compliance_tensor"))
36 {
37 }
38 
39 void
41 {
43  _couple_stress[_qp].zero();
44 }
45 
46 void
48 {
50 
54 
56  {
60  }
61 }
62 
63 void
65 {
68  else
69  {
71  for (unsigned i_rmm = 1; i_rmm < _num_models; ++i_rmm)
74  }
75 }
76 
77 void
79  unsigned model_number,
80  RankTwoTensor & elastic_strain_increment,
81  RankTwoTensor & inelastic_strain_increment,
82  RankFourTensor & consistent_tangent_operator)
83 {
84  const RankTwoTensor trial_stress = _stress[_qp];
85  const RankTwoTensor applied_strain_increment = elastic_strain_increment;
86 
88  elastic_strain_increment,
89  inelastic_strain_increment,
90  consistent_tangent_operator);
91 
92  inelastic_strain_increment = _compliance[_qp] * (trial_stress - _stress[_qp]);
93  elastic_strain_increment = applied_strain_increment - inelastic_strain_increment;
94 }
virtual void computeQpJacobianMult() override
Using _elasticity_tensor[_qp] and the consistent tangent operators, _consistent_tangent_operator[...] computed by the inelastic models, compute _Jacobian_mult[_qp].
MaterialProperty< RankFourTensor > & _Jacobian_mult
derivative of stress w.r.t. strain (_dstress_dstrain)
ComputeMultipleInelasticStress computes the stress, the consistent tangent operator (or an approximat...
const MaterialProperty< RankTwoTensor > & _rotation_increment
Rotation increment material property.
const MaterialProperty< RankFourTensor > & _compliance
Inverse of the elasticity tensor.
virtual void computeAdmissibleState(unsigned model_number, RankTwoTensor &elastic_strain_increment, RankTwoTensor &inelastic_strain_increment, RankFourTensor &consistent_tangent_operator) override
The current Cosserat models do not know they might be using the "host" version of the elasticity tens...
const MaterialProperty< RankTwoTensor > & _curvature
The Cosserat curvature strain.
ComputeMultipleInelasticCosseratStress(const InputParameters &parameters)
virtual void computeQpStress() override
Compute the stress and store it in the _stress material property for the current quadrature point...
const MaterialProperty< RankFourTensor > & _elasticity_tensor
Elasticity tensor material property.
const MaterialProperty< RankFourTensor > & _elastic_flexural_rigidity_tensor
The Cosserat elastic flexural rigidity tensor.
MaterialProperty< RankFourTensor > & _Jacobian_mult_couple
derivative of couple-stress w.r.t. curvature
virtual void computeAdmissibleState(unsigned model_number, RankTwoTensor &elastic_strain_increment, RankTwoTensor &inelastic_strain_increment, RankFourTensor &consistent_tangent_operator)
Given a trial stress (_stress[_qp]) and a strain increment (elastic_strain_increment) let the model_n...
ComputeMultipleInelasticStress computes the stress, the consistent tangent operator (or an approximat...
std::vector< RankFourTensor > _consistent_tangent_operator
the consistent tangent operators computed by each plastic model
registerMooseObject("SolidMechanicsApp", ComputeMultipleInelasticCosseratStress)
MaterialProperty< RankTwoTensor > & _couple_stress
the Cosserat couple-stress
virtual void computeQpStress() override
Compute the stress and store it in the _stress material property for the current quadrature point...
void addClassDescription(const std::string &doc_string)
const bool _perform_finite_strain_rotations
after updateQpState, rotate the stress, elastic_strain, inelastic_strain and Jacobian_mult using _rot...
MaterialProperty< RankTwoTensor > & _stress
Stress material property.
const bool & currentlyComputingJacobian() const
enum ComputeMultipleInelasticStressBase::TangentOperatorEnum _tangent_operator_type