www.mooseframework.org
Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | List of all members
TwoMaterialPropertyInterface Class Reference

This interface is designed for DGKernel, InternalSideUserObject, InterfaceUserObject, where material properties on a side of both its primary side (face) and its secondary side (neighbor) all required. More...

#include <TwoMaterialPropertyInterface.h>

Inheritance diagram for TwoMaterialPropertyInterface:
[legend]

Public Member Functions

 TwoMaterialPropertyInterface (const MooseObject *moose_object, const std::set< SubdomainID > &blocks_ids, const std::set< BoundaryID > &boundary_ids)
 
template<typename T , bool is_ad>
const GenericMaterialProperty< T, is_ad > & getGenericMaterialProperty (const std::string &name, MaterialData &material_data, const unsigned int state=0)
 Retrieve the generic property named "name" for the specified material_data at state state. More...
 
template<typename T >
const MaterialProperty< T > & getMaterialProperty (const std::string &name, MaterialData &material_data, const unsigned int state=0)
 Retrieve the property named "name" for the specified material_data. More...
 
template<typename T >
const ADMaterialProperty< T > & getADMaterialProperty (const std::string &name, MaterialData &material_data)
 Retrieve the AD property named "name" for the specified material_data. More...
 
template<typename T >
const MaterialProperty< T > & getMaterialPropertyOld (const std::string &name, MaterialData &material_data)
 Retrieve the old property deduced from the name name for the specified material_data. More...
 
template<typename T >
const MaterialProperty< T > & getMaterialPropertyOlder (const std::string &name, MaterialData &material_data)
 Retrieve the older property deduced from the name name for the specified material_data. More...
 
template<typename T , bool is_ad>
const GenericMaterialProperty< T, is_ad > & getGenericMaterialPropertyByName (const MaterialPropertyName &name, MaterialData &material_data, const unsigned int state)
 Retrieve the generic property named "name" without any deduction for the specified material_data for state state. More...
 
template<typename T >
const MaterialProperty< T > & getMaterialPropertyByName (const MaterialPropertyName &name, MaterialData &material_data, const unsigned int state=0)
 Retrieve the property named "name" without any deduction for the specified material_data. More...
 
template<typename T >
const ADMaterialProperty< T > & getADMaterialPropertyByName (const MaterialPropertyName &name, MaterialData &material_data)
 Retrieve the AD property named "name" without any deduction for the specified material_data. More...
 
template<typename T >
const MaterialProperty< T > & getMaterialPropertyOldByName (const MaterialPropertyName &name, MaterialData &material_data)
 Retrieve the old property named name without any deduction for the specified material_data. More...
 
template<typename T >
const MaterialProperty< T > & getMaterialPropertyOlderByName (const MaterialPropertyName &name, MaterialData &material_data)
 Retrieve the older property named name without any deduction for the specified material_data. More...
 
template<typename T >
std::pair< const MaterialProperty< T > *, std::set< SubdomainID > > getBlockMaterialProperty (const MaterialPropertyName &name)
 Retrieve pointer to a material property with the mesh blocks where it is defined The name required by this method is the name defined in the input file. More...
 
template<typename T , bool is_ad>
const GenericMaterialProperty< T, is_ad > & getGenericZeroMaterialProperty (const std::string &name)
 Return a material property that is initialized to zero by default and does not need to (but can) be declared by another material. More...
 
template<typename T , bool is_ad>
const GenericMaterialProperty< T, is_ad > & getGenericZeroMaterialProperty ()
 Return a constant zero anonymous material property. More...
 
template<typename T , bool is_ad>
const GenericMaterialProperty< T, is_ad > & getGenericZeroMaterialPropertyByName (const std::string &prop_name)
 
template<typename T , typename... Ts>
const MaterialProperty< T > & getZeroMaterialProperty (Ts... args)
 for backwards compatibility More...
 
std::set< SubdomainIDgetMaterialPropertyBlocks (const std::string &name)
 Retrieve the block ids that the material property is defined. More...
 
std::vector< SubdomainName > getMaterialPropertyBlockNames (const std::string &name)
 Retrieve the block names that the material property is defined. More...
 
std::set< BoundaryIDgetMaterialPropertyBoundaryIDs (const std::string &name)
 Retrieve the boundary ids that the material property is defined. More...
 
std::vector< BoundaryName > getMaterialPropertyBoundaryNames (const std::string &name)
 Retrieve the boundary namess that the material property is defined. More...
 
void checkBlockAndBoundaryCompatibility (std::shared_ptr< MaterialBase > discrete)
 Check if block and boundary restrictions of a given material are compatible with the current material. More...
 
std::unordered_map< SubdomainID, std::vector< MaterialBase * > > buildRequiredMaterials (bool allow_stateful=true)
 get a map of MaterialBase pointers for all material objects that this object depends on for each block More...
 
void statefulPropertiesAllowed (bool)
 Derived classes can declare whether or not they work with stateful material properties. More...
 
bool getMaterialPropertyCalled () const
 Returns true if getMaterialProperty() has been called, false otherwise. More...
 
const std::unordered_set< unsigned int > & getMatPropDependencies () const
 Retrieve the set of material properties that this object depends on. More...
 
virtual void resolveOptionalProperties ()
 resolve all optional properties More...
 
template<typename T , bool is_ad>
const GenericMaterialProperty< T, is_ad > & getPossiblyConstantGenericMaterialPropertyByName (const MaterialPropertyName &prop_name, MaterialData &material_data, const unsigned int state)
 Retrieve the generic property named "prop_name" without any deduction for the specified material_data for state state. More...
 
template<typename T , bool is_ad>
const GenericMaterialProperty< T, is_ad > & getGenericNeighborMaterialProperty (const std::string &name, const unsigned int state=0)
 Retrieve the neighbor property deduced from the name name. More...
 
template<typename T >
const MaterialProperty< T > & getNeighborMaterialProperty (const std::string &name, const unsigned int state=0)
 
template<typename T >
const ADMaterialProperty< T > & getNeighborADMaterialProperty (const std::string &name)
 
template<typename T >
const MaterialProperty< T > & getNeighborMaterialPropertyOld (const std::string &name)
 
template<typename T >
const MaterialProperty< T > & getNeighborMaterialPropertyOlder (const std::string &name)
 
template<typename T , bool is_ad>
const GenericMaterialProperty< T, is_ad > & getGenericNeighborMaterialPropertyByName (const std::string &name, const unsigned int state=0)
 Retrieve the neighbor property named "name" without any deduction. More...
 
template<typename T >
const MaterialProperty< T > & getNeighborMaterialPropertyByName (const std::string &name, const unsigned int state=0)
 
template<typename T >
const ADMaterialProperty< T > & getNeighborADMaterialPropertyByName (const std::string &name)
 
template<typename T , bool is_ad>
const GenericMaterialProperty< T, is_ad > & getGenericMaterialProperty (const std::string &name, const unsigned int state=0)
 Retrieve reference to material property or one of it's old or older values. More...
 
template<typename T >
const MaterialProperty< T > & getMaterialProperty (const std::string &name, const unsigned int state=0)
 
template<typename T >
const ADMaterialProperty< T > & getADMaterialProperty (const std::string &name)
 
template<typename T >
const MaterialProperty< T > & getMaterialPropertyOld (const std::string &name)
 
template<typename T >
const MaterialProperty< T > & getMaterialPropertyOlder (const std::string &name)
 
template<typename T , bool is_ad>
const GenericMaterialProperty< T, is_ad > & getGenericMaterialPropertyByName (const MaterialPropertyName &name, const unsigned int state=0)
 Retrieve reference to material property or its old or older value The name required by this method is the name defined in the input file. More...
 
template<typename T >
const MaterialProperty< T > & getMaterialPropertyByName (const MaterialPropertyName &name, const unsigned int state=0)
 
template<typename T >
const ADMaterialProperty< T > & getADMaterialPropertyByName (const MaterialPropertyName &name)
 
template<typename T >
const MaterialProperty< T > & getMaterialPropertyOldByName (const MaterialPropertyName &name)
 
template<typename T >
const MaterialProperty< T > & getMaterialPropertyOlderByName (const MaterialPropertyName &name)
 
template<typename T , bool is_ad>
const GenericOptionalMaterialProperty< T, is_ad > & getGenericOptionalMaterialProperty (const std::string &name, const unsigned int state=0)
 
