https://mooseframework.inl.gov
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Protected Types | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Static Protected Attributes | List of all members
InteractionIntegralTempl< is_ad > Class Template Reference

This vectorpostprocessor computes the Interaction Integral, which is used to compute various fracture mechanics parameters at a crack tip, including KI, KII, KIII, and the T stress. More...

#include <InteractionIntegral.h>

Inheritance diagram for InteractionIntegralTempl< is_ad >:
[legend]

Public Types

typedef DataFileName DataFileParameterType
 

Public Member Functions

 InteractionIntegralTempl (const InputParameters &parameters)
 
virtual void initialSetup () override
 
virtual void initialize () override
 
virtual void execute () override
 
virtual void finalize () override
 
virtual void threadJoin (const UserObject &y) override
 
SubProblemgetSubProblem () const
 
bool shouldDuplicateInitialExecution () const
 
virtual Real spatialValue (const Point &) const
 
virtual const std::vector< Point > spatialPoints () const
 
void gatherSum (T &value)
 
void gatherMax (T &value)
 
void gatherMin (T &value)
 
void gatherProxyValueMax (T1 &proxy, T2 &value)
 
void gatherProxyValueMin (T1 &proxy, T2 &value)
 
void setPrimaryThreadCopy (UserObject *primary)
 
UserObjectprimaryThreadCopy ()
 
std::set< UserObjectName > getDependObjects () const
 
virtual bool needThreadedCopy () const
 
const std::set< std::string > & getRequestedItems () override
 
const std::set< std::string > & getSuppliedItems () override
 
unsigned int systemNumber () 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
 
virtual void timestepSetup ()
 
virtual void jacobianSetup ()
 
virtual void residualSetup ()
 
virtual void subdomainSetup ()
 
virtual void customSetup (const ExecFlagType &)
 
const ExecFlagEnumgetExecuteOnEnum () 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
 
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
 
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 MaterialPropertyName &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 MaterialPropertyName &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 MaterialPropertyName &name)
 
const ADMaterialProperty< T > & getADMaterialPropertyByName (const MaterialPropertyName &name)
 
const MaterialProperty< T > & getMaterialPropertyOldByName (const MaterialPropertyName &name, MaterialData &material_data)
 
const MaterialProperty< T > & getMaterialPropertyOldByName (const MaterialPropertyName &name)
 
const MaterialProperty< T > & getMaterialPropertyOldByName (const MaterialPropertyName &name)
 
const MaterialProperty< T > & getMaterialPropertyOlderByName (const MaterialPropertyName &name, MaterialData &material_data)
 
const MaterialProperty< T > & getMaterialPropertyOlderByName (const MaterialPropertyName &name)
 
const MaterialProperty< T > & getMaterialPropertyOlderByName (const MaterialPropertyName &name)
 
std::pair< const MaterialProperty< T > *, std::set< SubdomainID > > getBlockMaterialProperty (const MaterialPropertyName &name)
 
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 MaterialProperty< T > & getZeroMaterialProperty (Ts... args)
 
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
 
virtual const std::unordered_set< unsigned int > & getMatPropDependencies () const
 
virtual void resolveOptionalProperties ()
 
const GenericMaterialProperty< T, is_ad > & getPossiblyConstantGenericMaterialPropertyByName (const MaterialPropertyName &prop_name, MaterialData &material_data, const unsigned int state)
 
virtual const VariableValuecoupledValueByName (const std::string &var_name)
 
virtual const ArrayVariableValuecoupledArrayValueByName (const std::string &var_name)
 
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 std::vector< MooseVariableScalar *> & getCoupledMooseScalarVars ()
 
const std::set< TagID > & getScalarVariableCoupleableVectorTags () const
 
const std::set< TagID > & getScalarVariableCoupleableMatrixTags () 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)
 
bool isImplicit ()
 
Moose::StateArg determineState () const
 
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
 
virtual const dof_id_typegetElementID (const std::string &id_parameter_name, unsigned int comp=0) const
 
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
 
virtual const dof_id_typegetElementIDByName (const std::string &id_name) const
 
virtual const dof_id_typegetElementIDNeighborByName (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
 
std::string PPName () const
 
bool containsCompleteHistory () const
 
bool isDistributed () const
 
const std::set< std::string > & getVectorNames () const
 
void buildOutputHideVariableList (std::set< std::string > variable_names)
 
const std::set< OutputName > & getOutputs ()
 
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 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)
 
MaterialBasegetMaterial (const std::string &name)
 
MaterialBasegetMaterial (const std::string &name)
 
MaterialBasegetMaterialByName (const std::string &name, bool no_warn=false)
 
MaterialBasegetMaterialByName (const std::string &name, bool no_warn=false)
 
bool hasMaterialProperty (const std::string &name)
 
bool hasMaterialProperty (const std::string &name)
 
bool hasMaterialPropertyByName (const std::string &name)
 
bool hasMaterialPropertyByName (const std::string &name)
 
bool hasADMaterialProperty (const std::string &name)
 
bool hasADMaterialProperty (const std::string &name)
 
bool hasADMaterialPropertyByName (const std::string &name)
 
bool hasADMaterialPropertyByName (const std::string &name)
 
bool hasGenericMaterialProperty (const std::string &name)
 
bool hasGenericMaterialProperty (const std::string &name)
 
bool hasGenericMaterialPropertyByName (const std::string &name)
 
bool hasGenericMaterialPropertyByName (const std::string &name)
 
const 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
 
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
 
T & getSampler (const std::string &name)
 
SamplergetSampler (const std::string &name)
 
T & getSamplerByName (const SamplerName &name)
 
SamplergetSamplerByName (const SamplerName &name)
 
virtual void meshChanged ()
 
virtual void meshDisplaced ()
 
PerfGraphperfGraph ()
 
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
 
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
 
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 MooseEnum qFunctionType ()
 Get the MooseEnum defining the options for how the q function is defined. More...
 
static MooseEnum sifModeType ()
 Get the MooseEnum defining the options for the integral to be computed. More...
 
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)
 

Public Attributes

const ConsoleStream _console
 

Static Public Attributes

static constexpr PropertyValue::id_type default_property_id
 
static constexpr PropertyValue::id_type zero_property_id
 
static constexpr auto SYSTEM
 
static constexpr auto NAME
 

Protected Types

enum  QMethod { QMethod::Geometry, QMethod::Topology }
 Enum used to select the method used to compute the q function used in the fracture integrals. More...
 
enum  PositionType { PositionType::Angle, PositionType::Distance }
 Enum used to define how the distance along the crack front is measured (angle or distance) More...
 
enum  SifMethod { SifMethod::KI, SifMethod::KII, SifMethod::KIII, SifMethod::T }
 Enum used to select the type of integral to be performed. More...
 

Protected Member Functions

Real computeQpIntegral (const std::size_t crack_front_point_index, const Real scalar_q, const RealVectorValue &grad_of_scalar_q)
 Compute the contribution of a specific quadrature point to a fracture integral for a point on the crack front. More...
 
void computeAuxFields (RankTwoTensor &aux_stress, RankTwoTensor &grad_disp, RankTwoTensor &aux_strain, RankTwoTensor &aux_disp)
 
Compute the auxiliary fields, including the auxiliary stress and the gradient of the auxiliary displacement for the current point (as defined by the combination of _r and _theta) More...
 
void computeTFields (RankTwoTensor &aux_stress, RankTwoTensor &grad_disp)
 Compute the auxiliary fields, including the auxiliary stress and the gradient of the auxiliary displacement for the current point (as defined by the combination of _r and _theta) for the T stress. More...
 
virtual void addPostprocessorDependencyHelper (const PostprocessorName &name) const override
 
virtual void addVectorPostprocessorDependencyHelper (const VectorPostprocessorName &name) const override
 
virtual void addUserObjectDependencyHelper (const UserObject &uo) const override
 
void addReporterDependencyHelper (const ReporterName &reporter_name) override
 
const ReporterNamegetReporterName (const std::string &param_name) 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
 
const T & getMeshProperty (const std::string &data_name, const std::string &prefix)
 
const T & getMeshProperty (const std::string &data_name)
 
bool hasMeshProperty (const std::string &data_name, const std::string &prefix) const
 
bool hasMeshProperty (const std::string &data_name, const std::string &prefix) const
 
bool hasMeshProperty (const std::string &data_name) const
 
bool hasMeshProperty (const std::string &data_name) const
 
std::string meshPropertyName (const std::string &data_name) const
 
PerfID registerTimedSection (const std::string &section_name, const unsigned int level) const
 
PerfID registerTimedSection (const std::string &section_name, const unsigned int level, const std::string &live_message, const bool print_dots=true) const
 
std::string timedSectionName (const std::string &section_name) const
 
virtual bool hasBlockMaterialPropertyHelper (const std::string &prop_name)
 
void initializeBlockRestrictable (const MooseObject *moose_object)
 
Moose::CoordinateSystemType getBlockCoordSystem ()
 
virtual void checkMaterialProperty (const std::string &name, const unsigned int state)
 
void markMatPropRequested (const std::string &)
 
MaterialPropertyName getMaterialPropertyName (const std::string &name) const
 
void checkExecutionStage ()
 
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
 
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
 
VectorPostprocessorValuedeclareVector (const std::string &vector_name)
 
const T & getReporterValue (const std::string &param_name, const std::size_t time_index=0)
 
const T & getReporterValue (const std::string &param_name, ReporterMode mode, const std::size_t time_index=0)
 
const T & getReporterValue (const std::string &param_name, const std::size_t time_index=0)
 
const T & getReporterValue (const std::string &param_name, ReporterMode mode, const std::size_t time_index=0)
 
const T & getReporterValueByName (const ReporterName &reporter_name, const std::size_t time_index=0)
 
const T & getReporterValueByName (const ReporterName &reporter_name, ReporterMode mode, const std::size_t time_index=0)
 
const T & getReporterValueByName (const ReporterName &reporter_name, const std::size_t time_index=0)
 
const T & getReporterValueByName (const ReporterName &reporter_name, ReporterMode mode, const std::size_t time_index=0)
 
