www.mooseframework.org
StressUpdateBase.h
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 
10 #pragma once
11 
12 #include "Conversion.h"
13 #include "InputParameters.h"
14 #include "Material.h"
15 #include "RankFourTensor.h"
16 #include "RankTwoTensor.h"
17 
18 // Forward declaration
19 class StressUpdateBase;
20 
31 {
32  ELASTIC,
33  FULL,
34  PARTIAL
35 };
36 
37 template <>
38 InputParameters validParams<StressUpdateBase>();
39 
52 class StressUpdateBase : public Material
53 {
54 public:
55  static InputParameters validParams();
56 
57  StressUpdateBase(const InputParameters & parameters);
58 
85  virtual void updateState(RankTwoTensor & strain_increment,
86  RankTwoTensor & inelastic_strain_increment,
87  const RankTwoTensor & rotation_increment,
88  RankTwoTensor & stress_new,
89  const RankTwoTensor & stress_old,
90  const RankFourTensor & elasticity_tensor,
91  const RankTwoTensor & elastic_strain_old,
92  bool compute_full_tangent_operator,
93  RankFourTensor & tangent_operator) = 0;
94 
96  void setQp(unsigned int qp);
97 
102  virtual void propagateQpStatefulProperties();
103 
107  virtual bool requiresIsotropicTensor() = 0;
108 
112  virtual bool isIsotropic() { return false; };
113 
114  virtual Real computeTimeStepLimit();
115 
117  {
119  }
120 
122  void resetQpProperties() final {}
123  void resetProperties() final {}
125 
126 protected:
128  const std::string _base_name;
129 };
StressUpdateBase::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)=0
Given a strain increment that results in a trial stress, perform some procedure (such as an iterative...
TangentCalculationMethod::FULL
TangentCalculationMethod::ELASTIC
StressUpdateBase::_base_name
const std::string _base_name
Name used as a prefix for all material properties related to the stress update model.
Definition: StressUpdateBase.h:128
StressUpdateBase::setQp
void setQp(unsigned int qp)
Sets the value of the global variable _qp for inheriting classes.
Definition: StressUpdateBase.C:43
StressUpdateBase::propagateQpStatefulProperties
virtual void propagateQpStatefulProperties()
If updateState is not called during a timestep, this will be.
Definition: StressUpdateBase.C:49
StressUpdateBase::resetQpProperties
void resetQpProperties() final
Retained as empty methods to avoid a warning from Material.C in framework. These methods are unused i...
Definition: StressUpdateBase.h:122
StressUpdateBase::StressUpdateBase
StressUpdateBase(const InputParameters &parameters)
Definition: StressUpdateBase.C:36
StressUpdateBase::resetProperties
void resetProperties() final
Definition: StressUpdateBase.h:123
StressUpdateBase::getTangentCalculationMethod
virtual TangentCalculationMethod getTangentCalculationMethod()
Definition: StressUpdateBase.h:116
StressUpdateBase::isIsotropic
virtual bool isIsotropic()
Is the implmented model isotropic? The safe default is 'false'.
Definition: StressUpdateBase.h:112
StressUpdateBase::computeTimeStepLimit
virtual Real computeTimeStepLimit()
Definition: StressUpdateBase.C:56
RankFourTensorTempl< Real >
validParams< StressUpdateBase >
InputParameters validParams< StressUpdateBase >()
StressUpdateBase
StressUpdateBase is a material that is not called by MOOSE because of the compute=false flag set in t...
Definition: StressUpdateBase.h:52
TangentCalculationMethod::PARTIAL
TangentCalculationMethod
TangentCalculationMethod
TangentCalculationMethod is an enum that determines the calculation method for the tangent operator.
Definition: StressUpdateBase.h:30
RankTwoTensorTempl< Real >
StressUpdateBase::requiresIsotropicTensor
virtual bool requiresIsotropicTensor()=0
Does the model require the elasticity tensor to be isotropic?
StressUpdateBase::validParams
static InputParameters validParams()
Definition: StressUpdateBase.C:17