www.mooseframework.org
LinearViscoelasticStressUpdate.C
Go to the documentation of this file.
1 /****************************************************************/
2 /* MOOSE - Multiphysics Object Oriented Simulation Environment */
3 /* */
4 /* All contents are licensed under LGPL V2.1 */
5 /* See LICENSE for full restrictions */
6 /****************************************************************/
8 
9 template <>
10 InputParameters
12 {
13  InputParameters params = validParams<StressUpdateBase>();
14  params.addParam<std::string>("base_name", "optional string prepended to the creep strain name");
15  params.addParam<std::string>(
16  "apparent_creep_strain",
17  "apparent_creep_strain",
18  "name of the apparent creep strain (defined by a LinearViscoelasticityBase material)");
19  params.addParam<std::string>(
20  "apparent_elasticity_tensor",
21  "apparent_elasticity_tensor",
22  "name of the apparent elasticity tensor (defined by a LinearViscoelasticityBase material)");
23  params.addParam<std::string>(
24  "instantaneous_elasticity_tensor_inv",
25  "instantaneous_elasticity_tensor_inv",
26  "name of the apparent compliance tensor (defined by a LinearViscoelasticityBase material)");
27  return params;
28 }
29 
31  : StressUpdateBase(parameters),
32  _base_name(isParamValid("base_name") ? getParam<std::string>("base_name") : std::string()),
33  _creep_strain(declareProperty<RankTwoTensor>(
34  isParamValid("base_name") ? _base_name + "_creep_strain" : "creep_strain")),
35  _creep_strain_old(getMaterialPropertyOld<RankTwoTensor>(
36  isParamValid("base_name") ? _base_name + "_creep_strain" : "creep_strain")),
37  _apparent_creep_strain(getMaterialProperty<RankTwoTensor>("apparent_creep_strain")),
38  _apparent_elasticity_tensor(getMaterialProperty<RankFourTensor>("apparent_elasticity_tensor")),
39  _instantaneous_elasticity_tensor_inv(
40  getMaterialProperty<RankFourTensor>("instantaneous_elasticity_tensor_inv"))
41 {
42 }
43 
44 void
46 {
47  _creep_strain[_qp].zero();
48 }
49 
50 void
52 {
53  _creep_strain[_qp] = _creep_strain_old[_qp];
54 }
55 
56 void
57 LinearViscoelasticStressUpdate::updateState(RankTwoTensor & strain_increment,
58  RankTwoTensor & inelastic_strain_increment,
59  const RankTwoTensor & /*rotation_increment*/,
60  RankTwoTensor & stress_new,
61  const RankTwoTensor & /*stress_old*/,
62  const RankFourTensor & elasticity_tensor,
63  const RankTwoTensor & elastic_strain_old,
64  bool /*compute_full_tangent_operator*/,
65  RankFourTensor & tangent_operator)
66 {
67  RankTwoTensor current_mechanical_strain =
68  elastic_strain_old + _creep_strain_old[_qp] + strain_increment;
69 
70  _creep_strain[_qp] =
71  current_mechanical_strain -
73  (current_mechanical_strain - _apparent_creep_strain[_qp]);
74 
75  RankTwoTensor creep_strain_increment = _creep_strain[_qp] - _creep_strain_old[_qp];
76 
77  strain_increment -= creep_strain_increment;
78  inelastic_strain_increment += creep_strain_increment;
79  stress_new -= elasticity_tensor * creep_strain_increment;
80 
81  tangent_operator = elasticity_tensor;
82 }
LinearViscoelasticStressUpdate(const InputParameters &parameters)
InputParameters validParams< LinearViscoelasticStressUpdate >()
StressUpdateBase is a material that is not called by MOOSE because of the compute=false flag set in t...
const MaterialProperty< RankFourTensor > & _apparent_elasticity_tensor
Apparent elasticity tensor (extracted from a LinearViscoelasticityBase object)
const MaterialProperty< RankTwoTensor > & _creep_strain_old
virtual void updateState(RankTwoTensor &strain_increment, RankTwoTensor &inelastic_strain_increment, const RankTwoTensor &rotation_increment, RankTwoTensor &stress_new, const RankTwoTensor &stress_old, const RankFourTensor &elasticity_tensor, const RankTwoTensor &elastic_strain_old, bool compute_full_tangent_operator, RankFourTensor &tangent_operator) override
Computes the new creep strain, and removes the creep contribution from the elastic strains and stress...
InputParameters validParams< StressUpdateBase >()
virtual void propagateQpStatefulProperties() override
Reimplemented from StressUpdateBase.
const MaterialProperty< RankTwoTensor > & _apparent_creep_strain
Apparent creep strain (extracted from a LinearViscoelasticityBase object)
MaterialProperty< RankTwoTensor > & _creep_strain
Creep strain.
const MaterialProperty< RankFourTensor > & _instantaneous_elasticity_tensor_inv
Instantaneous compliance tensor (extracted from a LinearViscoelasticityBase object) ...