bool hasReporterValue (const std::string &param_name) const
 
bool hasReporterValue (const std::string &param_name) const
 
bool hasReporterValue (const std::string &param_name) const
 
bool hasReporterValue (const std::string &param_name) const
 
bool hasReporterValueByName (const ReporterName &reporter_name) const
 
bool hasReporterValueByName (const ReporterName &reporter_name) const
 
bool hasReporterValueByName (const ReporterName &reporter_name) const
 
bool hasReporterValueByName (const ReporterName &reporter_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)
 

Static Protected Member Functions

static std::string meshPropertyName (const std::string &data_name, const std::string &prefix)
 

Protected Attributes

std::size_t _ndisp
 Number of displacement components. More...
 
const CrackFrontDefinition *const _crack_front_definition
 Pointer to the crack front definition object. More...
 
bool _treat_as_2d
 Whether to treat a model as 2D for computation of fracture integrals. More...
 
bool _using_mesh_cutter
 Is the crack defined by an XFEM cutter mesh. More...
 
const GenericMaterialProperty< RankTwoTensor, is_ad > & _stress
 Reference to the stress tensor computed by the material models. More...
 
const GenericMaterialProperty< RankTwoTensor, is_ad > & _strain
 Reference to the strain tensor computed by the material models. More...
 
std::vector< MooseVariableFEBase * > _fe_vars
 Vector of all coupled variables. More...
 
const libMesh::FEType_fe_type
 FEType object defining order and family of displacement variables. More...
 
std::vector< const VariableValue * > _disp
 Displacement variables. More...
 
std::vector< const VariableGradient * > _grad_disp
 Gradient of displacements. More...
 
const bool _has_temp
 Whether the temperature variable is coupled. More...
 
const VariableGradient_grad_temp
 Gradient of temperature. More...
 
const MaterialProperty< Real > * _functionally_graded_youngs_modulus_crack_dir_gradient
 Spatial derivative of the youngs modulus in the crack direction. More...
 
const MaterialProperty< Real > * _functionally_graded_youngs_modulus
 Spatial elasticity modulus variable for FGM. More...
 
Real _K_factor
 Conversion factor applied to convert interaction integral to stress intensity factor K. More...
 
bool _has_symmetry_plane
 Whether the crack plane is also a symmetry plane in the model. More...
 
Real _poissons_ratio
 Poisson's ratio of the material. More...
 
Real _youngs_modulus
 Young's modulus of the material. More...
 
const bool _fgm_crack
 Whether to consider interaction integral and material properties for a crack in functionally graded material. More...
 
std::size_t _ring_index
 Index of the ring for the integral computed by this object. More...
 
const GenericMaterialProperty< RankTwoTensor, is_ad > *const _total_deigenstrain_dT
 Derivative of the total eigenstrain with respect to temperature. More...
 
bool _has_additional_eigenstrain
 Whether the user chooses to add other eigenstrain influence (e.g. irradiation-induced) More...
 
const VariableGradient_additional_eigenstrain_gradient_00
 Gradient used to add contribution to the interaction integral (XX) More...
 
const VariableGradient_additional_eigenstrain_gradient_01
 Gradient used to add contribution to the interaction integral (XY) More...
 
const VariableGradient_additional_eigenstrain_gradient_11
 Gradient used to add contribution to the interaction integral (YY) More...
 
const VariableGradient_additional_eigenstrain_gradient_22
 Gradient used to add contribution to the interaction integral (ZZ) More...
 
const VariableGradient_additional_eigenstrain_gradient_02
 Gradient used to add contribution to the interaction integral (XZ) More...
 
const VariableGradient_additional_eigenstrain_gradient_12
 Gradient used to add contribution to the interaction integral (YZ) More...
 
std::vector< Real_q_curr_elem
 Vector of q function values for the nodes in the current element. More...
 
const std::vector< std::vector< Real > > * _phi_curr_elem
 Vector of shape function values for the current element. More...
 
const std::vector< std::vector< libMesh::RealGradient > > * _dphi_curr_elem
 Vector of gradients of shape function values for the current element. More...
 
Real _kappa
 Kappa Lame constant. More...
 
Real _shear_modulus
 Shear modulus. More...
 
Real _r
 Radial distance from the current point to the crack front. More...
 
Real _theta
 Angle of current point relative to the crack front. More...
 
unsigned int _qp
 Current quadrature point index. More...
 
enum InteractionIntegralTempl::QMethod _q_function_type
 
enum InteractionIntegralTempl::PositionType _position_type
 
enum InteractionIntegralTempl::SifMethod _sif_mode
 
MooseMesh_mesh
 
const Elem *const & _current_elem
 
const Real_current_elem_volume
 
const MooseArray< Point > & _q_point
 
const QBase *const & _qrule
 
const MooseArray< Real > & _JxW
 
const MooseArray< Real > & _coord
 
SubProblem_subproblem
 
FEProblemBase_fe_problem
 
SystemBase_sys
 
const THREAD_ID _tid
 
Assembly_assembly
 
const Moose::CoordinateSystemType_coord_sys
 
const bool _duplicate_initial_execution
 
std::set< std::string > _depend_uo
 
const bool & _enabled
 
MooseApp_app
 
const std::string _type
 
const std::string _name
 
const InputParameters_pars
 
Factory_factory
 
ActionFactory_action_factory
 
const ExecFlagEnum_execute_enum
 
const ExecFlagType_current_execute_flag
 
MooseApp_restartable_app
 
const std::string _restartable_system_name
 
const THREAD_ID _restartable_tid
 
const bool _restartable_read_only
 
FEProblemBase_mci_feproblem
 
FEProblemBase_mdi_feproblem
 
MooseApp_pg_moose_app
 
const std::string _prefix
 
const MaterialData_blk_material_data
 
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 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
 
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
 
const std::string _vpp_name
 
FEProblemBase_vpp_fe_problem
 
const MooseEnum_parallel_type
 
const Parallel::Communicator & _communicator
 
VectorPostprocessorValue_x
 Vectors computed by this VectorPostprocessor: x,y,z coordinates, position of nodes along crack front, and interaction integral. More...
 
VectorPostprocessorValue_y
 
VectorPostprocessorValue_z
 
VectorPostprocessorValue_position
 
VectorPostprocessorValue_interaction_integral
 
const GenericMaterialProperty< RankThreeTensor, is_ad > * _eigenstrain_gradient
 Pointers to optionally-used eigenstrain gradient and body force. More...
 
const MaterialProperty< RealVectorValue > * _body_force
 

Static Protected Attributes

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

Detailed Description

template<bool is_ad>
class InteractionIntegralTempl< is_ad >

This vectorpostprocessor computes the Interaction Integral, which is used to compute various fracture mechanics parameters at a crack tip, including KI, KII, KIII, and the T stress.

Definition at line 23 of file InteractionIntegral.h.

Member Enumeration Documentation

◆ PositionType

template<bool is_ad>
enum InteractionIntegralTempl::PositionType
strongprotected

Enum used to define how the distance along the crack front is measured (angle or distance)

Enumerator
Angle 
Distance 

Definition at line 165 of file InteractionIntegral.h.

165 { Angle, Distance } _position_type;
enum InteractionIntegralTempl::PositionType _position_type

◆ QMethod

template<bool is_ad>
enum InteractionIntegralTempl::QMethod
strongprotected

Enum used to select the method used to compute the q function used in the fracture integrals.

Enumerator
Geometry 
Topology 

Definition at line 161 of file InteractionIntegral.h.

161 { Geometry, Topology } _q_function_type;
enum InteractionIntegralTempl::QMethod _q_function_type

◆ SifMethod

template<bool is_ad>
enum InteractionIntegralTempl::SifMethod
strongprotected

Enum used to select the type of integral to be performed.

Enumerator
KI 
KII 
KIII 

Definition at line 168 of file InteractionIntegral.h.

168 { KI, KII, KIII, T } _sif_mode;
enum InteractionIntegralTempl::SifMethod _sif_mode

Constructor & Destructor Documentation

◆ InteractionIntegralTempl()

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

Definition at line 116 of file InteractionIntegral.C.