template<typename T >
const OptionalMaterialProperty< T > & getOptionalMaterialProperty (const std::string &name, const unsigned int state=0)
 
template<typename T >
const OptionalADMaterialProperty< T > & getOptionalADMaterialProperty (const std::string &name)
 
template<typename T >
const OptionalMaterialProperty< T > & getOptionalMaterialPropertyOld (const std::string &name)
 
template<typename T >
const OptionalMaterialProperty< T > & getOptionalMaterialPropertyOlder (const std::string &name)
 
MaterialBasegetMaterial (const std::string &name)
 Return a MaterialBase reference - usable for computing directly. More...
 
MaterialBasegetMaterialByName (const std::string &name, bool no_warn=false)
 
template<typename T >
bool hasMaterialProperty (const std::string &name)
 Check if the material property exists. More...
 
template<typename T >
bool hasMaterialPropertyByName (const std::string &name)
 
template<typename T >
bool hasADMaterialProperty (const std::string &name)
 
template<typename T >
bool hasADMaterialPropertyByName (const std::string &name)
 
template<typename T , bool is_ad>
bool hasGenericMaterialProperty (const std::string &name)
 generic hasMaterialProperty helper More...
 
template<typename T , bool is_ad>
bool hasGenericMaterialPropertyByName (const std::string &name)
 

Static Public Member Functions

static InputParameters validParams ()
 

Static Public Attributes

static constexpr PropertyValue::id_type default_property_id
 The material property ID for a default (parsed from input) property. More...
 
static constexpr PropertyValue::id_type zero_property_id = PropertyValue::invalid_property_id - 2
 The material property ID for a zero property. More...
 

Protected Member Functions

virtual void checkMaterialProperty (const std::string &name, const unsigned int state)
 A helper method for checking material properties This method was required to avoid a compiler problem with the template getMaterialProperty method. More...
 
void markMatPropRequested (const std::string &)
 A proxy method for _mi_feproblem.markMatPropRequested(name) More...
 
MaterialPropertyName getMaterialPropertyName (const std::string &name) const
 
void checkExecutionStage ()
 Check and throw an error if the execution has progressed past the construction stage. More...
 
template<typename T , bool is_ad>
const GenericMaterialProperty< T, is_ad > * defaultGenericMaterialProperty (const std::string &name)
 
template<typename T >
const MaterialProperty< T > * defaultMaterialProperty (const std::string &name)
 
template<typename T >
const ADMaterialProperty< T > * defaultADMaterialProperty (const std::string &name)
 

Protected Attributes

MaterialData_neighbor_material_data
 
const InputParameters_mi_params
 Parameters of the object with this interface. More...
 
const std::string _mi_name
 The name of the object that this interface belongs to. More...
 
const MooseObjectName _mi_moose_object_name
 The "complete" name of the object that this interface belongs for material property output. More...
 
FEProblemBase_mi_feproblem
 Reference to the FEProblemBase class. More...
 
SubProblem_mi_subproblem
 Reference to the subproblem. More...
 
const THREAD_ID _mi_tid
 Current threaded it. More...
 
const Moose::MaterialDataType _material_data_type
 The type of data. More...
 
MaterialData_material_data
 The material data class that stores properties. More...
 
bool _stateful_allowed
 True by default. More...
 
bool _get_material_property_called
 Initialized to false. More...
 
std::vector< std::unique_ptr< PropertyValue > > _default_properties
 Storage vector for default properties. More...
 
std::unordered_set< unsigned int_material_property_dependencies
 The set of material properties (as given by their IDs) that this object depends on. More...
 
const MaterialPropertyName _get_suffix
 
const bool _use_interpolated_state
 Use the interpolated state set up through the ProjectedStatefulMaterialStorageAction. More...
 

Static Protected Attributes

static const std::string _interpolated_old = "_interpolated_old"
 name suffixes for interpolated old and older properties More...
 
static const std::string _interpolated_older = "_interpolated_older"
 

Detailed Description

This interface is designed for DGKernel, InternalSideUserObject, InterfaceUserObject, where material properties on a side of both its primary side (face) and its secondary side (neighbor) all required.

Definition at line 22 of file TwoMaterialPropertyInterface.h.

Constructor & Destructor Documentation

◆ TwoMaterialPropertyInterface()

TwoMaterialPropertyInterface::TwoMaterialPropertyInterface ( const MooseObject moose_object,
const std::set< SubdomainID > &  blocks_ids,
const std::set< BoundaryID > &  boundary_ids 
)

Definition at line 25 of file TwoMaterialPropertyInterface.C.

29  : MaterialPropertyInterface(moose_object, blocks_ids, boundary_ids),
31  _mi_params.get<THREAD_ID>("_tid")))
32 {
33 }
FEProblemBase & _mi_feproblem
Reference to the FEProblemBase class.
MaterialPropertyInterface(const MooseObject *moose_object, const std::set< SubdomainID > &block_ids, const std::set< BoundaryID > &boundary_ids)
std::vector< std::pair< R1, R2 > > get(const std::string &param1, const std::string &param2) const
Combine two vector parameters into a single vector of pairs.
MaterialData & getMaterialData(Moose::MaterialDataType type, const THREAD_ID tid=0)
const InputParameters & _mi_params
Parameters of the object with this interface.
unsigned int THREAD_ID
Definition: MooseTypes.h:198

Member Function Documentation

◆ buildRequiredMaterials()

std::unordered_map< SubdomainID, std::vector< MaterialBase * > > MaterialPropertyInterface::buildRequiredMaterials ( bool  allow_stateful = true)
inherited

get a map of MaterialBase pointers for all material objects that this object depends on for each block

Definition at line 205 of file MaterialPropertyInterface.C.

206 {
207  std::unordered_map<SubdomainID, std::vector<MaterialBase *>> required_mats;
208  const auto & mwh = _mi_feproblem.getMaterialWarehouse();
209  for (const auto id : _mi_block_ids)
210  {
211  const auto & mats = mwh[_material_data_type].getActiveBlockObjects(id, _mi_tid);
212  std::array<const MaterialPropertyInterface *, 1> consumers = {{this}};
213  const auto block_required =
214  MaterialBase::buildRequiredMaterials(consumers, mats, allow_stateful);
215  required_mats[id].insert(
216  required_mats[id].begin(), block_required.begin(), block_required.end());
217  }
218  return required_mats;
219 }
FEProblemBase & _mi_feproblem
Reference to the FEProblemBase class.
const THREAD_ID _mi_tid
Current threaded it.
const std::set< SubdomainID > & _mi_block_ids
Storage for the block ids created by BlockRestrictable.
const std::map< SubdomainID, std::vector< std::shared_ptr< T > > > & getActiveBlockObjects(THREAD_ID tid=0) const
const MaterialWarehouse & getMaterialWarehouse() const
static std::deque< MaterialBase * > buildRequiredMaterials(const Consumers &mat_consumers, const std::vector< std::shared_ptr< MaterialBase >> &mats, const bool allow_stateful)
Build the materials required by a set of consumer objects.
Definition: MaterialBase.h:487
const Moose::MaterialDataType _material_data_type
The type of data.

◆ checkBlockAndBoundaryCompatibility()

void MaterialPropertyInterface::checkBlockAndBoundaryCompatibility ( std::shared_ptr< MaterialBase discrete)
inherited

Check if block and boundary restrictions of a given material are compatible with the current material.

Error out otherwise.

Definition at line 147 of file MaterialPropertyInterface.C.

Referenced by MaterialPropertyInterface::getMaterialByName().

