www.mooseframework.org
Public Member Functions | Protected Attributes | List of all members
StressUpdateBase Class Referenceabstract

StressUpdateBase is a material that is not called by MOOSE because of the compute=false flag set in the parameter list. More...

#include <StressUpdateBase.h>

Inheritance diagram for StressUpdateBase:
[legend]

Public Member Functions

 StressUpdateBase (const InputParameters &parameters)
 
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 return-mapping process) to produce an admissible stress, an elastic strain increment and an inelastic strain increment. More...
 
void setQp (unsigned int qp)
 Sets the value of the global variable _qp for inheriting classes. More...
 
virtual void propagateQpStatefulProperties ()
 If updateState is not called during a timestep, this will be. More...
 
virtual bool requiresIsotropicTensor ()=0
 Does the model require the elasticity tensor to be isotropic? More...
 
virtual Real computeTimeStepLimit ()
 
virtual TangentCalculationMethod getTangentCalculationMethod ()
 
void resetQpProperties () final
 Retained as empty methods to avoid a warning from Material.C in framework. These methods are unused in all inheriting classes and should not be overwritten. More...
 
void resetProperties () final
 

Protected Attributes

const std::string _base_name
 Name used as a prefix for all material properties related to the stress update model. More...
 

Detailed Description

StressUpdateBase is a material that is not called by MOOSE because of the compute=false flag set in the parameter list.

This class is a base class for materials that perform some internal computational procedure (such as an iterative return-mapping procedure) to compute an admissible state (which is usually an admissible stress that lies on or within the yield surface, as well as a set of internal parameters such as plastic strains). The computational procedure must return the admissible stress and a decomposition of the applied strain into elastic and inelastic components. All materials inheriting from this class must be called by a separate material, such as ComputeMultipleInelasticStress

Definition at line 53 of file StressUpdateBase.h.

Constructor & Destructor Documentation

◆ StressUpdateBase()

StressUpdateBase::StressUpdateBase ( const InputParameters &  parameters)

Definition at line 35 of file StressUpdateBase.C.

36  : Material(parameters),
37  _base_name(isParamValid("base_name") ? getParam<std::string>("base_name") + "_" : "")
38 {
39 }
const std::string _base_name
Name used as a prefix for all material properties related to the stress update model.

Member Function Documentation

◆ computeTimeStepLimit()

Real StressUpdateBase::computeTimeStepLimit ( )
virtual

Reimplemented in RadialReturnStressUpdate.

Definition at line 55 of file StressUpdateBase.C.

56 {
57  return std::numeric_limits<Real>::max();
58 }

◆ getTangentCalculationMethod()

virtual TangentCalculationMethod StressUpdateBase::getTangentCalculationMethod ( )
inlinevirtual

◆ propagateQpStatefulProperties()

void StressUpdateBase::propagateQpStatefulProperties ( )
virtual

If updateState is not called during a timestep, this will be.

This method allows derived classes to set internal parameters from their Old values, for instance

Reimplemented in MultiParameterPlasticityStressUpdate, LinearViscoelasticStressUpdate, IsotropicPlasticityStressUpdate, and RadialReturnCreepStressUpdateBase.

Definition at line 48 of file StressUpdateBase.C.

49 {
50  mooseError(
51  "propagateQpStatefulProperties called: it needs to be implemented by your inelastic model");
52 }

◆ requiresIsotropicTensor()

virtual bool StressUpdateBase::requiresIsotropicTensor ( )
pure virtual

◆ resetProperties()

void StressUpdateBase::resetProperties ( )
inlinefinal

Definition at line 117 of file StressUpdateBase.h.

117 {}

◆ resetQpProperties()

void StressUpdateBase::resetQpProperties ( )
inlinefinal

Retained as empty methods to avoid a warning from Material.C in framework. These methods are unused in all inheriting classes and should not be overwritten.

Definition at line 116 of file StressUpdateBase.h.

116 {}

◆ setQp()

void StressUpdateBase::setQp ( unsigned int  qp)

Sets the value of the global variable _qp for inheriting classes.

Definition at line 42 of file StressUpdateBase.C.

43 {
44  _qp = qp;
45 }

◆ updateState()

virtual void StressUpdateBase::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 
)
pure virtual

Given a strain increment that results in a trial stress, perform some procedure (such as an iterative return-mapping process) to produce an admissible stress, an elastic strain increment and an inelastic strain increment.

If _fe_problem.currentlyComputingJacobian() = true, then updateState also computes d(stress)/d(strain) (or some approximation to it).

This method is called by ComputeMultipleInelasticStress. This method is pure virutal: all inheriting classes must overwrite this method.

Parameters
strain_incrementUpon input: the strain increment. Upon output: the elastic strain increment
inelastic_strain_incrementThe inelastic_strain resulting from the interative procedure
rotation_incrementThe finite-strain rotation increment
stress_newUpon input: the trial stress that results from applying strain_increment as an elastic strain. Upon output: the admissible stress
stress_oldThe old value of stress
elasticity_tensorThe elasticity tensor
compute_full_tangent_operatorThe calling routine would like the full consistent tangent operator to be placed in tangent_operator, if possible. This is irrelevant if _fe_problem.currentlyComputingJacobian() = false
tangent_operatord(stress)/d(strain), or some approximation to it If compute_full_tangent_operator=false, then tangent_operator=elasticity_tensor is an appropriate choice. tangent_operator is only computed if _fe_problem.currentlyComputingJacobian() = true

Implemented in MultiParameterPlasticityStressUpdate, RadialReturnStressUpdate, and LinearViscoelasticStressUpdate.

Member Data Documentation

◆ _base_name

const std::string StressUpdateBase::_base_name
protected

Name used as a prefix for all material properties related to the stress update model.

Definition at line 122 of file StressUpdateBase.h.


The documentation for this class was generated from the following files: