www.mooseframework.org
ComputeMultipleInelasticCosseratStress.C
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
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 
15 
16 InputParameters
18 {
19  InputParameters params = ComputeMultipleInelasticStress::validParams();
20  params.addClassDescription("Compute state (stress and other quantities such as plastic "
21  "strains and internal parameters) using an iterative process, as well "
22  "as Cosserat versions of these quantities. Only elasticity is "
23  "currently implemented for the Cosserat versions."
24  "Combinations of creep models and plastic models may be used");
25  return params;
26 }
27 
29  const InputParameters & parameters)
30  : ComputeMultipleInelasticStress(parameters),
31  _curvature(getMaterialProperty<RankTwoTensor>("curvature")),
32  _elastic_flexural_rigidity_tensor(
33  getMaterialProperty<RankFourTensor>("elastic_flexural_rigidity_tensor")),
34  _couple_stress(declareProperty<RankTwoTensor>("couple_stress")),
35  _couple_stress_old(getMaterialPropertyOld<RankTwoTensor>("couple_stress")),
36  _Jacobian_mult_couple(declareProperty<RankFourTensor>("couple_Jacobian_mult")),
37  _compliance(getMaterialProperty<RankFourTensor>(_base_name + "compliance_tensor"))
38 {
39 }
40 
41 void
43 {
45  _couple_stress[_qp].zero();
46 }
47 
48 void
50 {
52 
54  if (_fe_problem.currentlyComputingJacobian())
56 
58  {
59  _couple_stress[_qp] =
60  _rotation_increment[_qp] * _couple_stress[_qp] * _rotation_increment[_qp].transpose();
62  }
63 }
64 
65 void
67 {
70  else
71  {
73  for (unsigned i_rmm = 1; i_rmm < _num_models; ++i_rmm)
74  _Jacobian_mult[_qp] =
76  }
77 }
78 
79 void
81  unsigned model_number,
82  RankTwoTensor & elastic_strain_increment,
83  RankTwoTensor & inelastic_strain_increment,
84  RankFourTensor & consistent_tangent_operator)
85 {
86  const RankTwoTensor trial_stress = _stress[_qp];
87  const RankTwoTensor applied_strain_increment = elastic_strain_increment;
88 
90  elastic_strain_increment,
91  inelastic_strain_increment,
92  consistent_tangent_operator);
93 
94  inelastic_strain_increment = _compliance[_qp] * (trial_stress - _stress[_qp]);
95  elastic_strain_increment = applied_strain_increment - inelastic_strain_increment;
96 }
ComputeMultipleInelasticStress
ComputeMultipleInelasticStress computes the stress, the consistent tangent operator (or an approximat...
Definition: ComputeMultipleInelasticStress.h:38
ComputeFiniteStrainElasticStress::_elasticity_tensor
const MaterialProperty< RankFourTensor > & _elasticity_tensor
Elasticity tensor material property.
Definition: ComputeFiniteStrainElasticStress.h:39
ComputeMultipleInelasticCosseratStress.h
ComputeMultipleInelasticCosseratStress::_Jacobian_mult_couple
MaterialProperty< RankFourTensor > & _Jacobian_mult_couple
derivative of couple-stress w.r.t. curvature
Definition: ComputeMultipleInelasticCosseratStress.h:74
ComputeStressBase::_stress
MaterialProperty< RankTwoTensor > & _stress
Stress material property.
Definition: ComputeStressBase.h:50
ComputeMultipleInelasticStress::validParams
static InputParameters validParams()
Definition: ComputeMultipleInelasticStress.C:21
ComputeMultipleInelasticStress::_num_models
const unsigned _num_models
number of plastic models
Definition: ComputeMultipleInelasticStress.h:146
ComputeMultipleInelasticStress::computeQpStress
virtual void computeQpStress() override
Compute the stress and store it in the _stress material property for the current quadrature point.
Definition: ComputeMultipleInelasticStress.C:187
ComputeStressBase::_Jacobian_mult
MaterialProperty< RankFourTensor > & _Jacobian_mult
derivative of stress w.r.t. strain (_dstress_dstrain)
Definition: ComputeStressBase.h:61
ComputeFiniteStrainElasticStress::_rotation_increment
const MaterialProperty< RankTwoTensor > & _rotation_increment
Rotation increment material property.
Definition: ComputeFiniteStrainElasticStress.h:43
ComputeMultipleInelasticCosseratStress::_curvature
const MaterialProperty< RankTwoTensor > & _curvature
The Cosserat curvature strain.
Definition: ComputeMultipleInelasticCosseratStress.h:62
ComputeMultipleInelasticStress::_perform_finite_strain_rotations
const bool _perform_finite_strain_rotations
after updateQpState, rotate the stress, elastic_strain, inelastic_strain and Jacobian_mult using _rot...
Definition: ComputeMultipleInelasticStress.h:129
ComputeMultipleInelasticCosseratStress::initQpStatefulProperties
virtual void initQpStatefulProperties() override
Definition: ComputeMultipleInelasticCosseratStress.C:42
ComputeMultipleInelasticCosseratStress::computeAdmissibleState
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...
Definition: ComputeMultipleInelasticCosseratStress.C:80
ComputeMultipleInelasticStress::TangentOperatorEnum::elastic
ComputeMultipleInelasticStress::_consistent_tangent_operator
std::vector< RankFourTensor > _consistent_tangent_operator
the consistent tangent operators computed by each plastic model
Definition: ComputeMultipleInelasticStress.h:158
ComputeMultipleInelasticCosseratStress::computeQpStress
virtual void computeQpStress() override
Compute the stress and store it in the _stress material property for the current quadrature point.
Definition: ComputeMultipleInelasticCosseratStress.C:49
ComputeMultipleInelasticCosseratStress
ComputeMultipleInelasticStress computes the stress, the consistent tangent operator (or an approximat...
Definition: ComputeMultipleInelasticCosseratStress.h:38
ComputeMultipleInelasticCosseratStress::_compliance
const MaterialProperty< RankFourTensor > & _compliance
Inverse of the elasticity tensor.
Definition: ComputeMultipleInelasticCosseratStress.h:77
registerMooseObject
registerMooseObject("TensorMechanicsApp", ComputeMultipleInelasticCosseratStress)
ComputeMultipleInelasticCosseratStress::validParams
static InputParameters validParams()
Definition: ComputeMultipleInelasticCosseratStress.C:17
ComputeMultipleInelasticCosseratStress::computeQpJacobianMult
virtual void computeQpJacobianMult() override
Using _elasticity_tensor[_qp] and the consistent tangent operators, _consistent_tangent_operator[....
Definition: ComputeMultipleInelasticCosseratStress.C:66
ComputeMultipleInelasticStress::initQpStatefulProperties
virtual void initQpStatefulProperties() override
Definition: ComputeMultipleInelasticStress.C:115
ComputeMultipleInelasticStress::computeAdmissibleState
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...
Definition: ComputeMultipleInelasticStress.C:466
defineLegacyParams
defineLegacyParams(ComputeMultipleInelasticCosseratStress)
RankFourTensorTempl< Real >
ComputeMultipleInelasticCosseratStress::_elastic_flexural_rigidity_tensor
const MaterialProperty< RankFourTensor > & _elastic_flexural_rigidity_tensor
The Cosserat elastic flexural rigidity tensor.
Definition: ComputeMultipleInelasticCosseratStress.h:65
ComputeMultipleInelasticCosseratStress::_couple_stress
MaterialProperty< RankTwoTensor > & _couple_stress
the Cosserat couple-stress
Definition: ComputeMultipleInelasticCosseratStress.h:68
ComputeMultipleInelasticCosseratStress::ComputeMultipleInelasticCosseratStress
ComputeMultipleInelasticCosseratStress(const InputParameters &parameters)
Definition: ComputeMultipleInelasticCosseratStress.C:28
RankTwoTensorTempl
Definition: ACGrGrElasticDrivingForce.h:17
ComputeMultipleInelasticStress::_tangent_operator_type
enum ComputeMultipleInelasticStress::TangentOperatorEnum _tangent_operator_type