118  _ndisp(coupledComponents("displacements")),
119  _crack_front_definition(&getUserObject<CrackFrontDefinition>("crack_front_definition")),
120  _treat_as_2d(false),
121  _stress(getGenericMaterialPropertyByName<RankTwoTensor, is_ad>("stress")),
122  _strain(getGenericMaterialPropertyByName<RankTwoTensor, is_ad>("elastic_strain")),
124  _fe_type(_fe_vars[0]->feType()),
125  _disp(coupledValues("displacements")),
126  _grad_disp(3),
127  _has_temp(isCoupled("temperature")),
128  _grad_temp(_has_temp ? coupledGradient("temperature") : _grad_zero),
130  isParamSetByUser("functionally_graded_youngs_modulus_crack_dir_gradient")
131  ? &getMaterialProperty<Real>("functionally_graded_youngs_modulus_crack_dir_gradient")
132  : nullptr),
134  isParamSetByUser("functionally_graded_youngs_modulus")
135  ? &getMaterialProperty<Real>("functionally_graded_youngs_modulus")
136  : nullptr),
137  _K_factor(getParam<Real>("K_factor")),
138  _has_symmetry_plane(isParamValid("symmetry_plane")),
139  _poissons_ratio(getParam<Real>("poissons_ratio")),
140  _youngs_modulus(getParam<Real>("youngs_modulus")),
141  _fgm_crack(isParamSetByUser("functionally_graded_youngs_modulus_crack_dir_gradient") &&
142  isParamSetByUser("functionally_graded_youngs_modulus")),
143  _ring_index(getParam<unsigned int>("ring_index")),
145  hasMaterialProperty<RankTwoTensor>("total_deigenstrain_dT")
146  ? &getGenericMaterialProperty<RankTwoTensor, is_ad>("total_deigenstrain_dT")
147  : nullptr),
149  _additional_eigenstrain_gradient_00(isCoupled("additional_eigenstrain_00")
150  ? &coupledGradient("additional_eigenstrain_00")
151  : nullptr),
152  _additional_eigenstrain_gradient_01(isCoupled("additional_eigenstrain_01")
153  ? &coupledGradient("additional_eigenstrain_01")
154  : nullptr),
155  _additional_eigenstrain_gradient_11(isCoupled("additional_eigenstrain_11")
156  ? &coupledGradient("additional_eigenstrain_11")
157  : nullptr),
158  _additional_eigenstrain_gradient_22(isCoupled("additional_eigenstrain_22")
159  ? &coupledGradient("additional_eigenstrain_22")
160  : nullptr),
161  _additional_eigenstrain_gradient_02(isCoupled("additional_eigenstrain_02")
162  ? &coupledGradient("additional_eigenstrain_02")
163  : nullptr),
164  _additional_eigenstrain_gradient_12(isCoupled("additional_eigenstrain_12")
165  ? &coupledGradient("additional_eigenstrain_12")
166  : nullptr),
167  _q_function_type(getParam<MooseEnum>("q_function_type").template getEnum<QMethod>()),
168  _position_type(getParam<MooseEnum>("position_type").template getEnum<PositionType>()),
169  _sif_mode(getParam<MooseEnum>("sif_mode").template getEnum<SifMethod>()),
170  _x(declareVector("x")),
171  _y(declareVector("y")),
172  _z(declareVector("z")),
173  _position(declareVector("id")),
174  _interaction_integral(declareVector("II_" + Moose::stringify(getParam<MooseEnum>("sif_mode")) +
175  "_" + Moose::stringify(_ring_index))),
176  _eigenstrain_gradient(nullptr),
177  _body_force(nullptr)
178 {
180  mooseError("InteractionIntegral Error: To include thermal strain term in interaction integral, "
181  "must both couple temperature in DomainIntegral block and compute "
182  "total_deigenstrain_dT using ThermalFractureIntegral material model.");
183 
188  paramError("functionally_graded_youngs_modulus_crack_dir_gradient",
189  "You have selected to compute the interaction integral for a crack in FGM. That "
190  "selection requires the user to provide a spatially varying elasticity modulus "
191  "that "
192  "defines the transition of material properties (i.e. "
193  "'functionally_graded_youngs_modulus') and its "
194  "spatial derivative in the crack direction (i.e. "
195  "'functionally_graded_youngs_modulus_crack_dir_gradient').");
196 
197  // plane strain
198  _kappa = 3.0 - 4.0 * _poissons_ratio;
199  _shear_modulus = _youngs_modulus / (2.0 * (1.0 + _poissons_ratio));
200 
201  // Checking for consistency between mesh size and length of the provided displacements vector
202  if (_ndisp != _mesh.dimension())
203  paramError("displacements",
204  "InteractionIntegral Error: number of variables supplied in 'displacements' must "
205  "match the mesh dimension.");
206 
207  // fetch gradients of coupled variables
208  for (std::size_t i = 0; i < _ndisp; ++i)
209  _grad_disp[i] = &coupledGradient("displacements", i);
210 
211  // set unused dimensions to zero
212  for (std::size_t i = _ndisp; i < 3; ++i)
213  _grad_disp[i] = &_grad_zero;
214 
215  if (isParamValid("eigenstrain_gradient"))
216  {
218  &getGenericMaterialProperty<RankThreeTensor, is_ad>("eigenstrain_gradient");
220  paramError("eigenstrain_gradient",
221  "eigenstrain_gradient cannot be specified for materials that provide the "
222  "total_deigenstrain_dT material property");
223  }
224  if (isParamValid("body_force"))
225  _body_force = &getMaterialProperty<RealVectorValue>("body_force");
226 
230 
234  paramError("additional_eigenstrain_gradient_12",
235  "If additional eigenstrains are provided for the computation of the interaction "
236  "integral in three dimensions, make sure the six components are provided.");
237 
239  mooseInfo("A generic eigenstrain provided by the user will be considered in the interaction "
240  "integral (via domain integral action).");
241 }
const VariableGradient * _additional_eigenstrain_gradient_02
Gradient used to add contribution to the interaction integral (XZ)
const GenericMaterialProperty< RankTwoTensor, is_ad > *const _total_deigenstrain_dT
Derivative of the total eigenstrain with respect to temperature.
virtual bool isCoupled(const std::string &var_name, unsigned int i=0) const
VectorPostprocessorValue & _x
Vectors computed by this VectorPostprocessor: x,y,z coordinates, position of nodes along crack front...
enum InteractionIntegralTempl::SifMethod _sif_mode
bool _has_additional_eigenstrain
Whether the user chooses to add other eigenstrain influence (e.g. irradiation-induced) ...
std::vector< const VariableValue * > _disp
Displacement variables.
const CrackFrontDefinition *const _crack_front_definition
Pointer to the crack front definition object.
const MaterialProperty< Real > * _functionally_graded_youngs_modulus
Spatial elasticity modulus variable for FGM.
const MaterialProperty< Real > * _functionally_graded_youngs_modulus_crack_dir_gradient
Spatial derivative of the youngs modulus in the crack direction.
const VariableGradient & _grad_zero
VectorPostprocessorValue & _y
void mooseInfo(Args &&... args) const
const libMesh::FEType & _fe_type
FEType object defining order and family of displacement variables.
Real _kappa
Kappa Lame constant.
std::vector< const VariableGradient * > _grad_disp
Gradient of displacements.
const VariableGradient * _additional_eigenstrain_gradient_01
Gradient used to add contribution to the interaction integral (XY)
ElementVectorPostprocessor(const InputParameters &parameters)
Real _poissons_ratio
Poisson&#39;s ratio of the material.
const VariableGradient * _additional_eigenstrain_gradient_11
Gradient used to add contribution to the interaction integral (YY)
virtual const VariableGradient & coupledGradient(const std::string &var_name, unsigned int comp=0) const
const VariableGradient & _grad_temp
Gradient of temperature.
bool isParamValid(const std::string &name) const
bool _treat_as_2d
Whether to treat a model as 2D for computation of fracture integrals.
const GenericMaterialProperty< RankTwoTensor, is_ad > & _stress
Reference to the stress tensor computed by the material models.
virtual unsigned int dimension() const
const MaterialProperty< RealVectorValue > * _body_force
VectorPostprocessorValue & _z
std::vector< MooseVariableFEBase * > _fe_vars
Vector of all coupled variables.
bool _has_symmetry_plane
Whether the crack plane is also a symmetry plane in the model.
void paramError(const std::string &param, Args... args) const
VectorPostprocessorValue & declareVector(const std::string &vector_name)
std::string stringify(const T &t)
Real _K_factor
Conversion factor applied to convert interaction integral to stress intensity factor K...
const bool _has_temp
Whether the temperature variable is coupled.
const std::vector< MooseVariableFieldBase *> & getCoupledMooseVars() const
const bool _fgm_crack
Whether to consider interaction integral and material properties for a crack in functionally graded m...
unsigned int coupledComponents(const std::string &var_name) const
bool isParamSetByUser(const std::string &nm) const
const VariableGradient * _additional_eigenstrain_gradient_12
Gradient used to add contribution to the interaction integral (YZ)
std::vector< const VariableValue *> coupledValues(const std::string &var_name) const
void mooseError(Args &&... args) const
const InputParameters & parameters() const
VectorPostprocessorValue & _position
const GenericMaterialProperty< RankThreeTensor, is_ad > * _eigenstrain_gradient
Pointers to optionally-used eigenstrain gradient and body force.
enum InteractionIntegralTempl::QMethod _q_function_type
Real _shear_modulus
Shear modulus.
enum InteractionIntegralTempl::PositionType _position_type
const GenericMaterialProperty< RankTwoTensor, is_ad > & _strain
Reference to the strain tensor computed by the material models.
std::size_t _ndisp
Number of displacement components.
const VariableGradient * _additional_eigenstrain_gradient_22
Gradient used to add contribution to the interaction integral (ZZ)
std::size_t _ring_index
Index of the ring for the integral computed by this object.
VectorPostprocessorValue & _interaction_integral
Real _youngs_modulus
Young&#39;s modulus of the material.
const VariableGradient * _additional_eigenstrain_gradient_00
Gradient used to add contribution to the interaction integral (XX)

Member Function Documentation

◆ computeAuxFields()

template<bool is_ad>
void InteractionIntegralTempl< is_ad >::computeAuxFields ( RankTwoTensor aux_stress,
RankTwoTensor grad_disp,
RankTwoTensor aux_strain,
RankTwoTensor aux_disp 
)
protected


Compute the auxiliary fields, including the auxiliary stress and the gradient of the auxiliary displacement for the current point (as defined by the combination of _r and _theta)

Parameters
aux_stressAuxiliary stress – computed in this method
grad_dispGradient of auxiliary displacement – computed in this method
grad_dispAuxiliary strain (FGM) – computed in this method
aux_dispAuxiliary displacement – computed in this method only for axisymmetric (RZ) meshes

Definition at line 611 of file InteractionIntegral.C.