149 {
150  // Check block compatibility
151  if (!discrete->hasBlocks(_mi_block_ids))
152  {
153  std::ostringstream oss;
154  oss << "Incompatible material and object blocks:";
155 
156  oss << "\n " << paramErrorPrefix(discrete->parameters(), "block")
157  << " material defined on blocks ";
158  for (const auto & sbd_id : discrete->blockIDs())
159  oss << sbd_id << ", ";
160 
161  oss << "\n " << paramErrorPrefix(_mi_params, "block") << " object needs material on blocks ";
162  for (const auto & block_id : _mi_block_ids)
163  oss << block_id << ", ";
164 
165  mooseError(oss.str());
166  }
167 
168  // Check boundary compatibility
169  if (!discrete->hasBoundary(_mi_boundary_ids))
170  {
171  std::ostringstream oss;
172  oss << "Incompatible material and object boundaries:";
173 
174  oss << "\n " << paramErrorPrefix(discrete->parameters(), "boundary")
175  << " material defined on boundaries ";
176  for (const auto & bnd_id : discrete->boundaryIDs())
177  oss << bnd_id << ", ";
178 
179  oss << "\n " << paramErrorPrefix(_mi_params, "boundary")
180  << " object needs material on boundaries ";
181  for (const auto & bnd_id : _mi_boundary_ids)
182  oss << bnd_id << ", ";
183 
184  mooseError(oss.str());
185  }
186 }
const std::set< SubdomainID > & _mi_block_ids
Storage for the block ids created by BlockRestrictable.
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:284
const std::set< BoundaryID > & _mi_boundary_ids
Storage for the boundary ids created by BoundaryRestrictable.
const InputParameters & _mi_params
Parameters of the object with this interface.
std::string paramErrorPrefix(const InputParameters &params, const std::string &param)
Get canonical paramError prefix for param-related error/warning/info messages.

◆ checkExecutionStage()

void MaterialPropertyInterface::checkExecutionStage ( )
protectedinherited

Check and throw an error if the execution has progressed past the construction stage.

Definition at line 222 of file MaterialPropertyInterface.C.

Referenced by MaterialPropertyInterface::getGenericMaterialPropertyByName().

223 {
225  mooseError("Material properties must be retrieved during object construction. This is a code "
226  "problem.");
227 }
FEProblemBase & _mi_feproblem
Reference to the FEProblemBase class.
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:284
virtual bool startedInitialSetup()
Returns true if we are in or beyond the initialSetup stage.

◆ checkMaterialProperty()

void MaterialPropertyInterface::checkMaterialProperty ( const std::string &  name,
const unsigned int  state 
)
protectedvirtualinherited

A helper method for checking material properties This method was required to avoid a compiler problem with the template getMaterialProperty method.

Reimplemented in Material.

Definition at line 118 of file MaterialPropertyInterface.C.

Referenced by Material::checkMaterialProperty(), and MaterialPropertyInterface::getGenericMaterialPropertyByName().

119 {
120  if (state == 0)
121  {
122  // If the material property is boundary restrictable, add to the list of materials to check
124  for (const auto & bnd_id : _mi_boundary_ids)
126 
127  // The default is to assume block restrictions
128  else
129  for (const auto & blk_ids : _mi_block_ids)
131  }
132 }
FEProblemBase & _mi_feproblem
Reference to the FEProblemBase class.
const std::set< SubdomainID > & _mi_block_ids
Storage for the block ids created by BlockRestrictable.
virtual void storeSubdomainDelayedCheckMatProp(const std::string &requestor, SubdomainID block_id, const std::string &name)
Adds to a map based on block ids of material properties to validate.
Definition: SubProblem.C:573
const bool _mi_boundary_restricted
BoundaryRestricted flag.
virtual void storeBoundaryDelayedCheckMatProp(const std::string &requestor, BoundaryID boundary_id, const std::string &name)
Adds to a map based on boundary ids of material properties to validate.
Definition: SubProblem.C:581
const std::set< BoundaryID > & _mi_boundary_ids
Storage for the boundary ids created by BoundaryRestrictable.
const std::string _mi_name
The name of the object that this interface belongs to.

◆ defaultADMaterialProperty()

template<typename T >
const ADMaterialProperty<T>* MaterialPropertyInterface::defaultADMaterialProperty ( const std::string &  name)
inlineprotectedinherited

Definition at line 521 of file MaterialPropertyInterface.h.

522  {
523  return defaultGenericMaterialProperty<T, true>(name);
524  }
std::string name(const ElemQuality q)

◆ defaultGenericMaterialProperty()

template<typename T , bool is_ad>
const GenericMaterialProperty< T, is_ad > * MaterialPropertyInterface::defaultGenericMaterialProperty ( const std::string &  name)
protectedinherited
Returns
The default material property with the name name, if any.

"Default" properties are properties whose default values are set from within the name. That is, if we can cast name to a Real, and the prop type is a Real or RealVectorValue, we'll return said value.

Definition at line 618 of file MaterialPropertyInterface.h.

619 {
620  if constexpr (std::is_same_v<T, Real> || std::is_same_v<T, RealVectorValue>)
621  {
622  std::istringstream ss(name);
623  Real real_value;
624 
625  // check if the string parsed cleanly into a Real number
626  if (ss >> real_value && ss.eof())
627  {
628  using prop_type = GenericMaterialProperty<T, is_ad>;
629 
630  const auto nqp = Moose::constMaxQpsPerElem;
631  auto & property =
632  _default_properties.emplace_back(std::make_unique<prop_type>(default_property_id));
633  auto & T_property = static_cast<prop_type &>(*property);
634 
635  T_property.resize(nqp);
636  for (const auto qp : make_range(nqp))
637  T_property[qp] = real_value;
638 
639  return &T_property;
640  }
641  }
642 
643  return nullptr;
644 }
static constexpr PropertyValue::id_type default_property_id
The material property ID for a default (parsed from input) property.
constexpr std::size_t constMaxQpsPerElem
This is used for places where we initialize some qp-sized data structures that would end up being siz...
Definition: MooseTypes.h:218
std::vector< std::unique_ptr< PropertyValue > > _default_properties
Storage vector for default properties.
typename GenericMaterialPropertyStruct< T, is_ad >::type GenericMaterialProperty
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
IntRange< T > make_range(T beg, T end)

◆ defaultMaterialProperty()

template<typename T >
const MaterialProperty<T>* MaterialPropertyInterface::defaultMaterialProperty ( const std::string &  name)
inlineprotectedinherited

Definition at line 516 of file MaterialPropertyInterface.h.

517  {
518  return defaultGenericMaterialProperty<T, false>(name);
519  }
std::string name(const ElemQuality q)

◆ getADMaterialProperty() [1/2]

template<typename T >
const ADMaterialProperty<T>& MaterialPropertyInterface::getADMaterialProperty ( const std::string &  name)
inlineinherited

Definition at line 103 of file MaterialPropertyInterface.h.

104  {
105  return getGenericMaterialProperty<T, true>(name, 0);
106  }
std::string name(const ElemQuality q)

◆ getADMaterialProperty() [2/2]

template<typename T >
const ADMaterialProperty<T>& MaterialPropertyInterface::getADMaterialProperty ( const std::string &  name,
MaterialData material_data 
)
inlineinherited

Retrieve the AD property named "name" for the specified material_data.

state is the property state; 0 = current, 1 = old, 2 = older, etc.

Definition at line 362 of file MaterialPropertyInterface.h.

364  {
365  return getGenericMaterialProperty<T, true>(name, material_data, 0);
366  }
std::string name(const ElemQuality q)

◆ getADMaterialPropertyByName() [1/2]

template<typename T >
const ADMaterialProperty<T>& MaterialPropertyInterface::getADMaterialPropertyByName ( const MaterialPropertyName &  name)
inlineinherited

Definition at line 140 of file MaterialPropertyInterface.h.

141  {
142  return getGenericMaterialPropertyByName<T, true>(name, 0);
143  }
std::string name(const ElemQuality q)

◆ getADMaterialPropertyByName() [2/2]

template<typename T >
const ADMaterialProperty<T>& MaterialPropertyInterface::getADMaterialPropertyByName ( const MaterialPropertyName &  name,
MaterialData material_data 
)
inlineinherited

Retrieve the AD property named "name" without any deduction for the specified material_data.

Definition at line 405 of file MaterialPropertyInterface.h.

407  {
408  return getGenericMaterialPropertyByName<T, true>(name, material_data, 0);
409  }
std::string name(const ElemQuality q)

◆ getBlockMaterialProperty()

template<typename T >
std::pair< const MaterialProperty< T > *, std::set< SubdomainID > > MaterialPropertyInterface::getBlockMaterialProperty ( const MaterialPropertyName &  name)
inherited

Retrieve pointer to a material property with the mesh blocks where it is defined The name required by this method is the name defined in the input file.

This function can be thought as the combination of getMaterialPropertyByName and getMaterialPropertyBlocks. It can be called after the action of all actions.

