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

StrainEnergyRateDensity calculates the strain energy rate density. More...

#include <StrainEnergyRateDensity.h>

Inheritance diagram for StrainEnergyRateDensityTempl< is_ad >:
[legend]

Public Types

typedef DerivativeMaterialPropertyNameInterface::SymbolName SymbolName
 

Public Member Functions

 StrainEnergyRateDensityTempl (const InputParameters &parameters)
 
virtual void initQpStatefulProperties () override
 
virtual void initialSetup () 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 ()
 

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

const std::string _base_name
 Base name of the material system.
 
MaterialProperty< Real > & _strain_energy_rate_density
 The strain energy density material property.
 
const GenericMaterialProperty< RankTwoTensor, is_ad > & _stress
 Current and old values of stress.
 
const GenericMaterialProperty< RankTwoTensor, is_ad > & _strain_rate
 Current value of the strain increment for incremental models.
 
const unsigned _num_models
 number of plastic models
 
std::vector< GenericStressUpdateBase< is_ad > * > _inelastic_models
 The user supplied list of inelastic models to compute the strain energy release rate.
 
FEProblemBase_dmi_fe_problem
 

Detailed Description

template<bool is_ad>
class StrainEnergyRateDensityTempl< is_ad >

StrainEnergyRateDensity calculates the strain energy rate density.

Definition at line 26 of file StrainEnergyRateDensity.h.

Constructor & Destructor Documentation

◆ StrainEnergyRateDensityTempl()

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

Definition at line 37 of file StrainEnergyRateDensity.C.

40 _base_name(isParamValid("base_name") ? getParam<std::string>("base_name") + "_" : ""),
41 _strain_energy_rate_density(declareProperty<Real>(_base_name + "strain_energy_rate_density")),
42 _stress(getGenericMaterialProperty<RankTwoTensor, is_ad>(_base_name + "stress")),
43 _strain_rate(getGenericMaterialProperty<RankTwoTensor, is_ad>(_base_name + "strain_rate")),
44 _num_models(getParam<std::vector<MaterialName>>("inelastic_models").size())
45{
46}
const std::string _base_name
Base name of the material system.
const GenericMaterialProperty< RankTwoTensor, is_ad > & _strain_rate
Current value of the strain increment for incremental models.
const GenericMaterialProperty< RankTwoTensor, is_ad > & _stress
Current and old values of stress.
MaterialProperty< Real > & _strain_energy_rate_density
The strain energy density material property.
const unsigned _num_models
number of plastic models
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real

Member Function Documentation

◆ computeQpProperties()

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

Definition at line 74 of file StrainEnergyRateDensity.C.

75{
76 for (unsigned int i = 0; i < _inelastic_models.size(); ++i)
77 {
78 _inelastic_models[i]->setQp(_qp);
80 _inelastic_models[i]->computeStrainEnergyRateDensity(_stress, _strain_rate));
81 }
82}
std::vector< GenericStressUpdateBase< is_ad > * > _inelastic_models
The user supplied list of inelastic models to compute the strain energy release rate.
auto raw_value(const Eigen::Map< T > &in)

◆ initialSetup()

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

Definition at line 50 of file StrainEnergyRateDensity.C.

51{
52 std::vector<MaterialName> models = getParam<std::vector<MaterialName>>("inelastic_models");
53
54 // Store inelastic models as generic StressUpdateBase.
55 for (unsigned int i = 0; i < _num_models; ++i)
56 {
57 GenericStressUpdateBase<is_ad> * inelastic_model_stress_update =
58 dynamic_cast<GenericStressUpdateBase<is_ad> *>(&getMaterialByName(models[i]));
59
60 if (inelastic_model_stress_update)
61 _inelastic_models.push_back(inelastic_model_stress_update);
62 }
63}
typename std::conditional< is_ad, ADStressUpdateBase, StressUpdateBase >::type GenericStressUpdateBase

◆ initQpStatefulProperties()

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

Definition at line 67 of file StrainEnergyRateDensity.C.

68{
70}

◆ validParams()

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

Definition at line 19 of file StrainEnergyRateDensity.C.

20{
22 params.addClassDescription("Computes the strain energy density rate 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.addRequiredRangeCheckedParam<std::vector<MaterialName>>(
30 "inelastic_models",
31 "inelastic_models_size=1",
32 "The material objects to use to calculate the strain energy rate density.");
33 return params;
34}
void addRequiredRangeCheckedParam(const std::string &name, const std::string &parsed_function, const std::string &doc_string)
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()

Member Data Documentation

◆ _base_name

template<bool is_ad>
const std::string StrainEnergyRateDensityTempl< is_ad >::_base_name
private

Base name of the material system.

Definition at line 39 of file StrainEnergyRateDensity.h.

◆ _inelastic_models

template<bool is_ad>
std::vector<GenericStressUpdateBase<is_ad> *> StrainEnergyRateDensityTempl< is_ad >::_inelastic_models
private

The user supplied list of inelastic models to compute the strain energy release rate.

Definition at line 54 of file StrainEnergyRateDensity.h.

◆ _num_models

template<bool is_ad>
const unsigned StrainEnergyRateDensityTempl< is_ad >::_num_models
private

number of plastic models

Definition at line 51 of file StrainEnergyRateDensity.h.

◆ _strain_energy_rate_density

template<bool is_ad>
MaterialProperty<Real>& StrainEnergyRateDensityTempl< is_ad >::_strain_energy_rate_density
private

The strain energy density material property.

Definition at line 42 of file StrainEnergyRateDensity.h.

◆ _strain_rate

template<bool is_ad>
const GenericMaterialProperty<RankTwoTensor, is_ad>& StrainEnergyRateDensityTempl< is_ad >::_strain_rate
private

Current value of the strain increment for incremental models.

Definition at line 48 of file StrainEnergyRateDensity.h.

◆ _stress

template<bool is_ad>
const GenericMaterialProperty<RankTwoTensor, is_ad>& StrainEnergyRateDensityTempl< is_ad >::_stress
private

Current and old values of stress.

Definition at line 45 of file StrainEnergyRateDensity.h.


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