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
ADComputeSmearedCrackingStress Class Reference

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

#include <ADComputeSmearedCrackingStress.h>

Inheritance diagram for ADComputeSmearedCrackingStress:
[legend]

Public Types

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

Public Member Functions

 ADComputeSmearedCrackingStress (const InputParameters &parameters)
 
virtual void initialSetup () override
 
virtual void initQpStatefulProperties () override
 
virtual void computeQpStress () override
 
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
 
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)
 
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 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 ADVariableValuegetADDefaultValue (const std::string &var_name) const
 
const ADVectorVariableValuegetADDefaultVectorValue (const std::string &var_name) const
 
const ADVariableGradientgetADDefaultGradient () const
 
const ADVectorVariableGradientgetADDefaultVectorGradient () const
 
const ADVariableSecondgetADDefaultSecond () const
 
const ADVectorVariableCurlgetADDefaultCurl () const
 
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)
 
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)
 
std::unordered_map< SubdomainID, std::vector< MaterialBase *> > buildRequiredMaterials (bool allow_stateful=true)
 
void statefulPropertiesAllowed (bool)
 
bool getMaterialPropertyCalled () const
 
const GenericMaterialProperty< T, is_ad > & getPossiblyConstantGenericMaterialPropertyByName (const MaterialPropertyName &prop_name, MaterialData &material_data, const unsigned int state)
 
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)
 
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...
 
using ADR2 = Moose::GenericType< R2, true >
 
using ADR4 = Moose::GenericType< R4, true >
 
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 (ADRealVectorValue &strain_in_crack_dir)
 Compute the crack strain in the crack coordinate system. More...
 
void updateStressTensorForCracking (ADRankTwoTensor &tensor, const ADRealVectorValue &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 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 ()
 Rotate _elastic_strain, _stress, and _inelastic_strain to the new configuration. More...
 
virtual void updateQpState (ADRankTwoTensor &elastic_strain_increment, ADRankTwoTensor &combined_inelastic_strain_increment)
 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. More...
 
virtual void updateQpStateSingleModel (unsigned model_number, ADRankTwoTensor &elastic_strain_increment, ADRankTwoTensor &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. More...
 
virtual void computeAdmissibleState (unsigned model_number, ADRankTwoTensor &elastic_strain_increment, ADRankTwoTensor &inelastic_strain_increment)
 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). 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 ()
 
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
 
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 ()
 
bool checkVar (const std::string &var_name, unsigned int comp=0, unsigned int comp_bound=0) const
 
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
 
void validateExecutionerType (const std::string &name, const std::string &fn_name) const
 
std::vector< T > coupledVectorHelper (const std::string &var_name, const Func &func) const
 
void markMatPropRequested (const std::string &)
 
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 ADComputeSmearedCrackingStress::CrackedElasticityType _cracked_elasticity_type
 
ADMaterialProperty< RealVectorValue > & _crack_flags
 Vector of values going from 1 to 0 as crack damage accumulates. More...
 
ADRankFourTensor _local_elasticity_tensor
 Variables used by multiple methods within the calculation for a single material point. More...
 
std::vector< ADSmearedCrackSofteningBase * > _softening_models
 The user-supplied list of softening models to be used in the 3 crack directions. More...
 
std::vector< ADReal_local_elastic_vector
 Vector helper to update local elasticity tensor. More...
 
const bool _perform_finite_strain_rotations
 after updateQpState, rotate the stress, elastic_strain, and inelastic_strain using _rotation_increment More...
 
ADMaterialProperty< 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...
 
const unsigned _num_models
 number of plastic models More...
 
const std::vector< Real_inelastic_weights
 _inelastic_strain = sum_i (_inelastic_weights_i * inelastic_strain_from_model_i) More...
 
const bool _cycle_models
 whether to cycle through the models, using only one model per timestep More...
 
MaterialProperty< Real > & _material_timestep_limit
 
std::vector< ADStressUpdateBase * > _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...
 
DamageBaseTempl< true > * _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 ADMaterialProperty< R4 > & _elasticity_tensor
 Elasticity tensor material property. More...
 
const ADMaterialProperty< R2 > & _strain_increment
 
ADMaterialProperty< 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 ADMaterialProperty< RankTwoTensor > & _rotation_increment
 
const MaterialProperty< R2 > & _stress_old
 The old stress tensor. More...
 
const MaterialProperty< R2 > & _elastic_strain_old
 The old elastic strain is used to calculate the old stress in the case of variable elasticity tensors. More...
 
 usingComputeStressBaseMembers
 
const std::string _base_name
 Base name of the material system. More...
 
const ADMaterialProperty< R2 > & _mechanical_strain
 
ADMaterialProperty< R2 > & _stress
 The stress tensor to be calculated. More...
 
ADMaterialProperty< R2 > & _elastic_strain
 
std::vector< const MaterialProperty< R2 > * > _extra_stresses
 Extra stress tensors. More...
 
std::vector< const Function * > _initial_stress_fcn
 initial stress components 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
 
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::vector< std::unique_ptr< VariableValue > > > _default_value
 
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 ADVariableValue_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 ADReal _cracking_neg_fraction
 Defines transition to changed stiffness during unloading. More...
 
const ADReal _shear_retention_factor
 Controls the amount of shear retained. More...
 
const ADReal _max_stress_correction
 Controls the maximum amount that the damaged elastic stress is corrected to folow the release model during a time step. More...
 
ADMaterialProperty< RealVectorValue > & _crack_damage
 
const MaterialProperty< RealVectorValue > & _crack_damage_old
 
ADMaterialProperty< RankTwoTensor > & _crack_rotation
 
const MaterialProperty< RankTwoTensor > & _crack_rotation_old
 
ADMaterialProperty< RealVectorValue > & _crack_initiation_strain
 
const MaterialProperty< RealVectorValue > & _crack_initiation_strain_old
 
ADMaterialProperty< RealVectorValue > & _crack_max_strain
 
const MaterialProperty< RealVectorValue > & _crack_max_strain_old
 
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
 

Static Protected Attributes

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

Detailed Description

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

Definition at line 21 of file ADComputeSmearedCrackingStress.h.

Member Typedef Documentation

◆ ADR2

template<typename R2 , typename R4 >
using ADComputeFiniteStrainElasticStressTempl< R2, R4 >::ADR2 = Moose::GenericType<R2, true>
protectedinherited

Definition at line 32 of file ADComputeFiniteStrainElasticStress.h.

◆ ADR4

template<typename R2 , typename R4 >
using ADComputeFiniteStrainElasticStressTempl< R2, R4 >::ADR4 = Moose::GenericType<R4, true>
protectedinherited

Definition at line 33 of file ADComputeFiniteStrainElasticStress.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 ADComputeSmearedCrackingStress.h.

enum ADComputeSmearedCrackingStress::CrackedElasticityType _cracked_elasticity_type
DIAGONAL

Constructor & Destructor Documentation

◆ ADComputeSmearedCrackingStress()

ADComputeSmearedCrackingStress::ADComputeSmearedCrackingStress ( const InputParameters parameters)

Definition at line 70 of file ADComputeSmearedCrackingStress.C.

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

Member Function Documentation

◆ computeAdmissibleState()

void ADComputeMultipleInelasticStress::computeAdmissibleState ( unsigned  model_number,
ADRankTwoTensor elastic_strain_increment,
ADRankTwoTensor inelastic_strain_increment 
)
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).

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