615 {
616  RealVectorValue k(0.0);
617  if (_sif_mode == SifMethod::KI)
618  k(0) = 1.0;
619  else if (_sif_mode == SifMethod::KII)
620  k(1) = 1.0;
621  else if (_sif_mode == SifMethod::KIII)
622  k(2) = 1.0;
623 
624  Real t = _theta;
625  Real t2 = _theta / 2.0;
626  Real tt2 = 3.0 * _theta / 2.0;
627  Real st = std::sin(t);
628  Real ct = std::cos(t);
629  Real st2 = std::sin(t2);
630  Real ct2 = std::cos(t2);
631  Real stt2 = std::sin(tt2);
632  Real ctt2 = std::cos(tt2);
633  Real ct2sq = Utility::pow<2>(ct2);
634  Real st2sq = Utility::pow<2>(st2);
635  Real ct2cu = Utility::pow<3>(ct2);
636  Real sqrt2PiR = std::sqrt(2.0 * libMesh::pi * _r);
637 
638  // Calculate auxiliary stress tensor
639  aux_stress.zero();
640 
641  aux_stress(0, 0) =
642  1.0 / sqrt2PiR * (k(0) * ct2 * (1.0 - st2 * stt2) - k(1) * st2 * (2.0 + ct2 * ctt2));
643  aux_stress(1, 1) = 1.0 / sqrt2PiR * (k(0) * ct2 * (1.0 + st2 * stt2) + k(1) * st2 * ct2 * ctt2);
644  aux_stress(0, 1) = 1.0 / sqrt2PiR * (k(0) * ct2 * st2 * ctt2 + k(1) * ct2 * (1.0 - st2 * stt2));
645  aux_stress(0, 2) = -1.0 / sqrt2PiR * k(2) * st2;
646  aux_stress(1, 2) = 1.0 / sqrt2PiR * k(2) * ct2;
647  // plane stress
648  // Real s33 = 0;
649  // plane strain
650  aux_stress(2, 2) = _poissons_ratio * (aux_stress(0, 0) + aux_stress(1, 1));
651 
652  aux_stress(1, 0) = aux_stress(0, 1);
653  aux_stress(2, 0) = aux_stress(0, 2);
654  aux_stress(2, 1) = aux_stress(1, 2);
655 
656  // Calculate auxiliary strain tensor (only needed to FGM)
657  if (_fgm_crack)
658  {
659  aux_strain.zero();
660  RankFourTensor spatial_elasticity_tensor;
661  spatial_elasticity_tensor.fillSymmetricIsotropicEandNu(
663  aux_strain = spatial_elasticity_tensor.invSymm() * aux_stress;
664  }
665 
666  // Calculate x1 derivative of auxiliary displacements
667  grad_disp.zero();
668  grad_disp(0, 0) = k(0) / (4.0 * _shear_modulus * sqrt2PiR) *
669  (ct * ct2 * _kappa + ct * ct2 - 2.0 * ct * ct2cu + st * st2 * _kappa +
670  st * st2 - 6.0 * st * st2 * ct2sq) +
671  k(1) / (4.0 * _shear_modulus * sqrt2PiR) *
672  (ct * st2 * _kappa + ct * st2 + 2.0 * ct * st2 * ct2sq - st * ct2 * _kappa +
673  3.0 * st * ct2 - 6.0 * st * ct2cu);
674 
675  grad_disp(0, 1) = k(0) / (4.0 * _shear_modulus * sqrt2PiR) *
676  (ct * st2 * _kappa + ct * st2 - 2.0 * ct * st2 * ct2sq - st * ct2 * _kappa -
677  5.0 * st * ct2 + 6.0 * st * ct2cu) +
678  k(1) / (4.0 * _shear_modulus * sqrt2PiR) *
679  (-ct * ct2 * _kappa + 3.0 * ct * ct2 - 2.0 * ct * ct2cu -
680  st * st2 * _kappa + 3.0 * st * st2 - 6.0 * st * st2 * ct2sq);
681 
682  grad_disp(0, 2) = k(2) / (_shear_modulus * sqrt2PiR) * (st2 * ct - ct2 * st);
683 
684  // Calculate aux displacement field (used in RZ calculations) - Warp3D manual
685  aux_disp.zero();
687  {
688  const Real prefactor_rz = std::sqrt(_r / 2.0 / libMesh::pi) / 2.0 / _shear_modulus;
689  aux_disp(0, 0) = prefactor_rz * ((k(0) * ct2 * (_kappa - 1.0 + 2.0 * st2sq)) +
690  (k(1) * st2 * (_kappa + 1.0 + 2.0 * ct2sq)));
691  aux_disp(0, 1) = prefactor_rz * ((k(0) * st2 * (_kappa + 1.0 - 2.0 * ct2sq)) -
692  (k(1) * ct2 * (_kappa - 1.0 - 2.0 * st2sq)));
693  aux_disp(0, 2) = prefactor_rz * k(2) * 4.0 * st2;
694  }
695 }
unsigned int _qp
Current quadrature point index.
enum InteractionIntegralTempl::SifMethod _sif_mode
const MaterialProperty< Real > * _functionally_graded_youngs_modulus
Spatial elasticity modulus variable for FGM.
Real _kappa
Kappa Lame constant.
Moose::CoordinateSystemType getBlockCoordSystem()
Real _r
Radial distance from the current point to the crack front.
Real _poissons_ratio
Poisson&#39;s ratio of the material.
void fillSymmetricIsotropicEandNu(const T &E, const T &nu)
Real _theta
Angle of current point relative to the crack front.
const bool _fgm_crack
Whether to consider interaction integral and material properties for a crack in functionally graded m...
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
RankFourTensorTempl< T > invSymm() const
static const std::string k
Definition: NS.h:130
Real _shear_modulus
Shear modulus.
const Real pi

◆ computeQpIntegral()

template<bool is_ad>
Real InteractionIntegralTempl< is_ad >::computeQpIntegral ( const std::size_t  crack_front_point_index,
const Real  scalar_q,
const RealVectorValue grad_of_scalar_q 
)
protected

Compute the contribution of a specific quadrature point to a fracture integral for a point on the crack front.

Parameters
crack_front_point_indexIndex to the crack front point
scalar_qMagnitude of the q vector at the quadrature point
grad_of_scalar_qGradient of the magnitude of the q vector at the quadrature point
Returns
Contribution of this quadrature point to the integral

Definition at line 276 of file InteractionIntegral.C.

279 {
280  // If q is zero, then dq is also zero, so all terms in the interaction integral would
281  // return zero. As such, let us avoid unnecessary, frequent computations
282  if (scalar_q < TOLERANCE * TOLERANCE * TOLERANCE)
283  return 0.0;
284 
285  // In the crack front coordinate system, the crack direction is (1,0,0)
286  RealVectorValue crack_direction(1.0, 0.0, 0.0);
287 
288  // Calculate (r,theta) position of qp relative to crack front
290  _q_point[_qp], crack_front_point_index, _r, _theta);
291 
292  RankTwoTensor aux_stress;
293  RankTwoTensor aux_du;
294  RankTwoTensor aux_strain;
295  RankTwoTensor aux_disp;
296 
298  computeAuxFields(aux_stress, aux_du, aux_strain, aux_disp);
299  else if (_sif_mode == SifMethod::T)
300  computeTFields(aux_stress, aux_du);
301 
302  auto grad_disp = RankTwoTensor::initializeFromRows(
303  (*_grad_disp[0])[_qp], (*_grad_disp[1])[_qp], (*_grad_disp[2])[_qp]);
304 
305  // Rotate stress, strain, displacement and temperature to crack front coordinate system
306  RealVectorValue grad_q_cf =
307  _crack_front_definition->rotateToCrackFrontCoords(grad_of_scalar_q, crack_front_point_index);
308  RankTwoTensor grad_disp_cf =
309  _crack_front_definition->rotateToCrackFrontCoords(grad_disp, crack_front_point_index);
311  MetaPhysicL::raw_value((_stress)[_qp]), crack_front_point_index);
313  MetaPhysicL::raw_value((_strain)[_qp]), crack_front_point_index);
314  RealVectorValue grad_temp_cf =
316 
318  strain_cf(2, 2) = 0.0;
319 
320  RankTwoTensor dq;
321  dq(0, 0) = crack_direction(0) * grad_q_cf(0);
322  dq(0, 1) = crack_direction(0) * grad_q_cf(1);
323  dq(0, 2) = crack_direction(0) * grad_q_cf(2);
324 
325  // Calculate interaction integral terms
326 
327  // Term1 = stress * x1-derivative of aux disp * dq
328  RankTwoTensor tmp1 = dq * stress_cf;
329  Real term1 = aux_du.doubleContraction(tmp1);
330 
331  // Term2 = aux stress * x1-derivative of disp * dq
332  RankTwoTensor tmp2 = dq * aux_stress;
333  Real term2 = grad_disp_cf(0, 0) * tmp2(0, 0) + grad_disp_cf(1, 0) * tmp2(0, 1) +
334  grad_disp_cf(2, 0) * tmp2(0, 2);
335 
336  // Term3 = aux stress * strain * dq_x (= stress * aux strain * dq_x)
337  Real term3 = -dq(0, 0) * aux_stress.doubleContraction(strain_cf);
338 
339  // Term4 (thermal strain term) = q * aux_stress * alpha * dtheta_x
340  // - the term including the derivative of alpha is not implemented
341  Real term4 = 0.0;
342  if (_has_temp)
343  {
344  Real sigma_alpha =
345  aux_stress.doubleContraction(MetaPhysicL::raw_value((*_total_deigenstrain_dT)[_qp]));
346  term4 = scalar_q * sigma_alpha * grad_temp_cf(0);
347  }
348 
349  Real term4a = 0.0; // Gradient of arbitrary eigenstrain material contribution
351  {
352  // Thermal strain gradient term in Nakamura and Parks, IJSS, 1992:
353  // alpha * dT/dx_k*aux_stress*scalar_q
354  // Generalization to the gradient of an arbitrary eigenstrain:
355  // d_eigenstrain/dx_k*aux_stress*scalar_q
356  const RealVectorValue & crack_dir =
357  _crack_front_definition->getCrackDirection(crack_front_point_index);
358  RankTwoTensor eigenstrain_grad_in_crack_dir =
360  term4a = scalar_q * aux_stress.doubleContraction(eigenstrain_grad_in_crack_dir);
361  }
362 
363  // Gradient of arbitrary eigenstrain variable contribution.
364  // Note that, unlike approaches 4 and 4a, approach 4b can integrate any type of eigenstrain, i.e.
365  // it does not have to be thermal or volumetric.
366  Real term4b = 0.0;
367  // Term4b (eigen strain term) = q * aux_stress * d{eigen_strain}_x
369  {
371  I_x(0, 0) = 1.0;
373  I_xy(0, 1) = 1.0;
374  I_xy(1, 0) = 1.0;
376  I_y(1, 1) = 1.0;
378  I_z(2, 2) = 1.0;
379 
380  const RealVectorValue & crack_dir =
381  _crack_front_definition->getCrackDirection(crack_front_point_index);
382 
383  const auto eigenstrain_gradient_x =
384  I_x.mixedProductJkI((*_additional_eigenstrain_gradient_00)[_qp]);
385  const auto eigenstrain_gradient_xy =
386  I_xy.mixedProductJkI((*_additional_eigenstrain_gradient_01)[_qp]);
387  const auto eigenstrain_gradient_y =
388  I_y.mixedProductJkI((*_additional_eigenstrain_gradient_11)[_qp]);
389 
390  GenericRankThreeTensor<is_ad> eigenstrain_gradient_z;
392  eigenstrain_gradient_z = I_z.mixedProductJkI((*_additional_eigenstrain_gradient_22)[_qp]);
393 
394  RankTwoTensor eigenstrain_grad_in_crack_dir =
395  crack_dir * (MetaPhysicL::raw_value(eigenstrain_gradient_x) +
396  MetaPhysicL::raw_value(eigenstrain_gradient_xy) +
397  MetaPhysicL::raw_value(eigenstrain_gradient_y) +
398  MetaPhysicL::raw_value(eigenstrain_gradient_z));
399 
400  GenericRankThreeTensor<is_ad> eigenstrain_gradient_xz;
401  GenericRankThreeTensor<is_ad> eigenstrain_gradient_yz;
402  // Add terms for three dimensions
403  if (_mesh.dimension() == 3)
404  {
405  // Add influence of xz and yz.
407  I_xz(0, 2) = I_xz(2, 0) = 1.0;
408  eigenstrain_gradient_xz = I_xz.mixedProductJkI((*_additional_eigenstrain_gradient_02)[_qp]);
410  I_yz(1, 2) = I_yz(2, 1) = 1.0;
411  eigenstrain_gradient_yz = I_yz.mixedProductJkI((*_additional_eigenstrain_gradient_12)[_qp]);
412 
413  eigenstrain_grad_in_crack_dir = crack_dir * (MetaPhysicL::raw_value(eigenstrain_gradient_xz) +
414  MetaPhysicL::raw_value(eigenstrain_gradient_yz) +
415  MetaPhysicL::raw_value(eigenstrain_gradient_x) +
416  MetaPhysicL::raw_value(eigenstrain_gradient_xy) +
417  MetaPhysicL::raw_value(eigenstrain_gradient_y) +
418  MetaPhysicL::raw_value(eigenstrain_gradient_z));
419  }
420 
421  term4b = scalar_q * aux_stress.doubleContraction(eigenstrain_grad_in_crack_dir);
422  }
423 
424  Real term5 = 0.0; // Body force
425  if (_body_force)
426  {
427  // Body force term in Nakamura and Parks, IJSS, 1992:
428  // b_i*aux_du*crack_dir*scalar_q
429  const RealVectorValue & crack_dir =
430  _crack_front_definition->getCrackDirection(crack_front_point_index);
431  term5 = -scalar_q * MetaPhysicL::raw_value((*_body_force)[_qp]) * aux_du * crack_dir;
432  }
433 
434  Real term6 = 0.0;
435  if (_fgm_crack && scalar_q != 0)
436  {
437  // See Equation 49 of J.-H. Kim and G. H. Paulino. Consistent formulations of the interaction
438  // integral method for fracture of functionally graded materials. Journal of Applied Mechanics,
439  // 72(3) 351-364 2004.
440 
441  // Term 6_1 = Cijkl,j(x) epsilon_{kl}^{aux} disp_{i,1}
442  RankTwoTensor cijklj_epsilonkl_aux; // Temporary second order tensor.
443  RankFourTensor cijklj;
445  cijklj *= (*_functionally_graded_youngs_modulus_crack_dir_gradient)[_qp];
446  cijklj_epsilonkl_aux = cijklj * aux_strain;
447 
448  const Real term6_a = grad_disp_cf(0, 0) * cijklj_epsilonkl_aux(0, 0) +
449  grad_disp_cf(1, 0) * cijklj_epsilonkl_aux(0, 1) +
450  grad_disp_cf(2, 0) * cijklj_epsilonkl_aux(0, 2);
451 
452  // Term 6_2 = -Cijkl,1(x) epsilon_{kl} epsilon_{ij}^{aux}
453  RankTwoTensor cijkl1_epsilonkl;
454  cijkl1_epsilonkl = -cijklj * strain_cf;
455  const Real term6_b = cijkl1_epsilonkl.doubleContraction(aux_strain);
456 
457  term6 = (term6_a + term6_b) * scalar_q;
458  }
459 
460  // Add terms for possibly RZ (axisymmetric problem).
461  // See Nahta and Moran, 1993, Domain integrals for axisymmetric interface crack problems, 30(15)
462  // Note: Sign problem in Eq. (26). Also Kolosov constant is wrong in Eq. (13)
463  Real term7 = 0.0;
465  {
466  const Real u_r = (*_disp[0])[_qp];
467  const Real radius_qp = _q_point[_qp](0);
468 
469  const Real term7a =
470  (u_r / radius_qp * aux_stress(2, 2) + aux_disp(0, 0) / radius_qp * stress_cf(2, 2) -
471  aux_stress.doubleContraction(strain_cf)) /
472  radius_qp;
473 
474  // term7b1: sigma_aux_ralpha * u_alpha,r
475  const Real term7b1 = aux_stress(0, 0) * grad_disp_cf(0, 0) +
476  aux_stress(0, 1) * grad_disp_cf(1, 0) +
477  aux_stress(0, 2) * grad_disp_cf(2, 0);
478 
479  const Real term7b = 1.0 / radius_qp *
480  (term7b1 - aux_stress(2, 2) * grad_disp_cf(0, 0) +
481  stress_cf(2, 2) * (aux_du(0, 0) - aux_disp(0, 0) / radius_qp));
482 
483  term7 = (term7a + term7b) * scalar_q;
484  }
485 
486  Real q_avg_seg = 1.0;
488  {
489  q_avg_seg =
492  2.0;
493  }
494 
495  Real eq = term1 + term2 + term3 + term4 + term4a + term4b + term5 + term6 + term7;
496 
498  {
499  const Real radius_qp = _q_point[_qp](0);
500  eq *= radius_qp;
501 
502  std::size_t num_crack_front_points = _crack_front_definition->getNumCrackFrontPoints();
503  if (num_crack_front_points != 1)
504  mooseError("Crack front has more than one point, but this is a 2D-RZ problem. Please revise "
505  "your input file.");
506 
507  const Point * crack_front_point = _crack_front_definition->getCrackFrontPoint(0);
508  eq = eq / (*crack_front_point)(0);
509  }
510 
511  return eq / q_avg_seg;
512 }
const VariableGradient * _additional_eigenstrain_gradient_02
Gradient used to add contribution to the interaction integral (XZ)
unsigned int _qp
Current quadrature point index.
const GenericMaterialProperty< RankTwoTensor, is_ad > *const _total_deigenstrain_dT
Derivative of the total eigenstrain with respect to temperature.
enum InteractionIntegralTempl::SifMethod _sif_mode
bool _has_additional_eigenstrain
Whether the user chooses to add other eigenstrain influence (e.g. irradiation-induced) ...
std::vector< const VariableValue * > _disp
Displacement variables.
const CrackFrontDefinition *const _crack_front_definition
Pointer to the crack front definition object.
const MooseArray< Point > & _q_point
void computeAuxFields(RankTwoTensor &aux_stress, RankTwoTensor &grad_disp, RankTwoTensor &aux_strain, RankTwoTensor &aux_disp)
Compute the auxiliary fields, including the auxiliary stress and the gradient of the auxiliary disp...
Real getCrackFrontBackwardSegmentLength(const std::size_t point_index) const
Get the length of the line segment on the crack front behind the specified position.
std::vector< const VariableGradient * > _grad_disp
Gradient of displacements.
Moose::CoordinateSystemType getBlockCoordSystem()
const VariableGradient * _additional_eigenstrain_gradient_01
Gradient used to add contribution to the interaction integral (XY)
auto raw_value(const Eigen::Map< T > &in)
RealVectorValue rotateToCrackFrontCoords(const RealVectorValue vector, const std::size_t point_index) const
Rotate a vector in the global coordinate coordinate system to the crack front local coordinate system...
Real _r
Radial distance from the current point to the crack front.
Real _poissons_ratio
Poisson&#39;s ratio of the material.
const VariableGradient * _additional_eigenstrain_gradient_11
Gradient used to add contribution to the interaction integral (YY)
const VariableGradient & _grad_temp
Gradient of temperature.
static RankTwoTensorTempl initializeFromRows(const libMesh::TypeVector< Real > &row0, const libMesh::TypeVector< Real > &row1, const libMesh::TypeVector< Real > &row2)
std::size_t getNumCrackFrontPoints() const
Get the number of points defining the crack front as a set of line segments.
const GenericMaterialProperty< RankTwoTensor, is_ad > & _stress
Reference to the stress tensor computed by the material models.
const Point * getCrackFrontPoint(const std::size_t point_index) const
Get a Point object for a specified point on the crack front.
void calculateRThetaToCrackFront(const Point qp, const std::size_t point_index, Real &r, Real &theta) const
Calculate r and theta of a point in the crack front polar coordinates for a given crack point index...
virtual unsigned int dimension() const
const MaterialProperty< RealVectorValue > * _body_force
void fillSymmetricIsotropicEandNu(const T &E, const T &nu)
Real _theta
Angle of current point relative to the crack front.
const RealVectorValue & getCrackDirection(const std::size_t point_index) const
Get the unit vector of the crack extension direction at the specified position.
Real doubleContraction(const RankTwoTensorTempl< Real > &a) const
const bool _has_temp
Whether the temperature variable is coupled.
const bool _fgm_crack
Whether to consider interaction integral and material properties for a crack in functionally graded m...
const VariableGradient * _additional_eigenstrain_gradient_12
Gradient used to add contribution to the interaction integral (YZ)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void mooseError(Args &&... args) const
Moose::GenericType< RankThreeTensor, is_ad > GenericRankThreeTensor
Real getCrackFrontForwardSegmentLength(const std::size_t point_index) const
Get the length of the line segment on the crack front ahead of the specified position.
const GenericMaterialProperty< RankThreeTensor, is_ad > * _eigenstrain_gradient
Pointers to optionally-used eigenstrain gradient and body force.
void computeTFields(RankTwoTensor &aux_stress, RankTwoTensor &grad_disp)
Compute the auxiliary fields, including the auxiliary stress and the gradient of the auxiliary displa...
bool treatAs2D() const
Whether the fracture computations are treated as 2D for the model.
const GenericMaterialProperty< RankTwoTensor, is_ad > & _strain
Reference to the strain tensor computed by the material models.
const VariableGradient * _additional_eigenstrain_gradient_22
Gradient used to add contribution to the interaction integral (ZZ)
const VariableGradient * _additional_eigenstrain_gradient_00
Gradient used to add contribution to the interaction integral (XX)

