https://mooseframework.inl.gov
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Protected Types | Protected Member Functions | Protected Attributes | Static Protected Attributes | List of all members
ComputeSmearedCrackingStress Class Reference

ComputeSmearedCrackingStress computes the stress for a finite strain material with smeared cracking. More...

#include <ComputeSmearedCrackingStress.h>

Inheritance diagram for ComputeSmearedCrackingStress:
[legend]

Public Types

enum  ConstantTypeEnum { ConstantTypeEnum::NONE, ConstantTypeEnum::ELEMENT, ConstantTypeEnum::SUBDOMAIN }
 
enum  TEST_TYPE
 
typedef DerivativeMaterialPropertyNameInterface::SymbolName SymbolName
 
typedef DataFileName DataFileParameterType
 

Public Member Functions

 ComputeSmearedCrackingStress (const InputParameters &parameters)
 
virtual void initialSetup () override
 
virtual void initQpStatefulProperties () override
 
virtual void computeQpStress () override
 Compute the stress and store it in the _stress material property for the current quadrature point. More...
 
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)
 
virtual const dof_id_typegetElementID (const std::string &id_parameter_name, unsigned int comp=0) const override
 
dof_id_type getElementID (const Elem *elem, unsigned int elem_id_index) const
 
virtual const dof_id_typegetElementIDNeighbor (const std::string &id_parameter_name, unsigned int comp=0) const override
 
virtual const dof_id_typegetElementIDByName (const std::string &id_parameter_name) const override
 
virtual const dof_id_typegetElementIDNeighborByName (const std::string &id_parameter_name) const override
 
virtual void computeProperties () override
 
const GenericMaterialProperty< T, is_ad > & getGenericMaterialProperty (const std::string &name, MaterialData &material_data, const unsigned int state=0)
 
const GenericMaterialProperty< T, is_ad > & getGenericMaterialProperty (const std::string &name, const unsigned int state=0)
 
const GenericMaterialProperty< T, is_ad > & getGenericMaterialProperty (const std::string &name, const unsigned int state=0)
 
const MaterialProperty< T > & getMaterialProperty (const std::string &name, MaterialData &material_data, const unsigned int state=0)
 
const MaterialProperty< T > & getMaterialProperty (const std::string &name, const unsigned int state=0)
 
const MaterialProperty< T > & getMaterialProperty (const std::string &name, const unsigned int state=0)
 
const ADMaterialProperty< T > & getADMaterialProperty (const std::string &name, MaterialData &material_data)
 
const ADMaterialProperty< T > & getADMaterialProperty (const std::string &name)
 
const ADMaterialProperty< T > & getADMaterialProperty (const std::string &name)
 
const MaterialProperty< T > & getMaterialPropertyOld (const std::string &name, MaterialData &material_data)
 
const MaterialProperty< T > & getMaterialPropertyOld (const std::string &name)
 
const MaterialProperty< T > & getMaterialPropertyOld (const std::string &name)
 
const MaterialProperty< T > & getMaterialPropertyOlder (const std::string &name, MaterialData &material_data)
 
const MaterialProperty< T > & getMaterialPropertyOlder (const std::string &name)
 
const MaterialProperty< T > & getMaterialPropertyOlder (const std::string &name)
 
const GenericMaterialProperty< T, is_ad > & getGenericMaterialPropertyByName (const MaterialPropertyName &name, MaterialData &material_data, const unsigned int state)
 
const GenericMaterialProperty< T, is_ad > & getGenericMaterialPropertyByName (const std::string &name, const unsigned int state=0)
 
const GenericMaterialProperty< T, is_ad > & getGenericMaterialPropertyByName (const MaterialPropertyName &name, const unsigned int state=0)
 
const GenericMaterialProperty< T, is_ad > & getGenericMaterialPropertyByName (const std::string &name, const unsigned int state=0)
 
const GenericMaterialProperty< T, is_ad > & getGenericMaterialPropertyByName (const MaterialPropertyName &name, const unsigned int state=0)
 
const MaterialProperty< T > & getMaterialPropertyByName (const MaterialPropertyName &name, MaterialData &material_data, const unsigned int state=0)
 
const MaterialProperty< T > & getMaterialPropertyByName (const std::string &prop_name, const unsigned int state=0)
 
const MaterialProperty< T > & getMaterialPropertyByName (const MaterialPropertyName &name, const unsigned int state=0)
 
const MaterialProperty< T > & getMaterialPropertyByName (const std::string &prop_name, const unsigned int state=0)
 
const MaterialProperty< T > & getMaterialPropertyByName (const MaterialPropertyName &name, const unsigned int state=0)
 
const ADMaterialProperty< T > & getADMaterialPropertyByName (const MaterialPropertyName &name, MaterialData &material_data)
 
const ADMaterialProperty< T > & getADMaterialPropertyByName (const std::string &prop_name)
 
const ADMaterialProperty< T > & getADMaterialPropertyByName (const MaterialPropertyName &name)
 
const ADMaterialProperty< T > & getADMaterialPropertyByName (const std::string &prop_name)
 
const ADMaterialProperty< T > & getADMaterialPropertyByName (const MaterialPropertyName &name)
 
const MaterialProperty< T > & getMaterialPropertyOldByName (const MaterialPropertyName &name, MaterialData &material_data)
 
const MaterialProperty< T > & getMaterialPropertyOldByName (const std::string &prop_name)
 
const MaterialProperty< T > & getMaterialPropertyOldByName (const MaterialPropertyName &name)
 
const MaterialProperty< T > & getMaterialPropertyOldByName (const std::string &prop_name)
 
const MaterialProperty< T > & getMaterialPropertyOldByName (const MaterialPropertyName &name)
 
const MaterialProperty< T > & getMaterialPropertyOlderByName (const MaterialPropertyName &name, MaterialData &material_data)
 
const MaterialProperty< T > & getMaterialPropertyOlderByName (const std::string &prop_name)
 
const MaterialProperty< T > & getMaterialPropertyOlderByName (const MaterialPropertyName &name)
 
const MaterialProperty< T > & getMaterialPropertyOlderByName (const std::string &prop_name)
 
const MaterialProperty< T > & getMaterialPropertyOlderByName (const MaterialPropertyName &name)
 
MaterialBasegetMaterial (const std::string &name)
 
MaterialBasegetMaterialByName (const std::string &name, bool no_warn=false, bool no_dep=false)
 
MaterialBasegetMaterialByName (const std::string &name, bool no_warn=false)
 
MaterialBasegetMaterialByName (const std::string &name, bool no_warn=false)
 
virtual bool isBoundaryMaterial () const override
 
virtual const std::unordered_set< unsigned int > & getMatPropDependencies () const override
 
virtual void subdomainSetup () override
 
bool ghostable () const override final
 
virtual void resolveOptionalProperties () override
 
const GenericMaterialProperty< T, is_ad > & getGenericZeroMaterialProperty (const std::string &name)
 
const GenericMaterialProperty< T, is_ad > & getGenericZeroMaterialProperty ()
 
const GenericMaterialProperty< T, is_ad > & getGenericZeroMaterialProperty (const std::string &name)
 
const GenericMaterialProperty< T, is_ad > & getGenericZeroMaterialProperty ()
 
const GenericMaterialProperty< T, is_ad > & getGenericZeroMaterialProperty (const std::string &name)
 
const GenericMaterialProperty< T, is_ad > & getGenericZeroMaterialProperty ()
 
const GenericMaterialProperty< T, is_ad > & getGenericZeroMaterialPropertyByName (const std::string &prop_name)
 
const GenericMaterialProperty< T, is_ad > & getGenericZeroMaterialPropertyByName (const std::string &prop_name)
 
const GenericMaterialProperty< T, is_ad > & getGenericZeroMaterialPropertyByName (const std::string &prop_name)
 
const MaterialProperty< T > & getZeroMaterialProperty (Ts... args)
 
const MaterialProperty< T > & getZeroMaterialProperty (Ts... args)
 
const MaterialProperty< T > & getZeroMaterialProperty (Ts... args)
 
virtual void initStatefulProperties (unsigned int n_points)
 
virtual bool isInterfaceMaterial ()
 
virtual void resetProperties ()
 
virtual void computePropertiesAtQp (unsigned int qp)
 
const MaterialProperty< T > & getZeroMaterialPropertyByName (Ts... args)
 
virtual const std::set< std::string > & getRequestedItems () override
 
virtual const std::set< std::string > & getSuppliedItems () override
 
const std::set< unsigned int > & getSuppliedPropIDs ()
 
void checkStatefulSanity () const
 
std::set< OutputName > getOutputs ()
 
bool hasStatefulProperties () const
 
void setFaceInfo (const FaceInfo &fi)
 
std::unordered_map< SubdomainID, std::vector< MaterialBase *> > buildRequiredMaterials (bool allow_stateful=true)
 
void setActiveProperties (const std::unordered_set< unsigned int > &needed_props)
 
bool forceStatefulInit () const
 
virtual bool enabled () const
 
std::shared_ptr< MooseObjectgetSharedPtr ()
 
std::shared_ptr< const MooseObjectgetSharedPtr () const
 
MooseAppgetMooseApp () const
 
const std::string & type () const
 
virtual const std::string & name () const
 
std::string typeAndName () const
 
std::string errorPrefix (const std::string &error_type) const
 
void callMooseError (std::string msg, const bool with_prefix) const
 
MooseObjectParameterName uniqueParameterName (const std::string &parameter_name) const
 
const InputParametersparameters () const
 
MooseObjectName uniqueName () const
 
const T & getParam (const std::string &name) const
 
std::vector< std::pair< T1, T2 > > getParam (const std::string &param1, const std::string &param2) const
 
const T * queryParam (const std::string &name) const
 
const T & getRenamedParam (const std::string &old_name, const std::string &new_name) const
 
getCheckedPointerParam (const std::string &name, const std::string &error_string="") const
 
bool isParamValid (const std::string &name) const
 
bool isParamSetByUser (const std::string &nm) const
 
void paramError (const std::string &param, Args... args) const
 
void paramWarning (const std::string &param, Args... args) const
 
void paramInfo (const std::string &param, Args... args) const
 
void connectControllableParams (const std::string &parameter, const std::string &object_type, const std::string &object_name, const std::string &object_parameter) const
 
void mooseError (Args &&... args) const
 
void mooseErrorNonPrefixed (Args &&... args) const
 
void mooseDocumentedError (const std::string &repo_name, const unsigned int issue_num, Args &&... args) const
 
void mooseWarning (Args &&... args) const
 
void mooseWarningNonPrefixed (Args &&... args) const
 
void mooseDeprecated (Args &&... args) const
 
void mooseInfo (Args &&... args) const
 
std::string getDataFileName (const std::string &param) const
 
std::string getDataFileNameByName (const std::string &relative_path) const
 
std::string getDataFilePath (const std::string &relative_path) const
 
const std::vector< SubdomainName > & blocks () const
 
unsigned int numBlocks () const
 
virtual const std::set< SubdomainID > & blockIDs () const
 
unsigned int blocksMaxDimension () const
 
bool hasBlocks (const SubdomainName &name) const
 
bool hasBlocks (const std::vector< SubdomainName > &names) const
 
bool hasBlocks (const std::set< SubdomainName > &names) const
 
bool hasBlocks (SubdomainID id) const
 
bool hasBlocks (const std::vector< SubdomainID > &ids) const
 
bool hasBlocks (const std::set< SubdomainID > &ids) const
 
bool isBlockSubset (const std::set< SubdomainID > &ids) const
 
bool isBlockSubset (const std::vector< SubdomainID > &ids) const
 
bool hasBlockMaterialProperty (const std::string &prop_name)
 
const std::set< SubdomainID > & meshBlockIDs () const
 
virtual bool blockRestricted () const
 
virtual void checkVariable (const MooseVariableFieldBase &variable) const
 
virtual const std::set< BoundaryID > & boundaryIDs () const
 
const std::vector< BoundaryName > & boundaryNames () const
 
unsigned int numBoundaryIDs () const
 
bool hasBoundary (const BoundaryName &name) const
 
bool hasBoundary (const std::vector< BoundaryName > &names) const
 
bool hasBoundary (const BoundaryID &id) const
 
bool hasBoundary (const std::vector< BoundaryID > &ids, TEST_TYPE type=ALL) const
 
bool hasBoundary (const std::set< BoundaryID > &ids, TEST_TYPE type=ALL) const
 
bool isBoundarySubset (const std::set< BoundaryID > &ids) const
 
bool isBoundarySubset (const std::vector< BoundaryID > &ids) const
 
bool hasBoundaryMaterialProperty (const std::string &prop_name) const
 
virtual bool boundaryRestricted () const
 
const std::set< BoundaryID > & meshBoundaryIDs () const
 
virtual bool checkVariableBoundaryIntegrity () const
 
virtual void timestepSetup ()
 
virtual void jacobianSetup ()
 
virtual void residualSetup ()
 
virtual void customSetup (const ExecFlagType &)
 
const ExecFlagEnumgetExecuteOnEnum () const
 
const std::set< MooseVariableFieldBase *> & getMooseVariableDependencies () const
 
std::set< MooseVariableFieldBase *> checkAllVariables (const DofObjectType &dof_object, const std::set< MooseVariableFieldBase * > &vars_to_omit={})
 
std::set< MooseVariableFieldBase *> checkVariables (const DofObjectType &dof_object, const std::set< MooseVariableFieldBase * > &vars_to_check)
 
void addMooseVariableDependency (MooseVariableFieldBase *var)
 
void addMooseVariableDependency (const std::vector< MooseVariableFieldBase * > &vars)
 
const std::vector< MooseVariableScalar *> & getCoupledMooseScalarVars ()
 
const std::set< TagID > & getScalarVariableCoupleableVectorTags () const
 
const std::set< TagID > & getScalarVariableCoupleableMatrixTags () const
 
const ADVariableValuegetADDefaultValue (const std::string &var_name) const
 
const FunctiongetFunction (const std::string &name) const
 
const FunctiongetFunctionByName (const FunctionName &name) const
 
bool hasFunction (const std::string &param_name) const
 
bool hasFunctionByName (const FunctionName &name) const
 
UserObjectName getUserObjectName (const std::string &param_name) const
 
const T & getUserObject (const std::string &param_name, bool is_dependency=true) const
 
const T & getUserObjectByName (const UserObjectName &object_name, bool is_dependency=true) const
 
const UserObjectgetUserObjectBase (const std::string &param_name, bool is_dependency=true) const
 
const UserObjectgetUserObjectBaseByName (const UserObjectName &object_name, bool is_dependency=true) const
 
bool isImplicit ()
 
Moose::StateArg determineState () const
 
bool isDefaultPostprocessorValue (const std::string &param_name, const unsigned int index=0) const
 
bool hasPostprocessor (const std::string &param_name, const unsigned int index=0) const
 
bool hasPostprocessorByName (const PostprocessorName &name) const
 
std::size_t coupledPostprocessors (const std::string &param_name) const
 
const PostprocessorName & getPostprocessorName (const std::string &param_name, const unsigned int index=0) const
 
const VectorPostprocessorValuegetVectorPostprocessorValue (const std::string &param_name, const std::string &vector_name) const
 
const VectorPostprocessorValuegetVectorPostprocessorValue (const std::string &param_name, const std::string &vector_name, bool needs_broadcast) const
 
const VectorPostprocessorValuegetVectorPostprocessorValueByName (const VectorPostprocessorName &name, const std::string &vector_name) const
 
const VectorPostprocessorValuegetVectorPostprocessorValueByName (const VectorPostprocessorName &name, const std::string &vector_name, bool needs_broadcast) const
 
const VectorPostprocessorValuegetVectorPostprocessorValueOld (const std::string &param_name, const std::string &vector_name) const
 
const VectorPostprocessorValuegetVectorPostprocessorValueOld (const std::string &param_name, const std::string &vector_name, bool needs_broadcast) const
 
const VectorPostprocessorValuegetVectorPostprocessorValueOldByName (const VectorPostprocessorName &name, const std::string &vector_name) const
 
const VectorPostprocessorValuegetVectorPostprocessorValueOldByName (const VectorPostprocessorName &name, const std::string &vector_name, bool needs_broadcast) const
 
const ScatterVectorPostprocessorValuegetScatterVectorPostprocessorValue (const std::string &param_name, const std::string &vector_name) const
 
const ScatterVectorPostprocessorValuegetScatterVectorPostprocessorValueByName (const VectorPostprocessorName &name, const std::string &vector_name) const
 
const ScatterVectorPostprocessorValuegetScatterVectorPostprocessorValueOld (const std::string &param_name, const std::string &vector_name) const
 
const ScatterVectorPostprocessorValuegetScatterVectorPostprocessorValueOldByName (const VectorPostprocessorName &name, const std::string &vector_name) const
 
bool hasVectorPostprocessor (const std::string &param_name, const std::string &vector_name) const
 
bool hasVectorPostprocessor (const std::string &param_name) const
 
bool hasVectorPostprocessorByName (const VectorPostprocessorName &name, const std::string &vector_name) const
 
bool hasVectorPostprocessorByName (const VectorPostprocessorName &name) const
 
const VectorPostprocessorName & getVectorPostprocessorName (const std::string &param_name) const
 
virtual void meshChanged ()
 
void buildOutputHideVariableList (std::set< std::string > variable_names)
 
void setRandomResetFrequency (ExecFlagType exec_flag)
 
unsigned long getRandomLong () const
 
Real getRandomReal () const
 
unsigned int getSeed (std::size_t id)
 
unsigned int getMasterSeed () const
 
bool isNodal () const
 
ExecFlagType getResetOnTime () const
 
