https://mooseframework.inl.gov
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
StrainEnergyDensityTempl< is_ad > Class Template Reference

StrainEnergyDensity calculates the strain energy density. More...

#include <StrainEnergyDensity.h>

Inheritance diagram for StrainEnergyDensityTempl< is_ad >:
[legend]

Public Types

typedef DerivativeMaterialPropertyNameInterface::SymbolName SymbolName
 

Public Member Functions

 StrainEnergyDensityTempl (const InputParameters &parameters)
 
virtual void initialSetup () override
 
virtual void initQpStatefulProperties () override
 
virtual void computeQpProperties () override
 
const GenericMaterialProperty< U, is_ad > & getDefaultMaterialProperty (const std::string &name)
 
const GenericMaterialProperty< U, is_ad > & getDefaultMaterialPropertyByName (const std::string &name)
 
void validateDerivativeMaterialPropertyBase (const std::string &base)
 
const MaterialPropertyName derivativePropertyName (const MaterialPropertyName &base, const std::vector< SymbolName > &c) const
 
const MaterialPropertyName derivativePropertyNameFirst (const MaterialPropertyName &base, const SymbolName &c1) const
 
const MaterialPropertyName derivativePropertyNameSecond (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2) const
 
const MaterialPropertyName derivativePropertyNameThird (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2, const SymbolName &c3) const
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const std::vector< VariableName > &c)
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const std::vector< SymbolName > &c)
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const std::vector< VariableName > &c)
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const std::vector< SymbolName > &c)
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const std::vector< VariableName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const std::vector< SymbolName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, unsigned int v2, unsigned int v3=libMesh::invalid_uint)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, unsigned int v1, unsigned int v2=libMesh::invalid_uint, unsigned int v3=libMesh::invalid_uint)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const std::vector< VariableName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const std::vector< SymbolName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, unsigned int v2, unsigned int v3=libMesh::invalid_uint)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, unsigned int v1, unsigned int v2=libMesh::invalid_uint, unsigned int v3=libMesh::invalid_uint)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< VariableName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< SymbolName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< VariableName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< SymbolName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
void validateCoupling (const MaterialPropertyName &base, const std::vector< VariableName > &c, bool validate_aux=true)
 
void validateCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="")
 
void validateCoupling (const MaterialPropertyName &base, const std::vector< VariableName > &c, bool validate_aux=true)
 
void validateCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="")
 
void validateNonlinearCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="")
 
void validateNonlinearCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="")
 
const MaterialPropertyName propertyName (const MaterialPropertyName &base, const std::vector< SymbolName > &c) const
 
const MaterialPropertyName propertyName (const MaterialPropertyName &base, const std::vector< SymbolName > &c) const
 
const MaterialPropertyName propertyNameFirst (const MaterialPropertyName &base, const SymbolName &c1) const
 
const MaterialPropertyName propertyNameFirst (const MaterialPropertyName &base, const SymbolName &c1) const
 
const MaterialPropertyName propertyNameSecond (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2) const
 
const MaterialPropertyName propertyNameSecond (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2) const
 
const MaterialPropertyName propertyNameThird (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2, const SymbolName &c3) const
 
const MaterialPropertyName propertyNameThird (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2, const SymbolName &c3) const
 

Static Public Member Functions

static InputParameters validParams ()
 

Protected Attributes

const std::string _base_name
 Base name of the material system.
 
const std::string _stress_name
 stress name, for different stresses on the same material system
 
MaterialProperty< Real > & _strain_energy_density
 The strain energy density material property.
 
const MaterialProperty< Real > & _strain_energy_density_old
 
const GenericMaterialProperty< RankTwoTensor, is_ad > & _mechanical_strain
 Current value of mechanical strain which includes elastic and inelastic components of the strain.
 
const GenericOptionalMaterialProperty< RankTwoTensor, is_ad > & _strain_increment
 Current value of the strain increment for incremental models.
 
const GenericMaterialProperty< RankTwoTensor, is_ad > & _stress
 Current and old values of stress.
 
const MaterialProperty< RankTwoTensor > & _stress_old
 

Private Member Functions

bool haveMaterialProperty (const std::string &prop_name)
 
std::vector< VariableName > buildVariableVector (const VariableName &c1, const VariableName &c2, const VariableName &c3)
 
void validateCouplingHelper (const MaterialPropertyName &base, const std::vector< VariableName > &c, const System &system, std::vector< VariableName > &missing)
 
bool isNotObjectVariable (const VariableName &name)
 

Private Attributes

FEProblemBase_dmi_fe_problem
 

Detailed Description

template<bool is_ad>
class StrainEnergyDensityTempl< is_ad >

StrainEnergyDensity calculates the strain energy density.

Definition at line 21 of file StrainEnergyDensity.h.

Constructor & Destructor Documentation

◆ StrainEnergyDensityTempl()

template<bool is_ad>
StrainEnergyDensityTempl< is_ad >::StrainEnergyDensityTempl ( const InputParameters parameters)

Definition at line 43 of file StrainEnergyDensity.C.