◆ computeTFields()

template<bool is_ad>
void InteractionIntegralTempl< is_ad >::computeTFields ( RankTwoTensor aux_stress,
RankTwoTensor grad_disp 
)
protected

Compute the auxiliary fields, including the auxiliary stress and the gradient of the auxiliary displacement for the current point (as defined by the combination of _r and _theta) for the T stress.

Parameters
aux_stressAuxiliary stress – computed in this method
grad_dispGradient of auxiliary displacement – computed in this method

Definition at line 699 of file InteractionIntegral.C.

701 {
702 
703  Real t = _theta;
704  Real st = std::sin(t);
705  Real ct = std::cos(t);
706  Real stsq = Utility::pow<2>(st);
707  Real ctsq = Utility::pow<2>(ct);
708  Real ctcu = Utility::pow<3>(ct);
709  Real oneOverPiR = 1.0 / (libMesh::pi * _r);
710 
711  aux_stress.zero();
712  aux_stress(0, 0) = -oneOverPiR * ctcu;
713  aux_stress(0, 1) = -oneOverPiR * st * ctsq;
714  aux_stress(1, 0) = -oneOverPiR * st * ctsq;
715  aux_stress(1, 1) = -oneOverPiR * ct * stsq;
716  aux_stress(2, 2) = -oneOverPiR * _poissons_ratio * (ctcu + ct * stsq);
717 
718  grad_disp.zero();
719  grad_disp(0, 0) = oneOverPiR / (4.0 * _youngs_modulus) *
720  (ct * (4.0 * Utility::pow<2>(_poissons_ratio) - 3.0 + _poissons_ratio) -
721  std::cos(3.0 * t) * (1.0 + _poissons_ratio));
722  grad_disp(0, 1) = -oneOverPiR / (4.0 * _youngs_modulus) *
723  (st * (4.0 * Utility::pow<2>(_poissons_ratio) - 3.0 + _poissons_ratio) +
724  std::sin(3.0 * t) * (1.0 + _poissons_ratio));
725 }
Real _r
Radial distance from the current point to the crack front.
Real _poissons_ratio
Poisson&#39;s ratio of the material.
Real _theta
Angle of current point relative to the crack front.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
Real _youngs_modulus
Young&#39;s modulus of the material.
const Real pi