void setRandomDataPointer (RandomData *random_data)
 
virtual unsigned int getElementIDIndex (const std::string &id_parameter_name, unsigned int comp=0) const
 
virtual unsigned int getElementIDIndexByName (const std::string &id_name) const
 
bool hasElementID (const std::string &id_name) const
 
dof_id_type maxElementID (unsigned int elem_id_index) const
 
dof_id_type minElementID (unsigned int elem_id_index) const
 
bool areElemIDsIdentical (const std::string &id_name1, const std::string &id_name2) const
 
std::unordered_map< dof_id_type, std::set< dof_id_type > > getElemIDMapping (const std::string &id_name1, const std::string &id_name2) const
 
std::set< dof_id_typegetAllElemIDs (unsigned int elem_id_index) const
 
std::set< dof_id_typegetElemIDsOnBlocks (unsigned int elem_id_index, const std::set< SubdomainID > &blks) const
 
const std::unordered_map< std::string, std::vector< MooseVariableFieldBase *> > & getCoupledVars () const
 
const std::vector< MooseVariableFieldBase *> & getCoupledMooseVars () const
 
const std::vector< MooseVariable *> & getCoupledStandardMooseVars () const
 
const std::vector< VectorMooseVariable *> & getCoupledVectorMooseVars () const
 
const std::vector< ArrayMooseVariable *> & getCoupledArrayMooseVars () const
 
void addFEVariableCoupleableVectorTag (TagID tag)
 
void addFEVariableCoupleableMatrixTag (TagID tag)
 
std::set< TagID > & getFEVariableCoupleableVectorTags ()
 
const std::set< TagID > & getFEVariableCoupleableVectorTags () const
 
std::set< TagID > & getFEVariableCoupleableMatrixTags ()
 
const std::set< TagID > & getFEVariableCoupleableMatrixTags () const
 
auto & getWritableCoupledVariables () const
 
bool hasWritableCoupledVariables () const
 
const ADVectorVariableValuegetADDefaultVectorValue (const std::string &var_name) const
 
const ADVariableGradientgetADDefaultGradient () const
 
const ADVectorVariableGradientgetADDefaultVectorGradient () const
 
const ADVariableSecondgetADDefaultSecond () const
 
const ADVectorVariableCurlgetADDefaultCurl () const
 
std::pair< const MaterialProperty< T > *, std::set< SubdomainID > > getBlockMaterialProperty (const MaterialPropertyName &name)
 
std::set< SubdomainIDgetMaterialPropertyBlocks (const std::string &name)
 
std::vector< SubdomainName > getMaterialPropertyBlockNames (const std::string &name)
 
std::set< BoundaryIDgetMaterialPropertyBoundaryIDs (const std::string &name)
 
std::vector< BoundaryName > getMaterialPropertyBoundaryNames (const std::string &name)
 
void checkBlockAndBoundaryCompatibility (std::shared_ptr< MaterialBase > discrete)
 
void statefulPropertiesAllowed (bool)
 
bool getMaterialPropertyCalled () const
 
const GenericMaterialProperty< T, is_ad > & getPossiblyConstantGenericMaterialPropertyByName (const MaterialPropertyName &prop_name, MaterialData &material_data, const unsigned int state)
 
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 GenericOptionalMaterialProperty< T, is_ad > & getGenericOptionalMaterialProperty (const std::string &name, const unsigned int state=0)
 
const GenericOptionalMaterialProperty< T, is_ad > & getGenericOptionalMaterialProperty (const std::string &name, const unsigned int state=0)
 
const OptionalMaterialProperty< T > & getOptionalMaterialProperty (const std::string &name, const unsigned int state=0)
 
const OptionalMaterialProperty< T > & getOptionalMaterialProperty (const std::string &name, const unsigned int state=0)
 
const OptionalADMaterialProperty< T > & getOptionalADMaterialProperty (const std::string &name)
 
const OptionalADMaterialProperty< T > & getOptionalADMaterialProperty (const std::string &name)
 
const OptionalMaterialProperty< T > & getOptionalMaterialPropertyOld (const std::string &name)
 
const OptionalMaterialProperty< T > & getOptionalMaterialPropertyOld (const std::string &name)
 
const OptionalMaterialProperty< T > & getOptionalMaterialPropertyOlder (const std::string &name)
 
const OptionalMaterialProperty< T > & getOptionalMaterialPropertyOlder (const std::string &name)
 
MaterialProperty< T > & declarePropertyByName (const std::string &prop_name)
 
MaterialProperty< T > & declarePropertyByName (const std::string &prop_name)
 
MaterialProperty< T > & declareProperty (const std::string &name)
 
MaterialProperty< T > & declareProperty (const std::string &name)
 
ADMaterialProperty< T > & declareADPropertyByName (const std::string &prop_name)
 
ADMaterialProperty< T > & declareADPropertyByName (const std::string &prop_name)
 
ADMaterialProperty< T > & declareADProperty (const std::string &name)
 
ADMaterialProperty< T > & declareADProperty (const std::string &name)
 
auto & declareGenericProperty (const std::string &prop_name)
 
auto & declareGenericProperty (const std::string &prop_name)
 
GenericMaterialProperty< T, is_ad > & declareGenericPropertyByName (const std::string &prop_name)
 
GenericMaterialProperty< T, is_ad > & declareGenericPropertyByName (const std::string &prop_name)
 
const DistributiongetDistribution (const std::string &name) const
 
const T & getDistribution (const std::string &name) const
 
const DistributiongetDistribution (const std::string &name) const
 
const T & getDistribution (const std::string &name) const
 
const DistributiongetDistributionByName (const DistributionName &name) const
 
const T & getDistributionByName (const std::string &name) const
 
const DistributiongetDistributionByName (const DistributionName &name) const
 
const T & getDistributionByName (const std::string &name) const
 
bool hasUserObject (const std::string &param_name) const
 
bool hasUserObject (const std::string &param_name) const
 
bool hasUserObject (const std::string &param_name) const
 
bool hasUserObject (const std::string &param_name) const
 
bool hasUserObjectByName (const UserObjectName &object_name) const
 
bool hasUserObjectByName (const UserObjectName &object_name) const
 
bool hasUserObjectByName (const UserObjectName &object_name) const
 
bool hasUserObjectByName (const UserObjectName &object_name) const
 
const PostprocessorValuegetPostprocessorValue (const std::string &param_name, const unsigned int index=0) const
 
const PostprocessorValuegetPostprocessorValue (const std::string &param_name, const unsigned int index=0) const
 
const PostprocessorValuegetPostprocessorValueOld (const std::string &param_name, const unsigned int index=0) const
 
const PostprocessorValuegetPostprocessorValueOld (const std::string &param_name, const unsigned int index=0) const
 
const PostprocessorValuegetPostprocessorValueOlder (const std::string &param_name, const unsigned int index=0) const
 
const PostprocessorValuegetPostprocessorValueOlder (const std::string &param_name, const unsigned int index=0) const
 
virtual const PostprocessorValuegetPostprocessorValueByName (const PostprocessorName &name) const
 
virtual const PostprocessorValuegetPostprocessorValueByName (const PostprocessorName &name) const
 
const PostprocessorValuegetPostprocessorValueOldByName (const PostprocessorName &name) const
 
const PostprocessorValuegetPostprocessorValueOldByName (const PostprocessorName &name) const
 
const PostprocessorValuegetPostprocessorValueOlderByName (const PostprocessorName &name) const
 
const PostprocessorValuegetPostprocessorValueOlderByName (const PostprocessorName &name) const
 
bool isVectorPostprocessorDistributed (const std::string &param_name) const
 
bool isVectorPostprocessorDistributed (const std::string &param_name) const
 
bool isVectorPostprocessorDistributedByName (const VectorPostprocessorName &name) const
 
bool isVectorPostprocessorDistributedByName (const VectorPostprocessorName &name) const
 
bool hasMaterialProperty (const std::string &name)
 
bool hasMaterialProperty (const std::string &name)
 
bool hasMaterialPropertyByName (const std::string &name)
 
bool hasMaterialPropertyByName (const std::string &name)
 
bool hasADMaterialProperty (const std::string &name)
 
bool hasADMaterialProperty (const std::string &name)
 
bool hasADMaterialPropertyByName (const std::string &name)
 
bool hasADMaterialPropertyByName (const std::string &name)
 
bool hasGenericMaterialProperty (const std::string &name)
 
bool hasGenericMaterialProperty (const std::string &name)
 
bool hasGenericMaterialPropertyByName (const std::string &name)
 
bool hasGenericMaterialPropertyByName (const std::string &name)
 
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
 
PenetrationLocatorgetPenetrationLocator (const BoundaryName &primary, const BoundaryName &secondary, Order order)
 
PenetrationLocatorgetQuadraturePenetrationLocator (const BoundaryName &primary, const BoundaryName &secondary, Order order)
 
NearestNodeLocatorgetNearestNodeLocator (const BoundaryName &primary, const BoundaryName &secondary)
 
NearestNodeLocatorgetQuadratureNearestNodeLocator (const BoundaryName &primary, const BoundaryName &secondary)
 
bool requiresGeometricSearch () const
 
const Parallel::Communicator & comm () const
 
processor_id_type n_processors () const
 
processor_id_type processor_id () const
 

Static Public Member Functions

static InputParameters validParams ()
 
static std::deque< MaterialBase *> buildRequiredMaterials (const Consumers &mat_consumers, const std::vector< std::shared_ptr< MaterialBase >> &mats, const bool allow_stateful)
 
static bool restricted (const std::set< BoundaryID > &ids)
 
static void sort (typename std::vector< T > &vector)
 
static void sortDFS (typename std::vector< T > &vector)
 
static void cyclicDependencyError (CyclicDependencyException< T2 > &e, const std::string &header)
 
static std::string deduceFunctorName (const std::string &name, const InputParameters &params)
 

Public Attributes

 ALL
 
 ANY
 
const ConsoleStream _console
 

Static Public Attributes

static constexpr PropertyValue::id_type default_property_id
 
static constexpr PropertyValue::id_type zero_property_id
 

Protected Types

enum  CrackedElasticityType { CrackedElasticityType::DIAGONAL, CrackedElasticityType::FULL }
 Enum defining the method used to adjust the elasticity tensor for cracking. More...
 
enum  TangentOperatorEnum { TangentOperatorEnum::elastic, TangentOperatorEnum::nonlinear }
 what sort of Tangent operator to calculate More...
 
enum  QP_Data_Type
 

Protected Member Functions

void updateLocalElasticityTensor ()
 Update the local elasticity tensor (_local_elasticity_tensor) due to the effects of cracking. More...
 
virtual void updateCrackingStateAndStress ()
 Update all cracking-related state variables and the stress tensor due to cracking in all directions. More...
 
virtual unsigned int getNumKnownCrackDirs () const
 Get the number of known crack directions. More...
 
void computeCrackStrainAndOrientation (RealVectorValue &strain_in_crack_dir)
 Compute the crack strain in the crack coordinate system. More...
 
void updateStressTensorForCracking (RankTwoTensor &tensor, const RealVectorValue &sigma)
 Updates the full stress tensor to account for the effect of cracking using the provided stresses in the crack directions. More...
 
bool previouslyCracked ()
 Check to see whether there was cracking in any diretion in the previous time step. More...
 
virtual std::vector< MaterialName > getInelasticModelNames () override
 
virtual void updateQpState (RankTwoTensor &elastic_strain_increment, RankTwoTensor &combined_inelastic_strain_increment) override
 Given the _strain_increment[_qp], iterate over all of the user-specified recompute materials in order to find an admissible stress (which is placed into _stress[_qp]) and set of inelastic strains, as well as the tangent operator (which is placed into _Jacobian_mult[_qp]). More...
 
virtual void computeQpStressIntermediateConfiguration ()
 Compute the stress for the current QP, but do not rotate tensors from the intermediate configuration to the new configuration. More...
 
virtual void finiteStrainRotation (const bool force_elasticity_rotation=false)
 Rotate _elastic_strain, _stress, _inelastic_strain, and _Jacobian_mult to the new configuration. More...
 
virtual void updateQpStateSingleModel (unsigned model_number, RankTwoTensor &elastic_strain_increment, RankTwoTensor &combined_inelastic_strain_increment)
 An optimised version of updateQpState that gets used when the number of plastic models is unity, or when we're cycling through models Given the _strain_increment[_qp], find an admissible stress (which is put into _stress[_qp]) and inelastic strain, as well as the tangent operator (which is placed into _Jacobian_mult[_qp]) More...
 
virtual void computeQpJacobianMult ()
 Using _elasticity_tensor[_qp] and the consistent tangent operators, _consistent_tangent_operator[...] computed by the inelastic models, compute _Jacobian_mult[_qp]. More...
 
virtual void computeAdmissibleState (unsigned model_number, RankTwoTensor &elastic_strain_increment, RankTwoTensor &inelastic_strain_increment, RankFourTensor &consistent_tangent_operator)
 Given a trial stress (_stress[_qp]) and a strain increment (elastic_strain_increment) let the model_number model produce an admissible stress (gets placed back in _stress[_qp]), and decompose the strain increment into an elastic part (gets placed back into elastic_strain_increment) and an inelastic part (inelastic_strain_increment), as well as computing the consistent_tangent_operator. More...
 
virtual void computeQpProperties () override
 
virtual void checkMaterialProperty (const std::string &name, const unsigned int state) override
 
virtual const MaterialDatamaterialData () const override
 
virtual MaterialDatamaterialData () override
 
virtual const QBase & qRule () const override
 
virtual void resetQpProperties ()
 
virtual const FEProblemBasemiProblem () const
 
virtual FEProblemBasemiProblem ()
 
bool isPropertyActive (const unsigned int prop_id) const
 
void registerPropName (const std::string &prop_name, bool is_get, const unsigned int state)
 
void checkExecutionStage ()
 
void checkExecutionStage ()
 
void markMatPropRequested (const std::string &)
 
virtual bool hasBlockMaterialPropertyHelper (const std::string &prop_name)
 
void initializeBlockRestrictable (const MooseObject *moose_object)
 
Moose::CoordinateSystemType getBlockCoordSystem ()
 
bool hasBoundaryMaterialPropertyHelper (const std::string &prop_name) const
 
bool isCoupledScalar (const std::string &var_name, unsigned int i=0) const
 
unsigned int coupledScalarComponents (const std::string &var_name) const
 
unsigned int coupledScalar (const std::string &var_name, unsigned int comp=0) const
 
libMesh::Order coupledScalarOrder (const std::string &var_name, unsigned int comp=0) const
 
const VariableValuecoupledScalarValue (const std::string &var_name, unsigned int comp=0) const
 
const ADVariableValueadCoupledScalarValue (const std::string &var_name, unsigned int comp=0) const
 
const GenericVariableValue< is_ad > & coupledGenericScalarValue (const std::string &var_name, unsigned int comp=0) const
 
const GenericVariableValue< false > & coupledGenericScalarValue (const std::string &var_name, const unsigned int comp) const
 
const GenericVariableValue< true > & coupledGenericScalarValue (const std::string &var_name, const unsigned int comp) const
 
const VariableValuecoupledVectorTagScalarValue (const std::string &var_name, TagID tag, unsigned int comp=0) const
 
const VariableValuecoupledMatrixTagScalarValue (const std::string &var_name, TagID tag, unsigned int comp=0) const
 
const VariableValuecoupledScalarValueOld (const std::string &var_name, unsigned int comp=0) const
 
const VariableValuecoupledScalarValueOlder (const std::string &var_name, unsigned int comp=0) const
 
const VariableValuecoupledScalarDot (const std::string &var_name, unsigned int comp=0) const
 
const ADVariableValueadCoupledScalarDot (const std::string &var_name, unsigned int comp=0) const
 
const VariableValuecoupledScalarDotDot (const std::string &var_name, unsigned int comp=0) const
 
const VariableValuecoupledScalarDotOld (const std::string &var_name, unsigned int comp=0) const
 
const VariableValuecoupledScalarDotDotOld (const std::string &var_name, unsigned int comp=0) const
 
const VariableValuecoupledScalarDotDu (const std::string &var_name, unsigned int comp=0) const
 
const VariableValuecoupledScalarDotDotDu (const std::string &var_name, unsigned int comp=0) const
 
const MooseVariableScalargetScalarVar (const std::string &var_name, unsigned int comp) const
 
bool checkVar (const std::string &var_name, unsigned int comp=0, unsigned int comp_bound=0) const
 
void validateExecutionerType (const std::string &name, const std::string &fn_name) const
 
virtual void addUserObjectDependencyHelper (const UserObject &) const
 
virtual void addPostprocessorDependencyHelper (const PostprocessorName &) const
 
virtual void addVectorPostprocessorDependencyHelper (const VectorPostprocessorName &) const
 
T & declareRestartableData (const std::string &data_name, Args &&... args)
 
ManagedValue< T > declareManagedRestartableDataWithContext (const std::string &data_name, void *context, Args &&... args)
 
const T & getRestartableData (const std::string &data_name) const
 
T & declareRestartableDataWithContext (const std::string &data_name, void *context, Args &&... args)
 
T & declareRecoverableData (const std::string &data_name, Args &&... args)
 
T & declareRestartableDataWithObjectName (const std::string &data_name, const std::string &object_name, Args &&... args)
 
T & declareRestartableDataWithObjectNameWithContext (const std::string &data_name, const std::string &object_name, void *context, Args &&... args)
 
std::string restartableName (const std::string &data_name) const
 
std::string deduceFunctorName (const std::string &name) const
 
const Moose::Functor< T > & getFunctor (const std::string &name)
 
const Moose::Functor< T > & getFunctor (const std::string &name, THREAD_ID tid)
 
