https://mooseframework.inl.gov
Loading...
Searching...
No Matches
LinearViscoelasticStressUpdate.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.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
43void
48
49void
54
55void
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}
registerMooseObject("SolidMechanicsApp", LinearViscoelasticStressUpdate)
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
This class computes a creep strain increment associated with a linear viscoelastic model contained in...
const MaterialProperty< RankFourTensor > & _apparent_elasticity_tensor
Apparent elasticity tensor (extracted from a LinearViscoelasticityBase object)
const MaterialProperty< RankTwoTensor > & _apparent_creep_strain
Apparent creep strain (extracted from a LinearViscoelasticityBase object)
virtual void propagateQpStatefulProperties() override
Reimplemented from StressUpdateBase.
const MaterialProperty< RankFourTensor > & _elasticity_tensor_inv
Instantaneous compliance tensor (extracted from a LinearViscoelasticityBase object)
LinearViscoelasticStressUpdate(const InputParameters &parameters)
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
MaterialProperty< RankTwoTensor > & _creep_strain
Creep strain.
StressUpdateBase is a material that is not called by MOOSE because of the compute=false flag set in t...
static InputParameters validParams()
Real elasticity_tensor(unsigned int i, unsigned int j, unsigned int k, unsigned int l)