◆ execute()

template<bool is_ad>
void InteractionIntegralTempl< is_ad >::execute ( )
overridevirtual

Implements ElementVectorPostprocessor.

Definition at line 516 of file InteractionIntegral.C.

517 {
518  // calculate phi and dphi for this element
519  const std::size_t dim = _current_elem->dim();
520  std::unique_ptr<FEBase> fe(FEBase::build(dim, _fe_type));
521  fe->attach_quadrature_rule(const_cast<QBase *>(_qrule));
522  _phi_curr_elem = &fe->get_phi();
523  _dphi_curr_elem = &fe->get_dphi();
524  fe->reinit(_current_elem);
525 
526  // calculate q for all nodes in this element
527  std::size_t ring_base = (_q_function_type == QMethod::Topology) ? 0 : 1;
528 
529  for (auto icfp = beginIndex(_interaction_integral); icfp < _interaction_integral.size(); icfp++)
530  {
531  _q_curr_elem.clear();
532  for (std::size_t i = 0; i < _current_elem->n_nodes(); ++i)
533  {
534  const Node * this_node = _current_elem->node_ptr(i);
535  Real q_this_node;
536 
539  icfp, _ring_index - ring_base, this_node);
540  else // QMethod::Topology
542  icfp, _ring_index - ring_base, this_node);
543 
544  _q_curr_elem.push_back(q_this_node);
545  }
546 
547  for (_qp = 0; _qp < _qrule->n_points(); _qp++)
548  {
549  Real scalar_q = 0.0;
550  RealVectorValue grad_of_scalar_q(0.0, 0.0, 0.0);
551 
552  for (std::size_t i = 0; i < _current_elem->n_nodes(); ++i)
553  {
554  scalar_q += (*_phi_curr_elem)[i][_qp] * _q_curr_elem[i];
555 
556  for (std::size_t j = 0; j < _current_elem->dim(); ++j)
557  grad_of_scalar_q(j) += (*_dphi_curr_elem)[i][_qp](j) * _q_curr_elem[i];
558  }
559 
561  _interaction_integral[icfp] +=
562  _JxW[_qp] * _coord[_qp] * computeQpIntegral(icfp, scalar_q, grad_of_scalar_q);
563  else
564  _interaction_integral[icfp] +=
565  _JxW[_qp] * computeQpIntegral(icfp, scalar_q, grad_of_scalar_q);
566  }
567  }
568 }
unsigned int _qp
Current quadrature point index.
const std::vector< std::vector< Real > > * _phi_curr_elem
Vector of shape function values for the current element.
std::unique_ptr< FEGenericBase< Real > > build(const unsigned int dim, const FEType &fet)
const CrackFrontDefinition *const _crack_front_definition
Pointer to the crack front definition object.
const MooseArray< Real > & _coord
unsigned int dim
const libMesh::FEType & _fe_type
FEType object defining order and family of displacement variables.
Moose::CoordinateSystemType getBlockCoordSystem()
Real DomainIntegralQFunction(std::size_t crack_front_point_index, std::size_t ring_index, const Node *const current_node) const
Compute the q function for the case where it is defined geometrically.
Real DomainIntegralTopologicalQFunction(std::size_t crack_front_point_index, std::size_t ring_index, const Node *const current_node) const
Compute the q function for the case where it is defined through element connectivity.
Real computeQpIntegral(const std::size_t crack_front_point_index, const Real scalar_q, const RealVectorValue &grad_of_scalar_q)
Compute the contribution of a specific quadrature point to a fracture integral for a point on the cra...
const std::vector< std::vector< libMesh::RealGradient > > * _dphi_curr_elem
Vector of gradients of shape function values for the current element.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const QBase *const & _qrule
const Elem *const & _current_elem
const MooseArray< Real > & _JxW
static const std::complex< double > j(0, 1)
Complex number "j" (also known as "i")
std::vector< Real > _q_curr_elem
Vector of q function values for the nodes in the current element.
enum InteractionIntegralTempl::QMethod _q_function_type
std::size_t _ring_index
Index of the ring for the integral computed by this object.
VectorPostprocessorValue & _interaction_integral

◆ finalize()

template<bool is_ad>
void InteractionIntegralTempl< is_ad >::finalize ( )
overridevirtual

Reimplemented from ElementVectorPostprocessor.

Definition at line 572 of file InteractionIntegral.C.

573 {
575 
576  for (auto i = beginIndex(_interaction_integral); i < _interaction_integral.size(); ++i)
577  {
579  _interaction_integral[i] *= 2.0;
580 
581  const auto cfp = _crack_front_definition->getCrackFrontPoint(i);
582  _x[i] = (*cfp)(0);
583  _y[i] = (*cfp)(1);
584  _z[i] = (*cfp)(2);
585 
588  else
590 
594 
596  }
597 }
VectorPostprocessorValue & _x
Vectors computed by this VectorPostprocessor: x,y,z coordinates, position of nodes along crack front...
enum InteractionIntegralTempl::SifMethod _sif_mode
const CrackFrontDefinition *const _crack_front_definition
Pointer to the crack front definition object.
VectorPostprocessorValue & _y
Real _poissons_ratio
Poisson&#39;s ratio of the material.
bool _treat_as_2d
Whether to treat a model as 2D for computation of fracture integrals.
const Point * getCrackFrontPoint(const std::size_t point_index) const
Get a Point object for a specified point on the crack front.
Real getDistanceAlongFront(const std::size_t point_index) const
Get the distance along the crack front from the beginning of the crack to the specified position...
VectorPostprocessorValue & _z
bool _has_symmetry_plane
Whether the crack plane is also a symmetry plane in the model.
Real _K_factor
Conversion factor applied to convert interaction integral to stress intensity factor K...
Real getAngleAlongFront(const std::size_t point_index) const
Get the angle along the crack front from the beginning of the crack to the specified position...
Real getCrackFrontTangentialStrain(const std::size_t node_index) const
Get the strain in the direction tangent to the crack front at a given point.
VectorPostprocessorValue & _position
enum InteractionIntegralTempl::PositionType _position_type
VectorPostprocessorValue & _interaction_integral

◆ initialize()

template<bool is_ad>
void InteractionIntegralTempl< is_ad >::initialize ( )
overridevirtual

Implements ElementVectorPostprocessor.

Definition at line 253 of file InteractionIntegral.C.

