www.mooseframework.org
Public Member Functions | Static Public Member Functions | Protected Attributes | List of all members
StrainEnergyDensity Class Reference

StrainEnergyDensity calculates the strain energy density. More...

#include <StrainEnergyDensity.h>

Inheritance diagram for StrainEnergyDensity:
[legend]

Public Member Functions

 StrainEnergyDensity (const InputParameters &parameters)
 
virtual void initQpStatefulProperties () override
 
virtual void initialSetup () override
 
virtual void computeQpProperties () override
 

Static Public Member Functions

static InputParameters validParams ()
 

Protected Attributes

const std::string _base_name
 
bool _incremental
 Whether the material model is a total or incremental model. More...
 
MaterialProperty< Real > & _strain_energy_density
 The strain energy density material property. More...
 
const MaterialProperty< Real > & _strain_energy_density_old
 
const MaterialProperty< RankTwoTensor > & _stress
 Current and old values of stress. More...
 
const MaterialProperty< RankTwoTensor > & _stress_old
 
const MaterialProperty< RankTwoTensor > & _mechanical_strain
 Current value of mechanical strain which includes elastic and inelastic components of the strain. More...
 
const MaterialProperty< RankTwoTensor > * _strain_increment
 Current value of the strain increment for incremental models. More...
 

Detailed Description

StrainEnergyDensity calculates the strain energy density.

Definition at line 27 of file StrainEnergyDensity.h.

Constructor & Destructor Documentation

◆ StrainEnergyDensity()

StrainEnergyDensity::StrainEnergyDensity ( const InputParameters &  parameters)

Definition at line 34 of file StrainEnergyDensity.C.

35  : DerivativeMaterialInterface<Material>(parameters),
36  _base_name(isParamValid("base_name") ? getParam<std::string>("base_name") + "_" : ""),
37  _incremental(getParam<bool>("incremental")),
38  _strain_energy_density(declareProperty<Real>(_base_name + "strain_energy_density")),
39  _strain_energy_density_old(getMaterialPropertyOld<Real>(_base_name + "strain_energy_density")),
40  _stress(getMaterialProperty<RankTwoTensor>(_base_name + "stress")),
41  _stress_old(getMaterialPropertyOld<RankTwoTensor>(_base_name + "stress")),
42  _mechanical_strain(getMaterialProperty<RankTwoTensor>(_base_name + "mechanical_strain")),
44  ? &getMaterialProperty<RankTwoTensor>(_base_name + "strain_increment")
45  : nullptr)
46 {
47 }

Member Function Documentation

◆ computeQpProperties()

void StrainEnergyDensity::computeQpProperties ( )
overridevirtual

Definition at line 64 of file StrainEnergyDensity.C.

65 {
66 
67  if (_strain_increment != nullptr)
70  _stress[_qp].doubleContraction((*_strain_increment)[_qp]) / 2.0 +
71  _stress_old[_qp].doubleContraction((*_strain_increment)[_qp]) / 2.0;
72  else
73  _strain_energy_density[_qp] = _stress[_qp].doubleContraction((_mechanical_strain)[_qp]) / 2.0;
74 }

◆ initialSetup()

void StrainEnergyDensity::initialSetup ( )
overridevirtual

Definition at line 50 of file StrainEnergyDensity.C.

51 {
52  if (!_incremental && hasMaterialProperty<RankTwoTensor>(_base_name + "strain_increment"))
53  mooseError("StrainEnergyDensity: Specified incremental = false, but material model is "
54  "incremental.");
55 }

◆ initQpStatefulProperties()

void StrainEnergyDensity::initQpStatefulProperties ( )
overridevirtual

Definition at line 58 of file StrainEnergyDensity.C.

59 {
60  _strain_energy_density[_qp] = 0.0;
61 }

◆ validParams()

InputParameters StrainEnergyDensity::validParams ( )
static

Definition at line 19 of file StrainEnergyDensity.C.