45 _base_name(isParamValid("base_name") ? getParam<std::string>("base_name") + "_" : ""),
46 _stress_name(getParam<std::string>("stress_name")),
47 _strain_energy_density(declareProperty<Real>(_base_name + "strain_energy_density")),
48 _strain_energy_density_old(getMaterialPropertyOld<Real>(_base_name + "strain_energy_density")),
49 _stress(getGenericMaterialProperty<RankTwoTensor, is_ad>(_base_name + _stress_name)),
50 _stress_old(getMaterialPropertyOld<RankTwoTensor>(_base_name + _stress_name)),
52 getGenericMaterialProperty<RankTwoTensor, is_ad>(_base_name + "mechanical_strain")),
54 getGenericOptionalMaterialProperty<RankTwoTensor, is_ad>(_base_name + "strain_increment"))
55{
56}
const MaterialProperty< RankTwoTensor > & _stress_old
const GenericOptionalMaterialProperty< RankTwoTensor, is_ad > & _strain_increment
Current value of the strain increment for incremental models.
const std::string _base_name
Base name of the material system.
const std::string _stress_name
stress name, for different stresses on the same material system
const MaterialProperty< Real > & _strain_energy_density_old
const GenericMaterialProperty< RankTwoTensor, is_ad > & _stress
Current and old values of stress.
MaterialProperty< Real > & _strain_energy_density
The strain energy density material property.
const GenericMaterialProperty< RankTwoTensor, is_ad > & _mechanical_strain
Current value of mechanical strain which includes elastic and inelastic components of the strain.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real

Member Function Documentation

◆ computeQpProperties()

template<bool is_ad>
void StrainEnergyDensityTempl< is_ad >::computeQpProperties ( )
overridevirtual

Reimplemented in ComplianceSensitivity.

Definition at line 83 of file StrainEnergyDensity.C.

84{
85
90 .doubleContraction(MetaPhysicL::raw_value(_strain_increment[_qp])) /
91 2.0 +
92 _stress_old[_qp].doubleContraction(MetaPhysicL::raw_value(_strain_increment[_qp])) / 2.0;
93 else
96 .doubleContraction((MetaPhysicL::raw_value(_mechanical_strain[_qp]))) /
97 2.0;
98}
auto raw_value(const Eigen::Map< T > &in)

Referenced by ComplianceSensitivity::computeQpProperties().

◆ initialSetup()

template<bool is_ad>
void StrainEnergyDensityTempl< is_ad >::initialSetup ( )
overridevirtual

Definition at line 60 of file StrainEnergyDensity.C.

61{
62 // optional error checking
63 if (isParamValid("incremental"))
64 {
65 auto incremental = getParam<bool>("incremental");
66 if (incremental && !_strain_increment)
67 mooseError("StrainEnergyDensity: Specified incremental = true, but material model is "
68 "not incremental.");
69 if (!incremental && _strain_increment)
70 mooseError("StrainEnergyDensity: Specified incremental = false, but material model is "
71 "incremental.");
72 }
73}
void mooseError(Args &&... args)

◆ initQpStatefulProperties()

template<bool is_ad>
void StrainEnergyDensityTempl< is_ad >::initQpStatefulProperties ( )
overridevirtual

Definition at line 76 of file StrainEnergyDensity.C.

77{
78 _strain_energy_density[_qp] = 0.0;
79}

◆ validParams()

template<bool is_ad>
InputParameters StrainEnergyDensityTempl< is_ad >::validParams ( )
static

Definition at line 19 of file StrainEnergyDensity.C.

20{
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.addParam<std::string>("stress_name",
30 "stress",
31 "Optional parameter that allows the user to use "
32 "different stresses on the same material system. "
33 "For example, when we have a degraded_stress and an intact_stress, "
34 "we want to compute the degraded strain energy density and "
35 "the intact strain energy density.");
36 params.addParam<bool>(
37 "incremental",
38 "Optional flag for error checking if an incremental or total model should be used.");
39 return params;
40}
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
void addClassDescription(const std::string &doc_string)
static InputParameters validParams()

Referenced by ComplianceSensitivity::validParams().

Member Data Documentation

◆ _base_name

template<bool is_ad>
const std::string StrainEnergyDensityTempl< is_ad >::_base_name
protected

Base name of the material system.

Definition at line 35 of file StrainEnergyDensity.h.

◆ _mechanical_strain

template<bool is_ad>
const GenericMaterialProperty<RankTwoTensor, is_ad>& StrainEnergyDensityTempl< is_ad >::_mechanical_strain
protected

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

Definition at line 51 of file StrainEnergyDensity.h.

◆ _strain_energy_density

template<bool is_ad>
MaterialProperty<Real>& StrainEnergyDensityTempl< is_ad >::_strain_energy_density
protected

The strain energy density material property.

Definition at line 41 of file StrainEnergyDensity.h.

Referenced by ComplianceSensitivity::computeQpProperties().

◆ _strain_energy_density_old

template<bool is_ad>
const MaterialProperty<Real>& StrainEnergyDensityTempl< is_ad >::_strain_energy_density_old
protected

Definition at line 42 of file StrainEnergyDensity.h.

◆ _strain_increment

template<bool is_ad>
const GenericOptionalMaterialProperty<RankTwoTensor, is_ad>& StrainEnergyDensityTempl< is_ad >::_strain_increment
protected

Current value of the strain increment for incremental models.

Definition at line 54 of file StrainEnergyDensity.h.

◆ _stress

template<bool is_ad>
const GenericMaterialProperty<RankTwoTensor, is_ad>& StrainEnergyDensityTempl< is_ad >::_stress
protected

Current and old values of stress.

Definition at line 45 of file StrainEnergyDensity.h.

◆ _stress_name

template<bool is_ad>
const std::string StrainEnergyDensityTempl< is_ad >::_stress_name
protected

stress name, for different stresses on the same material system

Definition at line 38 of file StrainEnergyDensity.h.

◆ _stress_old

template<bool is_ad>
const MaterialProperty<RankTwoTensor>& StrainEnergyDensityTempl< is_ad >::_stress_old
protected

Definition at line 46 of file StrainEnergyDensity.h.


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