254 {
255  std::size_t num_pts;
256  if (_treat_as_2d && _using_mesh_cutter == false)
257  num_pts = 1;
258  else
260 
261  _x.assign(num_pts, 0.0);
262  _y.assign(num_pts, 0.0);
263  _z.assign(num_pts, 0.0);
264  _position.assign(num_pts, 0.0);
265  _interaction_integral.assign(num_pts, 0.0);
266 
267  for (const auto * fe_var : _fe_vars)
268  {
269  if (fe_var->feType() != _fe_type)
270  mooseError("All coupled displacements must have the same type");
271  }
272 }
VectorPostprocessorValue & _x
Vectors computed by this VectorPostprocessor: x,y,z coordinates, position of nodes along crack front...
const CrackFrontDefinition *const _crack_front_definition
Pointer to the crack front definition object.
VectorPostprocessorValue & _y
const libMesh::FEType & _fe_type
FEType object defining order and family of displacement variables.
bool _treat_as_2d
Whether to treat a model as 2D for computation of fracture integrals.
std::size_t getNumCrackFrontPoints() const
Get the number of points defining the crack front as a set of line segments.
bool _using_mesh_cutter
Is the crack defined by an XFEM cutter mesh.
VectorPostprocessorValue & _z
std::vector< MooseVariableFEBase * > _fe_vars
Vector of all coupled variables.
void mooseError(Args &&... args) const
VectorPostprocessorValue & _position
VectorPostprocessorValue & _interaction_integral

◆ initialSetup()

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

Reimplemented from ElementVectorPostprocessor.

Definition at line 245 of file InteractionIntegral.C.

246 {
249 }
const CrackFrontDefinition *const _crack_front_definition
Pointer to the crack front definition object.
bool _treat_as_2d
Whether to treat a model as 2D for computation of fracture integrals.
bool _using_mesh_cutter
Is the crack defined by an XFEM cutter mesh.
bool usingMeshCutter() const
Is the crack defined by a mesh cutter object.
bool treatAs2D() const
Whether the fracture computations are treated as 2D for the model.

◆ qFunctionType()

template<bool is_ad>
MooseEnum InteractionIntegralTempl< is_ad >::qFunctionType ( )
static

Get the MooseEnum defining the options for how the q function is defined.

Returns
MooseEnum with options for q function

Definition at line 25 of file InteractionIntegral.C.

Referenced by InteractionIntegralTempl< is_ad >::validParams().

26 {
27  return MooseEnum("Geometry Topology", "Geometry");
28 }

◆ sifModeType()

template<bool is_ad>
MooseEnum InteractionIntegralTempl< is_ad >::sifModeType ( )
static

Get the MooseEnum defining the options for the integral to be computed.

Returns
MooseEnum with options for the integral to be computed

Definition at line 32 of file InteractionIntegral.C.

Referenced by InteractionIntegralTempl< is_ad >::validParams().

33 {
34  return MooseEnum("KI KII KIII T", "KI");
35 }

◆ threadJoin()

template<bool is_ad>
void InteractionIntegralTempl< is_ad >::threadJoin ( const UserObject y)
overridevirtual

Implements ElementVectorPostprocessor.

Definition at line 601 of file InteractionIntegral.C.

602 {
603  const auto & uo = static_cast<const InteractionIntegralTempl<is_ad> &>(y);
604 
605  for (auto i = beginIndex(_interaction_integral); i < _interaction_integral.size(); ++i)
606  _interaction_integral[i] += uo._interaction_integral[i];
607 }
const std::vector< double > y
This vectorpostprocessor computes the Interaction Integral, which is used to compute various fracture...
VectorPostprocessorValue & _interaction_integral

◆ validParams()

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

Definition at line 39 of file InteractionIntegral.C.

40 {
42  params.addRequiredCoupledVar(
43  "displacements",
44  "The displacements appropriate for the simulation geometry and coordinate system");
45  params.addCoupledVar("temperature",
46  "The temperature (optional). Must be provided to correctly compute "
47  "stress intensity factors in models with thermal strain gradients.");
48  params.addParam<MaterialPropertyName>(
49  "functionally_graded_youngs_modulus",
50  "Spatially varying elasticity modulus variable. This input is required when "
51  "using the functionally graded material capability.");
52  params.addParam<MaterialPropertyName>(
53  "functionally_graded_youngs_modulus_crack_dir_gradient",
54  "Gradient of the spatially varying Young's modulus provided in "
55  "'functionally_graded_youngs_modulus' in the direction of crack extension.");
56  params.addRequiredParam<UserObjectName>("crack_front_definition",
57  "The CrackFrontDefinition user object name");
58  MooseEnum position_type("Angle Distance", "Distance");
59  params.addParam<MooseEnum>(
60  "position_type",
61  position_type,
62  "The method used to calculate position along crack front. Options are: " +
63  position_type.getRawNames());
64  params.addRequiredParam<Real>(
65  "K_factor", "Conversion factor between interaction integral and stress intensity factor K");
66  params.addParam<unsigned int>("symmetry_plane",
67  "Account for a symmetry plane passing through "
68  "the plane of the crack, normal to the specified "
69  "axis (0=x, 1=y, 2=z)");
70  params.addRequiredParam<Real>("poissons_ratio", "Poisson's ratio for the material.");
71  params.addRequiredParam<Real>("youngs_modulus", "Young's modulus of the material.");
72  params.set<bool>("use_displaced_mesh") = false;
73  params.addRequiredParam<unsigned int>("ring_index", "Ring ID");
74  params.addParam<MooseEnum>("q_function_type",
76  "The method used to define the integration domain. Options are: " +
79  "sif_mode",
81  "Stress intensity factor to calculate. Choices are: " +
83  params.addParam<MaterialPropertyName>("eigenstrain_gradient",
84  "Material defining gradient of eigenstrain tensor");
85  params.addParam<MaterialPropertyName>("body_force", "Material defining body force");
86  params.addCoupledVar("additional_eigenstrain_00",
87  "Optional additional eigenstrain variable that will be accounted for in the "
88  "interaction integral (component 00 or XX).");
89  params.addCoupledVar("additional_eigenstrain_01",
90  "Optional additional eigenstrain variable that will be accounted for in the "
91  "interaction integral (component 01 or XY).");
92  params.addCoupledVar("additional_eigenstrain_11",
93  "Optional additional eigenstrain variable that will be accounted for in the "
94  "interaction integral (component 11 or YY).");
95  params.addCoupledVar("additional_eigenstrain_22",
96  "Optional additional eigenstrain variable that will be accounted for in the "
97  "interaction integral (component 22 or ZZ).");
98  params.addCoupledVar("additional_eigenstrain_02",
99  "Optional additional eigenstrain variable that will be accounted for in the "
100  "interaction integral (component 02 or XZ).");
101  params.addCoupledVar("additional_eigenstrain_12",
102  "Optional additional eigenstrain variable that will be accounted for in the "
103  "interaction integral (component 12 or XZ).");
104  params.addParamNamesToGroup(
105  "additional_eigenstrain_00 additional_eigenstrain_01 additional_eigenstrain_11 "
106  "additional_eigenstrain_22 additional_eigenstrain_02 additional_eigenstrain_12",
107  "Generic eigenstrains for the computation of the interaction integral.");
108  params.addClassDescription(
109  "Computes the interaction integral, which is used to compute various "
110  "fracture mechanics parameters at a crack tip, including KI, KII, KIII, "
111  "and the T stress.");
112  return params;
113 }
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)
std::string getRawNames() const
void addRequiredParam(const std::string &name, const std::string &doc_string)
static MooseEnum qFunctionType()
Get the MooseEnum defining the options for how the q function is defined.
void addCoupledVar(const std::string &name, const std::string &doc_string)
void addRequiredCoupledVar(const std::string &name, const std::string &doc_string)
static MooseEnum sifModeType()
Get the MooseEnum defining the options for the integral to be computed.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void addClassDescription(const std::string &doc_string)
static InputParameters validParams()
void addParamNamesToGroup(const std::string &space_delim_names, const std::string group_name)

Member Data Documentation

◆ _additional_eigenstrain_gradient_00

template<bool is_ad>
const VariableGradient* InteractionIntegralTempl< is_ad >::_additional_eigenstrain_gradient_00
protected

Gradient used to add contribution to the interaction integral (XX)

Definition at line 131 of file InteractionIntegral.h.

Referenced by InteractionIntegralTempl< is_ad >::InteractionIntegralTempl().

◆ _additional_eigenstrain_gradient_01

template<bool is_ad>
const VariableGradient* InteractionIntegralTempl< is_ad >::_additional_eigenstrain_gradient_01
protected

Gradient used to add contribution to the interaction integral (XY)

Definition at line 133 of file InteractionIntegral.h.

Referenced by InteractionIntegralTempl< is_ad >::InteractionIntegralTempl().

◆ _additional_eigenstrain_gradient_02

template<bool is_ad>
const VariableGradient* InteractionIntegralTempl< is_ad >::_additional_eigenstrain_gradient_02
protected

Gradient used to add contribution to the interaction integral (XZ)

Definition at line 139 of file InteractionIntegral.h.

Referenced by InteractionIntegralTempl< is_ad >::InteractionIntegralTempl().

◆ _additional_eigenstrain_gradient_11

template<bool is_ad>
const VariableGradient* InteractionIntegralTempl< is_ad >::_additional_eigenstrain_gradient_11
protected

Gradient used to add contribution to the interaction integral (YY)

Definition at line 135 of file InteractionIntegral.h.

Referenced by InteractionIntegralTempl< is_ad >::InteractionIntegralTempl().

◆ _additional_eigenstrain_gradient_12

template<bool is_ad>
const VariableGradient* InteractionIntegralTempl< is_ad >::_additional_eigenstrain_gradient_12
protected

Gradient used to add contribution to the interaction integral (YZ)

Definition at line 141 of file InteractionIntegral.h.

Referenced by InteractionIntegralTempl< is_ad >::InteractionIntegralTempl().

◆ _additional_eigenstrain_gradient_22

template<bool is_ad>
const VariableGradient* InteractionIntegralTempl< is_ad >::_additional_eigenstrain_gradient_22
protected

Gradient used to add contribution to the interaction integral (ZZ)

Definition at line 137 of file InteractionIntegral.h.

Referenced by InteractionIntegralTempl< is_ad >::InteractionIntegralTempl().

◆ _body_force

template<bool is_ad>
const MaterialProperty<RealVectorValue>* InteractionIntegralTempl< is_ad >::_body_force
protected

◆ _crack_front_definition