Parameters
nameThe name of the material property to retrieve
Returns
Pointer to the material property with the name 'name' and the set of blocks where the property is valid

Definition at line 648 of file MaterialPropertyInterface.h.

649 {
650  const auto name = _get_suffix.empty()
651  ? static_cast<const std::string &>(name_in)
652  : MooseUtils::join(std::vector<std::string>({name_in, _get_suffix}), "_");
653 
654  if (_mi_block_ids.empty())
655  mooseError("getBlockMaterialProperty must be called by a block restrictable object");
656 
657  using pair_type = std::pair<const MaterialProperty<T> *, std::set<SubdomainID>>;
658 
659  if (!hasMaterialPropertyByName<T>(name))
660  return pair_type(nullptr, {});
661 
662  // Call first so that the ID gets registered
663  const auto & prop = _material_data.getProperty<T, false>(name, 0, _mi_moose_object);
664  auto blocks = getMaterialPropertyBlocks(name);
665  auto prop_blocks_pair = pair_type(&prop, std::move(blocks));
666 
668 
669  // Update consumed properties in MaterialPropertyDebugOutput
671 
672  return prop_blocks_pair;
673 }
std::string name(const ElemQuality q)
const MooseObjectName _mi_moose_object_name
The "complete" name of the object that this interface belongs for material property output...
const std::set< SubdomainID > & _mi_block_ids
Storage for the block ids created by BlockRestrictable.
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:284
unsigned int getPropertyId(const std::string &prop_name) const
Wrapper for MaterialStorage::getPropertyId.
Definition: MaterialData.C:80
MaterialData & _material_data
The material data class that stores properties.
std::set< SubdomainID > getMaterialPropertyBlocks(const std::string &name)
Retrieve the block ids that the material property is defined.
const MaterialPropertyName _get_suffix
GenericMaterialProperty< T, is_ad > & getProperty(const std::string &prop_name, const unsigned int state, const MooseObject &requestor)
Retrieves a material property.
Definition: MaterialData.h:111
void addConsumedPropertyName(const MooseObjectName &obj_name, const std::string &prop_name)
const MooseObject & _mi_moose_object
The MooseObject creating the MaterialPropertyInterface.
std::unordered_set< unsigned int > _material_property_dependencies
The set of material properties (as given by their IDs) that this object depends on.
std::string join(const T &strings, const std::string &delimiter)
Python like join function for strings.
Definition: MooseUtils.h:130

◆ getGenericMaterialProperty() [1/2]

template<typename T , bool is_ad>
const GenericMaterialProperty<T, is_ad>& MaterialPropertyInterface::getGenericMaterialProperty ( const std::string &  name,
const unsigned int  state = 0 
)
inlineinherited

Retrieve reference to material property or one of it's old or older values.

The name required by this method is the name that is hard-coded into your source code as the input parameter key. If no input parameter is found this behaves like the getMaterialPropertyByName family as a fall back.

Parameters
nameThe name of the parameter key of the material property to retrieve
stateThe state (current = 0, old = 1, older = 2)
Returns
Reference to the desired material property

Definition at line 91 of file MaterialPropertyInterface.h.

93  {
94  return getGenericMaterialProperty<T, is_ad>(name, _material_data, state);
95  }
std::string name(const ElemQuality q)
MaterialData & _material_data
The material data class that stores properties.

◆ getGenericMaterialProperty() [2/2]

template<typename T , bool is_ad>
const GenericMaterialProperty< T, is_ad > & MaterialPropertyInterface::getGenericMaterialProperty ( const std::string &  name,
MaterialData material_data,
const unsigned int  state = 0 
)
inherited

Retrieve the generic property named "name" for the specified material_data at state state.

Definition at line 786 of file MaterialPropertyInterface.h.

789 {
790  // Check if the supplied parameter is a valid input parameter key
791  const auto prop_name = getMaterialPropertyName(name);
792 
793  return getPossiblyConstantGenericMaterialPropertyByName<T, is_ad>(
794  prop_name, material_data, state);
795 }
MaterialPropertyName getMaterialPropertyName(const std::string &name) const

◆ getGenericMaterialPropertyByName() [1/2]

template<typename T , bool is_ad>
const GenericMaterialProperty<T, is_ad>& MaterialPropertyInterface::getGenericMaterialPropertyByName ( const MaterialPropertyName &  name,
const unsigned int  state = 0 
)
inlineinherited

Retrieve reference to material property or its old or older value The name required by this method is the name defined in the input file.

Parameters
nameThe name of the material property to retrieve
stateThe state (current = 0, old = 1, older = 2)
Returns
Reference to the material property with the name 'name'

Definition at line 129 of file MaterialPropertyInterface.h.

130  {
131  return getGenericMaterialPropertyByName<T, is_ad>(name, _material_data, state);
132  }
std::string name(const ElemQuality q)
MaterialData & _material_data
The material data class that stores properties.

◆ getGenericMaterialPropertyByName() [2/2]

template<typename T , bool is_ad>
const GenericMaterialProperty< T, is_ad > & MaterialPropertyInterface::getGenericMaterialPropertyByName ( const MaterialPropertyName &  name,
MaterialData material_data,
const unsigned int  state 
)
inherited

Retrieve the generic property named "name" without any deduction for the specified material_data for state state.

Definition at line 799 of file MaterialPropertyInterface.h.

802 {
804  {
805  if (state == 1)
806  return getGenericMaterialPropertyByName<T, is_ad>(
807  name_in + _interpolated_old, material_data, 0);
808  if (state == 2)
809  return getGenericMaterialPropertyByName<T, is_ad>(
810  name_in + _interpolated_older, material_data, 0);
811  }
812 
813  const auto name = _get_suffix.empty()
814  ? static_cast<const std::string &>(name_in)
815  : MooseUtils::join(std::vector<std::string>({name_in, _get_suffix}), "_");
816 
818  checkMaterialProperty(name, state);
819 
820  // mark property as requested
821  markMatPropRequested(name);
822 
823  // Update the boolean flag.
825 
826  // Call first so that the ID gets registered
827  auto & prop = material_data.getProperty<T, is_ad>(name, state, _mi_moose_object);
828 
829  // Does the material data used here matter?
830  _material_property_dependencies.insert(material_data.getPropertyId(name));
831 
832  if (state == 0)
834 
835  return prop;
836 }
std::string name(const ElemQuality q)
static const std::string _interpolated_old
name suffixes for interpolated old and older properties
virtual void checkMaterialProperty(const std::string &name, const unsigned int state)
A helper method for checking material properties This method was required to avoid a compiler problem...
const MooseObjectName _mi_moose_object_name
The "complete" name of the object that this interface belongs for material property output...
static const std::string _interpolated_older
void markMatPropRequested(const std::string &)
A proxy method for _mi_feproblem.markMatPropRequested(name)
const MaterialPropertyName _get_suffix
const bool _use_interpolated_state
Use the interpolated state set up through the ProjectedStatefulMaterialStorageAction.
void addConsumedPropertyName(const MooseObjectName &obj_name, const std::string &prop_name)
bool _get_material_property_called
Initialized to false.
void checkExecutionStage()
Check and throw an error if the execution has progressed past the construction stage.
const MooseObject & _mi_moose_object
The MooseObject creating the MaterialPropertyInterface.
std::unordered_set< unsigned int > _material_property_dependencies
The set of material properties (as given by their IDs) that this object depends on.
std::string join(const T &strings, const std::string &delimiter)
Python like join function for strings.
Definition: MooseUtils.h:130

◆ getGenericNeighborMaterialProperty()

template<typename T , bool is_ad>
const GenericMaterialProperty<T, is_ad>& TwoMaterialPropertyInterface::getGenericNeighborMaterialProperty ( const std::string &  name,
const unsigned int  state = 0 
)
inline

Retrieve the neighbor property deduced from the name name.

state is the property state; 0 = current, 1 = old, 2 = older, etc.

Definition at line 39 of file TwoMaterialPropertyInterface.h.

40  {
41  return getGenericMaterialProperty<T, is_ad>(name, _neighbor_material_data, state);
42  }
std::string name(const ElemQuality q)

◆ getGenericNeighborMaterialPropertyByName()