const Moose::Functor< T > & getFunctor (const std::string &name, SubProblem &subproblem)
 
const Moose::Functor< T > & getFunctor (const std::string &name, SubProblem &subproblem, THREAD_ID tid)
 
bool isFunctor (const std::string &name) const
 
bool isFunctor (const std::string &name, const SubProblem &subproblem) const
 
Moose::ElemArg makeElemArg (const Elem *elem, bool correct_skewnewss=false) const
 
void checkFunctorSupportsSideIntegration (const std::string &name, bool qp_integration)
 
void flagInvalidSolutionInternal (const InvalidSolutionID invalid_solution_id) const
 
InvalidSolutionID registerInvalidSolutionInternal (const std::string &message, const bool warning) const
 
virtual void coupledCallback (const std::string &, bool) const
 
virtual bool isCoupled (const std::string &var_name, unsigned int i=0) const
 
virtual bool isCoupledConstant (const std::string &var_name) const
 
unsigned int coupledComponents (const std::string &var_name) const
 
VariableName coupledName (const std::string &var_name, unsigned int comp=0) const
 
std::vector< VariableName > coupledNames (const std::string &var_name) const
 
virtual unsigned int coupled (const std::string &var_name, unsigned int comp=0) const
 
std::vector< unsigned intcoupledIndices (const std::string &var_name) const
 
virtual const VariableValuecoupledValue (const std::string &var_name, unsigned int comp=0) const
 
std::vector< const VariableValue *> coupledValues (const std::string &var_name) const
 
std::vector< const VectorVariableValue *> coupledVectorValues (const std::string &var_name) const
 
const GenericVariableValue< is_ad > & coupledGenericValue (const std::string &var_name, unsigned int comp=0) const
 
const GenericVariableValue< false > & coupledGenericValue (const std::string &var_name, unsigned int comp) const
 
const GenericVariableValue< true > & coupledGenericValue (const std::string &var_name, unsigned int comp) const
 
const GenericVectorVariableValue< is_ad > & coupledGenericVectorValue (const std::string &var_name, unsigned int comp=0) const
 
const GenericVectorVariableValue< false > & coupledGenericVectorValue (const std::string &var_name, unsigned int comp) const
 
const GenericVectorVariableValue< true > & coupledGenericVectorValue (const std::string &var_name, unsigned int comp) const
 
std::vector< const GenericVariableValue< is_ad > *> coupledGenericValues (const std::string &var_name) const
 
std::vector< const GenericVariableValue< false > *> coupledGenericValues (const std::string &var_name) const
 
std::vector< const GenericVariableValue< true > *> coupledGenericValues (const std::string &var_name) const
 
const GenericVariableValue< is_ad > & coupledGenericDofValue (const std::string &var_name, unsigned int comp=0) const
 
const GenericVariableValue< false > & coupledGenericDofValue (const std::string &var_name, unsigned int comp) const
 
const GenericVariableValue< true > & coupledGenericDofValue (const std::string &var_name, unsigned int comp) const
 
const GenericVariableValue< is_ad > & coupledGenericDot (const std::string &var_name, unsigned int comp=0) const
 
const GenericVariableValue< false > & coupledGenericDot (const std::string &var_name, unsigned int comp) const
 
const GenericVariableValue< true > & coupledGenericDot (const std::string &var_name, unsigned int comp) const
 
const GenericVariableValue< is_ad > & coupledGenericDotDot (const std::string &var_name, unsigned int comp=0) const
 
const GenericVariableValue< false > & coupledGenericDotDot (const std::string &var_name, unsigned int comp) const
 
const GenericVariableValue< true > & coupledGenericDotDot (const std::string &var_name, unsigned int comp) const
 
virtual const VariableValuecoupledValueLower (const std::string &var_name, unsigned int comp=0) const
 
const ADVariableValueadCoupledValue (const std::string &var_name, unsigned int comp=0) const
 
std::vector< const ADVariableValue *> adCoupledValues (const std::string &var_name) const
 
const ADVariableValueadCoupledLowerValue (const std::string &var_name, unsigned int comp=0) const
 
const ADVectorVariableValueadCoupledVectorValue (const std::string &var_name, unsigned int comp=0) const
 
std::vector< const ADVectorVariableValue *> adCoupledVectorValues (const std::string &var_name) const
 
virtual const VariableValuecoupledVectorTagValue (const std::string &var_names, TagID tag, unsigned int index=0) const
 
virtual const VariableValuecoupledVectorTagValue (const std::string &var_names, const std::string &tag_name, unsigned int index=0) const
 
std::vector< const VariableValue *> coupledVectorTagValues (const std::string &var_names, TagID tag) const
 
std::vector< const VariableValue *> coupledVectorTagValues (const std::string &var_names, const std::string &tag_name) const
 
virtual const ArrayVariableValuecoupledVectorTagArrayValue (const std::string &var_names, TagID tag, unsigned int index=0) const
 
virtual const ArrayVariableValuecoupledVectorTagArrayValue (const std::string &var_names, const std::string &tag_name, unsigned int index=0) const
 
std::vector< const ArrayVariableValue *> coupledVectorTagArrayValues (const std::string &var_names, TagID tag) const
 
std::vector< const ArrayVariableValue *> coupledVectorTagArrayValues (const std::string &var_names, const std::string &tag_name) const
 
virtual const VariableGradientcoupledVectorTagGradient (const std::string &var_names, TagID tag, unsigned int index=0) const
 
virtual const VariableGradientcoupledVectorTagGradient (const std::string &var_names, const std::string &tag_name, unsigned int index=0) const
 
std::vector< const VariableGradient *> coupledVectorTagGradients (const std::string &var_names, TagID tag) const
 
std::vector< const VariableGradient *> coupledVectorTagGradients (const std::string &var_names, const std::string &tag_name) const
 
virtual const ArrayVariableGradientcoupledVectorTagArrayGradient (const std::string &var_names, TagID tag, unsigned int index=0) const
 
virtual const ArrayVariableGradientcoupledVectorTagArrayGradient (const std::string &var_names, const std::string &tag_name, unsigned int index=0) const
 
std::vector< const ArrayVariableGradient *> coupledVectorTagArrayGradients (const std::string &var_names, TagID tag) const
 
std::vector< const ArrayVariableGradient *> coupledVectorTagArrayGradients (const std::string &var_names, const std::string &tag_name) const
 
virtual const VariableValuecoupledVectorTagDofValue (const std::string &var_name, TagID tag, unsigned int index=0) const
 
virtual const VariableValuecoupledVectorTagDofValue (const std::string &var_names, const std::string &tag_name, unsigned int index=0) const
 
const ArrayVariableValuecoupledVectorTagArrayDofValue (const std::string &var_name, const std::string &tag_name, unsigned int comp=0) const
 
std::vector< const VariableValue *> coupledVectorTagDofValues (const std::string &var_names, TagID tag) const
 
std::vector< const VariableValue *> coupledVectorTagDofValues (const std::string &var_names, const std::string &tag_name) const
 
virtual const VariableValuecoupledMatrixTagValue (const std::string &var_names, TagID tag, unsigned int index=0) const
 
virtual const VariableValuecoupledMatrixTagValue (const std::string &var_names, const std::string &tag_name, unsigned int index=0) const
 
std::vector< const VariableValue *> coupledMatrixTagValues (const std::string &var_names, TagID tag) const
 
std::vector< const VariableValue *> coupledMatrixTagValues (const std::string &var_names, const std::string &tag_name) const
 
virtual const VectorVariableValuecoupledVectorValue (const std::string &var_name, unsigned int comp=0) const
 
virtual const ArrayVariableValuecoupledArrayValue (const std::string &var_name, unsigned int comp=0) const
 
std::vector< const ArrayVariableValue *> coupledArrayValues (const std::string &var_name) const
 
MooseWritableVariablewritableVariable (const std::string &var_name, unsigned int comp=0)
 
virtual VariableValuewritableCoupledValue (const std::string &var_name, unsigned int comp=0)
 
void checkWritableVar (MooseWritableVariable *var)
 
virtual const VariableValuecoupledValueOld (const std::string &var_name, unsigned int comp=0) const
 
std::vector< const VariableValue *> coupledValuesOld (const std::string &var_name) const
 
std::vector< const VectorVariableValue *> coupledVectorValuesOld (const std::string &var_name) const
 
virtual const VariableValuecoupledValueOlder (const std::string &var_name, unsigned int comp=0) const
 
std::vector< const VariableValue *> coupledValuesOlder (const std::string &var_name) const
 