20 {
21  InputParameters params = Material::validParams();
22  params.addClassDescription("Computes the strain energy density using a combination of the "
23  "elastic and inelastic components of the strain increment, which is a "
24  "valid assumption for monotonic behavior.");
25  params.addParam<std::string>("base_name",
26  "Optional parameter that allows the user to define "
27  "multiple mechanics material systems on the same "
28  "block, i.e. for multiple phases");
29  params.addRequiredParam<bool>(
30  "incremental", "Flag to indicate whether an incremental or total model is being used.");
31  return params;
32 }

Member Data Documentation

◆ _base_name

const std::string StrainEnergyDensity::_base_name
protected

Definition at line 39 of file StrainEnergyDensity.h.

Referenced by initialSetup().

◆ _incremental

bool StrainEnergyDensity::_incremental
protected

Whether the material model is a total or incremental model.

Definition at line 42 of file StrainEnergyDensity.h.

Referenced by initialSetup().

◆ _mechanical_strain

const MaterialProperty<RankTwoTensor>& StrainEnergyDensity::_mechanical_strain
protected

Current value of mechanical strain which includes elastic and inelastic components of the strain.

Definition at line 54 of file StrainEnergyDensity.h.

Referenced by computeQpProperties().

◆ _strain_energy_density

MaterialProperty<Real>& StrainEnergyDensity::_strain_energy_density
protected

The strain energy density material property.

Definition at line 45 of file StrainEnergyDensity.h.

Referenced by computeQpProperties(), and initQpStatefulProperties().

◆ _strain_energy_density_old

const MaterialProperty<Real>& StrainEnergyDensity::_strain_energy_density_old
protected

Definition at line 46 of file StrainEnergyDensity.h.

Referenced by computeQpProperties().

◆ _strain_increment

const MaterialProperty<RankTwoTensor>* StrainEnergyDensity::_strain_increment
protected

Current value of the strain increment for incremental models.

Definition at line 57 of file StrainEnergyDensity.h.

Referenced by computeQpProperties().

◆ _stress

const MaterialProperty<RankTwoTensor>& StrainEnergyDensity::_stress
protected

Current and old values of stress.

Definition at line 49 of file StrainEnergyDensity.h.

Referenced by computeQpProperties().

◆ _stress_old

const MaterialProperty<RankTwoTensor>& StrainEnergyDensity::_stress_old
protected

Definition at line 50 of file StrainEnergyDensity.h.

Referenced by computeQpProperties().


The documentation for this class was generated from the following files:
StrainEnergyDensity::_stress_old
const MaterialProperty< RankTwoTensor > & _stress_old
Definition: StrainEnergyDensity.h:50
StrainEnergyDensity::_stress
const MaterialProperty< RankTwoTensor > & _stress
Current and old values of stress.
Definition: StrainEnergyDensity.h:49
StrainEnergyDensity::_base_name
const std::string _base_name
Definition: StrainEnergyDensity.h:39
StrainEnergyDensity::_strain_energy_density_old
const MaterialProperty< Real > & _strain_energy_density_old
Definition: StrainEnergyDensity.h:46
StrainEnergyDensity::_strain_increment
const MaterialProperty< RankTwoTensor > * _strain_increment
Current value of the strain increment for incremental models.
Definition: StrainEnergyDensity.h:57
StrainEnergyDensity::_incremental
bool _incremental
Whether the material model is a total or incremental model.
Definition: StrainEnergyDensity.h:42
StrainEnergyDensity::_mechanical_strain
const MaterialProperty< RankTwoTensor > & _mechanical_strain
Current value of mechanical strain which includes elastic and inelastic components of the strain.
Definition: StrainEnergyDensity.h:54
validParams
InputParameters validParams()
StrainEnergyDensity::_strain_energy_density
MaterialProperty< Real > & _strain_energy_density
The strain energy density material property.
Definition: StrainEnergyDensity.h:45