template<bool is_ad>
const CrackFrontDefinition* const InteractionIntegralTempl< is_ad >::_crack_front_definition
protected

Pointer to the crack front definition object.

Definition at line 89 of file InteractionIntegral.h.

◆ _disp

template<bool is_ad>
std::vector<const VariableValue *> InteractionIntegralTempl< is_ad >::_disp
protected

Displacement variables.

Definition at line 103 of file InteractionIntegral.h.

◆ _dphi_curr_elem

template<bool is_ad>
const std::vector<std::vector<libMesh::RealGradient> >* InteractionIntegralTempl< is_ad >::_dphi_curr_elem
protected

Vector of gradients of shape function values for the current element.

Definition at line 147 of file InteractionIntegral.h.

◆ _eigenstrain_gradient

template<bool is_ad>
const GenericMaterialProperty<RankThreeTensor, is_ad>* InteractionIntegralTempl< is_ad >::_eigenstrain_gradient
protected

Pointers to optionally-used eigenstrain gradient and body force.

Definition at line 183 of file InteractionIntegral.h.

Referenced by InteractionIntegralTempl< is_ad >::InteractionIntegralTempl().

◆ _fe_type

template<bool is_ad>
const libMesh::FEType& InteractionIntegralTempl< is_ad >::_fe_type
protected

FEType object defining order and family of displacement variables.

Definition at line 101 of file InteractionIntegral.h.

◆ _fe_vars

template<bool is_ad>
std::vector<MooseVariableFEBase *> InteractionIntegralTempl< is_ad >::_fe_vars
protected

Vector of all coupled variables.

Definition at line 99 of file InteractionIntegral.h.

◆ _fgm_crack

template<bool is_ad>
const bool InteractionIntegralTempl< is_ad >::_fgm_crack
protected

Whether to consider interaction integral and material properties for a crack in functionally graded material.

Definition at line 123 of file InteractionIntegral.h.

◆ _functionally_graded_youngs_modulus

template<bool is_ad>
const MaterialProperty<Real>* InteractionIntegralTempl< is_ad >::_functionally_graded_youngs_modulus
protected

Spatial elasticity modulus variable for FGM.

Definition at line 113 of file InteractionIntegral.h.

Referenced by InteractionIntegralTempl< is_ad >::InteractionIntegralTempl().

◆ _functionally_graded_youngs_modulus_crack_dir_gradient

template<bool is_ad>
const MaterialProperty<Real>* InteractionIntegralTempl< is_ad >::_functionally_graded_youngs_modulus_crack_dir_gradient
protected

Spatial derivative of the youngs modulus in the crack direction.

Definition at line 111 of file InteractionIntegral.h.

Referenced by InteractionIntegralTempl< is_ad >::InteractionIntegralTempl().

◆ _grad_disp

template<bool is_ad>
std::vector<const VariableGradient *> InteractionIntegralTempl< is_ad >::_grad_disp
protected

Gradient of displacements.

Definition at line 105 of file InteractionIntegral.h.

Referenced by InteractionIntegralTempl< is_ad >::InteractionIntegralTempl().

◆ _grad_temp

template<bool is_ad>
const VariableGradient& InteractionIntegralTempl< is_ad >::_grad_temp
protected

Gradient of temperature.

Definition at line 109 of file InteractionIntegral.h.

◆ _has_additional_eigenstrain

template<bool is_ad>
bool InteractionIntegralTempl< is_ad >::_has_additional_eigenstrain
protected

Whether the user chooses to add other eigenstrain influence (e.g. irradiation-induced)

Definition at line 129 of file InteractionIntegral.h.

Referenced by InteractionIntegralTempl< is_ad >::InteractionIntegralTempl().

◆ _has_symmetry_plane

template<bool is_ad>
bool InteractionIntegralTempl< is_ad >::_has_symmetry_plane
protected

Whether the crack plane is also a symmetry plane in the model.

Definition at line 117 of file InteractionIntegral.h.

◆ _has_temp

template<bool is_ad>
const bool InteractionIntegralTempl< is_ad >::_has_temp
protected

Whether the temperature variable is coupled.

Definition at line 107 of file InteractionIntegral.h.

Referenced by InteractionIntegralTempl< is_ad >::InteractionIntegralTempl().

◆ _interaction_integral

template<bool is_ad>
VectorPostprocessorValue& InteractionIntegralTempl< is_ad >::_interaction_integral
protected

◆ _K_factor

template<bool is_ad>
Real InteractionIntegralTempl< is_ad >::_K_factor
protected

Conversion factor applied to convert interaction integral to stress intensity factor K.

Definition at line 115 of file InteractionIntegral.h.

◆ _kappa

template<bool is_ad>
Real InteractionIntegralTempl< is_ad >::_kappa
protected

Kappa Lame constant.

Definition at line 149 of file InteractionIntegral.h.

Referenced by InteractionIntegralTempl< is_ad >::InteractionIntegralTempl().

◆ _ndisp

template<bool is_ad>
std::size_t InteractionIntegralTempl< is_ad >::_ndisp
protected

Number of displacement components.

Definition at line 87 of file InteractionIntegral.h.

Referenced by InteractionIntegralTempl< is_ad >::InteractionIntegralTempl().

◆ _phi_curr_elem

template<bool is_ad>
const std::vector<std::vector<Real> >* InteractionIntegralTempl< is_ad >::_phi_curr_elem
protected

Vector of shape function values for the current element.

Definition at line 145 of file InteractionIntegral.h.

◆ _poissons_ratio

template<bool is_ad>
Real InteractionIntegralTempl< is_ad >::_poissons_ratio
protected

Poisson's ratio of the material.

Definition at line 119 of file InteractionIntegral.h.

Referenced by InteractionIntegralTempl< is_ad >::InteractionIntegralTempl().

◆ _position

template<bool is_ad>
VectorPostprocessorValue& InteractionIntegralTempl< is_ad >::_position
protected

Definition at line 177 of file InteractionIntegral.h.

◆ _position_type

template<bool is_ad>
enum InteractionIntegralTempl::PositionType InteractionIntegralTempl< is_ad >::_position_type
protected

◆ _q_curr_elem

template<bool is_ad>
std::vector<Real> InteractionIntegralTempl< is_ad >::_q_curr_elem
protected

Vector of q function values for the nodes in the current element.

Definition at line 143 of file InteractionIntegral.h.

◆ _q_function_type

template<bool is_ad>
enum InteractionIntegralTempl::QMethod InteractionIntegralTempl< is_ad >::_q_function_type
protected

◆ _qp

template<bool is_ad>
unsigned int InteractionIntegralTempl< is_ad >::_qp
protected

Current quadrature point index.

Definition at line 157 of file InteractionIntegral.h.

◆ _r

template<bool is_ad>
Real InteractionIntegralTempl< is_ad >::_r
protected

Radial distance from the current point to the crack front.

Definition at line 153 of file InteractionIntegral.h.

◆ _ring_index

template<bool is_ad>
std::size_t InteractionIntegralTempl< is_ad >::_ring_index
protected

Index of the ring for the integral computed by this object.

Definition at line 125 of file InteractionIntegral.h.

◆ _shear_modulus

template<bool is_ad>
Real InteractionIntegralTempl< is_ad >::_shear_modulus
protected

Shear modulus.

Definition at line 151 of file InteractionIntegral.h.

Referenced by InteractionIntegralTempl< is_ad >::InteractionIntegralTempl().

◆ _sif_mode

template<bool is_ad>
enum InteractionIntegralTempl::SifMethod InteractionIntegralTempl< is_ad >::_sif_mode
protected

◆ _strain

template<bool is_ad>
const GenericMaterialProperty<RankTwoTensor, is_ad>& InteractionIntegralTempl< is_ad >::_strain
protected

Reference to the strain tensor computed by the material models.

Definition at line 97 of file InteractionIntegral.h.

◆ _stress

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

Reference to the stress tensor computed by the material models.

Definition at line 95 of file InteractionIntegral.h.

◆ _theta

template<bool is_ad>
Real InteractionIntegralTempl< is_ad >::_theta
protected

Angle of current point relative to the crack front.

Definition at line 155 of file InteractionIntegral.h.

◆ _total_deigenstrain_dT

template<bool is_ad>
const GenericMaterialProperty<RankTwoTensor, is_ad>* const InteractionIntegralTempl< is_ad >::_total_deigenstrain_dT
protected

Derivative of the total eigenstrain with respect to temperature.

Definition at line 127 of file InteractionIntegral.h.

Referenced by InteractionIntegralTempl< is_ad >::InteractionIntegralTempl().

◆ _treat_as_2d

template<bool is_ad>
bool InteractionIntegralTempl< is_ad >::_treat_as_2d
protected

Whether to treat a model as 2D for computation of fracture integrals.

Definition at line 91 of file InteractionIntegral.h.

◆ _using_mesh_cutter

template<bool is_ad>
bool InteractionIntegralTempl< is_ad >::_using_mesh_cutter
protected

Is the crack defined by an XFEM cutter mesh.

Definition at line 93 of file InteractionIntegral.h.

◆ _x

template<bool is_ad>
VectorPostprocessorValue& InteractionIntegralTempl< is_ad >::_x
protected

Vectors computed by this VectorPostprocessor: x,y,z coordinates, position of nodes along crack front, and interaction integral.

Definition at line 174 of file InteractionIntegral.h.

◆ _y

template<bool is_ad>
VectorPostprocessorValue& InteractionIntegralTempl< is_ad >::_y
protected

Definition at line 175 of file InteractionIntegral.h.

◆ _youngs_modulus

template<bool is_ad>
Real InteractionIntegralTempl< is_ad >::_youngs_modulus
protected

Young's modulus of the material.

Definition at line 121 of file InteractionIntegral.h.

Referenced by InteractionIntegralTempl< is_ad >::InteractionIntegralTempl().

◆ _z

template<bool is_ad>
VectorPostprocessorValue& InteractionIntegralTempl< is_ad >::_z
protected

Definition at line 176 of file InteractionIntegral.h.


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