template<typename T , bool is_ad>
const GenericMaterialProperty<T, is_ad>& TwoMaterialPropertyInterface::getGenericNeighborMaterialPropertyByName ( const std::string &  name,
const unsigned int  state = 0 
)
inline

Retrieve the neighbor property named "name" without any deduction.

state is the property state; 0 = current, 1 = old, 2 = older, etc.

Definition at line 74 of file TwoMaterialPropertyInterface.h.

75  {
76  return getGenericMaterialPropertyByName<T, is_ad>(name, _neighbor_material_data, state);
77  }
std::string name(const ElemQuality q)

◆ getGenericOptionalMaterialProperty()

template<typename T , bool is_ad>
const GenericOptionalMaterialProperty< T, is_ad > & MaterialPropertyInterface::getGenericOptionalMaterialProperty ( const std::string &  name,
const unsigned int  state = 0 
)
inherited

Optional material property getters state is the property state; 0 = current, 1 = old, 2 = older, etc.

Definition at line 754 of file MaterialPropertyInterface.h.

756 {
757  auto proxy = std::make_unique<OptionalMaterialPropertyProxy<MaterialPropertyInterface, T, is_ad>>(
758  name, state);
759  auto & optional_property = proxy->value();
760  _optional_property_proxies.push_back(std::move(proxy));
761  return optional_property;
762 }
std::string name(const ElemQuality q)
std::vector< std::unique_ptr< OptionalMaterialPropertyProxyBase< MaterialPropertyInterface > > > _optional_property_proxies
optional material properties

◆ getGenericZeroMaterialProperty() [1/2]

template<typename T , bool is_ad>
const GenericMaterialProperty< T, is_ad > & MaterialPropertyInterface::getGenericZeroMaterialProperty ( const std::string &  name)
inherited

Return a material property that is initialized to zero by default and does not need to (but can) be declared by another material.

Definition at line 696 of file MaterialPropertyInterface.h.

697 {
698  const auto prop_name = getMaterialPropertyName(name);
699  return getGenericZeroMaterialPropertyByName<T, is_ad>(prop_name);
700 }
MaterialPropertyName getMaterialPropertyName(const std::string &name) const

◆ getGenericZeroMaterialProperty() [2/2]

template<typename T , bool is_ad>
const GenericMaterialProperty< T, is_ad > & MaterialPropertyInterface::getGenericZeroMaterialProperty ( )
inherited

Return a constant zero anonymous material property.

Definition at line 715 of file MaterialPropertyInterface.h.

716 {
717  // static zero property storage
719 
720  // resize to accomodate maximum number of qpoints
721  // (in multiapp scenarios getMaxQps can return different values in each app; we need the max)
722  unsigned int nqp = getMaxQps();
723  if (nqp > zero.size())
724  zero.resize(nqp);
725 
726  // set values for all qpoints to zero
727  for (unsigned int qp = 0; qp < nqp; ++qp)
728  MathUtils::mooseSetToZero(zero[qp]);
729 
730  return zero;
731 }
void mooseSetToZero(T &v)
Helper function templates to set a variable to zero.
Definition: MathUtils.h:368
const Number zero
typename GenericMaterialPropertyStruct< T, is_ad >::type GenericMaterialProperty
static constexpr PropertyValue::id_type zero_property_id
The material property ID for a zero property.

◆ getGenericZeroMaterialPropertyByName()

template<typename T , bool is_ad>
const GenericMaterialProperty< T, is_ad > & MaterialPropertyInterface::getGenericZeroMaterialPropertyByName ( const std::string &  prop_name)
inherited

Definition at line 704 of file MaterialPropertyInterface.h.

705 {
706  // if found return the requested property
707  if (hasGenericMaterialPropertyByName<T, is_ad>(prop_name))
708  return getGenericMaterialPropertyByName<T, is_ad>(prop_name);
709 
710  return getGenericZeroMaterialProperty<T, is_ad>();
711 }

◆ getMaterial()

MaterialBase & MaterialPropertyInterface::getMaterial ( const std::string &  name)
inherited

Return a MaterialBase reference - usable for computing directly.

Parameters
nameThe name of the input parameter or explicit material name.
no_warnIf true, suppress warning about retrieving the material potentially during its calculation. If you don't know what this is/means, then you don't need it.

Definition at line 189 of file MaterialPropertyInterface.C.

190 {
191  return getMaterialByName(_mi_params.get<MaterialName>(name));
192 }
std::vector< std::pair< R1, R2 > > get(const std::string &param1, const std::string &param2) const
Combine two vector parameters into a single vector of pairs.
const InputParameters & _mi_params
Parameters of the object with this interface.
MaterialBase & getMaterialByName(const std::string &name, bool no_warn=false)

◆ getMaterialByName()

MaterialBase & MaterialPropertyInterface::getMaterialByName ( const std::string &  name,
bool  no_warn = false 
)
inherited

Definition at line 195 of file MaterialPropertyInterface.C.

Referenced by MaterialPropertyInterface::getMaterial(), Material::getMaterialByName(), and MaterialVectorPostprocessor::MaterialVectorPostprocessor().

196 {
197  std::shared_ptr<MaterialBase> discrete =
199 
201  return *discrete;
202 }
FEProblemBase & _mi_feproblem
Reference to the FEProblemBase class.
const THREAD_ID _mi_tid
Current threaded it.
std::shared_ptr< MaterialBase > getMaterial(std::string name, Moose::MaterialDataType type, const THREAD_ID tid=0, bool no_warn=false)
Return a pointer to a MaterialBase object.
void checkBlockAndBoundaryCompatibility(std::shared_ptr< MaterialBase > discrete)
Check if block and boundary restrictions of a given material are compatible with the current material...
const Moose::MaterialDataType _material_data_type
The type of data.

◆ getMaterialProperty() [1/2]

template<typename T >
const MaterialProperty<T>& MaterialPropertyInterface::getMaterialProperty ( const std::string &  name,
const unsigned int  state = 0 
)
inlineinherited

Definition at line 97 of file MaterialPropertyInterface.h.

99  {
100  return getGenericMaterialProperty<T, false>(name, state);
101  }
std::string name(const ElemQuality q)

◆ getMaterialProperty() [2/2]

template<typename T >
const MaterialProperty<T>& MaterialPropertyInterface::getMaterialProperty ( const std::string &  name,
MaterialData material_data,
const unsigned int  state = 0 
)
inlineinherited

Retrieve the property named "name" for the specified material_data.

state is the property state; 0 = current, 1 = old, 2 = older, etc.

Definition at line 349 of file MaterialPropertyInterface.h.

352  {
353  return getGenericMaterialProperty<T, false>(name, material_data, state);
354  }
std::string name(const ElemQuality q)

◆ getMaterialPropertyBlockNames()

std::vector< SubdomainName > MaterialPropertyInterface::getMaterialPropertyBlockNames ( const std::string &  name)
inherited

Retrieve the block names that the material property is defined.

Parameters
nameThe name of the material property
Returns
A vector the the block names for the property

Definition at line 87 of file MaterialPropertyInterface.C.

88 {
90 }
FEProblemBase & _mi_feproblem
Reference to the FEProblemBase class.
virtual std::vector< SubdomainName > getMaterialPropertyBlockNames(const std::string &prop_name)
Get a vector of block id equivalences that the material property is defined on.
Definition: SubProblem.C:455

◆ getMaterialPropertyBlocks()

std::set< SubdomainID > MaterialPropertyInterface::getMaterialPropertyBlocks ( const std::string &  name)
inherited

Retrieve the block ids that the material property is defined.

Parameters
nameThe name of the material property
Returns
A vector the the block ids for the property

Definition at line 81 of file MaterialPropertyInterface.C.

Referenced by MaterialPropertyInterface::getBlockMaterialProperty().

82 {
84 }
FEProblemBase & _mi_feproblem
Reference to the FEProblemBase class.
virtual std::set< SubdomainID > getMaterialPropertyBlocks(const std::string &prop_name)
Get a vector containing the block ids the material property is defined on.
Definition: SubProblem.C:439

◆ getMaterialPropertyBoundaryIDs()

std::set< BoundaryID > MaterialPropertyInterface::getMaterialPropertyBoundaryIDs ( const std::string &  name)
inherited

Retrieve the boundary ids that the material property is defined.

Parameters
nameThe name of the material property
Returns
A vector the the boundary ids for the property

