www.mooseframework.org
LinearViscoelasticStressUpdate.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 
16 {
18  params.addParam<std::string>(
19  "apparent_creep_strain",
20  "apparent_creep_strain",
21  "name of the apparent creep strain (defined by a LinearViscoelasticityBase material)");
22  params.addParam<std::string>(
23  "apparent_elasticity_tensor",
24  "apparent_elasticity_tensor",
25  "name of the apparent elasticity tensor (defined by a LinearViscoelasticityBase material)");
26  params.addParam<std::string>(
27  "elasticity_tensor_inv",
28  "elasticity_tensor_inv",
29  "name of the real compliance tensor (defined by a LinearViscoelasticityBase material)");
30  return params;
31 }
32 
34  : StressUpdateBase(parameters),
35  _creep_strain(declareProperty<RankTwoTensor>(_base_name + "creep_strain")),
36  _creep_strain_old(getMaterialPropertyOld<RankTwoTensor>(_base_name + "creep_strain")),
37  _apparent_creep_strain(getMaterialProperty<RankTwoTensor>("apparent_creep_strain")),
38  _apparent_elasticity_tensor(getMaterialProperty<RankFourTensor>("apparent_elasticity_tensor")),
39  _elasticity_tensor_inv(getMaterialProperty<RankFourTensor>("elasticity_tensor_inv"))
40 {
41 }
42 
43 void
45 {
46  _creep_strain[_qp].zero();
47 }
48 
49 void
51 {
53 }
54 
55 void
57  RankTwoTensor & inelastic_strain_increment,
58  const RankTwoTensor & /*rotation_increment*/,
59  RankTwoTensor & stress_new,
60  const RankTwoTensor & /*stress_old*/,
61  const RankFourTensor & elasticity_tensor,
62  const RankTwoTensor & elastic_strain_old,
63  bool /*compute_full_tangent_operator*/,
64  RankFourTensor & /*tangent_operator*/)
65 {
66  RankTwoTensor current_mechanical_strain =
67  elastic_strain_old + _creep_strain_old[_qp] + strain_increment;
68 
70  current_mechanical_strain - (_apparent_elasticity_tensor[_qp] * _elasticity_tensor_inv[_qp]) *
71  (current_mechanical_strain - _apparent_creep_strain[_qp]);
72 
73  RankTwoTensor creep_strain_increment = _creep_strain[_qp] - _creep_strain_old[_qp];
74 
75  strain_increment -= creep_strain_increment;
76  inelastic_strain_increment += creep_strain_increment;
77  stress_new -= elasticity_tensor * creep_strain_increment;
78 }
LinearViscoelasticStressUpdate(const InputParameters &parameters)
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
const MaterialProperty< RankFourTensor > & _apparent_elasticity_tensor
Apparent elasticity tensor (extracted from a LinearViscoelasticityBase object)
static InputParameters validParams()
const MaterialProperty< RankTwoTensor > & _creep_strain_old
Real elasticity_tensor(unsigned int i, unsigned int j, unsigned int k, unsigned int l)
unsigned int _qp
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
const MaterialProperty< RankFourTensor > & _elasticity_tensor_inv
Instantaneous compliance tensor (extracted from a LinearViscoelasticityBase object) ...
This class computes a creep strain increment associated with a linear viscoelastic model contained in...
StressUpdateBase is a material that is not called by MOOSE because of the compute=false flag set in t...
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.
registerMooseObject("SolidMechanicsApp", LinearViscoelasticStressUpdate)