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 
15 
16 InputParameters
18 {
19  InputParameters params = StressUpdateBase::validParams();
20  params.addParam<std::string>(
21  "apparent_creep_strain",
22  "apparent_creep_strain",
23  "name of the apparent creep strain (defined by a LinearViscoelasticityBase material)");
24  params.addParam<std::string>(
25  "apparent_elasticity_tensor",
26  "apparent_elasticity_tensor",
27  "name of the apparent elasticity tensor (defined by a LinearViscoelasticityBase material)");
28  params.addParam<std::string>(
29  "elasticity_tensor_inv",
30  "elasticity_tensor_inv",
31  "name of the real compliance tensor (defined by a LinearViscoelasticityBase material)");
32  return params;
33 }
34 
36  : StressUpdateBase(parameters),
37  _creep_strain(declareProperty<RankTwoTensor>(_base_name + "creep_strain")),
38  _creep_strain_old(getMaterialPropertyOld<RankTwoTensor>(_base_name + "creep_strain")),
39  _apparent_creep_strain(getMaterialProperty<RankTwoTensor>("apparent_creep_strain")),
40  _apparent_elasticity_tensor(getMaterialProperty<RankFourTensor>("apparent_elasticity_tensor")),
41  _elasticity_tensor_inv(getMaterialProperty<RankFourTensor>("elasticity_tensor_inv"))
42 {
43 }
44 
45 void
47 {
48  _creep_strain[_qp].zero();
49 }
50 
51 void
53 {
54  _creep_strain[_qp] = _creep_strain_old[_qp];
55 }
56 
57 void
59  RankTwoTensor & inelastic_strain_increment,
60  const RankTwoTensor & /*rotation_increment*/,
61  RankTwoTensor & stress_new,
62  const RankTwoTensor & /*stress_old*/,
63  const RankFourTensor & elasticity_tensor,
64  const RankTwoTensor & elastic_strain_old,
65  bool /*compute_full_tangent_operator*/,
66  RankFourTensor & /*tangent_operator*/)
67 {
68  RankTwoTensor current_mechanical_strain =
69  elastic_strain_old + _creep_strain_old[_qp] + strain_increment;
70 
71  _creep_strain[_qp] =
72  current_mechanical_strain - (_apparent_elasticity_tensor[_qp] * _elasticity_tensor_inv[_qp]) *
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 }
defineLegacyParams
defineLegacyParams(LinearViscoelasticStressUpdate)
LinearViscoelasticStressUpdate::updateState
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...
Definition: LinearViscoelasticStressUpdate.C:58
LinearViscoelasticStressUpdate::LinearViscoelasticStressUpdate
LinearViscoelasticStressUpdate(const InputParameters &parameters)
Definition: LinearViscoelasticStressUpdate.C:35
LinearViscoelasticStressUpdate::_elasticity_tensor_inv
const MaterialProperty< RankFourTensor > & _elasticity_tensor_inv
Instantaneous compliance tensor (extracted from a LinearViscoelasticityBase object)
Definition: LinearViscoelasticStressUpdate.h:69
LinearViscoelasticStressUpdate.h
LinearViscoelasticStressUpdate
This class computes a creep strain increment associated with a linear viscoelastic model contained in...
Definition: LinearViscoelasticStressUpdate.h:30
LinearViscoelasticStressUpdate::_creep_strain_old
const MaterialProperty< RankTwoTensor > & _creep_strain_old
Definition: LinearViscoelasticStressUpdate.h:61
LinearViscoelasticStressUpdate::propagateQpStatefulProperties
virtual void propagateQpStatefulProperties() override
Reimplemented from StressUpdateBase.
Definition: LinearViscoelasticStressUpdate.C:52
LinearViscoelasticStressUpdate::_creep_strain
MaterialProperty< RankTwoTensor > & _creep_strain
Creep strain.
Definition: LinearViscoelasticStressUpdate.h:60
registerMooseObject
registerMooseObject("TensorMechanicsApp", LinearViscoelasticStressUpdate)
LinearViscoelasticStressUpdate::_apparent_elasticity_tensor
const MaterialProperty< RankFourTensor > & _apparent_elasticity_tensor
Apparent elasticity tensor (extracted from a LinearViscoelasticityBase object)
Definition: LinearViscoelasticStressUpdate.h:67
LinearViscoelasticStressUpdate::_apparent_creep_strain
const MaterialProperty< RankTwoTensor > & _apparent_creep_strain
Apparent creep strain (extracted from a LinearViscoelasticityBase object)
Definition: LinearViscoelasticStressUpdate.h:65
RankFourTensorTempl< Real >
StressUpdateBase
StressUpdateBase is a material that is not called by MOOSE because of the compute=false flag set in t...
Definition: StressUpdateBase.h:52
LinearViscoelasticStressUpdate::validParams
static InputParameters validParams()
Definition: LinearViscoelasticStressUpdate.C:17
RankTwoTensorTempl
Definition: ACGrGrElasticDrivingForce.h:17
LinearViscoelasticStressUpdate::initQpStatefulProperties
virtual void initQpStatefulProperties() override
Definition: LinearViscoelasticStressUpdate.C:46
StressUpdateBase::validParams
static InputParameters validParams()
Definition: StressUpdateBase.C:17