Definition at line 93 of file MaterialPropertyInterface.C.

94 {
96 }
FEProblemBase & _mi_feproblem
Reference to the FEProblemBase class.
virtual std::set< BoundaryID > getMaterialPropertyBoundaryIDs(const std::string &prop_name)
Get a vector containing the block ids the material property is defined on.
Definition: SubProblem.C:491

◆ getMaterialPropertyBoundaryNames()

std::vector< BoundaryName > MaterialPropertyInterface::getMaterialPropertyBoundaryNames ( const std::string &  name)
inherited

Retrieve the boundary namess that the material property is defined.

Parameters
nameThe name of the material property
Returns
A vector the the boundary names for the property

Definition at line 99 of file MaterialPropertyInterface.C.

100 {
102 }
FEProblemBase & _mi_feproblem
Reference to the FEProblemBase class.
virtual std::vector< BoundaryName > getMaterialPropertyBoundaryNames(const std::string &prop_name)
Get a vector of block id equivalences that the material property is defined on.
Definition: SubProblem.C:507

◆ getMaterialPropertyByName() [1/2]

template<typename T >
const MaterialProperty<T>& MaterialPropertyInterface::getMaterialPropertyByName ( const MaterialPropertyName &  name,
const unsigned int  state = 0 
)
inlineinherited

Definition at line 134 of file MaterialPropertyInterface.h.

136  {
137  return getGenericMaterialPropertyByName<T, false>(name, state);
138  }
std::string name(const ElemQuality q)

◆ getMaterialPropertyByName() [2/2]

template<typename T >
const MaterialProperty<T>& MaterialPropertyInterface::getMaterialPropertyByName ( const MaterialPropertyName &  name,
MaterialData material_data,
const unsigned int  state = 0 
)
inlineinherited

Retrieve the property named "name" without any deduction for the specified material_data.

state is the property state; 0 = current, 1 = old, 2 = older, etc.

Definition at line 393 of file MaterialPropertyInterface.h.

396  {
397  return getGenericMaterialPropertyByName<T, false>(name, material_data, state);
398  }
std::string name(const ElemQuality q)

◆ getMaterialPropertyCalled()

bool MaterialPropertyInterface::getMaterialPropertyCalled ( ) const
inlineinherited

Returns true if getMaterialProperty() has been called, false otherwise.

Definition at line 320 of file MaterialPropertyInterface.h.

bool _get_material_property_called
Initialized to false.

◆ getMaterialPropertyName()

MaterialPropertyName MaterialPropertyInterface::getMaterialPropertyName ( const std::string &  name) const
protectedinherited
Returns
The name of the material property associated with name name.

If name is the name of a material property parameter and the parameter is valid, this will return the value of said parameter. Otherwise, it will just return the name.

Definition at line 73 of file MaterialPropertyInterface.C.

Referenced by InterfaceMaterial::getGenericMaterialProperty(), Material::getGenericMaterialProperty(), MaterialPropertyInterface::getGenericMaterialProperty(), InterfaceMaterial::getGenericNeighborMaterialProperty(), MaterialPropertyInterface::getGenericZeroMaterialProperty(), MaterialPropertyInterface::hasADMaterialProperty(), and MaterialPropertyInterface::hasMaterialProperty().

74 {
75  if (_mi_params.have_parameter<MaterialPropertyName>(name) && _mi_params.isParamValid(name))
76  return _mi_params.get<MaterialPropertyName>(name);
77  return name;
78 }
std::string name(const ElemQuality q)
std::vector< std::pair< R1, R2 > > get(const std::string &param1, const std::string &param2) const
Combine two vector parameters into a single vector of pairs.
const InputParameters & _mi_params
Parameters of the object with this interface.
bool have_parameter(std::string_view name) const
A wrapper around the Parameters base class method.
bool isParamValid(const std::string &name) const
This method returns parameters that have been initialized in one fashion or another, i.e.

◆ getMaterialPropertyOld() [1/2]

template<typename T >
const MaterialProperty<T>& MaterialPropertyInterface::getMaterialPropertyOld ( const std::string &  name)
inlineinherited

Definition at line 108 of file MaterialPropertyInterface.h.

109  {
110  return getMaterialProperty<T>(name, 1);
111  }
std::string name(const ElemQuality q)

◆ getMaterialPropertyOld() [2/2]

template<typename T >
const MaterialProperty<T>& MaterialPropertyInterface::getMaterialPropertyOld ( const std::string &  name,
MaterialData material_data 
)
inlineinherited

Retrieve the old property deduced from the name name for the specified material_data.

Definition at line 415 of file MaterialPropertyInterface.h.

417  {
418  return getMaterialProperty<T>(name, material_data, 1);
419  }
std::string name(const ElemQuality q)

◆ getMaterialPropertyOldByName() [1/2]

template<typename T >
const MaterialProperty<T>& MaterialPropertyInterface::getMaterialPropertyOldByName ( const MaterialPropertyName &  name)
inlineinherited

Definition at line 145 of file MaterialPropertyInterface.h.

146  {
147  return getMaterialPropertyByName<T>(name, 1);
148  }
std::string name(const ElemQuality q)

◆ getMaterialPropertyOldByName() [2/2]

template<typename T >
const MaterialProperty<T>& MaterialPropertyInterface::getMaterialPropertyOldByName ( const MaterialPropertyName &  name,
MaterialData material_data 
)
inlineinherited

Retrieve the old property named name without any deduction for the specified material_data.

Definition at line 437 of file MaterialPropertyInterface.h.

439  {
440  return getMaterialPropertyByName<T>(name, material_data, 1);
441  }
std::string name(const ElemQuality q)

◆ getMaterialPropertyOlder() [1/2]

template<typename T >
const MaterialProperty<T>& MaterialPropertyInterface::getMaterialPropertyOlder ( const std::string &  name)
inlineinherited

Definition at line 113 of file MaterialPropertyInterface.h.

114  {
115  return getMaterialProperty<T>(name, 2);
116  }
std::string name(const ElemQuality q)

◆ getMaterialPropertyOlder() [2/2]

template<typename T >
const MaterialProperty<T>& MaterialPropertyInterface::getMaterialPropertyOlder ( const std::string &  name,
MaterialData material_data 
)
inlineinherited

Retrieve the older property deduced from the name name for the specified material_data.

Definition at line 426 of file MaterialPropertyInterface.h.

428  {
429  return getMaterialProperty<T>(name, material_data, 2);
430  }
std::string name(const ElemQuality q)

◆ getMaterialPropertyOlderByName() [1/2]

template<typename T >
const MaterialProperty<T>& MaterialPropertyInterface::getMaterialPropertyOlderByName ( const MaterialPropertyName &  name)
inlineinherited

Definition at line 150 of file MaterialPropertyInterface.h.

151  {
152  return getMaterialPropertyByName<T>(name, 2);
153  }
std::string name(const ElemQuality q)

◆ getMaterialPropertyOlderByName() [2/2]

template<typename T >
const MaterialProperty<T>& MaterialPropertyInterface::getMaterialPropertyOlderByName ( const MaterialPropertyName &  name,
MaterialData material_data 
)
inlineinherited

Retrieve the older property named name without any deduction for the specified material_data.

Definition at line 448 of file MaterialPropertyInterface.h.

450  {
451  return getMaterialPropertyByName<T>(name, material_data, 2);
452  }
std::string name(const ElemQuality q)

◆ getMatPropDependencies()

const std::unordered_set<unsigned int>& MaterialPropertyInterface::getMatPropDependencies ( ) const
inlineinherited

Retrieve the set of material properties that this object depends on.

Returns
The IDs corresponding to the material properties that MUST be reinited before evaluating this object

Definition at line 328 of file MaterialPropertyInterface.h.

Referenced by InterfaceMaterial::getMatPropDependencies(), Material::getMatPropDependencies(), NodalPatchRecovery::reinitPatch(), ComputeUserObjectsThread::subdomainChanged(), and MooseObjectWarehouseBase< Indicator >::updateMatPropDependencyHelper().

329  {
331  }
std::unordered_set< unsigned int > _material_property_dependencies
The set of material properties (as given by their IDs) that this object depends on.

◆ getNeighborADMaterialProperty()

template<typename T >
const ADMaterialProperty<T>& TwoMaterialPropertyInterface::getNeighborADMaterialProperty ( const std::string &  name)
inline