Definition at line 389 of file ADComputeMultipleInelasticStress.C.

Referenced by ADComputeMultipleInelasticStress::updateQpState(), and ADComputeMultipleInelasticStress::updateQpStateSingleModel().

393 {
394  // Properly update material properties (necessary if substepping is employed).
395  _models[model_number]->resetIncrementalMaterialProperties();
396 
397  if (_damage_model)
398  _models[model_number]->updateState(elastic_strain_increment,
399  inelastic_strain_increment,
401  _stress[_qp],
405  else if (_models[model_number]->substeppingCapabilityEnabled() &&
407  {
408  _models[model_number]->updateStateSubstep(elastic_strain_increment,
409  inelastic_strain_increment,
411  _stress[_qp],
412  _stress_old[_qp],
415  }
416  else
417  _models[model_number]->updateState(elastic_strain_increment,
418  inelastic_strain_increment,
420  _stress[_qp],
421  _stress_old[_qp],
424 }
ADMaterialProperty< R2 > & _stress
The stress tensor to be calculated.
const bool _perform_finite_strain_rotations
after updateQpState, rotate the stress, elastic_strain, and inelastic_strain using _rotation_incremen...
unsigned int _qp
const ADMaterialProperty< RankTwoTensor > & _rotation_increment
const ADMaterialProperty< R4 > & _elasticity_tensor
Elasticity tensor material property.
std::vector< ADStressUpdateBase * > _models
The user supplied list of inelastic models to use in the simulation.
bool _is_elasticity_tensor_guaranteed_isotropic
is the elasticity tensor guaranteed to be isotropic?
DamageBaseTempl< true > * _damage_model
Pointer to the damage model.
const MaterialProperty< R2 > & _stress_old
The old stress tensor.
const MaterialProperty< R2 > & _elastic_strain_old
The old elastic strain is used to calculate the old stress in the case of variable elasticity tensors...

◆ computeCrackStrainAndOrientation()

void ADComputeSmearedCrackingStress::computeCrackStrainAndOrientation ( ADRealVectorValue 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 ADComputeSmearedCrackingStress.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<ADReal> eigval(3, 0.0);
495  ADRankTwoTensor 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.
522  ePrime.rotate(raw_value(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  ADRankTwoTensor 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.
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 }
auto raw_value(const Eigen::Map< T > &in)
virtual unsigned int getNumKnownCrackDirs() const
Get the number of known crack directions.
const MaterialProperty< RankTwoTensor > & _crack_rotation_old
unsigned int _qp
libMesh::VectorValue< T > column(const unsigned int i) const
static const std::string R
Definition: NS.h:162
void mooseError(Args &&... args) const
ADMaterialProperty< RankTwoTensor > & _crack_rotation
ADMaterialProperty< R2 > & _elastic_strain

◆ computeQpProperties()

template<typename R2 >
void ADComputeStressBaseTempl< R2 >::computeQpProperties ( )
overrideprotectedvirtualinherited

Reimplemented from Material.

Reimplemented in ADComputeMultiplePorousInelasticStress.

Definition at line 59 of file ADComputeStressBase.C.

Referenced by ADComputeMultiplePorousInelasticStress::computeQpProperties().

60 {
62 
63  // Add in extra stress
64  for (MooseIndex(_extra_stresses) i = 0; i < _extra_stresses.size(); ++i)
65  _stress[_qp] += (*_extra_stresses[i])[_qp];
66 }
virtual void computeQpStress()=0
ADMaterialProperty< R2 > & _stress
The stress tensor to be calculated.
unsigned int _qp
std::vector< const MaterialProperty< R2 > * > _extra_stresses
Extra stress tensors.

◆ computeQpStress()

void ADComputeSmearedCrackingStress::computeQpStress ( )
overridevirtual

Reimplemented from ADComputeMultipleInelasticStress.

Definition at line 219 of file ADComputeSmearedCrackingStress.C.

220 {
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  }
245 
246  // compute crack status and adjust stress
248 
250  {
253  }
254 }
const MaterialProperty< RankTwoTensor > & _inelastic_strain_old
old value of inelastic strain
ADMaterialProperty< RankTwoTensor > & _inelastic_strain
The sum of the inelastic strains that come from the plastic models.
ADMaterialProperty< R2 > & _stress
The stress tensor to be calculated.
virtual void computeQpStressIntermediateConfiguration()
Compute the stress for the current QP, but do not rotate tensors from the intermediate configuration ...
const bool _perform_finite_strain_rotations
after updateQpState, rotate the stress, elastic_strain, and inelastic_strain using _rotation_incremen...
unsigned int _qp
const ADMaterialProperty< RankTwoTensor > & _rotation_increment
void updateLocalElasticityTensor()
Update the local elasticity tensor (_local_elasticity_tensor) due to the effects of cracking...
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-")
std::vector< ADStressUpdateBase * > _models
The user supplied list of inelastic models to use in the simulation.
ADRankFourTensor _local_elasticity_tensor
Variables used by multiple methods within the calculation for a single material point.
bool previouslyCracked()
Check to see whether there was cracking in any diretion in the previous time step.
virtual void updateCrackingStateAndStress()
Update all cracking-related state variables and the stress tensor due to cracking in all directions...
ADMaterialProperty< RankTwoTensor > & _crack_rotation
ADMaterialProperty< R2 > & _elastic_strain
const MaterialProperty< R2 > & _elastic_strain_old
The old elastic strain is used to calculate the old stress in the case of variable elasticity tensors...
virtual void finiteStrainRotation()
Rotate _elastic_strain, _stress, and _inelastic_strain to the new configuration.

◆ computeQpStressIntermediateConfiguration()

void ADComputeMultipleInelasticStress::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 163 of file ADComputeMultipleInelasticStress.C.

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

164 {
165  ADRankTwoTensor elastic_strain_increment;
166  ADRankTwoTensor combined_inelastic_strain_increment;
167 
168  if (_num_models == 0)
169  {
171 
172  // If the elasticity tensor values have changed and the tensor is isotropic,
173  // use the old strain to calculate the old stress
176  else
177  {
178  if (_damage_model)
179  paramError(
180  "damage_model",
181  "Damage models cannot be used with inelastic models and elastic anisotropic behavior");
182 
183  ADRankFourTensor elasticity_tensor_rotated = _elasticity_tensor[_qp];
184  elasticity_tensor_rotated.rotate(_rotation_total_old[_qp]);
185 
186  _stress[_qp] =
187  elasticity_tensor_rotated * (_elastic_strain_old[_qp] + _strain_increment[_qp]);
188 
189  // Update current total rotation matrix to be used in next step
191  }
192  }
193  else
194  {
195  if (_num_models == 1 || _cycle_models)
197  elastic_strain_increment,
198  combined_inelastic_strain_increment);
199  else
200  updateQpState(elastic_strain_increment, combined_inelastic_strain_increment);
201 
202  _elastic_strain[_qp] = _elastic_strain_old[_qp] + elastic_strain_increment;
203  _inelastic_strain[_qp] = _inelastic_strain_old[_qp] + combined_inelastic_strain_increment;
204  }
205 }
virtual void updateQpStateSingleModel(unsigned model_number, ADRankTwoTensor &elastic_strain_increment, ADRankTwoTensor &combined_inelastic_strain_increment)
An optimised version of updateQpState that gets used when the number of plastic models is unity...
ADMaterialProperty< RankTwoTensor > & _rotation_total
Rotation up to current step "n" to compute anisotropic elasticity tensor.
const MaterialProperty< RankTwoTensor > & _inelastic_strain_old
old value of inelastic strain
ADMaterialProperty< RankTwoTensor > & _inelastic_strain
The sum of the inelastic strains that come from the plastic models.
ADMaterialProperty< R2 > & _stress
The stress tensor to be calculated.
const bool _perform_finite_strain_rotations
after updateQpState, rotate the stress, elastic_strain, and inelastic_strain using _rotation_incremen...
unsigned int _qp
const ADMaterialProperty< RankTwoTensor > & _rotation_increment
int & _t_step
const ADMaterialProperty< R4 > & _elasticity_tensor
Elasticity tensor material property.
const MaterialProperty< RankTwoTensor > & _rotation_total_old
Rotation up to "n - 1" (previous) step to compute anisotropic elasticity tensor.
virtual void updateQpState(ADRankTwoTensor &elastic_strain_increment, ADRankTwoTensor &combined_inelastic_strain_increment)
Given the _strain_increment[_qp], iterate over all of the user-specified recompute materials in order...
void paramError(const std::string &param, Args... args) const
void rotate(const TypeTensor< T > &R)
bool _is_elasticity_tensor_guaranteed_isotropic
is the elasticity tensor guaranteed to be isotropic?
const unsigned _num_models
number of plastic models
DamageBaseTempl< true > * _damage_model
Pointer to the damage model.
ADMaterialProperty< R2 > & _elastic_strain
const bool _cycle_models
whether to cycle through the models, using only one model per timestep
const MaterialProperty< R2 > & _elastic_strain_old
The old elastic strain is used to calculate the old stress in the case of variable elasticity tensors...

◆ finiteStrainRotation()

void ADComputeMultipleInelasticStress::finiteStrainRotation ( )
protectedvirtualinherited

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

Definition at line 208 of file ADComputeMultipleInelasticStress.C.

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

209 {
215 }
ADMaterialProperty< RankTwoTensor > & _inelastic_strain
The sum of the inelastic strains that come from the plastic models.
ADMaterialProperty< R2 > & _stress
The stress tensor to be calculated.
unsigned int _qp
const ADMaterialProperty< RankTwoTensor > & _rotation_increment
ADMaterialProperty< R2 > & _elastic_strain

◆ getNumKnownCrackDirs()

unsigned int ADComputeSmearedCrackingStress::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 ADComputeSmearedCrackingStress.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 }
std::vector< unsigned int > _prescribed_crack_directions
User-prescribed cracking directions.
unsigned int _qp
const MaterialProperty< RealVectorValue > & _crack_damage_old

◆ hasGuaranteedMaterialProperty()

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

Definition at line 28 of file GuaranteeConsumer.C.

Referenced by ComputeFiniteStrainElasticStress::computeQpStress(), initialSetup(), ComputeSmearedCrackingStress::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 ADComputeSmearedCrackingStress::initialSetup ( )
overridevirtual

Reimplemented from ADComputeMultipleInelasticStress.

Definition at line 190 of file ADComputeSmearedCrackingStress.C.

191 {
193 
195  mooseError("ADComputeSmearedCrackingStress requires that the elasticity tensor be "
196  "guaranteed isotropic");
197 
198  std::vector<MaterialName> soft_matls = getParam<std::vector<MaterialName>>("softening_models");
199  for (auto soft_matl : soft_matls)
200  {
202  dynamic_cast<ADSmearedCrackSofteningBase *>(&getMaterialByName(soft_matl));
203  if (scsb)
204  _softening_models.push_back(scsb);
205  else
206  paramError("softening_models", "Model " + soft_matl + " is not a softening model");
207  }
208  if (_softening_models.size() == 1)
209  {
210  // Reuse the same model in all 3 directions
211  _softening_models.push_back(_softening_models[0]);
212  _softening_models.push_back(_softening_models[0]);
213  }
214  else if (_softening_models.size() != 3)
215  paramError("softening_models", "Either 1 or 3 softening models must be specified");
216 }
std::vector< ADSmearedCrackSofteningBase * > _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.
ADSmearedCrackSofteningBase is the base class for a set of models that define the softening behavior ...
void paramError(const std::string &param, Args... args) const
MaterialBase & getMaterialByName(const std::string &name, bool no_warn=false, bool no_dep=false)
void mooseError(Args &&... args) const
bool hasGuaranteedMaterialProperty(const MaterialPropertyName &prop, Guarantee guarantee)

◆ initQpStatefulProperties()

void ADComputeSmearedCrackingStress::initQpStatefulProperties ( )
overridevirtual

Reimplemented from ADComputeMultipleInelasticStress.

Definition at line 127 of file ADComputeSmearedCrackingStress.C.

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

◆ previouslyCracked()

bool ADComputeSmearedCrackingStress::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 ADComputeSmearedCrackingStress.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 }
unsigned int _qp
const MaterialProperty< RealVectorValue > & _crack_damage_old

◆ updateCrackingStateAndStress()

void ADComputeSmearedCrackingStress::updateCrackingStateAndStress ( )
protectedvirtual

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

Definition at line 373 of file ADComputeSmearedCrackingStress.C.

Referenced by computeQpStress().

374 {
375  const ADReal youngs_modulus =
377 
378  ADReal 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  ADRealVectorValue 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.
405  ADRankTwoTensor 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  ADReal 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 ADReal Eo = cracking_stress / _crack_initiation_strain[_qp](i);
466  const ADReal Ec = Eo * (1.0 - _crack_damage_old[_qp](i));
467  const ADReal a = (Ec - Eo) / (4.0 * etr);
468  const ADReal b = 0.5 * (Ec + Eo);
469  const ADReal 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(ADRankTwoTensor &tensor, const ADRealVectorValue &sigma)
Updates the full stress tensor to account for the effect of cracking using the provided stresses in t...
const ADReal _cracking_neg_fraction
Defines transition to changed stiffness during unloading.
ADMaterialProperty< RealVectorValue > & _crack_initiation_strain
ADMaterialProperty< R2 > & _stress
The stress tensor to be calculated.
const MaterialProperty< RealVectorValue > & _crack_max_strain_old
std::vector< ADSmearedCrackSofteningBase * > _softening_models
The user-supplied list of softening models to be used in the 3 crack directions.
const unsigned int _max_cracks
Maximum number of cracks permitted at a material point.
DualNumber< Real, DNDerivativeType, true > ADReal
ADMaterialProperty< RealVectorValue > & _crack_damage
const MaterialProperty< RankTwoTensor > & _crack_rotation_old
unsigned int _qp
const MaterialProperty< RealVectorValue > & _crack_initiation_strain_old
ADMaterialProperty< RealVectorValue > & _crack_flags
Vector of values going from 1 to 0 as crack damage accumulates.
const ADMaterialProperty< R4 > & _elasticity_tensor
Elasticity tensor material property.
ADMaterialProperty< RealVectorValue > & _crack_max_strain
static const std::string R
Definition: NS.h:162
ADMaterialProperty< RankTwoTensor > & _crack_rotation
const MaterialProperty< RealVectorValue > & _crack_damage_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 ADVariableValue & _cracking_stress
Input parameters for smeared crack models.
void computeCrackStrainAndOrientation(ADRealVectorValue &strain_in_crack_dir)
Compute the crack strain in the crack coordinate system.

◆ updateLocalElasticityTensor()

void ADComputeSmearedCrackingStress::updateLocalElasticityTensor ( )
protected

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

Definition at line 257 of file ADComputeSmearedCrackingStress.C.

Referenced by computeQpStress().

258 {
259  const ADReal youngs_modulus =
261 
262  bool cracking_locally_active = false;
263 
264  const ADReal cracking_stress = _cracking_stress[_qp];
265 
266  if (cracking_stress > 0)
267  {
268  ADRealVectorValue stiffness_ratio_local(1.0, 1.0, 1.0);
271  ePrime.rotate(R.transpose());
272 
273  for (unsigned int i = 0; i < 3; ++i)
274  {
275  // Update elasticity tensor based on crack status of the end of last time step
276  if (_crack_damage_old[_qp](i) > 0.0)
277  {
278  if (_cracking_neg_fraction == 0.0 && MooseUtils::absoluteFuzzyLessThan(ePrime(i, i), 0.0))
279  stiffness_ratio_local(i) = 1.0;
280  else if (_cracking_neg_fraction > 0.0 &&
283  {
285  const ADReal Eo = cracking_stress / _crack_initiation_strain_old[_qp](i);
286  const ADReal Ec = Eo * (1.0 - _crack_damage_old[_qp](i));
287  const ADReal a = (Ec - Eo) / (4 * etr);
288  const ADReal b = (Ec + Eo) / 2;
289  // Compute the ratio of the current transition stiffness to the original stiffness
290  stiffness_ratio_local(i) = (2.0 * a * etr + b) / Eo;
291  cracking_locally_active = true;
292  }
293  else
294  {
295  stiffness_ratio_local(i) = (1.0 - _crack_damage_old[_qp](i));
296  cracking_locally_active = true;
297  }
298  }
299  }
300 
301  if (cracking_locally_active)
302  {
303  // Update the elasticity tensor in the crack coordinate system
305  {
306  const bool c0_coupled = MooseUtils::absoluteFuzzyEqual(stiffness_ratio_local(0), 1.0);
307  const bool c1_coupled = MooseUtils::absoluteFuzzyEqual(stiffness_ratio_local(1), 1.0);
308  const bool c2_coupled = MooseUtils::absoluteFuzzyEqual(stiffness_ratio_local(2), 1.0);
309 
310  const ADReal c01 = (c0_coupled && c1_coupled ? 1.0 : 0.0);
311  const ADReal c02 = (c0_coupled && c2_coupled ? 1.0 : 0.0);
312  const ADReal c12 = (c1_coupled && c2_coupled ? 1.0 : 0.0);
313 
314  const ADReal c01_shear_retention =
315  (c0_coupled && c1_coupled ? 1.0 : _shear_retention_factor);
316  const ADReal c02_shear_retention =
317  (c0_coupled && c2_coupled ? 1.0 : _shear_retention_factor);
318  const ADReal c12_shear_retention =
319  (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 ADReal & c0 = stiffness_ratio_local(0);
337  const ADReal & c1 = stiffness_ratio_local(1);
338  const ADReal & c2 = stiffness_ratio_local(2);
339 
340  const ADReal c01 = c0 * c1;
341  const ADReal c02 = c0 * c2;
342  const ADReal c12 = c1 * c2;
343 
344  const ADReal c01_shear_retention = std::max(c01, _shear_retention_factor);
345  const ADReal c02_shear_retention = std::max(c02, _shear_retention_factor);
346  const ADReal 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 }
const ADReal _cracking_neg_fraction
Defines transition to changed stiffness during unloading.
bool absoluteFuzzyEqual(const T &var1, const T2 &var2, const T3 &tol=libMesh::TOLERANCE *libMesh::TOLERANCE)
const ADReal _shear_retention_factor
Controls the amount of shear retained.
enum ADComputeSmearedCrackingStress::CrackedElasticityType _cracked_elasticity_type
void fillFromInputVector(const std::vector< T > &input, FillMethod fill_method)
DualNumber< Real, DNDerivativeType, true > ADReal
const MaterialProperty< RankTwoTensor > & _crack_rotation_old
unsigned int _qp
const MaterialProperty< RealVectorValue > & _crack_initiation_strain_old
const ADMaterialProperty< R4 > & _elasticity_tensor
Elasticity tensor material property.
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
ADRankFourTensor _local_elasticity_tensor
Variables used by multiple methods within the calculation for a single material point.
std::vector< ADReal > _local_elastic_vector
Vector helper to update local elasticity tensor.
const MaterialProperty< RealVectorValue > & _crack_damage_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 ADVariableValue & _cracking_stress
Input parameters for smeared crack models.
const MaterialProperty< R2 > & _elastic_strain_old
The old elastic strain is used to calculate the old stress in the case of variable elasticity tensors...

◆ updateQpState()

void ADComputeMultipleInelasticStress::updateQpState ( ADRankTwoTensor elastic_strain_increment,
ADRankTwoTensor combined_inelastic_strain_increment 
)
protectedvirtualinherited

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.

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

Definition at line 218 of file ADComputeMultipleInelasticStress.C.

Referenced by ADComputeMultipleInelasticStress::computeQpStressIntermediateConfiguration().

221 {
223  {
224  _console << std::endl
225  << "iteration output for ADComputeMultipleInelasticStress solve:"
226  << " time=" << _t << " int_pt=" << _qp << std::endl;
227  }
228  Real l2norm_delta_stress;
229  Real first_l2norm_delta_stress = 1.0;
230  unsigned int counter = 0;
231 
232  std::vector<ADRankTwoTensor> inelastic_strain_increment;
233  inelastic_strain_increment.resize(_num_models);
234 
235  for (unsigned i_rmm = 0; i_rmm < _models.size(); ++i_rmm)
236  inelastic_strain_increment[i_rmm].zero();
237 
238  ADRankTwoTensor stress_max, stress_min;
239 
240  do
241  {
242  for (unsigned i_rmm = 0; i_rmm < _num_models; ++i_rmm)
243  {
244  _models[i_rmm]->setQp(_qp);
245 
246  // initially assume the strain is completely elastic
247  elastic_strain_increment = _strain_increment[_qp];
248  // and subtract off all inelastic strain increments calculated so far
249  // except the one that we're about to calculate
250  for (unsigned j_rmm = 0; j_rmm < _num_models; ++j_rmm)
251  if (i_rmm != j_rmm)
252  elastic_strain_increment -= inelastic_strain_increment[j_rmm];
253 
254  // form the trial stress, with the check for changed elasticity constants
256  _stress[_qp] =
257  _elasticity_tensor[_qp] * (_elastic_strain_old[_qp] + elastic_strain_increment);
258  else
259  {
260  if (_damage_model)
261  paramError("damage_model",
262  "Damage models cannot be used with inelastic models and elastic anisotropic "
263  "behavior");
264 
265  ADRankFourTensor elasticity_tensor_rotated = _elasticity_tensor[_qp];
266  elasticity_tensor_rotated.rotate(_rotation_total_old[_qp]);
267 
268  _stress[_qp] =
269  elasticity_tensor_rotated * (_elastic_strain_old[_qp] + elastic_strain_increment);
270 
271  // Update current total rotation matrix to be used in next step
273  }
274  // given a trial stress (_stress[_qp]) and a strain increment (elastic_strain_increment)
275  // let the i^th model produce an admissible stress (as _stress[_qp]), and decompose
276  // the strain increment into an elastic part (elastic_strain_increment) and an
277  // inelastic part (inelastic_strain_increment[i_rmm])
278  computeAdmissibleState(i_rmm, elastic_strain_increment, inelastic_strain_increment[i_rmm]);
279 
280  if (i_rmm == 0)
281  {
282  stress_max = _stress[_qp];
283  stress_min = _stress[_qp];
284  }
285  else
286  {
287  for (const auto i : make_range(Moose::dim))
288  {
289  for (const auto j : make_range(Moose::dim))
290  {
291  if (_stress[_qp](i, j) > stress_max(i, j))
292  stress_max(i, j) = _stress[_qp](i, j);
293  else if (stress_min(i, j) > _stress[_qp](i, j))
294  stress_min(i, j) = _stress[_qp](i, j);
295  }
296  }
297  }
298  }
299 
300  // now check convergence in the stress:
301  // once the change in stress is within tolerance after each recompute material
302  // consider the stress to be converged
303  l2norm_delta_stress = MetaPhysicL::raw_value((stress_max - stress_min).L2norm());
304  if (counter == 0 && l2norm_delta_stress > 0.0)
305  first_l2norm_delta_stress = l2norm_delta_stress;
306 
308  {
309  _console << "stress iteration number = " << counter << "\n"
310  << " relative l2 norm delta stress = "
311  << (0 == first_l2norm_delta_stress ? 0
312  : l2norm_delta_stress / first_l2norm_delta_stress)
313  << "\n"
314  << " stress convergence relative tolerance = " << _relative_tolerance << "\n"
315  << " absolute l2 norm delta stress = " << l2norm_delta_stress << "\n"
316  << " stress convergence absolute tolerance = " << _absolute_tolerance << std::endl;
317  }
318  ++counter;
319 
320  } while (counter < _max_iterations && l2norm_delta_stress > _absolute_tolerance &&
321  (l2norm_delta_stress / first_l2norm_delta_stress) > _relative_tolerance &&
322  _num_models != 1);
323 
324  if (counter == _max_iterations && l2norm_delta_stress > _absolute_tolerance &&
325  (l2norm_delta_stress / first_l2norm_delta_stress) > _relative_tolerance)
326  mooseException(
327  "In ", _name, ": Max stress iteration hit during ADComputeMultipleInelasticStress solve!");
328 
329  combined_inelastic_strain_increment.zero();
330  for (unsigned i_rmm = 0; i_rmm < _num_models; ++i_rmm)
331  combined_inelastic_strain_increment +=
332  _inelastic_weights[i_rmm] * inelastic_strain_increment[i_rmm];
333 
335  for (unsigned i_rmm = 0; i_rmm < _num_models; ++i_rmm)
336  _material_timestep_limit[_qp] += 1.0 / _models[i_rmm]->computeTimeStepLimit();
337 
339  _material_timestep_limit[_qp] = std::numeric_limits<Real>::max();
340  else
342 }
const std::vector< Real > _inelastic_weights
_inelastic_strain = sum_i (_inelastic_weights_i * inelastic_strain_from_model_i)
bool absoluteFuzzyEqual(const T &var1, const T2 &var2, const T3 &tol=libMesh::TOLERANCE *libMesh::TOLERANCE)
ADMaterialProperty< RankTwoTensor > & _rotation_total
Rotation up to current step "n" to compute anisotropic elasticity tensor.
T L2norm(const RankTwoTensorTempl< T > &r2tensor)
ADMaterialProperty< R2 > & _stress
The stress tensor to be calculated.
const bool _perform_finite_strain_rotations
after updateQpState, rotate the stress, elastic_strain, and inelastic_strain using _rotation_incremen...
auto raw_value(const Eigen::Map< T > &in)
static constexpr std::size_t dim
const Number zero
unsigned int _qp
const ADMaterialProperty< RankTwoTensor > & _rotation_increment
const ADMaterialProperty< R4 > & _elasticity_tensor
Elasticity tensor material property.
const MaterialProperty< RankTwoTensor > & _rotation_total_old
Rotation up to "n - 1" (previous) step to compute anisotropic elasticity tensor.
const unsigned int _max_iterations
Input parameters associated with the recompute iteration to return the stress state to the yield surf...
Real & _t
void paramError(const std::string &param, Args... args) const
const std::string _name
void rotate(const TypeTensor< T > &R)
std::vector< ADStressUpdateBase * > _models
The user supplied list of inelastic models to use in the simulation.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
bool _is_elasticity_tensor_guaranteed_isotropic
is the elasticity tensor guaranteed to be isotropic?
const unsigned _num_models
number of plastic models
IntRange< T > make_range(T beg, T end)
DamageBaseTempl< true > * _damage_model
Pointer to the damage model.
static const std::complex< double > j(0, 1)
Complex number "j" (also known as "i")
const ConsoleStream _console
const MaterialProperty< R2 > & _elastic_strain_old
The old elastic strain is used to calculate the old stress in the case of variable elasticity tensors...
virtual void computeAdmissibleState(unsigned model_number, ADRankTwoTensor &elastic_strain_increment, ADRankTwoTensor &inelastic_strain_increment)
Given a trial stress (_stress[_qp]) and a strain increment (elastic_strain_increment) let the model_n...

◆ updateQpStateSingleModel()

void ADComputeMultipleInelasticStress::updateQpStateSingleModel ( unsigned  model_number,
ADRankTwoTensor elastic_strain_increment,
ADRankTwoTensor 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.

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 345 of file ADComputeMultipleInelasticStress.C.

Referenced by ADComputeMultipleInelasticStress::computeQpStressIntermediateConfiguration().

349 {
350  for (auto model : _models)
351  model->setQp(_qp);
352 
353  elastic_strain_increment = _strain_increment[_qp];
354 
355  // If the elasticity tensor values have changed and the tensor is isotropic,
356  // use the old strain to calculate the old stress
358  _stress[_qp] = _elasticity_tensor[_qp] * (_elastic_strain_old[_qp] + elastic_strain_increment);
359  else
360  {
361  if (_damage_model)
362  paramError(
363  "damage_model",
364  "Damage models cannot be used with inelastic models and elastic anisotropic behavior");
365 
366  ADRankFourTensor elasticity_tensor_rotated = _elasticity_tensor[_qp];
367  elasticity_tensor_rotated.rotate(_rotation_total_old[_qp]);
368 
369  _stress[_qp] =
370  elasticity_tensor_rotated * (_elastic_strain_old[_qp] + elastic_strain_increment);
371 
372  // Update current total rotation matrix to be used in next step
374  }
375 
377  model_number, elastic_strain_increment, combined_inelastic_strain_increment);
378 
379  _material_timestep_limit[_qp] = _models[0]->computeTimeStepLimit();
380 
381  /* propagate internal variables, etc, to this timestep for those inelastic models where
382  * "updateState" is not called */
383  for (unsigned i_rmm = 0; i_rmm < _num_models; ++i_rmm)
384  if (i_rmm != model_number)
385  _models[i_rmm]->propagateQpStatefulProperties();
386 }
ADMaterialProperty< RankTwoTensor > & _rotation_total
Rotation up to current step "n" to compute anisotropic elasticity tensor.
ADMaterialProperty< R2 > & _stress
The stress tensor to be calculated.
const bool _perform_finite_strain_rotations
after updateQpState, rotate the stress, elastic_strain, and inelastic_strain using _rotation_incremen...
unsigned int _qp
const ADMaterialProperty< RankTwoTensor > & _rotation_increment
const ADMaterialProperty< R4 > & _elasticity_tensor
Elasticity tensor material property.
const MaterialProperty< RankTwoTensor > & _rotation_total_old
Rotation up to "n - 1" (previous) step to compute anisotropic elasticity tensor.
void paramError(const std::string &param, Args... args) const
void rotate(const TypeTensor< T > &R)
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-")
std::vector< ADStressUpdateBase * > _models
The user supplied list of inelastic models to use in the simulation.
bool _is_elasticity_tensor_guaranteed_isotropic
is the elasticity tensor guaranteed to be isotropic?
const unsigned _num_models
number of plastic models
DamageBaseTempl< true > * _damage_model
Pointer to the damage model.
const MaterialProperty< R2 > & _elastic_strain_old
The old elastic strain is used to calculate the old stress in the case of variable elasticity tensors...
virtual void computeAdmissibleState(unsigned model_number, ADRankTwoTensor &elastic_strain_increment, ADRankTwoTensor &inelastic_strain_increment)
Given a trial stress (_stress[_qp]) and a strain increment (elastic_strain_increment) let the model_n...

◆ updateStressTensorForCracking()

void ADComputeSmearedCrackingStress::updateStressTensorForCracking ( ADRankTwoTensor tensor,
const ADRealVectorValue 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 ADComputeSmearedCrackingStress.C.

Referenced by updateCrackingStateAndStress().

577 {
578  // Get transformation matrix
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 ADReal 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 }
DualNumber< Real, DNDerivativeType, true > ADReal
void rotate(const RankTwoTensorTempl< T > &R)
ADMaterialProperty< RealVectorValue > & _crack_damage
unsigned int _qp
static const std::string R
Definition: NS.h:162
ADMaterialProperty< RankTwoTensor > & _crack_rotation
const ADReal _max_stress_correction
Controls the maximum amount that the damaged elastic stress is corrected to folow the release model d...

◆ validParams()

InputParameters ADComputeSmearedCrackingStress::validParams ( )
static

Definition at line 18 of file ADComputeSmearedCrackingStress.C.

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

◆ _base_name

template<typename R2 >
const std::string ADComputeStressBaseTempl< R2 >::_base_name
protectedinherited

Base name of the material system.

Definition at line 43 of file ADComputeStressBase.h.

◆ _crack_damage

ADMaterialProperty<RealVectorValue>& ADComputeSmearedCrackingStress::_crack_damage
protected

◆ _crack_damage_old

const MaterialProperty<RealVectorValue>& ADComputeSmearedCrackingStress::_crack_damage_old
protected

◆ _crack_flags

ADMaterialProperty<RealVectorValue>& ADComputeSmearedCrackingStress::_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 ADComputeSmearedCrackingStress.h.

Referenced by updateCrackingStateAndStress().

◆ _crack_initiation_strain

ADMaterialProperty<RealVectorValue>& ADComputeSmearedCrackingStress::_crack_initiation_strain
protected

◆ _crack_initiation_strain_old

const MaterialProperty<RealVectorValue>& ADComputeSmearedCrackingStress::_crack_initiation_strain_old
protected

◆ _crack_max_strain

ADMaterialProperty<RealVectorValue>& ADComputeSmearedCrackingStress::_crack_max_strain
protected

◆ _crack_max_strain_old

const MaterialProperty<RealVectorValue>& ADComputeSmearedCrackingStress::_crack_max_strain_old
protected

Definition at line 122 of file ADComputeSmearedCrackingStress.h.

Referenced by updateCrackingStateAndStress().

◆ _crack_rotation

ADMaterialProperty<RankTwoTensor>& ADComputeSmearedCrackingStress::_crack_rotation
protected

◆ _crack_rotation_old

const MaterialProperty<RankTwoTensor>& ADComputeSmearedCrackingStress::_crack_rotation_old
protected

◆ _cracked_elasticity_type

enum ADComputeSmearedCrackingStress::CrackedElasticityType ADComputeSmearedCrackingStress::_cracked_elasticity_type
protected

◆ _cracking_neg_fraction

const ADReal ADComputeSmearedCrackingStress::_cracking_neg_fraction
protected

Defines transition to changed stiffness during unloading.

Definition at line 88 of file ADComputeSmearedCrackingStress.h.

Referenced by updateCrackingStateAndStress(), and updateLocalElasticityTensor().

◆ _cracking_stress

const ADVariableValue& ADComputeSmearedCrackingStress::_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 ADComputeSmearedCrackingStress.h.

Referenced by updateCrackingStateAndStress(), and updateLocalElasticityTensor().

◆ _cycle_models

const bool ADComputeMultipleInelasticStress::_cycle_models
protectedinherited

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

Definition at line 125 of file ADComputeMultipleInelasticStress.h.

Referenced by ADComputeMultipleInelasticStress::computeQpStressIntermediateConfiguration().

◆ _damage_model

DamageBaseTempl<true>* ADComputeMultipleInelasticStress::_damage_model
protectedinherited

◆ _elastic_strain

template<typename R2 >
ADMaterialProperty<R2>& ADComputeStressBaseTempl< R2 >::_elastic_strain
protectedinherited

◆ _elastic_strain_old

template<typename R2 , typename R4 >
const MaterialProperty<R2>& ADComputeFiniteStrainElasticStressTempl< R2, R4 >::_elastic_strain_old
protectedinherited

◆ _elasticity_tensor

template<typename R2 , typename R4 >
const ADMaterialProperty<R4>& ADComputeFiniteStrainElasticStressTempl< R2, R4 >::_elasticity_tensor
protectedinherited

◆ _elasticity_tensor_name

template<typename R2 , typename R4 >
const std::string ADComputeFiniteStrainElasticStressTempl< R2, R4 >::_elasticity_tensor_name
protectedinherited

Name of the elasticity tensor material property.

Definition at line 38 of file ADComputeFiniteStrainElasticStress.h.

Referenced by initialSetup(), and ADComputeMultipleInelasticStress::initialSetup().

◆ _extra_stresses

template<typename R2 >
std::vector<const MaterialProperty<R2> *> ADComputeStressBaseTempl< R2 >::_extra_stresses
protectedinherited

Extra stress tensors.

Definition at line 52 of file ADComputeStressBase.h.

Referenced by ADComputeStressBaseTempl< R2 >::ADComputeStressBaseTempl().

◆ _inelastic_strain

ADMaterialProperty<RankTwoTensor>& ADComputeMultipleInelasticStress::_inelastic_strain
protectedinherited

◆ _inelastic_strain_old

const MaterialProperty<RankTwoTensor>& ADComputeMultipleInelasticStress::_inelastic_strain_old
protectedinherited

◆ _inelastic_weights

const std::vector<Real> ADComputeMultipleInelasticStress::_inelastic_weights
protectedinherited

_inelastic_strain = sum_i (_inelastic_weights_i * inelastic_strain_from_model_i)

Definition at line 122 of file ADComputeMultipleInelasticStress.h.

Referenced by ADComputeMultipleInelasticStress::ADComputeMultipleInelasticStress(), and ADComputeMultipleInelasticStress::updateQpState().

◆ _initial_stress_fcn

template<typename R2 >
std::vector<const Function *> ADComputeStressBaseTempl< R2 >::_initial_stress_fcn
protectedinherited

initial stress components

Definition at line 55 of file ADComputeStressBase.h.

◆ _internal_solve_full_iteration_history

const bool ADComputeMultipleInelasticStress::_internal_solve_full_iteration_history
protectedinherited

◆ _is_elasticity_tensor_guaranteed_isotropic

bool ADComputeMultipleInelasticStress::_is_elasticity_tensor_guaranteed_isotropic
protectedinherited

◆ _local_elastic_vector

std::vector<ADReal> ADComputeSmearedCrackingStress::_local_elastic_vector
protected

Vector helper to update local elasticity tensor.

Definition at line 132 of file ADComputeSmearedCrackingStress.h.

Referenced by ADComputeSmearedCrackingStress(), and updateLocalElasticityTensor().

◆ _local_elasticity_tensor

ADRankFourTensor ADComputeSmearedCrackingStress::_local_elasticity_tensor
protected

Variables used by multiple methods within the calculation for a single material point.

Definition at line 126 of file ADComputeSmearedCrackingStress.h.

Referenced by computeQpStress(), and updateLocalElasticityTensor().

◆ _material_timestep_limit

MaterialProperty<Real>& ADComputeMultipleInelasticStress::_material_timestep_limit
protectedinherited

◆ _max_cracks

const unsigned int ADComputeSmearedCrackingStress::_max_cracks
protected

Maximum number of cracks permitted at a material point.

Definition at line 85 of file ADComputeSmearedCrackingStress.h.

Referenced by updateCrackingStateAndStress().

◆ _max_iterations

const unsigned int ADComputeMultipleInelasticStress::_max_iterations
protectedinherited

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

Definition at line 103 of file ADComputeMultipleInelasticStress.h.

Referenced by ADComputeMultipleInelasticStress::updateQpState().

◆ _max_stress_correction

const ADReal ADComputeSmearedCrackingStress::_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 ADComputeSmearedCrackingStress.h.

Referenced by updateStressTensorForCracking().

◆ _mechanical_strain

template<typename R2 >
const ADMaterialProperty<R2>& ADComputeStressBaseTempl< R2 >::_mechanical_strain
protectedinherited

◆ _models

std::vector<ADStressUpdateBase *> ADComputeMultipleInelasticStress::_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 136 of file ADComputeMultipleInelasticStress.h.

Referenced by ADComputeMultipleInelasticStress::computeAdmissibleState(), computeQpStress(), ADComputeMultipleInelasticStress::initialSetup(), ADComputeMultipleInelasticStress::updateQpState(), and ADComputeMultipleInelasticStress::updateQpStateSingleModel().

◆ _num_models

const unsigned ADComputeMultipleInelasticStress::_num_models
protectedinherited

◆ _perform_finite_strain_rotations

const bool ADComputeMultipleInelasticStress::_perform_finite_strain_rotations
protectedinherited

◆ _prescribed_crack_directions

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

User-prescribed cracking directions.

Definition at line 82 of file ADComputeSmearedCrackingStress.h.

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

◆ _relative_tolerance

const Real ADComputeMultipleInelasticStress::_relative_tolerance
protectedinherited

◆ _rotation_increment

template<typename R2 , typename R4 >
const ADMaterialProperty<RankTwoTensor>& ADComputeFiniteStrainElasticStressTempl< R2, R4 >::_rotation_increment
protectedinherited

◆ _rotation_total

template<typename R2 , typename R4 >
ADMaterialProperty<RankTwoTensor>& ADComputeFiniteStrainElasticStressTempl< R2, R4 >::_rotation_total
protectedinherited

◆ _rotation_total_old

template<typename R2 , typename R4 >
const MaterialProperty<RankTwoTensor>& ADComputeFiniteStrainElasticStressTempl< R2, R4 >::_rotation_total_old
protectedinherited

◆ _shear_retention_factor

const ADReal ADComputeSmearedCrackingStress::_shear_retention_factor
protected

Controls the amount of shear retained.

Definition at line 91 of file ADComputeSmearedCrackingStress.h.

Referenced by updateLocalElasticityTensor().

◆ _softening_models

std::vector<ADSmearedCrackSofteningBase *> ADComputeSmearedCrackingStress::_softening_models
protected

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

Definition at line 129 of file ADComputeSmearedCrackingStress.h.

Referenced by initialSetup(), and updateCrackingStateAndStress().

◆ _strain_increment

template<typename R2 , typename R4 >
const ADMaterialProperty<R2>& ADComputeFiniteStrainElasticStressTempl< R2, R4 >::_strain_increment
protectedinherited

◆ _stress

template<typename R2 >
ADMaterialProperty<R2>& ADComputeStressBaseTempl< R2 >::_stress
protectedinherited

◆ _stress_old

template<typename R2 , typename R4 >
const MaterialProperty<R2>& ADComputeFiniteStrainElasticStressTempl< R2, R4 >::_stress_old
protectedinherited

◆ _undamaged_stress_old

RankTwoTensor ADComputeMultipleInelasticStress::_undamaged_stress_old
protectedinherited

◆ usingComputeStressBaseMembers

template<typename R2 , typename R4 >
ADComputeFiniteStrainElasticStressTempl< R2, R4 >::usingComputeStressBaseMembers
protectedinherited

Definition at line 58 of file ADComputeFiniteStrainElasticStress.h.


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