virtual const VariableValuecoupledValuePreviousNL (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableValuecoupledVectorValueOld (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableValuecoupledVectorValueOlder (const std::string &var_name, unsigned int comp=0) const
 
virtual const ArrayVariableValuecoupledArrayValueOld (const std::string &var_name, unsigned int comp=0) const
 
virtual const ArrayVariableValuecoupledArrayValueOlder (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableGradientcoupledGradient (const std::string &var_name, unsigned int comp=0) const
 
std::vector< const VariableGradient *> coupledGradients (const std::string &var_name) const
 
const ADVariableGradientadCoupledGradient (const std::string &var_name, unsigned int comp=0) const
 
const ADVariableGradientadCoupledGradientDot (const std::string &var_name, unsigned int comp=0) const
 
std::vector< const ADVariableGradient *> adCoupledGradients (const std::string &var_name) const
 
const GenericVariableGradient< is_ad > & coupledGenericGradient (const std::string &var_name, unsigned int comp=0) const
 
const GenericVariableGradient< false > & coupledGenericGradient (const std::string &var_name, unsigned int comp) const
 
const GenericVariableGradient< true > & coupledGenericGradient (const std::string &var_name, unsigned int comp) const
 
std::vector< const GenericVariableGradient< is_ad > *> coupledGenericGradients (const std::string &var_name) const
 
std::vector< const GenericVariableGradient< false > *> coupledGenericGradients (const std::string &var_name) const
 
std::vector< const GenericVariableGradient< true > *> coupledGenericGradients (const std::string &var_name) const
 
const ADVectorVariableGradientadCoupledVectorGradient (const std::string &var_name, unsigned int comp=0) const
 
const ADVariableSecondadCoupledSecond (const std::string &var_name, unsigned int comp=0) const
 
const ADVectorVariableSecondadCoupledVectorSecond (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableGradientcoupledGradientOld (const std::string &var_name, unsigned int comp=0) const
 
std::vector< const VariableGradient *> coupledGradientsOld (const std::string &var_name) const
 
virtual const VariableGradientcoupledGradientOlder (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableGradientcoupledGradientPreviousNL (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableGradientcoupledGradientDot (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableGradientcoupledGradientDotDot (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableGradientcoupledVectorGradient (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableGradientcoupledVectorGradientOld (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableGradientcoupledVectorGradientOlder (const std::string &var_name, unsigned int comp=0) const
 
virtual const ArrayVariableGradientcoupledArrayGradient (const std::string &var_name, unsigned int comp=0) const
 
virtual const ArrayVariableGradientcoupledArrayGradientOld (const std::string &var_name, unsigned int comp=0) const
 
virtual const ArrayVariableGradientcoupledArrayGradientOlder (const std::string &var_name, unsigned int comp=0) const
 
virtual const ArrayVariableGradientcoupledArrayGradientDot (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableCurlcoupledCurl (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableCurlcoupledCurlOld (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableCurlcoupledCurlOlder (const std::string &var_name, unsigned int comp=0) const
 
const ADVectorVariableCurladCoupledCurl (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableDivergencecoupledDiv (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableDivergencecoupledDivOld (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableDivergencecoupledDivOlder (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableSecondcoupledSecond (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableSecondcoupledSecondOld (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableSecondcoupledSecondOlder (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableSecondcoupledSecondPreviousNL (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableValuecoupledDot (const std::string &var_name, unsigned int comp=0) const
 
std::vector< const VariableValue *> coupledDots (const std::string &var_name) const
 
virtual const VariableValuecoupledDotDot (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableValuecoupledDotOld (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableValuecoupledDotDotOld (const std::string &var_name, unsigned int comp=0) const
 
const ADVariableValueadCoupledDot (const std::string &var_name, unsigned int comp=0) const
 
std::vector< const ADVariableValue *> adCoupledDots (const std::string &var_name) const
 
const ADVariableValueadCoupledDotDot (const std::string &var_name, unsigned int comp=0) const
 
const ADVectorVariableValueadCoupledVectorDot (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableValuecoupledVectorDot (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableValuecoupledVectorDotDot (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableValuecoupledVectorDotOld (const std::string &var_name, unsigned int comp=0) const
 
virtual const VectorVariableValuecoupledVectorDotDotOld (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableValuecoupledVectorDotDu (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableValuecoupledVectorDotDotDu (const std::string &var_name, unsigned int comp=0) const
 
virtual const ArrayVariableValuecoupledArrayDot (const std::string &var_name, unsigned int comp=0) const
 
virtual const ArrayVariableValuecoupledArrayDotDot (const std::string &var_name, unsigned int comp=0) const
 
virtual const ArrayVariableValuecoupledArrayDotOld (const std::string &var_name, unsigned int comp=0) const
 
virtual const ArrayVariableValuecoupledArrayDotDotOld (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableValuecoupledDotDu (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableValuecoupledDotDotDu (const std::string &var_name, unsigned int comp=0) const
 
const VariableValuecoupledArrayDotDu (const std::string &var_name, unsigned int comp=0) const
 
const T & coupledNodalValue (const std::string &var_name, unsigned int comp=0) const
 
const Moose::ADType< T >::typeadCoupledNodalValue (const std::string &var_name, unsigned int comp=0) const
 
const T & coupledNodalValueOld (const std::string &var_name, unsigned int comp=0) const
 
const T & coupledNodalValueOlder (const std::string &var_name, unsigned int comp=0) const
 
const T & coupledNodalValuePreviousNL (const std::string &var_name, unsigned int comp=0) const
 
const T & coupledNodalDot (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableValuecoupledNodalDotDot (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableValuecoupledNodalDotOld (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableValuecoupledNodalDotDotOld (const std::string &var_name, unsigned int comp=0) const
 
virtual const VariableValuecoupledDofValues (const std::string &var_name, unsigned int comp=0) const
 
std::vector< const VariableValue *> coupledAllDofValues (const std::string &var_name) const
 
virtual const VariableValuecoupledDofValuesOld (const std::string &var_name, unsigned int comp=0) const
 
std::vector< const VariableValue *> coupledAllDofValuesOld (const std::string &var_name) const
 
virtual const VariableValuecoupledDofValuesOlder (const std::string &var_name, unsigned int comp=0) const
 
std::vector< const VariableValue *> coupledAllDofValuesOlder (const std::string &var_name) const
 
virtual const ArrayVariableValuecoupledArrayDofValues (const std::string &var_name, unsigned int comp=0) const
 
virtual const ADVariableValueadCoupledDofValues (const std::string &var_name, unsigned int comp=0) const
 
const ADVariableValueadZeroValue () const
 
const ADVariableGradientadZeroGradient () const
 
const ADVariableSecondadZeroSecond () const
 
const GenericVariableValue< is_ad > & genericZeroValue ()
 
const GenericVariableValue< false > & genericZeroValue ()
 
const GenericVariableValue< true > & genericZeroValue ()
 
const GenericVariableGradient< is_ad > & genericZeroGradient ()
 
const GenericVariableGradient< false > & genericZeroGradient ()
 
const GenericVariableGradient< true > & genericZeroGradient ()
 
const GenericVariableSecond< is_ad > & genericZeroSecond ()
 
const GenericVariableSecond< false > & genericZeroSecond ()
 
const GenericVariableSecond< true > & genericZeroSecond ()
 
const MooseVariableFieldBasegetFEVar (const std::string &var_name, unsigned int comp) const
 
const MooseVariableFieldBasegetFieldVar (const std::string &var_name, unsigned int comp) const
 
MooseVariableFieldBasegetFieldVar (const std::string &var_name, unsigned int comp)
 
const T * getVarHelper (const std::string &var_name, unsigned int comp) const
 
T * getVarHelper (const std::string &var_name, unsigned int comp)
 
MooseVariablegetVar (const std::string &var_name, unsigned int comp)
 
const MooseVariablegetVar (const std::string &var_name, unsigned int comp) const
 
VectorMooseVariablegetVectorVar (const std::string &var_name, unsigned int comp)
 
const VectorMooseVariablegetVectorVar (const std::string &var_name, unsigned int comp) const
 
ArrayMooseVariablegetArrayVar (const std::string &var_name, unsigned int comp)
 
const ArrayMooseVariablegetArrayVar (const std::string &var_name, unsigned int comp) const
 
std::vector< T > coupledVectorHelper (const std::string &var_name, const Func &func) const
 
MaterialPropertyName getMaterialPropertyName (const std::string &name) const
 
const GenericMaterialProperty< T, is_ad > * defaultGenericMaterialProperty (const std::string &name)
 
const GenericMaterialProperty< T, is_ad > * defaultGenericMaterialProperty (const std::string &name)
 
const MaterialProperty< T > * defaultMaterialProperty (const std::string &name)
 
const MaterialProperty< T > * defaultMaterialProperty (const std::string &name)
 
const ADMaterialProperty< T > * defaultADMaterialProperty (const std::string &name)
 
const ADMaterialProperty< T > * defaultADMaterialProperty (const std::string &name)
 
bool hasGuaranteedMaterialProperty (const MaterialPropertyName &prop, Guarantee guarantee)
 

Protected Attributes

enum ComputeSmearedCrackingStress::CrackedElasticityType _cracked_elasticity_type
 
MaterialProperty< RealVectorValue > & _crack_flags
 Vector of values going from 1 to 0 as crack damage accumulates. More...
 
std::vector< SmearedCrackSofteningBase * > _softening_models
 The user-supplied list of softening models to be used in the 3 crack directions. More...
 
std::vector< Real_local_elastic_vector
 Vector helper to update local elasticity tensor. More...
 
const bool _perform_finite_strain_rotations
 after updateQpState, rotate the stress, elastic_strain, inelastic_strain and Jacobian_mult using _rotation_increment More...
 
MaterialProperty< RankTwoTensor > & _inelastic_strain
 The sum of the inelastic strains that come from the plastic models. More...
 
const MaterialProperty< RankTwoTensor > & _inelastic_strain_old
 old value of inelastic strain More...
 
enum ComputeMultipleInelasticStressBase::TangentOperatorEnum _tangent_operator_type
 
unsigned _num_models
 number of plastic models More...
 
std::vector< bool > _tangent_computation_flag
 Flags to compute tangent during updateState call. More...
 
TangentCalculationMethod _tangent_calculation_method
 Calculation method for the tangent modulus. More...
 
std::vector< Real_inelastic_weights
 _inelastic_strain = sum_i (_inelastic_weights_i * inelastic_strain_from_model_i) More...
 
std::vector< RankFourTensor_consistent_tangent_operator
 the consistent tangent operators computed by each plastic model More...
 
const bool _cycle_models
 whether to cycle through the models, using only one model per timestep More...
 
MaterialProperty< Real > & _material_timestep_limit
 
const RankFourTensor _identity_symmetric_four
 Rank four symmetric identity tensor. More...
 
std::vector< StressUpdateBase * > _models
 The user supplied list of inelastic models to use in the simulation. More...
 
bool _is_elasticity_tensor_guaranteed_isotropic
 is the elasticity tensor guaranteed to be isotropic? More...
 
bool _all_models_isotropic
 are all inelastic models inherently isotropic? (not the case for e.g. weak plane plasticity models) More...
 
DamageBaseTempl< false > * _damage_model
 Pointer to the damage model. More...
 
RankTwoTensor _undamaged_stress_old
 
const std::string _elasticity_tensor_name
 Name of the elasticity tensor material property. More...
 
const MaterialProperty< RankFourTensor > & _elasticity_tensor
 Elasticity tensor material property. More...
 
MaterialProperty< RankTwoTensor > & _rotation_total
 Rotation up to current step "n" to compute anisotropic elasticity tensor. More...
 
const MaterialProperty< RankTwoTensor > & _rotation_total_old
 Rotation up to "n - 1" (previous) step to compute anisotropic elasticity tensor. More...
 
const MaterialProperty< RankTwoTensor > & _rotation_increment
 Rotation increment material property. More...
 
const MaterialProperty< RankTwoTensor > & _stress_old
 Old state of the stress tensor material property. More...
 
const std::string _base_name
 Base name prepended to all material property names to allow for multi-material systems. More...
 
const MaterialProperty< RankTwoTensor > & _mechanical_strain
 Mechanical strain material property. More...
 
MaterialProperty< RankTwoTensor > & _stress
 Stress material property. More...
 
MaterialProperty< RankTwoTensor > & _elastic_strain
 Elastic strain material property. More...
 
const MaterialProperty< RankTwoTensor > & _extra_stress
 Extra stress tensor. More...
 
std::vector< const Function * > _initial_stress_fcn
 initial stress components More...
 
MaterialProperty< RankFourTensor > & _Jacobian_mult
 derivative of stress w.r.t. strain (_dstress_dstrain) More...
 
 CURR
 
 PREV
 
bool _bnd
 
bool _neighbor
 
const MooseArray< Point > & _q_point
 
const QBase *const & _qrule
 
const MooseArray< Real > & _JxW
 
const Elem *const & _current_elem
 
const SubdomainID_current_subdomain_id
 
const unsigned int_current_side
 
const ConstantTypeEnum _constant_option
 
SubProblem_subproblem
 
FEProblemBase_fe_problem
 
THREAD_ID _tid
 
Assembly_assembly
 
unsigned int _qp
 
const MooseArray< Real > & _coord
 
const MooseArray< Point > & _normals
 
MooseMesh_mesh
 
const Moose::CoordinateSystemType_coord_sys
 
std::set< std::string > _requested_props
 
std::set< std::string > _supplied_props
 
std::set< unsigned int_supplied_prop_ids
 
std::unordered_set< unsigned int_active_prop_ids
 
const bool _compute
 
std::unordered_map< unsigned int, unsigned int_props_to_min_states
 
std::vector< unsigned int_displacements
 
bool _has_stateful_property
 
bool _overrides_init_stateful_props
 
const FaceInfo_face_info
 
const bool & _enabled
 
MooseApp_app
 
const std::string _type
 
const std::string _name
 
const InputParameters_pars
 
Factory_factory
 
ActionFactory_action_factory
 
const MaterialData_blk_material_data
 
const ExecFlagEnum_execute_enum
 
const ExecFlagType_current_execute_flag
 
FEProblemBase_sc_fe_problem
 
const THREAD_ID _sc_tid
 
const Real_real_zero
 
const VariableValue_scalar_zero
 
const Point & _point_zero
 
std::unordered_map< std::string, std::vector< std::unique_ptr< VariableValue > > > _default_value
 
const InputParameters_ti_params
 
FEProblemBase_ti_feproblem
 
bool _is_implicit
 
Real_t
 
const Real_t_old
 
int_t_step
 
Real_dt
 
Real_dt_old
 
bool _is_transient
 
MooseApp_restartable_app
 
const std::string _restartable_system_name
 
const THREAD_ID _restartable_tid
 
const bool _restartable_read_only
 
FEProblemBase_mci_feproblem
 
GeometricSearchData_geometric_search_data
 
bool _requires_geometric_search
 
const InputParameters_c_parameters
 
const std::string & _c_name
 
const std::string & _c_type
 
FEProblemBase_c_fe_problem
 
const SystemBase *const _c_sys
 
std::unordered_map< std::string, std::vector< MooseVariableFieldBase *> > _coupled_vars
 
std::vector< MooseVariableFieldBase *> _coupled_moose_vars
 
std::vector< MooseVariable *> _coupled_standard_moose_vars
 
std::vector< VectorMooseVariable *> _coupled_vector_moose_vars
 
std::vector< ArrayMooseVariable *> _coupled_array_moose_vars
 
std::vector< MooseVariableFV< Real > *> _coupled_standard_fv_moose_vars
 
std::vector< MooseLinearVariableFV< Real > *> _coupled_standard_linear_fv_moose_vars
 
const std::unordered_map< std::string, std::string > & _new_to_deprecated_coupled_vars
 
bool _c_nodal
 
bool _c_is_implicit
 
const bool _c_allow_element_to_nodal_coupling
 
THREAD_ID _c_tid
 
std::unordered_map< std::string, std::unique_ptr< MooseArray< ADReal > > > _ad_default_value
 
std::unordered_map< std::string, std::unique_ptr< VectorVariableValue > > _default_vector_value
 
std::unordered_map< std::string, std::unique_ptr< ArrayVariableValue > > _default_array_value
 
std::unordered_map< std::string, std::unique_ptr< MooseArray< ADRealVectorValue > > > _ad_default_vector_value
 
VariableValue _default_value_zero
 
VariableGradient _default_gradient
 
MooseArray< ADRealVectorValue_ad_default_gradient
 
MooseArray< ADRealTensorValue_ad_default_vector_gradient
 
VariableSecond _default_second
 
MooseArray< ADRealTensorValue_ad_default_second
 
MooseArray< ADRealVectorValue_ad_default_curl
 
const VariableValue_zero
 
const VariablePhiValue_phi_zero
 
const MooseArray< ADReal > & _ad_zero
 
const VariableGradient_grad_zero
 
const MooseArray< ADRealVectorValue > & _ad_grad_zero
 
const VariablePhiGradient_grad_phi_zero
 
const VariableSecond_second_zero
 
const MooseArray< ADRealTensorValue > & _ad_second_zero
 
const VariablePhiSecond_second_phi_zero
 
const VectorVariableValue_vector_zero
 
const VectorVariableCurl_vector_curl_zero
 
VectorVariableValue _default_vector_value_zero
 
VectorVariableGradient _default_vector_gradient
 
VectorVariableCurl _default_vector_curl
 
VectorVariableDivergence _default_div
 
ArrayVariableValue _default_array_value_zero
 
ArrayVariableGradient _default_array_gradient
 
bool _coupleable_neighbor
 
const InputParameters_mi_params
 
const std::string _mi_name
 
const MooseObjectName _mi_moose_object_name
 
FEProblemBase_mi_feproblem
 
SubProblem_mi_subproblem
 
const THREAD_ID _mi_tid
 
const Moose::MaterialDataType _material_data_type
 
MaterialData_material_data
 
bool _stateful_allowed
 
bool _get_material_property_called
 
std::vector< std::unique_ptr< PropertyValue > > _default_properties
 
std::unordered_set< unsigned int_material_property_dependencies
 
const MaterialPropertyName _get_suffix
 
const bool _use_interpolated_state
 
const Parallel::Communicator & _communicator
 
const VariableValue_cracking_stress
 Input parameters for smeared crack models. More...
 
std::vector< unsigned int_prescribed_crack_directions
 User-prescribed cracking directions. More...
 
const unsigned int _max_cracks
 Maximum number of cracks permitted at a material point. More...
 
const Real _cracking_neg_fraction
 Defines transition to changed stiffness during unloading. More...
 
const Real _shear_retention_factor
 Controls the amount of shear retained. More...
 
const Real _max_stress_correction
 Controls the maximum amount that the damaged elastic stress is corrected to folow the release model during a time step. More...
 
MaterialProperty< RealVectorValue > & _crack_damage
 
const MaterialProperty< RealVectorValue > & _crack_damage_old
 
MaterialProperty< RankTwoTensor > & _crack_rotation
 
const MaterialProperty< RankTwoTensor > & _crack_rotation_old
 
MaterialProperty< RealVectorValue > & _crack_initiation_strain
 
const MaterialProperty< RealVectorValue > & _crack_initiation_strain_old
 
MaterialProperty< RealVectorValue > & _crack_max_strain
 
const MaterialProperty< RealVectorValue > & _crack_max_strain_old
 
RankFourTensor _local_elasticity_tensor
 
const unsigned int _max_iterations
 Input parameters associated with the recompute iteration to return the stress state to the yield surface. More...
 
const Real _relative_tolerance
 
const Real _absolute_tolerance
 
const bool _internal_solve_full_iteration_history
 
const MaterialProperty< RankTwoTensor > & _elastic_strain_old
 Strain tensors. More...
 
const MaterialProperty< RankTwoTensor > & _strain_increment
 

Static Protected Attributes

static const std::string _interpolated_old
 
static const std::string _interpolated_older
 

Detailed Description

ComputeSmearedCrackingStress computes the stress for a finite strain material with smeared cracking.

Definition at line 21 of file ComputeSmearedCrackingStress.h.

Member Enumeration Documentation

◆ CrackedElasticityType

Enum defining the method used to adjust the elasticity tensor for cracking.

Enumerator
DIAGONAL 
FULL 

Definition at line 99 of file ComputeSmearedCrackingStress.h.

enum ComputeSmearedCrackingStress::CrackedElasticityType _cracked_elasticity_type
DIAGONAL

◆ TangentOperatorEnum

what sort of Tangent operator to calculate

Enumerator
elastic 
nonlinear 

Definition at line 139 of file ComputeMultipleInelasticStressBase.h.

139 { elastic, nonlinear } _tangent_operator_type;
enum ComputeMultipleInelasticStressBase::TangentOperatorEnum _tangent_operator_type

Constructor & Destructor Documentation

◆ ComputeSmearedCrackingStress()

ComputeSmearedCrackingStress::ComputeSmearedCrackingStress ( const InputParameters parameters)

Definition at line 69 of file ComputeSmearedCrackingStress.C.

71  _cracking_stress(coupledValue("cracking_stress")),
72  _max_cracks(getParam<unsigned int>("max_cracks")),
73  _cracking_neg_fraction(getParam<Real>("cracking_neg_fraction")),
74  _shear_retention_factor(getParam<Real>("shear_retention_factor")),
75  _max_stress_correction(getParam<Real>("max_stress_correction")),
77  getParam<MooseEnum>("cracked_elasticity_type").getEnum<CrackedElasticityType>()),
78  _crack_damage(declareProperty<RealVectorValue>(_base_name + "crack_damage")),
79  _crack_damage_old(getMaterialPropertyOld<RealVectorValue>(_base_name + "crack_damage")),
80  _crack_flags(declareProperty<RealVectorValue>(_base_name + "crack_flags")),
81  _crack_rotation(declareProperty<RankTwoTensor>(_base_name + "crack_rotation")),
82  _crack_rotation_old(getMaterialPropertyOld<RankTwoTensor>(_base_name + "crack_rotation")),
84  declareProperty<RealVectorValue>(_base_name + "crack_initiation_strain")),
86  getMaterialPropertyOld<RealVectorValue>(_base_name + "crack_initiation_strain")),
87  _crack_max_strain(declareProperty<RealVectorValue>(_base_name + "crack_max_strain")),
88  _crack_max_strain_old(getMaterialPropertyOld<RealVectorValue>(_base_name + "crack_max_strain"))
89 {
90  MultiMooseEnum prescribed_crack_directions =
91  getParam<MultiMooseEnum>("prescribed_crack_directions");
92  if (prescribed_crack_directions.size() > 0)
93  {
94  if (prescribed_crack_directions.size() > 3)
95  mooseError("A maximum of three crack directions may be specified");
96  for (unsigned int i = 0; i < prescribed_crack_directions.size(); ++i)
97  {
98  for (unsigned int j = 0; j < i; ++j)
99  if (prescribed_crack_directions[i] == prescribed_crack_directions[j])
100  mooseError("Entries in 'prescribed_crack_directions' cannot be repeated");
102  static_cast<unsigned int>(prescribed_crack_directions.get(i)));
103  }
104 
105  // Fill in the last remaining direction if 2 are specified
106  if (_prescribed_crack_directions.size() == 2)
107  {
108  std::set<unsigned int> available_dirs = {0, 1, 2};
109  for (auto dir : _prescribed_crack_directions)
110  if (available_dirs.erase(dir) != 1)
111  mooseError("Invalid prescribed crack direction:" + Moose::stringify(dir));
112  if (available_dirs.size() != 1)
113  mooseError("Error in finding remaining available crack direction");
114  _prescribed_crack_directions.push_back(*available_dirs.begin());
115  }
116  }
117  if (!isParamSetByUser("cracked_elasticity_type"))
118  paramWarning(
119  "cracked_elasticity_type",
120  "Defaulting to the legacy option of 'DIAGONAL', but the 'FULL' option is preferred");
121 
122  _local_elastic_vector.resize(9);
123 }
MaterialProperty< RealVectorValue > & _crack_max_strain
MaterialProperty< RealVectorValue > & _crack_initiation_strain
const unsigned int _max_cracks
Maximum number of cracks permitted at a material point.
const MaterialProperty< RankTwoTensor > & _crack_rotation_old
const MaterialProperty< RealVectorValue > & _crack_max_strain_old
MaterialProperty< RankTwoTensor > & _crack_rotation
unsigned int size() const
std::vector< Real > _local_elastic_vector
Vector helper to update local elasticity tensor.
enum ComputeSmearedCrackingStress::CrackedElasticityType _cracked_elasticity_type
virtual const VariableValue & coupledValue(const std::string &var_name, unsigned int comp=0) const
const VariableValue & _cracking_stress
Input parameters for smeared crack models.
const std::string _base_name
Base name prepended to all material property names to allow for multi-material systems.
const Real _max_stress_correction
Controls the maximum amount that the damaged elastic stress is corrected to folow the release model d...
MaterialProperty< RealVectorValue > & _crack_flags
Vector of values going from 1 to 0 as crack damage accumulates.
std::string stringify(const T &t)
bool isParamSetByUser(const std::string &nm) const
unsigned int get(unsigned int i) const
const Real _cracking_neg_fraction
Defines transition to changed stiffness during unloading.
MaterialProperty< RealVectorValue > & _crack_damage
const Real _shear_retention_factor
Controls the amount of shear retained.
const MaterialProperty< RealVectorValue > & _crack_damage_old
std::vector< unsigned int > _prescribed_crack_directions
User-prescribed cracking directions.
const MaterialProperty< RealVectorValue > & _crack_initiation_strain_old
void mooseError(Args &&... args) const
const InputParameters & parameters() const
static const std::complex< double > j(0, 1)
Complex number "j" (also known as "i")
void paramWarning(const std::string &param, Args... args) const
ComputeMultipleInelasticStress(const InputParameters &parameters)

Member Function Documentation

◆ computeAdmissibleState()

void ComputeMultipleInelasticStressBase::computeAdmissibleState ( unsigned  model_number,
RankTwoTensor elastic_strain_increment,
RankTwoTensor inelastic_strain_increment,
RankFourTensor consistent_tangent_operator 
)
protectedvirtualinherited

Given a trial stress (_stress[_qp]) and a strain increment (elastic_strain_increment) let the model_number model produce an admissible stress (gets placed back in _stress[_qp]), and decompose the strain increment into an elastic part (gets placed back into elastic_strain_increment) and an inelastic part (inelastic_strain_increment), as well as computing the consistent_tangent_operator.

Parameters
model_numberThe inelastic model to use
elastic_strain_incrementUpon input, this is the strain increment. Upon output, it is the elastic part of the strain increment
inelastic_strain_incrementThe inelastic strain increment corresponding to the supplied strain increment
consistent_tangent_operatorThe consistent tangent operator

Reimplemented in ComputeMultipleInelasticCosseratStress.

Definition at line 356 of file ComputeMultipleInelasticStressBase.C.

Referenced by ComputeMultipleInelasticCosseratStress::computeAdmissibleState(), ComputeMultipleInelasticStress::updateQpState(), ComputeCreepPlasticityStress::updateQpState(), and ComputeMultipleInelasticStressBase::updateQpStateSingleModel().

361 {
362  // Reset properties to the beginning of the time step (necessary if substepping is employed).
363  _models[model_number]->resetIncrementalMaterialProperties();
364 
365  const bool jac = _fe_problem.currentlyComputingJacobian();
366  if (_damage_model)
367  _models[model_number]->updateState(elastic_strain_increment,
368  inelastic_strain_increment,
370  _stress[_qp],
374  (jac && _tangent_computation_flag[model_number]),
375  consistent_tangent_operator);
376  else if (_models[model_number]->substeppingCapabilityEnabled() &&
378  _models[model_number]->updateStateSubstep(elastic_strain_increment,
379  inelastic_strain_increment,
381  _stress[_qp],
382  _stress_old[_qp],
385  (jac && _tangent_computation_flag[model_number]),
386  consistent_tangent_operator);
387  else
388  _models[model_number]->updateState(elastic_strain_increment,
389  inelastic_strain_increment,
391  _stress[_qp],
392  _stress_old[_qp],
395  (jac && _tangent_computation_flag[model_number]),
396  consistent_tangent_operator);
397 
398  if (jac && !_tangent_computation_flag[model_number])
399  {
401  consistent_tangent_operator.zero();
402  else
403  consistent_tangent_operator = _elasticity_tensor[_qp];
404  }
405 }
bool _is_elasticity_tensor_guaranteed_isotropic
is the elasticity tensor guaranteed to be isotropic?
const MaterialProperty< RankTwoTensor > & _rotation_increment
Rotation increment material property.
const MaterialProperty< RankFourTensor > & _elasticity_tensor
Elasticity tensor material property.
std::vector< StressUpdateBase * > _models
The user supplied list of inelastic models to use in the simulation.
TangentCalculationMethod _tangent_calculation_method
Calculation method for the tangent modulus.
DamageBaseTempl< false > * _damage_model
Pointer to the damage model.
std::vector< bool > _tangent_computation_flag
Flags to compute tangent during updateState call.
const MaterialProperty< RankTwoTensor > & _stress_old
Old state of the stress tensor material property.
const bool _perform_finite_strain_rotations
after updateQpState, rotate the stress, elastic_strain, inelastic_strain and Jacobian_mult using _rot...
MaterialProperty< RankTwoTensor > & _stress
Stress material property.
const bool & currentlyComputingJacobian() const
const MaterialProperty< RankTwoTensor > & _elastic_strain_old
Strain tensors.

◆ computeCrackStrainAndOrientation()

void ComputeSmearedCrackingStress::computeCrackStrainAndOrientation ( RealVectorValue strain_in_crack_dir)
protected

Compute the crack strain in the crack coordinate system.

Also computes the crack orientations, and stores in _crack_rotation.

Parameters
strain_in_crack_dirComputed strains in crack directions

Definition at line 484 of file ComputeSmearedCrackingStress.C.

Referenced by updateCrackingStateAndStress().

486 {
487  // The rotation tensor is ordered such that directions for pre-existing cracks appear first
488  // in the list of columns. For example, if there is one existing crack, its direction is in the
489  // first column in the rotation tensor.
490  const unsigned int num_known_dirs = getNumKnownCrackDirs();
491 
492  if (num_known_dirs == 0)
493  {
494  std::vector<Real> eigval(3, 0.0);
495  RankTwoTensor eigvec;
496 
497  _elastic_strain[_qp].symmetricEigenvaluesEigenvectors(eigval, eigvec);
498 
499  // If the elastic strain is beyond the cracking strain, save the eigen vectors as
500  // the rotation tensor. Reverse their order so that the third principal strain
501  // (most tensile) will correspond to the first crack.
502  _crack_rotation[_qp].fillColumn(0, eigvec.column(2));
503  _crack_rotation[_qp].fillColumn(1, eigvec.column(1));
504  _crack_rotation[_qp].fillColumn(2, eigvec.column(0));
505 
506  strain_in_crack_dir(0) = eigval[2];
507  strain_in_crack_dir(1) = eigval[1];
508  strain_in_crack_dir(2) = eigval[0];
509  }
510  else if (num_known_dirs == 1)
511  {
512  // This is easily the most complicated case.
513  // 1. Rotate the elastic strain to the orientation associated with the known
514  // crack.
515  // 2. Extract the lower 2x2 block into a separate tensor.
516  // 3. Run the eigen solver on the result.
517  // 4. Update the rotation tensor to reflect the effect of the 2 eigenvectors.
518 
519  // 1.
520  const RankTwoTensor & R = _crack_rotation[_qp];
522  ePrime.rotate(R.transpose()); // elastic strain in crack coordinates
523 
524  // 2.
525  ColumnMajorMatrix e2x2(2, 2);
526  e2x2(0, 0) = ePrime(1, 1);
527  e2x2(1, 0) = ePrime(2, 1);
528  e2x2(0, 1) = ePrime(1, 2);
529  e2x2(1, 1) = ePrime(2, 2);
530 
531  // 3.
532  ColumnMajorMatrix e_val2x1(2, 1);
533  ColumnMajorMatrix e_vec2x2(2, 2);
534  e2x2.eigen(e_val2x1, e_vec2x2);
535 
536  // 4.
537  RankTwoTensor eigvec(
538  1.0, 0.0, 0.0, 0.0, e_vec2x2(0, 1), e_vec2x2(1, 1), 0.0, e_vec2x2(0, 0), e_vec2x2(1, 0));
539 
540  _crack_rotation[_qp] = _crack_rotation_old[_qp] * eigvec; // Roe implementation
541 
542  strain_in_crack_dir(0) = ePrime(0, 0);
543  strain_in_crack_dir(1) = e_val2x1(1, 0);
544  strain_in_crack_dir(2) = e_val2x1(0, 0);
545  }
546  else if (num_known_dirs == 2 || num_known_dirs == 3)
547  {
548  // Rotate to cracked orientation and pick off the strains in the rotated
549  // coordinate directions.
550  const RankTwoTensor & R = _crack_rotation[_qp];
552  ePrime.rotate(R.transpose()); // elastic strain in crack coordinates
553 
554  strain_in_crack_dir(0) = ePrime(0, 0);
555  strain_in_crack_dir(1) = ePrime(1, 1);
556  strain_in_crack_dir(2) = ePrime(2, 2);
557  }
558  else
559  mooseError("Invalid number of known crack directions");
560 }
const MaterialProperty< RankTwoTensor > & _crack_rotation_old
MaterialProperty< RankTwoTensor > & _crack_rotation
libMesh::VectorValue< Real > column(const unsigned int i) const
virtual unsigned int getNumKnownCrackDirs() const
Get the number of known crack directions.
static const std::string R
Definition: NS.h:162
MaterialProperty< RankTwoTensor > & _elastic_strain
Elastic strain material property.
void mooseError(Args &&... args) const

◆ computeQpJacobianMult()

void ComputeMultipleInelasticStressBase::computeQpJacobianMult ( )
protectedvirtualinherited

Using _elasticity_tensor[_qp] and the consistent tangent operators, _consistent_tangent_operator[...] computed by the inelastic models, compute _Jacobian_mult[_qp].

Reimplemented in ComputeMultipleInelasticCosseratStress.

Definition at line 283 of file ComputeMultipleInelasticStressBase.C.

Referenced by ComputeMultipleInelasticStress::updateQpState(), and ComputeCreepPlasticityStress::updateQpState().

284 {
288  {
290  for (const auto i_rmm : make_range(_num_models))
292  mooseAssert(A.isSymmetric(), "Tangent operator isn't symmetric");
293  _Jacobian_mult[_qp] = A.invSymm() * _elasticity_tensor[_qp];
294  }
295  else
296  {
297  const RankFourTensor E_inv = _elasticity_tensor[_qp].invSymm();
299  for (const auto i_rmm : make_range(1u, _num_models))
301  }
302 }
MaterialProperty< RankFourTensor > & _Jacobian_mult
derivative of stress w.r.t. strain (_dstress_dstrain)
const RankFourTensor _identity_symmetric_four
Rank four symmetric identity tensor.
const MaterialProperty< RankFourTensor > & _elasticity_tensor
Elasticity tensor material property.
std::vector< RankFourTensor > _consistent_tangent_operator
the consistent tangent operators computed by each plastic model
TangentCalculationMethod _tangent_calculation_method
Calculation method for the tangent modulus.
IntRange< T > make_range(T beg, T end)

◆ computeQpProperties()

void ComputeGeneralStressBase::computeQpProperties ( )
overrideprotectedvirtualinherited

Reimplemented from DerivativeMaterialInterface< Material >.

Definition at line 44 of file ComputeGeneralStressBase.C.

45 {
47 
48  // Add in extra stress
50 }
const MaterialProperty< RankTwoTensor > & _extra_stress
Extra stress tensor.
MaterialProperty< RankTwoTensor > & _stress
Stress material property.
virtual void computeQpStress()=0
Compute the stress and store it in the _stress material property for the current quadrature point...

◆ computeQpStress()

void ComputeSmearedCrackingStress::computeQpStress ( )
overridevirtual

Compute the stress and store it in the _stress material property for the current quadrature point.

Reimplemented from ComputeMultipleInelasticStressBase.

Definition at line 218 of file ComputeSmearedCrackingStress.C.

219 {
220  bool force_elasticity_rotation = false;
221 
222  if (!previouslyCracked())
224  else
225  {
227 
228  // Propagate behavior from the (now inactive) inelastic models
230  for (auto model : _models)
231  {
232  model->setQp(_qp);
233  model->propagateQpStatefulProperties();
234  }
235 
236  // Since the other inelastic models are inactive, they will not limit the time step
237  _material_timestep_limit[_qp] = std::numeric_limits<Real>::max();
238 
239  // update _local_elasticity_tensor based on cracking state in previous time step
241 
242  // Calculate stress in intermediate configuration
244 
246  force_elasticity_rotation = true;
247  }
248 
249  // compute crack status and adjust stress
251 
253  {
254  finiteStrainRotation(force_elasticity_rotation);
256  }
257 }
MaterialProperty< RankFourTensor > & _Jacobian_mult
derivative of stress w.r.t. strain (_dstress_dstrain)
const MaterialProperty< RankTwoTensor > & _rotation_increment
Rotation increment material property.
virtual void finiteStrainRotation(const bool force_elasticity_rotation=false)
Rotate _elastic_strain, _stress, _inelastic_strain, and _Jacobian_mult to the new configuration...
void updateLocalElasticityTensor()
Update the local elasticity tensor (_local_elasticity_tensor) due to the effects of cracking...
MaterialProperty< RankTwoTensor > & _crack_rotation
const MaterialProperty< RankTwoTensor > & _strain_increment
bool previouslyCracked()
Check to see whether there was cracking in any diretion in the previous time step.
std::vector< StressUpdateBase * > _models
The user supplied list of inelastic models to use in the simulation.
MaterialProperty< RankTwoTensor > & _inelastic_strain
The sum of the inelastic strains that come from the plastic models.
const PertinentGeochemicalSystem model(database, {"H2O", "H+", "HCO3-", "O2(aq)", "Ca++", ">(s)FeOH", "radius_neg1", "radius_neg1.5"}, {"Calcite"}, {}, {"Calcite_asdf"}, {"CH4(aq)"}, {">(s)FeOCa+"}, "O2(aq)", "e-")
MaterialProperty< RankTwoTensor > & _elastic_strain
Elastic strain material property.
const bool _perform_finite_strain_rotations
after updateQpState, rotate the stress, elastic_strain, inelastic_strain and Jacobian_mult using _rot...
MaterialProperty< RankTwoTensor > & _stress
Stress material property.
virtual void computeQpStressIntermediateConfiguration()
Compute the stress for the current QP, but do not rotate tensors from the intermediate configuration ...
const MaterialProperty< RankTwoTensor > & _inelastic_strain_old
old value of inelastic strain
virtual void updateCrackingStateAndStress()
Update all cracking-related state variables and the stress tensor due to cracking in all directions...
const MaterialProperty< RankTwoTensor > & _elastic_strain_old
Strain tensors.

◆ computeQpStressIntermediateConfiguration()

void ComputeMultipleInelasticStressBase::computeQpStressIntermediateConfiguration ( )
protectedvirtualinherited

Compute the stress for the current QP, but do not rotate tensors from the intermediate configuration to the new configuration.

Definition at line 227 of file ComputeMultipleInelasticStressBase.C.

Referenced by computeQpStress(), and ComputeMultipleInelasticStressBase::computeQpStress().

228 {
229  RankTwoTensor elastic_strain_increment;
230  RankTwoTensor combined_inelastic_strain_increment;
231 
232  if (_num_models == 0)
233  {
235 
236  // If the elasticity tensor values have changed and the tensor is isotropic,
237  // use the old strain to calculate the old stress
240  else
241  {
242  if (_damage_model)
244  else
246  }
249 
250  _material_timestep_limit[_qp] = std::numeric_limits<Real>::max();
251  }
252  else
253  {
254  if (_num_models == 1 || _cycle_models)
256  elastic_strain_increment,
257  combined_inelastic_strain_increment);
258  else
259  updateQpState(elastic_strain_increment, combined_inelastic_strain_increment);
260 
261  _elastic_strain[_qp] = _elastic_strain_old[_qp] + elastic_strain_increment;
262  _inelastic_strain[_qp] = _inelastic_strain_old[_qp] + combined_inelastic_strain_increment;
263  }
264 }
const bool _cycle_models
whether to cycle through the models, using only one model per timestep
MaterialProperty< RankFourTensor > & _Jacobian_mult
derivative of stress w.r.t. strain (_dstress_dstrain)
bool _is_elasticity_tensor_guaranteed_isotropic
is the elasticity tensor guaranteed to be isotropic?
virtual void updateQpStateSingleModel(unsigned model_number, RankTwoTensor &elastic_strain_increment, RankTwoTensor &combined_inelastic_strain_increment)
An optimised version of updateQpState that gets used when the number of plastic models is unity...
const MaterialProperty< RankFourTensor > & _elasticity_tensor
Elasticity tensor material property.
const MaterialProperty< RankTwoTensor > & _strain_increment
virtual void updateQpState(RankTwoTensor &elastic_strain_increment, RankTwoTensor &combined_inelastic_strain_increment)=0
Given the _strain_increment[_qp], iterate over all of the user-specified recompute materials in order...
DamageBaseTempl< false > * _damage_model
Pointer to the damage model.
MaterialProperty< RankTwoTensor > & _inelastic_strain
The sum of the inelastic strains that come from the plastic models.
const MaterialProperty< RankTwoTensor > & _stress_old
Old state of the stress tensor material property.
MaterialProperty< RankTwoTensor > & _elastic_strain
Elastic strain material property.
const bool _perform_finite_strain_rotations
after updateQpState, rotate the stress, elastic_strain, inelastic_strain and Jacobian_mult using _rot...
MaterialProperty< RankTwoTensor > & _stress
Stress material property.
const bool & currentlyComputingJacobian() const
const MaterialProperty< RankTwoTensor > & _inelastic_strain_old
old value of inelastic strain
const MaterialProperty< RankTwoTensor > & _elastic_strain_old
Strain tensors.

◆ finiteStrainRotation()

void ComputeMultipleInelasticStressBase::finiteStrainRotation ( const bool  force_elasticity_rotation = false)
protectedvirtualinherited

Rotate _elastic_strain, _stress, _inelastic_strain, and _Jacobian_mult to the new configuration.

Parameters
force_elasticity_rotationForce the elasticity tensor to be rotated, even if it is not deemed necessary.

Definition at line 267 of file ComputeMultipleInelasticStressBase.C.

Referenced by computeQpStress(), and ComputeMultipleInelasticStressBase::computeQpStress().

268 {
274 
275  if (force_elasticity_rotation ||
280 }
MaterialProperty< RankFourTensor > & _Jacobian_mult
derivative of stress w.r.t. strain (_dstress_dstrain)
bool _is_elasticity_tensor_guaranteed_isotropic
is the elasticity tensor guaranteed to be isotropic?
const MaterialProperty< RankTwoTensor > & _rotation_increment
Rotation increment material property.
bool _all_models_isotropic
are all inelastic models inherently isotropic? (not the case for e.g. weak plane plasticity models) ...
TangentCalculationMethod _tangent_calculation_method
Calculation method for the tangent modulus.
MaterialProperty< RankTwoTensor > & _inelastic_strain
The sum of the inelastic strains that come from the plastic models.
MaterialProperty< RankTwoTensor > & _elastic_strain
Elastic strain material property.
MaterialProperty< RankTwoTensor > & _stress
Stress material property.

◆ getInelasticModelNames()

std::vector< MaterialName > ComputeMultipleInelasticStress::getInelasticModelNames ( )
overrideprotectedvirtualinherited

Implements ComputeMultipleInelasticStressBase.

Definition at line 36 of file ComputeMultipleInelasticStress.C.

37 {
38  return getParam<std::vector<MaterialName>>("inelastic_models");
39 }

◆ getNumKnownCrackDirs()

unsigned int ComputeSmearedCrackingStress::getNumKnownCrackDirs ( ) const
protectedvirtual

Get the number of known crack directions.

This includes cracks in prescribed directions (even if not yet active) and active cracks in other directions.

Returns
number of known crack directions

Definition at line 563 of file ComputeSmearedCrackingStress.C.

Referenced by computeCrackStrainAndOrientation().

564 {
565  unsigned int num_known_dirs = 0;
566  for (unsigned int i = 0; i < 3; ++i)
567  {
568  if (_crack_damage_old[_qp](i) > 0.0 || _prescribed_crack_directions.size() >= i + 1)
569  ++num_known_dirs;
570  }
571  return num_known_dirs;
572 }
const MaterialProperty< RealVectorValue > & _crack_damage_old
std::vector< unsigned int > _prescribed_crack_directions
User-prescribed cracking directions.

◆ hasGuaranteedMaterialProperty()

bool GuaranteeConsumer::hasGuaranteedMaterialProperty ( const MaterialPropertyName &  prop,
Guarantee  guarantee 
)
protectedinherited

Definition at line 28 of file GuaranteeConsumer.C.

Referenced by ComputeFiniteStrainElasticStress::computeQpStress(), ADComputeSmearedCrackingStress::initialSetup(), initialSetup(), ComputeLinearElasticPFFractureStress::initialSetup(), ComputeSimoHughesJ2PlasticityStress::initialSetup(), CriticalTimeStep::initialSetup(), ComputeStVenantKirchhoffStress::initialSetup(), ComputeMultipleInelasticStressBase::initialSetup(), and ADComputeMultipleInelasticStress::initialSetup().

30 {
32  mooseError("hasGuaranteedMaterialProperty() needs to be called in initialSetup()");
33 
34  // Reference to MaterialWarehouse for testing and retrieving block ids
35  const auto & warehouse = _gc_feproblem->getMaterialWarehouse();
36 
37  // Complete set of ids that this object is active
38  const auto & ids = (_gc_block_restrict && _gc_block_restrict->blockRestricted())
41 
42  // Loop over each id for this object
43  for (const auto & id : ids)
44  {
45  // If block materials exist, look if any issue the required guarantee
46  if (warehouse.hasActiveBlockObjects(id))
47  {
48  const std::vector<std::shared_ptr<MaterialBase>> & mats = warehouse.getActiveBlockObjects(id);
49  for (const auto & mat : mats)
50  {
51  const auto & mat_props = mat->getSuppliedItems();
52  if (mat_props.count(prop_name))
53  {
54  auto guarantee_mat = dynamic_cast<GuaranteeProvider *>(mat.get());
55  if (guarantee_mat && !guarantee_mat->hasGuarantee(prop_name, guarantee))
56  {
57  // we found at least one material on the set of block we operate on
58  // that does _not_ provide the requested guarantee
59  return false;
60  }
61  }
62  }
63  }
64  }
65 
66  return true;
67 }
void mooseError(Args &&... args)
Add-on class that provides the functionality to issue guarantees for declared material properties...
BlockRestrictable *const _gc_block_restrict
Access block restrictions of the object with this interface.
virtual const std::set< SubdomainID > & blockIDs() const
virtual bool blockRestricted() const
const MaterialWarehouse & getMaterialWarehouse() const
FEProblemBase *const _gc_feproblem
Reference to the FEProblemBase class.
virtual MooseMesh & mesh() override
virtual bool startedInitialSetup()
const std::set< SubdomainID > & meshSubdomains() const

◆ initialSetup()

void ComputeSmearedCrackingStress::initialSetup ( )
overridevirtual

Reimplemented from ComputeMultipleInelasticStressBase.

Definition at line 189 of file ComputeSmearedCrackingStress.C.

190 {
192 
194  mooseError("ComputeSmearedCrackingStress requires that the elasticity tensor be "
195  "guaranteed isotropic");
196 
197  std::vector<MaterialName> soft_matls = getParam<std::vector<MaterialName>>("softening_models");
198  for (auto soft_matl : soft_matls)
199  {
201  dynamic_cast<SmearedCrackSofteningBase *>(&getMaterialByName(soft_matl));
202  if (scsb)
203  _softening_models.push_back(scsb);
204  else
205  paramError("softening_models", "Model " + soft_matl + " is not a softening model");
206  }
207  if (_softening_models.size() == 1)
208  {
209  // Reuse the same model in all 3 directions
210  _softening_models.push_back(_softening_models[0]);
211  _softening_models.push_back(_softening_models[0]);
212  }
213  else if (_softening_models.size() != 3)
214  paramError("softening_models", "Either 1 or 3 softening models must be specified");
215 }
std::vector< SmearedCrackSofteningBase * > _softening_models
The user-supplied list of softening models to be used in the 3 crack directions.
const std::string _elasticity_tensor_name
Name of the elasticity tensor material property.
void paramError(const std::string &param, Args... args) const
MaterialBase & getMaterialByName(const std::string &name, bool no_warn=false, bool no_dep=false)
SmearedCrackSofteningBase is the base class for a set of models that define the softening behavior of...
void mooseError(Args &&... args) const
bool hasGuaranteedMaterialProperty(const MaterialPropertyName &prop, Guarantee guarantee)

◆ initQpStatefulProperties()

void ComputeSmearedCrackingStress::initQpStatefulProperties ( )
overridevirtual

Reimplemented from ComputeMultipleInelasticStressBase.

Definition at line 126 of file ComputeSmearedCrackingStress.C.

127 {
129 
130  _crack_damage[_qp] = 0.0;
131 
133  _crack_max_strain[_qp](0) = 0.0;
134 
135  switch (_prescribed_crack_directions.size())
136  {
137  case 0:
138  {
140  break;
141  }
142  case 1:
143  {
144  _crack_rotation[_qp].zero();
145  switch (_prescribed_crack_directions[0])
146  {
147  case 0:
148  {
149  _crack_rotation[_qp](0, 0) = 1.0;
150  _crack_rotation[_qp](1, 1) = 1.0;
151  _crack_rotation[_qp](2, 2) = 1.0;
152  break;
153  }
154  case 1:
155  {
156  _crack_rotation[_qp](1, 0) = 1.0;
157  _crack_rotation[_qp](0, 1) = 1.0;
158  _crack_rotation[_qp](2, 2) = 1.0;
159  break;
160  }
161  case 2:
162  {
163  _crack_rotation[_qp](2, 0) = 1.0;
164  _crack_rotation[_qp](0, 1) = 1.0;
165  _crack_rotation[_qp](1, 2) = 1.0;
166  break;
167  }
168  }
169  break;
170  }
171  case 2:
172  {
173  mooseError("Number of prescribed crack directions cannot be 2");
174  break;
175  }
176  case 3:
177  {
178  for (unsigned int i = 0; i < _prescribed_crack_directions.size(); ++i)
179  {
180  RealVectorValue crack_dir_vec;
181  crack_dir_vec(_prescribed_crack_directions[i]) = 1.0;
182  _crack_rotation[_qp].fillColumn(i, crack_dir_vec);
183  }
184  }
185  }
186 }
MaterialProperty< RealVectorValue > & _crack_max_strain
MaterialProperty< RealVectorValue > & _crack_initiation_strain
MaterialProperty< RankTwoTensor > & _crack_rotation
static RankTwoTensorTempl Identity()
MaterialProperty< RealVectorValue > & _crack_damage
std::vector< unsigned int > _prescribed_crack_directions
User-prescribed cracking directions.
void mooseError(Args &&... args) const

◆ previouslyCracked()

bool ComputeSmearedCrackingStress::previouslyCracked ( )
protected

Check to see whether there was cracking in any diretion in the previous time step.

Returns
true if cracked, false if not cracked

Definition at line 601 of file ComputeSmearedCrackingStress.C.

Referenced by computeQpStress().

602 {
603  for (unsigned int i = 0; i < 3; ++i)
604  if (_crack_damage_old[_qp](i) > 0.0)
605  return true;
606  return false;
607 }
const MaterialProperty< RealVectorValue > & _crack_damage_old

◆ updateCrackingStateAndStress()

void ComputeSmearedCrackingStress::updateCrackingStateAndStress ( )
protectedvirtual

Update all cracking-related state variables and the stress tensor due to cracking in all directions.

Definition at line 373 of file ComputeSmearedCrackingStress.C.

Referenced by computeQpStress().

374 {
375  const Real youngs_modulus =
377 
378  Real cracking_stress = _cracking_stress[_qp];
379 
380  if (cracking_stress > 0)
381  {
382  // Initializing crack states
384 
385  for (unsigned i = 0; i < 3; ++i)
386  {
390  }
391 
392  // Compute crack orientations: updated _crack_rotation[_qp] based on current strain
393  RealVectorValue strain_in_crack_dir;
394  computeCrackStrainAndOrientation(strain_in_crack_dir);
395 
396  for (unsigned i = 0; i < 3; ++i)
397  {
398  if (strain_in_crack_dir(i) > _crack_max_strain[_qp](i))
399  _crack_max_strain[_qp](i) = strain_in_crack_dir(i);
400  }
401 
402  // Check for new cracks.
403  // Rotate stress to cracked orientation.
404  const RankTwoTensor & R = _crack_rotation[_qp];
405  RankTwoTensor sigmaPrime(_stress[_qp]);
406  sigmaPrime.rotate(R.transpose()); // stress in crack coordinates
407 
408  unsigned int num_cracks = 0;
409  for (unsigned int i = 0; i < 3; ++i)
410  {
411  if (_crack_damage_old[_qp](i) > 0.0)
412  ++num_cracks;
413  }
414 
415  bool cracked(false);
417  mooseAssert(_softening_models.size() == 3, "Must have 3 softening models");
418  for (unsigned int i = 0; i < 3; ++i)
419  {
420  sigma(i) = sigmaPrime(i, i);
421 
422  Real stiffness_ratio = 1.0 - _crack_damage[_qp](i);
423 
424  const bool pre_existing_crack = (_crack_damage_old[_qp](i) > 0.0);
425  const bool met_stress_criterion = (sigma(i) > cracking_stress);
426  const bool loading_existing_crack = (strain_in_crack_dir(i) >= _crack_max_strain[_qp](i));
427  const bool allowed_to_crack = (pre_existing_crack || num_cracks < _max_cracks);
428  bool new_crack = false;
429 
430  cracked |= pre_existing_crack;
431 
432  // Adjustments for newly created cracks
433  if (met_stress_criterion && !pre_existing_crack && allowed_to_crack)
434  {
435  new_crack = true;
436  ++num_cracks;
437 
438  // Assume Poisson's ratio drops to zero for this direction. Stiffness is then Young's
439  // modulus.
440  _crack_initiation_strain[_qp](i) = cracking_stress / youngs_modulus;
441 
444  }
445 
446  // Update stress and stiffness ratio according to specified crack release model
447  if (new_crack || (pre_existing_crack && loading_existing_crack))
448  {
449  cracked = true;
450  _softening_models[i]->computeCrackingRelease(sigma(i),
451  stiffness_ratio,
452  strain_in_crack_dir(i),
455  cracking_stress,
456  youngs_modulus);
457  _crack_damage[_qp](i) = 1.0 - stiffness_ratio;
458  }
459 
460  else if (cracked && _cracking_neg_fraction > 0 &&
461  _crack_initiation_strain[_qp](i) * _cracking_neg_fraction > strain_in_crack_dir(i) &&
462  -_crack_initiation_strain[_qp](i) * _cracking_neg_fraction < strain_in_crack_dir(i))
463  {
465  const Real Eo = cracking_stress / _crack_initiation_strain[_qp](i);
466  const Real Ec = Eo * (1.0 - _crack_damage_old[_qp](i));
467  const Real a = (Ec - Eo) / (4.0 * etr);
468  const Real b = 0.5 * (Ec + Eo);
469  const Real c = 0.25 * (Ec - Eo) * etr;
470  sigma(i) = (a * strain_in_crack_dir(i) + b) * strain_in_crack_dir(i) + c;
471  }
472  }
473 
474  if (cracked)
476  }
477 
478  _crack_flags[_qp](0) = 1.0 - _crack_damage[_qp](2);
479  _crack_flags[_qp](1) = 1.0 - _crack_damage[_qp](1);
480  _crack_flags[_qp](2) = 1.0 - _crack_damage[_qp](0);
481 }
void updateStressTensorForCracking(RankTwoTensor &tensor, const RealVectorValue &sigma)
Updates the full stress tensor to account for the effect of cracking using the provided stresses in t...
MaterialProperty< RealVectorValue > & _crack_max_strain
MaterialProperty< RealVectorValue > & _crack_initiation_strain
const unsigned int _max_cracks
Maximum number of cracks permitted at a material point.
const MaterialProperty< RankTwoTensor > & _crack_rotation_old
const MaterialProperty< RealVectorValue > & _crack_max_strain_old
MaterialProperty< RankTwoTensor > & _crack_rotation
const MaterialProperty< RankFourTensor > & _elasticity_tensor
Elasticity tensor material property.
std::vector< SmearedCrackSofteningBase * > _softening_models
The user-supplied list of softening models to be used in the 3 crack directions.
void computeCrackStrainAndOrientation(RealVectorValue &strain_in_crack_dir)
Compute the crack strain in the crack coordinate system.
const VariableValue & _cracking_stress
Input parameters for smeared crack models.
MaterialProperty< RealVectorValue > & _crack_flags
Vector of values going from 1 to 0 as crack damage accumulates.
static const std::string R
Definition: NS.h:162
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const Real _cracking_neg_fraction
Defines transition to changed stiffness during unloading.
MaterialProperty< RealVectorValue > & _crack_damage
const MaterialProperty< RealVectorValue > & _crack_damage_old
const MaterialProperty< RealVectorValue > & _crack_initiation_strain_old
MaterialProperty< RankTwoTensor > & _stress
Stress material property.
T getIsotropicYoungsModulus(const RankFourTensorTempl< T > &elasticity_tensor)
Get the Young&#39;s modulus for an isotropic elasticity tensor param elasticity_tensor the tensor (must b...

◆ updateLocalElasticityTensor()

void ComputeSmearedCrackingStress::updateLocalElasticityTensor ( )
protected

Update the local elasticity tensor (_local_elasticity_tensor) due to the effects of cracking.

Definition at line 260 of file ComputeSmearedCrackingStress.C.

Referenced by computeQpStress().

261 {
262  const Real youngs_modulus =
264 
265  bool cracking_locally_active = false;
266 
267  const Real cracking_stress = _cracking_stress[_qp];
268 
269  if (cracking_stress > 0)
270  {
271  RealVectorValue stiffness_ratio_local(1.0, 1.0, 1.0);
274  ePrime.rotate(R.transpose());
275 
276  for (unsigned int i = 0; i < 3; ++i)
277  {
278  // Update elasticity tensor based on crack status of the end of last time step
279  if (_crack_damage_old[_qp](i) > 0.0)
280  {
281  if (_cracking_neg_fraction == 0.0 && MooseUtils::absoluteFuzzyLessThan(ePrime(i, i), 0.0))
282  stiffness_ratio_local(i) = 1.0;
283  else if (_cracking_neg_fraction > 0.0 &&
286  {
288  const Real Eo = cracking_stress / _crack_initiation_strain_old[_qp](i);
289  const Real Ec = Eo * (1.0 - _crack_damage_old[_qp](i));
290  const Real a = (Ec - Eo) / (4 * etr);
291  const Real b = (Ec + Eo) / 2;
292  // Compute the ratio of the current transition stiffness to the original stiffness
293  stiffness_ratio_local(i) = (2.0 * a * etr + b) / Eo;
294  cracking_locally_active = true;
295  }
296  else
297  {
298  stiffness_ratio_local(i) = (1.0 - _crack_damage_old[_qp](i));
299  cracking_locally_active = true;
300  }
301  }
302  }
303 
304  if (cracking_locally_active)
305  {
306  // Update the elasticity tensor in the crack coordinate system
308  {
309  const bool c0_coupled = MooseUtils::absoluteFuzzyEqual(stiffness_ratio_local(0), 1.0);
310  const bool c1_coupled = MooseUtils::absoluteFuzzyEqual(stiffness_ratio_local(1), 1.0);
311  const bool c2_coupled = MooseUtils::absoluteFuzzyEqual(stiffness_ratio_local(2), 1.0);
312 
313  const Real c01 = (c0_coupled && c1_coupled ? 1.0 : 0.0);
314  const Real c02 = (c0_coupled && c2_coupled ? 1.0 : 0.0);
315  const Real c12 = (c1_coupled && c2_coupled ? 1.0 : 0.0);
316 
317  const Real c01_shear_retention = (c0_coupled && c1_coupled ? 1.0 : _shear_retention_factor);
318  const Real c02_shear_retention = (c0_coupled && c2_coupled ? 1.0 : _shear_retention_factor);
319  const Real c12_shear_retention = (c1_coupled && c2_coupled ? 1.0 : _shear_retention_factor);
320 
321  _local_elastic_vector[0] = (c0_coupled ? _elasticity_tensor[_qp](0, 0, 0, 0)
322  : stiffness_ratio_local(0) * youngs_modulus);
323  _local_elastic_vector[1] = _elasticity_tensor[_qp](0, 0, 1, 1) * c01;
324  _local_elastic_vector[2] = _elasticity_tensor[_qp](0, 0, 2, 2) * c02;
325  _local_elastic_vector[3] = (c1_coupled ? _elasticity_tensor[_qp](1, 1, 1, 1)
326  : stiffness_ratio_local(1) * youngs_modulus);
327  _local_elastic_vector[4] = _elasticity_tensor[_qp](1, 1, 2, 2) * c12;
328  _local_elastic_vector[5] = (c2_coupled ? _elasticity_tensor[_qp](2, 2, 2, 2)
329  : stiffness_ratio_local(2) * youngs_modulus);
330  _local_elastic_vector[6] = _elasticity_tensor[_qp](1, 2, 1, 2) * c12_shear_retention;
331  _local_elastic_vector[7] = _elasticity_tensor[_qp](0, 2, 0, 2) * c02_shear_retention;
332  _local_elastic_vector[8] = _elasticity_tensor[_qp](0, 1, 0, 1) * c01_shear_retention;
333  }
334  else // _cracked_elasticity_type == CrackedElasticityType::FULL
335  {
336  const Real & c0 = stiffness_ratio_local(0);
337  const Real & c1 = stiffness_ratio_local(1);
338  const Real & c2 = stiffness_ratio_local(2);
339 
340  const Real c01 = c0 * c1;
341  const Real c02 = c0 * c2;
342  const Real c12 = c1 * c2;
343 
344  const Real c01_shear_retention = std::max(c01, _shear_retention_factor);
345  const Real c02_shear_retention = std::max(c02, _shear_retention_factor);
346  const Real c12_shear_retention = std::max(c12, _shear_retention_factor);
347 
348  _local_elastic_vector[0] = _elasticity_tensor[_qp](0, 0, 0, 0) * c0;
349  _local_elastic_vector[1] = _elasticity_tensor[_qp](0, 0, 1, 1) * c01;
350  _local_elastic_vector[2] = _elasticity_tensor[_qp](0, 0, 2, 2) * c02;
351  _local_elastic_vector[3] = _elasticity_tensor[_qp](1, 1, 1, 1) * c1;
352  _local_elastic_vector[4] = _elasticity_tensor[_qp](1, 1, 2, 2) * c12;
353  _local_elastic_vector[5] = _elasticity_tensor[_qp](2, 2, 2, 2) * c2;
354  _local_elastic_vector[6] = _elasticity_tensor[_qp](1, 2, 1, 2) * c12_shear_retention;
355  _local_elastic_vector[7] = _elasticity_tensor[_qp](0, 2, 0, 2) * c02_shear_retention;
356  _local_elastic_vector[8] = _elasticity_tensor[_qp](0, 1, 0, 1) * c01_shear_retention;
357  }
358 
359  // Filling with 9 components is sufficient because these are the only nonzero entries
360  // for isotropic or orthotropic materials.
363 
364  // Rotate the modified elasticity tensor back into global coordinates
366  }
367  }
368  if (!cracking_locally_active)
370 }
bool absoluteFuzzyEqual(const T &var1, const T2 &var2, const T3 &tol=libMesh::TOLERANCE *libMesh::TOLERANCE)
const MaterialProperty< RankTwoTensor > & _crack_rotation_old
const MaterialProperty< RankFourTensor > & _elasticity_tensor
Elasticity tensor material property.
void fillFromInputVector(const std::vector< T > &input, FillMethod fill_method)
std::vector< Real > _local_elastic_vector
Vector helper to update local elasticity tensor.
enum ComputeSmearedCrackingStress::CrackedElasticityType _cracked_elasticity_type
const VariableValue & _cracking_stress
Input parameters for smeared crack models.
bool absoluteFuzzyLessThan(const T &var1, const T2 &var2, const T3 &tol=libMesh::TOLERANCE *libMesh::TOLERANCE)
void rotate(const TypeTensor< T > &R)
static const std::string R
Definition: NS.h:162
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const Real _cracking_neg_fraction
Defines transition to changed stiffness during unloading.
const Real _shear_retention_factor
Controls the amount of shear retained.
const MaterialProperty< RealVectorValue > & _crack_damage_old
const MaterialProperty< RealVectorValue > & _crack_initiation_strain_old
T getIsotropicYoungsModulus(const RankFourTensorTempl< T > &elasticity_tensor)
Get the Young&#39;s modulus for an isotropic elasticity tensor param elasticity_tensor the tensor (must b...
const MaterialProperty< RankTwoTensor > & _elastic_strain_old
Strain tensors.

◆ updateQpState()

void ComputeMultipleInelasticStress::updateQpState ( RankTwoTensor elastic_strain_increment,
RankTwoTensor combined_inelastic_strain_increment 
)
overrideprotectedvirtualinherited

Given the _strain_increment[_qp], iterate over all of the user-specified recompute materials in order to find an admissible stress (which is placed into _stress[_qp]) and set of inelastic strains, as well as the tangent operator (which is placed into _Jacobian_mult[_qp]).

Parameters
elastic_strain_incrementThe elastic part of _strain_increment[_qp] after the iterative process has converged
combined_inelastic_strain_incrementThe inelastic part of _strain_increment[_qp] after the iterative process has converged. This is a weighted sum of all the inelastic strains computed by all the plastic models during the Picard iterative scheme. The weights are dictated by the user using _inelastic_weights

Implements ComputeMultipleInelasticStressBase.

Definition at line 42 of file ComputeMultipleInelasticStress.C.

44 {
46  {
47  _console << std::endl
48  << "iteration output for ComputeMultipleInelasticStress solve:"
49  << " time=" << _t << " int_pt=" << _qp << std::endl;
50  }
51  Real l2norm_delta_stress;
52  Real first_l2norm_delta_stress = 1.0;
53  unsigned int counter = 0;
54 
55  std::vector<RankTwoTensor> inelastic_strain_increment;
56  inelastic_strain_increment.resize(_num_models);
57 
58  for (const auto i_rmm : index_range(_models))
59  inelastic_strain_increment[i_rmm].zero();
60 
61  RankTwoTensor stress_max, stress_min;
62 
63  do
64  {
65  for (const auto i_rmm : index_range(_models))
66  {
67  _models[i_rmm]->setQp(_qp);
68 
69  // initially assume the strain is completely elastic
70  elastic_strain_increment = _strain_increment[_qp];
71  // and subtract off all inelastic strain increments calculated so far
72  // except the one that we're about to calculate
73  for (const auto j_rmm : make_range(_num_models))
74  if (i_rmm != j_rmm)
75  elastic_strain_increment -= inelastic_strain_increment[j_rmm];
76 
77  // form the trial stress, with the check for changed elasticity constants
79  _stress[_qp] =
80  _elasticity_tensor[_qp] * (_elastic_strain_old[_qp] + elastic_strain_increment);
81  else
82  {
83  if (_damage_model)
84  _stress[_qp] = _undamaged_stress_old + _elasticity_tensor[_qp] * elastic_strain_increment;
85  else
86  _stress[_qp] = _stress_old[_qp] + _elasticity_tensor[_qp] * elastic_strain_increment;
87  }
88 
89  // given a trial stress (_stress[_qp]) and a strain increment (elastic_strain_increment)
90  // let the i^th model produce an admissible stress (as _stress[_qp]), and decompose
91  // the strain increment into an elastic part (elastic_strain_increment) and an
92  // inelastic part (inelastic_strain_increment[i_rmm])
94  elastic_strain_increment,
95  inelastic_strain_increment[i_rmm],
97 
98  if (i_rmm == 0)
99  {
100  stress_max = _stress[_qp];
101  stress_min = _stress[_qp];
102  }
103  else
104  {
105  for (const auto i : make_range(Moose::dim))
106  for (const auto j : make_range(Moose::dim))
107  if (_stress[_qp](i, j) > stress_max(i, j))
108  stress_max(i, j) = _stress[_qp](i, j);
109  else if (stress_min(i, j) > _stress[_qp](i, j))
110  stress_min(i, j) = _stress[_qp](i, j);
111  }
112  }
113 
114  // now check convergence in the stress:
115  // once the change in stress is within tolerance after each recompute material
116  // consider the stress to be converged
117  l2norm_delta_stress = (stress_max - stress_min).L2norm();
118  if (counter == 0 && l2norm_delta_stress > 0.0)
119  first_l2norm_delta_stress = l2norm_delta_stress;
120 
122  {
123  _console << "stress iteration number = " << counter << "\n"
124  << " relative l2 norm delta stress = "
125  << (0 == first_l2norm_delta_stress ? 0
126  : l2norm_delta_stress / first_l2norm_delta_stress)
127  << "\n"
128  << " stress convergence relative tolerance = " << _relative_tolerance << "\n"
129  << " absolute l2 norm delta stress = " << l2norm_delta_stress << "\n"
130  << " stress convergence absolute tolerance = " << _absolute_tolerance << std::endl;
131  }
132  ++counter;
133  } while (counter < _max_iterations && l2norm_delta_stress > _absolute_tolerance &&
134  (l2norm_delta_stress / first_l2norm_delta_stress) > _relative_tolerance &&
135  _num_models != 1);
136 
137  if (counter == _max_iterations && l2norm_delta_stress > _absolute_tolerance &&
138  (l2norm_delta_stress / first_l2norm_delta_stress) > _relative_tolerance)
139  throw MooseException("Max stress iteration hit during ComputeMultipleInelasticStress solve!");
140 
141  combined_inelastic_strain_increment.zero();
142  for (const auto i_rmm : make_range(_num_models))
143  combined_inelastic_strain_increment +=
144  _inelastic_weights[i_rmm] * inelastic_strain_increment[i_rmm];
145 
148 
150  for (const auto i_rmm : make_range(_num_models))
151  _material_timestep_limit[_qp] += 1.0 / _models[i_rmm]->computeTimeStepLimit();
152 
154  _material_timestep_limit[_qp] = std::numeric_limits<Real>::max();
155  else
157 }
bool _is_elasticity_tensor_guaranteed_isotropic
is the elasticity tensor guaranteed to be isotropic?
virtual void computeQpJacobianMult()
Using _elasticity_tensor[_qp] and the consistent tangent operators, _consistent_tangent_operator[...] computed by the inelastic models, compute _Jacobian_mult[_qp].
bool absoluteFuzzyEqual(const T &var1, const T2 &var2, const T3 &tol=libMesh::TOLERANCE *libMesh::TOLERANCE)
T L2norm(const RankTwoTensorTempl< T > &r2tensor)
const MaterialProperty< RankFourTensor > & _elasticity_tensor
Elasticity tensor material property.
const MaterialProperty< RankTwoTensor > & _strain_increment
static constexpr std::size_t dim
std::vector< StressUpdateBase * > _models
The user supplied list of inelastic models to use in the simulation.
virtual void computeAdmissibleState(unsigned model_number, RankTwoTensor &elastic_strain_increment, RankTwoTensor &inelastic_strain_increment, RankFourTensor &consistent_tangent_operator)
Given a trial stress (_stress[_qp]) and a strain increment (elastic_strain_increment) let the model_n...
std::vector< RankFourTensor > _consistent_tangent_operator
the consistent tangent operators computed by each plastic model
DamageBaseTempl< false > * _damage_model
Pointer to the damage model.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
std::vector< Real > _inelastic_weights
_inelastic_strain = sum_i (_inelastic_weights_i * inelastic_strain_from_model_i)
const MaterialProperty< RankTwoTensor > & _stress_old
Old state of the stress tensor material property.
IntRange< T > make_range(T beg, T end)
const bool _perform_finite_strain_rotations
after updateQpState, rotate the stress, elastic_strain, inelastic_strain and Jacobian_mult using _rot...
static const std::complex< double > j(0, 1)
Complex number "j" (also known as "i")
MaterialProperty< RankTwoTensor > & _stress
Stress material property.
const bool & currentlyComputingJacobian() const
const MaterialProperty< RankTwoTensor > & _elastic_strain_old
Strain tensors.
auto index_range(const T &sizable)
const unsigned int _max_iterations
Input parameters associated with the recompute iteration to return the stress state to the yield surf...

◆ updateQpStateSingleModel()

void ComputeMultipleInelasticStressBase::updateQpStateSingleModel ( unsigned  model_number,
RankTwoTensor elastic_strain_increment,
RankTwoTensor combined_inelastic_strain_increment 
)
protectedvirtualinherited

An optimised version of updateQpState that gets used when the number of plastic models is unity, or when we're cycling through models Given the _strain_increment[_qp], find an admissible stress (which is put into _stress[_qp]) and inelastic strain, as well as the tangent operator (which is placed into _Jacobian_mult[_qp])

Parameters
model_numberUse this model number
elastic_strain_incrementThe elastic part of _strain_increment[_qp]
combined_inelastic_strain_incrementThe inelastic part of _strain_increment[_qp]

Definition at line 305 of file ComputeMultipleInelasticStressBase.C.

Referenced by ComputeMultipleInelasticStressBase::computeQpStressIntermediateConfiguration().

309 {
310  for (auto model : _models)
311  model->setQp(_qp);
312 
313  elastic_strain_increment = _strain_increment[_qp];
314 
315  // If the elasticity tensor values have changed and the tensor is isotropic,
316  // use the old strain to calculate the old stress
318  _stress[_qp] = _elasticity_tensor[_qp] * (_elastic_strain_old[_qp] + elastic_strain_increment);
319  else
320  {
321  if (_damage_model)
322  _stress[_qp] = _undamaged_stress_old + _elasticity_tensor[_qp] * elastic_strain_increment;
323  else
324  _stress[_qp] = _stress_old[_qp] + _elasticity_tensor[_qp] * elastic_strain_increment;
325  }
326 
327  computeAdmissibleState(model_number,
328  elastic_strain_increment,
329  combined_inelastic_strain_increment,
331 
333  {
337  {
339  mooseAssert(A.isSymmetric(), "Tangent operator isn't symmetric");
340  _Jacobian_mult[_qp] = A.invSymm() * _elasticity_tensor[_qp];
341  }
342  else
344  }
345 
346  _material_timestep_limit[_qp] = _models[0]->computeTimeStepLimit();
347 
348  /* propagate internal variables, etc, to this timestep for those inelastic models where
349  * "updateState" is not called */
350  for (const auto i_rmm : make_range(_num_models))
351  if (i_rmm != model_number)
352  _models[i_rmm]->propagateQpStatefulProperties();
353 }
MaterialProperty< RankFourTensor > & _Jacobian_mult
derivative of stress w.r.t. strain (_dstress_dstrain)
bool _is_elasticity_tensor_guaranteed_isotropic
is the elasticity tensor guaranteed to be isotropic?
const RankFourTensor _identity_symmetric_four
Rank four symmetric identity tensor.
const MaterialProperty< RankFourTensor > & _elasticity_tensor
Elasticity tensor material property.
const MaterialProperty< RankTwoTensor > & _strain_increment
std::vector< StressUpdateBase * > _models
The user supplied list of inelastic models to use in the simulation.
virtual void computeAdmissibleState(unsigned model_number, RankTwoTensor &elastic_strain_increment, RankTwoTensor &inelastic_strain_increment, RankFourTensor &consistent_tangent_operator)
Given a trial stress (_stress[_qp]) and a strain increment (elastic_strain_increment) let the model_n...
std::vector< RankFourTensor > _consistent_tangent_operator
the consistent tangent operators computed by each plastic model
TangentCalculationMethod _tangent_calculation_method
Calculation method for the tangent modulus.
DamageBaseTempl< false > * _damage_model
Pointer to the damage model.
const PertinentGeochemicalSystem model(database, {"H2O", "H+", "HCO3-", "O2(aq)", "Ca++", ">(s)FeOH", "radius_neg1", "radius_neg1.5"}, {"Calcite"}, {}, {"Calcite_asdf"}, {"CH4(aq)"}, {">(s)FeOCa+"}, "O2(aq)", "e-")
const MaterialProperty< RankTwoTensor > & _stress_old
Old state of the stress tensor material property.
IntRange< T > make_range(T beg, T end)
const bool _perform_finite_strain_rotations
after updateQpState, rotate the stress, elastic_strain, inelastic_strain and Jacobian_mult using _rot...
MaterialProperty< RankTwoTensor > & _stress
Stress material property.
const bool & currentlyComputingJacobian() const
const MaterialProperty< RankTwoTensor > & _elastic_strain_old
Strain tensors.

◆ updateStressTensorForCracking()

void ComputeSmearedCrackingStress::updateStressTensorForCracking ( RankTwoTensor tensor,
const RealVectorValue sigma 
)
protected

Updates the full stress tensor to account for the effect of cracking using the provided stresses in the crack directions.

The tensor is rotated into the crack coordinates, modified, and rotated back.

Parameters
tensorStress tensor to be updated
sigmaVector of stresses in crack directions

Definition at line 575 of file ComputeSmearedCrackingStress.C.

Referenced by updateCrackingStateAndStress().

577 {
578  // Get transformation matrix
579  const RankTwoTensor & R = _crack_rotation[_qp];
580  // Rotate to crack frame
581  tensor.rotate(R.transpose());
582 
583  // Reset stress if cracked
584  for (unsigned int i = 0; i < 3; ++i)
585  if (_crack_damage[_qp](i) > 0.0)
586  {
587  const Real stress_correction_ratio = (tensor(i, i) - sigma(i)) / tensor(i, i);
588  if (stress_correction_ratio > _max_stress_correction)
589  tensor(i, i) *= (1.0 - _max_stress_correction);
590  else if (stress_correction_ratio < -_max_stress_correction)
591  tensor(i, i) *= (1.0 + _max_stress_correction);
592  else
593  tensor(i, i) = sigma(i);
594  }
595 
596  // Rotate back to global frame
597  tensor.rotate(R);
598 }
MaterialProperty< RankTwoTensor > & _crack_rotation
void rotate(const RankTwoTensorTempl< Real > &R)
const Real _max_stress_correction
Controls the maximum amount that the damaged elastic stress is corrected to folow the release model d...
static const std::string R
Definition: NS.h:162
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
MaterialProperty< RealVectorValue > & _crack_damage

◆ validParams()

InputParameters ComputeSmearedCrackingStress::validParams ( )
static

Definition at line 18 of file ComputeSmearedCrackingStress.C.

19 {
21  params.addClassDescription("Compute stress using a fixed smeared cracking model");
22  params.addRequiredParam<std::vector<MaterialName>>(
23  "softening_models",
24  "The material objects used to compute softening behavior for loading a crack."
25  "Either 1 or 3 models must be specified. If a single model is specified, it is"
26  "used for all directions. If 3 models are specified, they will be used for the"
27  "3 crack directions in sequence");
28  params.addRequiredCoupledVar(
29  "cracking_stress",
30  "The stress threshold beyond which cracking occurs. Negative values prevent cracking.");
31  MultiMooseEnum direction("x y z");
32  params.addParam<MultiMooseEnum>(
33  "prescribed_crack_directions", direction, "Prescribed directions of first cracks");
34  params.addParam<unsigned int>(
35  "max_cracks", 3, "The maximum number of cracks allowed at a material point.");
36  params.addRangeCheckedParam<Real>("cracking_neg_fraction",
37  0,
38  "cracking_neg_fraction <= 1 & cracking_neg_fraction >= 0",
39  "The fraction of the cracking strain at which "
40  "a transition begins during decreasing "
41  "strain to the original stiffness.");
42  params.addParam<Real>(
43  "max_stress_correction",
44  1.0,
45  "Maximum permitted correction to the predicted stress as a ratio of the "
46  "stress change to the predicted stress from the previous step's damage level. "
47  "Values less than 1 will improve robustness, but not be as accurate.");
48 
49  params.addRangeCheckedParam<Real>(
50  "shear_retention_factor",
51  0.0,
52  "shear_retention_factor>=0 & shear_retention_factor<=1.0",
53  "Fraction of original shear stiffness to be retained after cracking");
54  params.set<std::vector<MaterialName>>("inelastic_models") = {};
55 
56  MooseEnum crackedElasticityType("DIAGONAL FULL", "DIAGONAL");
57  crackedElasticityType.addDocumentation(
58  "DIAGONAL", "Zero out terms coupling with directions orthogonal to a crack (legacy)");
59  crackedElasticityType.addDocumentation(
60  "FULL", "Consistently scale all entries based on damage (recommended)");
61  params.addParam<MooseEnum>(
62  "cracked_elasticity_type",
63  crackedElasticityType,
64  "Method to modify the local elasticity tensor to account for cracking");
65 
66  return params;
67 }
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
T & set(const std::string &name, bool quiet_mode=false)
void addRequiredParam(const std::string &name, const std::string &doc_string)
void addRequiredCoupledVar(const std::string &name, const std::string &doc_string)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void addClassDescription(const std::string &doc_string)
void addRangeCheckedParam(const std::string &name, const T &value, const std::string &parsed_function, const std::string &doc_string)

Member Data Documentation

◆ _absolute_tolerance

const Real ComputeMultipleInelasticStressBase::_absolute_tolerance
protectedinherited

◆ _all_models_isotropic

bool ComputeMultipleInelasticStressBase::_all_models_isotropic
protectedinherited

are all inelastic models inherently isotropic? (not the case for e.g. weak plane plasticity models)

Definition at line 179 of file ComputeMultipleInelasticStressBase.h.

Referenced by ComputeMultipleInelasticStressBase::finiteStrainRotation(), and ComputeMultipleInelasticStressBase::initialSetup().

◆ _base_name

const std::string ComputeGeneralStressBase::_base_name
protectedinherited

Base name prepended to all material property names to allow for multi-material systems.

Definition at line 43 of file ComputeGeneralStressBase.h.

Referenced by ComputeLinearElasticStress::initialSetup(), and ComputeCosseratLinearElasticStress::initialSetup().

◆ _consistent_tangent_operator

std::vector<RankFourTensor> ComputeMultipleInelasticStressBase::_consistent_tangent_operator
protectedinherited

◆ _crack_damage

MaterialProperty<RealVectorValue>& ComputeSmearedCrackingStress::_crack_damage
protected

◆ _crack_damage_old

const MaterialProperty<RealVectorValue>& ComputeSmearedCrackingStress::_crack_damage_old
protected

◆ _crack_flags

MaterialProperty<RealVectorValue>& ComputeSmearedCrackingStress::_crack_flags
protected

Vector of values going from 1 to 0 as crack damage accumulates.

Legacy property for backward compatibility – remove in the future.

Definition at line 108 of file ComputeSmearedCrackingStress.h.

Referenced by updateCrackingStateAndStress().

◆ _crack_initiation_strain

MaterialProperty<RealVectorValue>& ComputeSmearedCrackingStress::_crack_initiation_strain
protected

◆ _crack_initiation_strain_old

const MaterialProperty<RealVectorValue>& ComputeSmearedCrackingStress::_crack_initiation_strain_old
protected

◆ _crack_max_strain

MaterialProperty<RealVectorValue>& ComputeSmearedCrackingStress::_crack_max_strain
protected

◆ _crack_max_strain_old

const MaterialProperty<RealVectorValue>& ComputeSmearedCrackingStress::_crack_max_strain_old
protected

Definition at line 122 of file ComputeSmearedCrackingStress.h.

Referenced by updateCrackingStateAndStress().

◆ _crack_rotation

MaterialProperty<RankTwoTensor>& ComputeSmearedCrackingStress::_crack_rotation
protected

◆ _crack_rotation_old

const MaterialProperty<RankTwoTensor>& ComputeSmearedCrackingStress::_crack_rotation_old
protected

◆ _cracked_elasticity_type

enum ComputeSmearedCrackingStress::CrackedElasticityType ComputeSmearedCrackingStress::_cracked_elasticity_type
protected

◆ _cracking_neg_fraction

const Real ComputeSmearedCrackingStress::_cracking_neg_fraction
protected

Defines transition to changed stiffness during unloading.

Definition at line 88 of file ComputeSmearedCrackingStress.h.

Referenced by updateCrackingStateAndStress(), and updateLocalElasticityTensor().

◆ _cracking_stress

const VariableValue& ComputeSmearedCrackingStress::_cracking_stress
protected

Input parameters for smeared crack models.

Threshold at which cracking initiates if tensile stress exceeds it

Definition at line 79 of file ComputeSmearedCrackingStress.h.

Referenced by updateCrackingStateAndStress(), and updateLocalElasticityTensor().

◆ _cycle_models

const bool ComputeMultipleInelasticStressBase::_cycle_models
protectedinherited

whether to cycle through the models, using only one model per timestep

Definition at line 157 of file ComputeMultipleInelasticStressBase.h.

Referenced by ComputeMultipleInelasticStressBase::computeQpStressIntermediateConfiguration().

◆ _damage_model

DamageBaseTempl<false>* ComputeMultipleInelasticStressBase::_damage_model
protectedinherited

◆ _elastic_strain

MaterialProperty<RankTwoTensor>& ComputeGeneralStressBase::_elastic_strain
protectedinherited

◆ _elastic_strain_old

const MaterialProperty<RankTwoTensor>& ComputeMultipleInelasticStressBase::_elastic_strain_old
protectedinherited

◆ _elasticity_tensor

const MaterialProperty<RankFourTensor>& ComputeFiniteStrainElasticStress::_elasticity_tensor
protectedinherited

◆ _elasticity_tensor_name

const std::string ComputeFiniteStrainElasticStress::_elasticity_tensor_name
protectedinherited

Name of the elasticity tensor material property.

Definition at line 33 of file ComputeFiniteStrainElasticStress.h.

Referenced by ComputeFiniteStrainElasticStress::computeQpStress(), initialSetup(), and ComputeMultipleInelasticStressBase::initialSetup().

◆ _extra_stress

const MaterialProperty<RankTwoTensor>& ComputeGeneralStressBase::_extra_stress
protectedinherited

Extra stress tensor.

Definition at line 53 of file ComputeGeneralStressBase.h.

Referenced by ComputeGeneralStressBase::computeQpProperties().

◆ _identity_symmetric_four

const RankFourTensor ComputeMultipleInelasticStressBase::_identity_symmetric_four
protectedinherited

◆ _inelastic_strain

MaterialProperty<RankTwoTensor>& ComputeMultipleInelasticStressBase::_inelastic_strain
protectedinherited

◆ _inelastic_strain_old

const MaterialProperty<RankTwoTensor>& ComputeMultipleInelasticStressBase::_inelastic_strain_old
protectedinherited

◆ _inelastic_weights

std::vector<Real> ComputeMultipleInelasticStressBase::_inelastic_weights
protectedinherited

_inelastic_strain = sum_i (_inelastic_weights_i * inelastic_strain_from_model_i)

Definition at line 151 of file ComputeMultipleInelasticStressBase.h.

Referenced by ComputeMultipleInelasticStressBase::initialSetup(), and ComputeMultipleInelasticStress::updateQpState().

◆ _initial_stress_fcn

std::vector<const Function *> ComputeGeneralStressBase::_initial_stress_fcn
protectedinherited

initial stress components

Definition at line 56 of file ComputeGeneralStressBase.h.

◆ _internal_solve_full_iteration_history

const bool ComputeMultipleInelasticStressBase::_internal_solve_full_iteration_history
protectedinherited

◆ _is_elasticity_tensor_guaranteed_isotropic

bool ComputeMultipleInelasticStressBase::_is_elasticity_tensor_guaranteed_isotropic
protectedinherited

◆ _Jacobian_mult

MaterialProperty<RankFourTensor>& ComputeGeneralStressBase::_Jacobian_mult
protectedinherited

◆ _local_elastic_vector

std::vector<Real> ComputeSmearedCrackingStress::_local_elastic_vector
protected

Vector helper to update local elasticity tensor.

Definition at line 133 of file ComputeSmearedCrackingStress.h.

Referenced by ComputeSmearedCrackingStress(), and updateLocalElasticityTensor().

◆ _local_elasticity_tensor

RankFourTensor ComputeSmearedCrackingStress::_local_elasticity_tensor
protected

Definition at line 126 of file ComputeSmearedCrackingStress.h.

Referenced by computeQpStress(), and updateLocalElasticityTensor().

◆ _material_timestep_limit

MaterialProperty<Real>& ComputeMultipleInelasticStressBase::_material_timestep_limit
protectedinherited

◆ _max_cracks

const unsigned int ComputeSmearedCrackingStress::_max_cracks
protected

Maximum number of cracks permitted at a material point.

Definition at line 85 of file ComputeSmearedCrackingStress.h.

Referenced by updateCrackingStateAndStress().

◆ _max_iterations

const unsigned int ComputeMultipleInelasticStressBase::_max_iterations
protectedinherited

Input parameters associated with the recompute iteration to return the stress state to the yield surface.

Definition at line 118 of file ComputeMultipleInelasticStressBase.h.

Referenced by ComputeMultipleInelasticStress::updateQpState(), and ComputeCreepPlasticityStress::updateQpState().

◆ _max_stress_correction

const Real ComputeSmearedCrackingStress::_max_stress_correction
protected

Controls the maximum amount that the damaged elastic stress is corrected to folow the release model during a time step.

Definition at line 95 of file ComputeSmearedCrackingStress.h.

Referenced by updateStressTensorForCracking().

◆ _mechanical_strain

const MaterialProperty<RankTwoTensor>& ComputeGeneralStressBase::_mechanical_strain
protectedinherited

◆ _models

std::vector<StressUpdateBase *> ComputeMultipleInelasticStressBase::_models
protectedinherited

The user supplied list of inelastic models to use in the simulation.

Users should take care to list creep models first and plasticity models last to allow for the case when a creep model relaxes the stress state inside of the yield surface in an iteration.

Definition at line 173 of file ComputeMultipleInelasticStressBase.h.

Referenced by ComputeMultipleInelasticStressBase::computeAdmissibleState(), computeQpStress(), ComputeCreepPlasticityStress::initialSetup(), ComputeMultipleInelasticStressBase::initialSetup(), ComputeMultipleInelasticStress::updateQpState(), ComputeCreepPlasticityStress::updateQpState(), and ComputeMultipleInelasticStressBase::updateQpStateSingleModel().

◆ _num_models

unsigned ComputeMultipleInelasticStressBase::_num_models
protectedinherited

◆ _perform_finite_strain_rotations

const bool ComputeMultipleInelasticStressBase::_perform_finite_strain_rotations
protectedinherited

◆ _prescribed_crack_directions

std::vector<unsigned int> ComputeSmearedCrackingStress::_prescribed_crack_directions
protected

User-prescribed cracking directions.

Definition at line 82 of file ComputeSmearedCrackingStress.h.

Referenced by ComputeSmearedCrackingStress(), getNumKnownCrackDirs(), and initQpStatefulProperties().

◆ _relative_tolerance

const Real ComputeMultipleInelasticStressBase::_relative_tolerance
protectedinherited

◆ _rotation_increment

const MaterialProperty<RankTwoTensor>& ComputeFiniteStrainElasticStress::_rotation_increment
protectedinherited

◆ _rotation_total

MaterialProperty<RankTwoTensor>& ComputeFiniteStrainElasticStress::_rotation_total
protectedinherited

Rotation up to current step "n" to compute anisotropic elasticity tensor.

Definition at line 37 of file ComputeFiniteStrainElasticStress.h.

Referenced by ComputeFiniteStrainElasticStress::computeQpStress(), and ComputeFiniteStrainElasticStress::initQpStatefulProperties().

◆ _rotation_total_old

const MaterialProperty<RankTwoTensor>& ComputeFiniteStrainElasticStress::_rotation_total_old
protectedinherited

Rotation up to "n - 1" (previous) step to compute anisotropic elasticity tensor.

Definition at line 39 of file ComputeFiniteStrainElasticStress.h.

Referenced by ComputeFiniteStrainElasticStress::computeQpStress().

◆ _shear_retention_factor

const Real ComputeSmearedCrackingStress::_shear_retention_factor
protected

Controls the amount of shear retained.

Definition at line 91 of file ComputeSmearedCrackingStress.h.

Referenced by updateLocalElasticityTensor().

◆ _softening_models

std::vector<SmearedCrackSofteningBase *> ComputeSmearedCrackingStress::_softening_models
protected

The user-supplied list of softening models to be used in the 3 crack directions.

Definition at line 130 of file ComputeSmearedCrackingStress.h.

Referenced by initialSetup(), and updateCrackingStateAndStress().

◆ _strain_increment

const MaterialProperty<RankTwoTensor>& ComputeMultipleInelasticStressBase::_strain_increment
protectedinherited

◆ _stress

MaterialProperty<RankTwoTensor>& ComputeGeneralStressBase::_stress
protectedinherited

Stress material property.

Definition at line 48 of file ComputeGeneralStressBase.h.

Referenced by ComputeMultipleInelasticCosseratStress::computeAdmissibleState(), ComputeMultipleInelasticStressBase::computeAdmissibleState(), ComputeGeneralStressBase::computeQpProperties(), ComputeStrainIncrementBasedStress::computeQpStress(), ComputeLinearElasticStress::computeQpStress(), ComputeFiniteStrainElasticStress::computeQpStress(), computeQpStress(), ComputeCosseratLinearElasticStress::computeQpStress(), FiniteStrainPlasticMaterial::computeQpStress(), ComputeLinearElasticPFFractureStress::computeQpStress(), ComputeMultiPlasticityStress::computeQpStress(), ComputeLinearViscoelasticStress::computeQpStress(), ComputeMultipleCrystalPlasticityStress::computeQpStress(), ComputeMultipleInelasticStressBase::computeQpStress(), AbaqusUMATStress::computeQpStress(), ComputeMultipleInelasticStressBase::computeQpStressIntermediateConfiguration(), ComputeLinearElasticPFFractureStress::computeStrainSpectral(), ComputeLinearElasticPFFractureStress::computeStrainVolDev(), ComputeLinearElasticPFFractureStress::computeStressSpectral(), ComputeCreepPlasticityStress::computeTangentOperators(), ComputeMultipleInelasticStressBase::finiteStrainRotation(), ComputeGeneralStressBase::initQpStatefulProperties(), FiniteStrainCrystalPlasticity::initQpStatefulProperties(), FiniteStrainUObasedCP::initQpStatefulProperties(), FiniteStrainHyperElasticViscoPlastic::initQpStatefulProperties(), ComputeMultiPlasticityStress::postReturnMap(), FiniteStrainUObasedCP::postSolveQp(), FiniteStrainHyperElasticViscoPlastic::postSolveQp(), FiniteStrainCrystalPlasticity::postSolveQp(), updateCrackingStateAndStress(), ComputeMultipleInelasticStress::updateQpState(), ComputeCreepPlasticityStress::updateQpState(), and ComputeMultipleInelasticStressBase::updateQpStateSingleModel().

◆ _stress_old

const MaterialProperty<RankTwoTensor>& ComputeFiniteStrainElasticStress::_stress_old
protectedinherited

◆ _tangent_calculation_method

TangentCalculationMethod ComputeMultipleInelasticStressBase::_tangent_calculation_method
protectedinherited

◆ _tangent_computation_flag

std::vector<bool> ComputeMultipleInelasticStressBase::_tangent_computation_flag
protectedinherited

Flags to compute tangent during updateState call.

Definition at line 145 of file ComputeMultipleInelasticStressBase.h.

Referenced by ComputeMultipleInelasticStressBase::computeAdmissibleState(), and ComputeMultipleInelasticStressBase::initialSetup().

◆ _tangent_operator_type

enum ComputeMultipleInelasticStressBase::TangentOperatorEnum ComputeMultipleInelasticStressBase::_tangent_operator_type
protectedinherited

◆ _undamaged_stress_old

RankTwoTensor ComputeMultipleInelasticStressBase::_undamaged_stress_old
protectedinherited

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