Definition at line 50 of file TwoMaterialPropertyInterface.h.

51  {
52  return getGenericNeighborMaterialProperty<T, true>(name, 0);
53  }
std::string name(const ElemQuality q)

◆ getNeighborADMaterialPropertyByName()

template<typename T >
const ADMaterialProperty<T>& TwoMaterialPropertyInterface::getNeighborADMaterialPropertyByName ( const std::string &  name)
inline

Definition at line 85 of file TwoMaterialPropertyInterface.h.

86  {
87  return getGenericNeighborMaterialPropertyByName<T, true>(name, 0);
88  }
std::string name(const ElemQuality q)

◆ getNeighborMaterialProperty()

template<typename T >
const MaterialProperty<T>& TwoMaterialPropertyInterface::getNeighborMaterialProperty ( const std::string &  name,
const unsigned int  state = 0 
)
inline

Definition at line 44 of file TwoMaterialPropertyInterface.h.

46  {
47  return getGenericNeighborMaterialProperty<T, false>(name, state);
48  }
std::string name(const ElemQuality q)

◆ getNeighborMaterialPropertyByName()

template<typename T >
const MaterialProperty<T>& TwoMaterialPropertyInterface::getNeighborMaterialPropertyByName ( const std::string &  name,
const unsigned int  state = 0 
)
inline

Definition at line 79 of file TwoMaterialPropertyInterface.h.

81  {
82  return getGenericNeighborMaterialPropertyByName<T, false>(name, state);
83  }
std::string name(const ElemQuality q)

◆ getNeighborMaterialPropertyOld()

template<typename T >
const MaterialProperty<T>& TwoMaterialPropertyInterface::getNeighborMaterialPropertyOld ( const std::string &  name)
inline

Definition at line 55 of file TwoMaterialPropertyInterface.h.

56  {
57  return getGenericNeighborMaterialProperty<T, false>(name, 1);
58  }
std::string name(const ElemQuality q)

◆ getNeighborMaterialPropertyOlder()

template<typename T >
const MaterialProperty<T>& TwoMaterialPropertyInterface::getNeighborMaterialPropertyOlder ( const std::string &  name)
inline

Definition at line 60 of file TwoMaterialPropertyInterface.h.

61  {
62  return getGenericNeighborMaterialProperty<T, false>(name, 2);
63  }
std::string name(const ElemQuality q)

◆ getOptionalADMaterialProperty()

template<typename T >
const OptionalADMaterialProperty<T>& MaterialPropertyInterface::getOptionalADMaterialProperty ( const std::string &  name)
inlineinherited

Definition at line 169 of file MaterialPropertyInterface.h.

170  {
171  return getGenericOptionalMaterialProperty<T, true>(name);
172  }
std::string name(const ElemQuality q)

◆ getOptionalMaterialProperty()

template<typename T >
const OptionalMaterialProperty<T>& MaterialPropertyInterface::getOptionalMaterialProperty ( const std::string &  name,
const unsigned int  state = 0 
)
inlineinherited

Definition at line 163 of file MaterialPropertyInterface.h.

165  {
166  return getGenericOptionalMaterialProperty<T, false>(name, state);
167  }
std::string name(const ElemQuality q)

◆ getOptionalMaterialPropertyOld()

template<typename T >
const OptionalMaterialProperty<T>& MaterialPropertyInterface::getOptionalMaterialPropertyOld ( const std::string &  name)
inlineinherited

Definition at line 175 of file MaterialPropertyInterface.h.

176  {
177  return getOptionalMaterialProperty<T>(name, 1);
178  }
std::string name(const ElemQuality q)

◆ getOptionalMaterialPropertyOlder()

template<typename T >
const OptionalMaterialProperty<T>& MaterialPropertyInterface::getOptionalMaterialPropertyOlder ( const std::string &  name)
inlineinherited

Definition at line 180 of file MaterialPropertyInterface.h.

181  {
182  return getOptionalMaterialProperty<T>(name, 2);
183  }
std::string name(const ElemQuality q)

◆ getPossiblyConstantGenericMaterialPropertyByName()

template<typename T , bool is_ad>
const GenericMaterialProperty< T, is_ad > & MaterialPropertyInterface::getPossiblyConstantGenericMaterialPropertyByName ( const MaterialPropertyName &  prop_name,
MaterialData material_data,
const unsigned int  state 
)
inherited

Retrieve the generic property named "prop_name" without any deduction for the specified material_data for state state.

This API allows the prop_name to be a constant, e.g. it allows the possibility that prop_name is not a name at all

Definition at line 766 of file MaterialPropertyInterface.h.

768 {
769  // Check if it's just a constant
770  if (const auto * default_property = defaultGenericMaterialProperty<T, is_ad>(prop_name))
771  return *default_property;
772 
773  if (state > 0 && !_stateful_allowed)
774  mooseError("Stateful material properties not allowed for this object."
775  " State ",
776  state,
777  " property for \"",
778  prop_name,
779  "\" was requested.");
780 
781  return this->getGenericMaterialPropertyByName<T, is_ad>(prop_name, material_data, state);
782 }
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:284
bool _stateful_allowed
True by default.

◆ getZeroMaterialProperty()

template<typename T , typename... Ts>
const MaterialProperty<T>& MaterialPropertyInterface::getZeroMaterialProperty ( Ts...  args)
inlineinherited

for backwards compatibility

Definition at line 219 of file MaterialPropertyInterface.h.

220  {
221  return getGenericZeroMaterialProperty<T, false>(args...);
222  }

◆ hasADMaterialProperty()

template<typename T >
bool MaterialPropertyInterface::hasADMaterialProperty ( const std::string &  name)
inherited

Definition at line 735 of file MaterialPropertyInterface.h.

736 {
737  // Check if the supplied parameter is a valid input parameter key
738  const auto prop_name = getMaterialPropertyName(name);
739  return hasADMaterialPropertyByName<T>(prop_name);
740 }
MaterialPropertyName getMaterialPropertyName(const std::string &name) const

◆ hasADMaterialPropertyByName()

template<typename T >
bool MaterialPropertyInterface::hasADMaterialPropertyByName ( const std::string &  name)
inherited

Definition at line 744 of file MaterialPropertyInterface.h.

745 {
746  const auto name = _get_suffix.empty()
747  ? name_in
748  : MooseUtils::join(std::vector<std::string>({name_in, _get_suffix}), "_");
750 }
std::string name(const ElemQuality q)
MaterialData & _material_data
The material data class that stores properties.
const MaterialPropertyName _get_suffix
bool haveADProperty(const std::string &prop_name) const
Returns true if the AD material property exists - defined by any material.
Definition: MaterialData.h:96
std::string join(const T &strings, const std::string &delimiter)
Python like join function for strings.
Definition: MooseUtils.h:130

◆ hasGenericMaterialProperty()

template<typename T , bool is_ad>
bool MaterialPropertyInterface::hasGenericMaterialProperty ( const std::string &  name)
inlineinherited

generic hasMaterialProperty helper

Definition at line 293 of file MaterialPropertyInterface.h.

294  {
295  if constexpr (is_ad)
296  return hasADMaterialProperty<T>(name);
297  else
298  return hasMaterialProperty<T>(name);
299  }
std::string name(const ElemQuality q)

◆ hasGenericMaterialPropertyByName()

template<typename T , bool is_ad>
bool MaterialPropertyInterface::hasGenericMaterialPropertyByName ( const std::string &  name)
inlineinherited

Definition at line 301 of file MaterialPropertyInterface.h.

302  {
303  if constexpr (is_ad)
304  return hasADMaterialPropertyByName<T>(name);
305  else
306  return hasMaterialPropertyByName<T>(name);
307  }
std::string name(const ElemQuality q)

◆ hasMaterialProperty()

template<typename T >
bool MaterialPropertyInterface::hasMaterialProperty ( const std::string &  name)
inherited

Check if the material property exists.

Parameters
namethe name of the property to query
Returns
true if the property exists, otherwise false

Definition at line 677 of file MaterialPropertyInterface.h.

678 {
679  // Check if the supplied parameter is a valid input parameter key
680  const auto prop_name = getMaterialPropertyName(name);
681  return hasMaterialPropertyByName<T>(prop_name);
682 }
MaterialPropertyName getMaterialPropertyName(const std::string &name) const

◆ hasMaterialPropertyByName()

template<typename T >
bool MaterialPropertyInterface::hasMaterialPropertyByName ( const std::string &  name)
inherited

Definition at line 686 of file MaterialPropertyInterface.h.

687 {
688  const auto name = _get_suffix.empty()
689  ? name_in
690  : MooseUtils::join(std::vector<std::string>({name_in, _get_suffix}), "_");
691  return _material_data.haveProperty<T>(name);
692 }
std::string name(const ElemQuality q)
bool haveProperty(const std::string &prop_name) const
Returns true if the regular material property exists - defined by any material.
Definition: MaterialData.h:89
MaterialData & _material_data
The material data class that stores properties.
const MaterialPropertyName _get_suffix
std::string join(const T &strings, const std::string &delimiter)
Python like join function for strings.
Definition: MooseUtils.h:130

◆ markMatPropRequested()

void MaterialPropertyInterface::markMatPropRequested ( const std::string &  name)
protectedinherited

A proxy method for _mi_feproblem.markMatPropRequested(name)

Definition at line 135 of file MaterialPropertyInterface.C.

Referenced by MaterialPropertyInterface::getGenericMaterialPropertyByName().

136 {
138 }
FEProblemBase & _mi_feproblem
Reference to the FEProblemBase class.
virtual void markMatPropRequested(const std::string &)
Helper method for adding a material property name to the _material_property_requested set...
Definition: SubProblem.C:682

◆ resolveOptionalProperties()

void MaterialPropertyInterface::resolveOptionalProperties ( )
virtualinherited

resolve all optional properties

Reimplemented in Material.

Definition at line 230 of file MaterialPropertyInterface.C.

231 {
232  for (auto & proxy : _optional_property_proxies)
233  proxy->resolve(*this);
234 }
std::vector< std::unique_ptr< OptionalMaterialPropertyProxyBase< MaterialPropertyInterface > > > _optional_property_proxies
optional material properties

◆ statefulPropertiesAllowed()

void MaterialPropertyInterface::statefulPropertiesAllowed ( bool  stateful_allowed)
inherited

Derived classes can declare whether or not they work with stateful material properties.

See, for example, DiracKernel. By default, they are allowed.

Definition at line 141 of file MaterialPropertyInterface.C.

Referenced by DiracKernelBase::DiracKernelBase(), and DiracKernelTempl< T >::DiracKernelTempl().

142 {
143  _stateful_allowed = stateful_allowed;
144 }
bool _stateful_allowed
True by default.

◆ validParams()

InputParameters TwoMaterialPropertyInterface::validParams ( )
static

Definition at line 16 of file TwoMaterialPropertyInterface.C.

Referenced by MortarUserObject::validParams(), FVFluxBC::validParams(), ThreeMaterialPropertyInterface::validParams(), InterfaceKernelBase::validParams(), InterfaceUserObjectBase::validParams(), InternalSideUserObject::validParams(), InterfaceMaterial::validParams(), FVFluxKernel::validParams(), DGKernelBase::validParams(), MortarConstraintBase::validParams(), and FVInterfaceKernel::validParams().

17 {
18 
19  // Objects inheriting from TwoMaterialPropertyInterface rely on Boundary MaterialData
21  params.set<Moose::MaterialDataType>("_material_data_type") = Moose::BOUNDARY_MATERIAL_DATA;
22  return params;
23 }
MaterialDataType
MaterialData types.
Definition: MooseTypes.h:604
T & set(const std::string &name, bool quiet_mode=false)
Returns a writable reference to the named parameters.
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system...
static InputParameters validParams()

Member Data Documentation

◆ _default_properties

std::vector<std::unique_ptr<PropertyValue> > MaterialPropertyInterface::_default_properties
protectedinherited

Storage vector for default properties.

Definition at line 546 of file MaterialPropertyInterface.h.

Referenced by MaterialPropertyInterface::defaultGenericMaterialProperty().

◆ _get_material_property_called

bool MaterialPropertyInterface::_get_material_property_called
protectedinherited

Initialized to false.

Gets set to true when getMaterialProperty() is called. Clients of this class can inquire whether getMaterialProperty() has been called by calling getMaterialPropertyCalled().

Definition at line 543 of file MaterialPropertyInterface.h.

Referenced by MaterialPropertyInterface::getGenericMaterialPropertyByName(), and MaterialPropertyInterface::getMaterialPropertyCalled().

◆ _get_suffix

const MaterialPropertyName MaterialPropertyInterface::_get_suffix
protectedinherited

◆ _interpolated_old

const std::string MaterialPropertyInterface::_interpolated_old = "_interpolated_old"
staticprotectedinherited

name suffixes for interpolated old and older properties

Definition at line 557 of file MaterialPropertyInterface.h.

Referenced by Material::getGenericMaterialPropertyByName(), and MaterialPropertyInterface::getGenericMaterialPropertyByName().

◆ _interpolated_older

const std::string MaterialPropertyInterface::_interpolated_older = "_interpolated_older"
staticprotectedinherited

◆ _material_data

MaterialData& MaterialPropertyInterface::_material_data
protectedinherited

◆ _material_data_type

const Moose::MaterialDataType MaterialPropertyInterface::_material_data_type
protectedinherited

◆ _material_property_dependencies

std::unordered_set<unsigned int> MaterialPropertyInterface::_material_property_dependencies
protectedinherited

The set of material properties (as given by their IDs) that this object depends on.

Definition at line 549 of file MaterialPropertyInterface.h.

Referenced by MaterialPropertyInterface::getBlockMaterialProperty(), MaterialPropertyInterface::getGenericMaterialPropertyByName(), and MaterialPropertyInterface::getMatPropDependencies().

◆ _mi_feproblem

FEProblemBase& MaterialPropertyInterface::_mi_feproblem
protectedinherited

◆ _mi_moose_object_name

const MooseObjectName MaterialPropertyInterface::_mi_moose_object_name
protectedinherited

The "complete" name of the object that this interface belongs for material property output.

Definition at line 466 of file MaterialPropertyInterface.h.

Referenced by MaterialPropertyInterface::getBlockMaterialProperty(), and MaterialPropertyInterface::getGenericMaterialPropertyByName().

◆ _mi_name

const std::string MaterialPropertyInterface::_mi_name
protectedinherited

The name of the object that this interface belongs to.

Definition at line 463 of file MaterialPropertyInterface.h.

Referenced by MaterialPropertyInterface::checkMaterialProperty().

◆ _mi_params

const InputParameters& MaterialPropertyInterface::_mi_params
protectedinherited

◆ _mi_subproblem

SubProblem& MaterialPropertyInterface::_mi_subproblem
protectedinherited

Reference to the subproblem.

Definition at line 472 of file MaterialPropertyInterface.h.

◆ _mi_tid

const THREAD_ID MaterialPropertyInterface::_mi_tid
protectedinherited

◆ _neighbor_material_data

MaterialData& TwoMaterialPropertyInterface::_neighbor_material_data
protected

◆ _stateful_allowed

bool MaterialPropertyInterface::_stateful_allowed
protectedinherited

True by default.

If false, this class throws an error if any of the stateful material properties interfaces are used.

Definition at line 536 of file MaterialPropertyInterface.h.

Referenced by MaterialPropertyInterface::getPossiblyConstantGenericMaterialPropertyByName(), and MaterialPropertyInterface::statefulPropertiesAllowed().

◆ _use_interpolated_state

const bool MaterialPropertyInterface::_use_interpolated_state
protectedinherited

◆ default_property_id

constexpr PropertyValue::id_type MaterialPropertyInterface::default_property_id
staticinherited
Initial value:

The material property ID for a default (parsed from input) property.

Definition at line 75 of file MaterialPropertyInterface.h.

Referenced by MaterialPropertyInterface::defaultGenericMaterialProperty().

◆ zero_property_id

constexpr PropertyValue::id_type MaterialPropertyInterface::zero_property_id = PropertyValue::invalid_property_id - 2
staticinherited

The material property ID for a zero property.

Definition at line 78 of file MaterialPropertyInterface.h.

Referenced by MaterialBase::getGenericZeroMaterialProperty(), and MaterialPropertyInterface::getGenericZeroMaterialProperty().


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