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

#include <TwoMaterialPropertyInterface.h>

Inheritance diagram for TwoMaterialPropertyInterface:
[legend]

Public Member Functions

 TwoMaterialPropertyInterface (const MooseObject *moose_object)
 
 TwoMaterialPropertyInterface (const MooseObject *moose_object, const std::set< SubdomainID > &blocks_ids)
 
 TwoMaterialPropertyInterface (const MooseObject *moose_object, const std::set< BoundaryID > &boundary_ids)
 
 TwoMaterialPropertyInterface (const MooseObject *moose_object, const std::set< SubdomainID > &blocks_ids, const std::set< BoundaryID > &boundary_ids)
 
template<typename T >
const MaterialProperty< T > & getNeighborMaterialProperty (const std::string &name)
 Retrieve the property named "name". More...
 
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 >
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 >
const MaterialProperty< T > & getZeroMaterialProperty (const std::string &prop_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...
 
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 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::set< unsigned int > & getMatPropDependencies () const
 Retrieve the set of material properties that this object depends on. More...
 
template<>
const MaterialProperty< Real > * defaultMaterialProperty (const std::string &name)
 
template<typename T >
const MaterialProperty< T > & getMaterialProperty (const std::string &name)
 Retrieve reference to material property or one of it's old or older values. More...
 
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 >
const MaterialProperty< T > & getMaterialPropertyByName (const MaterialPropertyName &name)
 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 > & getMaterialPropertyOldByName (const MaterialPropertyName &name)
 
template<typename T >
const MaterialProperty< T > & getMaterialPropertyOlderByName (const MaterialPropertyName &name)
 
MaterialgetMaterial (const std::string &name)
 Return a Material reference - usable for computing directly. More...
 
MaterialgetMaterialByName (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)
 

Protected Member Functions

void checkMaterialProperty (const std::string &name)
 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...
 
std::string deducePropertyName (const std::string &name)
 Small helper to look up a material property name through the input parameter keys. More...
 
template<typename T >
const MaterialProperty< T > * defaultMaterialProperty (const std::string &name)
 Helper function to parse default material property values. More...
 

Protected Attributes

std::shared_ptr< 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...
 
Moose::MaterialDataType _material_data_type
 The type of data. More...
 
std::shared_ptr< MaterialData_material_data
 Pointer to the material data class that stores properties. More...
 
FEProblemBase_mi_feproblem
 Reference to the FEProblemBase class. More...
 
const THREAD_ID _mi_tid
 Current threaded it. More...
 
bool _stateful_allowed
 True by default. More...
 
bool _get_material_property_called
 Initialized to false. More...
 
std::vector< std::unique_ptr< MaterialProperty< Real > > > _default_real_properties
 Storage vector for MaterialProperty<Real> default objects. More...
 
std::set< unsigned int > _material_property_dependencies
 The set of material properties (as given by their IDs) that this object depends on. More...
 

Detailed Description

Definition at line 27 of file TwoMaterialPropertyInterface.h.

Constructor & Destructor Documentation

TwoMaterialPropertyInterface::TwoMaterialPropertyInterface ( const MooseObject moose_object)

Definition at line 29 of file TwoMaterialPropertyInterface.C.

30  : MaterialPropertyInterface(moose_object),
32  _mi_params.get<THREAD_ID>("_tid")))
33 {
34 }
FEProblemBase & _mi_feproblem
Reference to the FEProblemBase class.
std::shared_ptr< MaterialData > _neighbor_material_data
MaterialPropertyInterface(const MooseObject *moose_object)
const InputParameters & _mi_params
Parameters of the object with this interface.
std::shared_ptr< MaterialData > getMaterialData(Moose::MaterialDataType type, THREAD_ID tid=0)
unsigned int THREAD_ID
Definition: MooseTypes.h:79
TwoMaterialPropertyInterface::TwoMaterialPropertyInterface ( const MooseObject moose_object,
const std::set< SubdomainID > &  blocks_ids 
)

Definition at line 36 of file TwoMaterialPropertyInterface.C.

38  : MaterialPropertyInterface(moose_object, blocks_ids),
40  _mi_params.get<THREAD_ID>("_tid")))
41 {
42 }
FEProblemBase & _mi_feproblem
Reference to the FEProblemBase class.
std::shared_ptr< MaterialData > _neighbor_material_data
MaterialPropertyInterface(const MooseObject *moose_object)
const InputParameters & _mi_params
Parameters of the object with this interface.
std::shared_ptr< MaterialData > getMaterialData(Moose::MaterialDataType type, THREAD_ID tid=0)
unsigned int THREAD_ID
Definition: MooseTypes.h:79
TwoMaterialPropertyInterface::TwoMaterialPropertyInterface ( const MooseObject moose_object,
const std::set< BoundaryID > &  boundary_ids 
)

Definition at line 43 of file TwoMaterialPropertyInterface.C.

45  : MaterialPropertyInterface(moose_object, boundary_ids),
47  _mi_params.get<THREAD_ID>("_tid")))
48 {
49 }
FEProblemBase & _mi_feproblem
Reference to the FEProblemBase class.
std::shared_ptr< MaterialData > _neighbor_material_data
MaterialPropertyInterface(const MooseObject *moose_object)
const InputParameters & _mi_params
Parameters of the object with this interface.
std::shared_ptr< MaterialData > getMaterialData(Moose::MaterialDataType type, THREAD_ID tid=0)
unsigned int THREAD_ID
Definition: MooseTypes.h:79
TwoMaterialPropertyInterface::TwoMaterialPropertyInterface ( const MooseObject moose_object,
const std::set< SubdomainID > &  blocks_ids,
const std::set< BoundaryID > &  boundary_ids 
)

Definition at line 51 of file TwoMaterialPropertyInterface.C.

55  : MaterialPropertyInterface(moose_object, blocks_ids, boundary_ids),
57  _mi_params.get<THREAD_ID>("_tid")))
58 {
59 }
FEProblemBase & _mi_feproblem
Reference to the FEProblemBase class.
std::shared_ptr< MaterialData > _neighbor_material_data
MaterialPropertyInterface(const MooseObject *moose_object)
const InputParameters & _mi_params
Parameters of the object with this interface.
std::shared_ptr< MaterialData > getMaterialData(Moose::MaterialDataType type, THREAD_ID tid=0)
unsigned int THREAD_ID
Definition: MooseTypes.h:79

Member Function Documentation

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

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

Definition at line 138 of file MaterialPropertyInterface.C.

Referenced by MaterialPropertyInterface::getMaterialPropertyByName().

139 {
140  // If the material property is boundary restrictable, add to the list of materials to check
142  for (const auto & bnd_id : _mi_boundary_ids)
144 
145  // The default is to assume block restrictions
146  else
147  for (const auto & blk_ids : _mi_block_ids)
149 }
virtual void storeDelayedCheckMatProp(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:244
FEProblemBase & _mi_feproblem
Reference to the FEProblemBase class.
const std::set< SubdomainID > & _mi_block_ids
Storage for the block ids created by BlockRestrictable.
const bool _mi_boundary_restricted
BoundaryRestricted flag.
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.
std::string MaterialPropertyInterface::deducePropertyName ( const std::string &  name)
protectedinherited

Small helper to look up a material property name through the input parameter keys.

Definition at line 77 of file MaterialPropertyInterface.C.

Referenced by MaterialPropertyInterface::getMaterialProperty(), Material::getMaterialProperty(), MaterialPropertyInterface::getMaterialPropertyOld(), Material::getMaterialPropertyOld(), MaterialPropertyInterface::getMaterialPropertyOlder(), Material::getMaterialPropertyOlder(), getNeighborMaterialProperty(), getNeighborMaterialPropertyOld(), getNeighborMaterialPropertyOlder(), and MaterialPropertyInterface::hasMaterialProperty().

78 {
79  if (_mi_params.have_parameter<MaterialPropertyName>(name))
80  return _mi_params.get<MaterialPropertyName>(name);
81  else
82  return name;
83 }
const InputParameters & _mi_params
Parameters of the object with this interface.
template<typename T >
const MaterialProperty< T > * MaterialPropertyInterface::defaultMaterialProperty ( const std::string &  name)
protectedinherited

Helper function to parse default material property values.

This is implemented as a specialization for supported types and returns NULL in all other cases.

Definition at line 345 of file MaterialPropertyInterface.h.

346 {
347  return NULL;
348 }
const MaterialProperty< Real > * MaterialPropertyInterface::defaultMaterialProperty ( const std::string &  name)
inherited

Definition at line 87 of file MaterialPropertyInterface.C.

88 {
89  std::istringstream ss(name);
90  Real real_value;
91 
92  // check if the string parsed cleanly into a Real number
93  if (ss >> real_value && ss.eof())
94  {
95  _default_real_properties.emplace_back(libmesh_make_unique<MaterialProperty<Real>>());
96  auto & default_property = _default_real_properties.back();
97 
98  // resize to accomodate maximum number obf qpoints
99  auto nqp = _mi_feproblem.getMaxQps();
100  default_property->resize(nqp);
101 
102  // set values for all qpoints to the given default
103  for (decltype(nqp) qp = 0; qp < nqp; ++qp)
104  (*default_property)[qp] = real_value;
105 
106  // return the raw pointer inside the shared pointer
107  return default_property.get();
108  }
109 
110  return nullptr;
111 }
FEProblemBase & _mi_feproblem
Reference to the FEProblemBase class.
std::vector< std::unique_ptr< MaterialProperty< Real > > > _default_real_properties
Storage vector for MaterialProperty<Real> default objects.
unsigned int getMaxQps() const
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 411 of file MaterialPropertyInterface.h.

412 {
413  if (_mi_block_ids.empty())
414  mooseError("getBlockMaterialProperty must be called by a block restrictable object");
415 
416  if (!hasMaterialPropertyByName<T>(name))
417  return std::pair<const MaterialProperty<T> *, std::set<SubdomainID>>(NULL,
418  std::set<SubdomainID>());
419 
420  _material_property_dependencies.insert(_material_data->getPropertyId(name));
421 
422  return std::pair<const MaterialProperty<T> *, std::set<SubdomainID>>(
423  &_material_data->getProperty<T>(name), _mi_feproblem.getMaterialPropertyBlocks(name));
424 }
FEProblemBase & _mi_feproblem
Reference to the FEProblemBase class.
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:182
std::set< unsigned int > _material_property_dependencies
The set of material properties (as given by their IDs) that this object depends on.
std::shared_ptr< MaterialData > _material_data
Pointer to the material data class that stores properties.
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:105
Concrete definition of a parameter value for a specified type.
Material & MaterialPropertyInterface::getMaterial ( const std::string &  name)
inherited

Return a Material 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 164 of file MaterialPropertyInterface.C.

165 {
166  return getMaterialByName(_mi_params.get<MaterialName>(name));
167 }
Material & getMaterialByName(const std::string &name, bool no_warn=false)
const InputParameters & _mi_params
Parameters of the object with this interface.
Material & MaterialPropertyInterface::getMaterialByName ( const std::string &  name,
bool  no_warn = false 
)
inherited

Definition at line 170 of file MaterialPropertyInterface.C.

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

171 {
172  std::shared_ptr<Material> discrete =
174 
175  // Check block compatibility
176  if (!discrete->hasBlocks(_mi_block_ids))
177  {
178  std::ostringstream oss;
179  oss << "The Material object '" << discrete->name()
180  << "' is defined on blocks that are incompatible with the retrieving object '" << _mi_name
181  << "':\n";
182  oss << " " << discrete->name();
183  for (const auto & sbd_id : discrete->blockIDs())
184  oss << " " << sbd_id;
185  oss << "\n";
186  oss << " " << _mi_name;
187  for (const auto & block_id : _mi_block_ids)
188  oss << " " << block_id;
189  oss << "\n";
190  mooseError(oss.str());
191  }
192 
193  // Check boundary compatibility
194  if (!discrete->hasBoundary(_mi_boundary_ids))
195  {
196  std::ostringstream oss;
197  oss << "The Material object '" << discrete->name()
198  << "' is defined on boundaries that are incompatible with the retrieving object '"
199  << _mi_name << "':\n";
200  oss << " " << discrete->name();
201  for (const auto & bnd_id : discrete->boundaryIDs())
202  oss << " " << bnd_id;
203  oss << "\n";
204  oss << " " << _mi_name;
205  for (const auto & bnd_id : _mi_boundary_ids)
206  oss << " " << bnd_id;
207  oss << "\n";
208  mooseError(oss.str());
209  }
210 
211  return *discrete;
212 }
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.
void mooseError(Args &&...args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:182
Moose::MaterialDataType _material_data_type
The type of data.
std::shared_ptr< Material > getMaterial(std::string name, Moose::MaterialDataType type, THREAD_ID tid=0, bool no_warn=false)
Return a pointer to a Material object.
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.
template<typename T >
const MaterialProperty< T > & MaterialPropertyInterface::getMaterialProperty ( const std::string &  name)
inherited

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
Returns
Reference to the desired material property

Definition at line 287 of file MaterialPropertyInterface.h.

288 {
289  // Check if the supplied parameter is a valid input parameter key
290  std::string prop_name = deducePropertyName(name);
291 
292  // Check if it's just a constant
293  const MaterialProperty<T> * default_property = defaultMaterialProperty<T>(prop_name);
294  if (default_property)
295  return *default_property;
296 
297  return getMaterialPropertyByName<T>(prop_name);
298 }
std::string deducePropertyName(const std::string &name)
Small helper to look up a material property name through the input parameter keys.
Concrete definition of a parameter value for a specified type.
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 120 of file MaterialPropertyInterface.C.

121 {
123 }
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:121
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 114 of file MaterialPropertyInterface.C.

115 {
117 }
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:105
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 126 of file MaterialPropertyInterface.C.

127 {
129 }
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:162
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 132 of file MaterialPropertyInterface.C.

133 {
135 }
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:178
template<typename T >
const MaterialProperty< T > & MaterialPropertyInterface::getMaterialPropertyByName ( const MaterialPropertyName &  name)
inherited

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
Returns
Reference to the material property with the name 'name'

Definition at line 357 of file MaterialPropertyInterface.h.

358 {
360  checkMaterialProperty(name);
361 
362  // mark property as requested
363  markMatPropRequested(name);
364 
365  // Update the boolean flag.
367 
368  _material_property_dependencies.insert(_material_data->getPropertyId(name));
369 
370  return _material_data->getProperty<T>(name);
371 }
std::set< unsigned int > _material_property_dependencies
The set of material properties (as given by their IDs) that this object depends on.
void markMatPropRequested(const std::string &)
A proxy method for _mi_feproblem.markMatPropRequested(name)
std::shared_ptr< MaterialData > _material_data
Pointer to the material data class that stores properties.
void checkMaterialProperty(const std::string &name)
A helper method for checking material properties This method was required to avoid a compiler problem...
bool _get_material_property_called
Initialized to false.
void checkExecutionStage()
Check and throw an error if the execution has progressed past the construction stage.
bool MaterialPropertyInterface::getMaterialPropertyCalled ( ) const
inlineinherited

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

Definition at line 173 of file MaterialPropertyInterface.h.

bool _get_material_property_called
Initialized to false.
template<typename T >
const MaterialProperty< T > & MaterialPropertyInterface::getMaterialPropertyOld ( const std::string &  name)
inherited

Definition at line 302 of file MaterialPropertyInterface.h.

303 {
304  if (!_stateful_allowed)
305  mooseError("Stateful material properties not allowed for this object."
306  " Old property for \"",
307  name,
308  "\" was requested.");
309 
310  // Check if the supplied parameter is a valid input parameter key
311  std::string prop_name = deducePropertyName(name);
312 
313  // Check if it's just a constant
314  const MaterialProperty<T> * default_property = defaultMaterialProperty<T>(prop_name);
315  if (default_property)
316  return *default_property;
317 
318  return getMaterialPropertyOldByName<T>(prop_name);
319 }
void mooseError(Args &&...args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:182
std::string deducePropertyName(const std::string &name)
Small helper to look up a material property name through the input parameter keys.
Concrete definition of a parameter value for a specified type.
bool _stateful_allowed
True by default.
template<typename T >
const MaterialProperty< T > & MaterialPropertyInterface::getMaterialPropertyOldByName ( const MaterialPropertyName &  name)
inherited

Definition at line 375 of file MaterialPropertyInterface.h.

376 {
377  if (!_stateful_allowed)
378  mooseError("Stateful material properties not allowed for this object."
379  " Old property for \"",
380  name,
381  "\" was requested.");
382 
383  // mark property as requested
384  markMatPropRequested(name);
385 
386  _material_property_dependencies.insert(_material_data->getPropertyId(name));
387 
388  return _material_data->getPropertyOld<T>(name);
389 }
void mooseError(Args &&...args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:182
std::set< unsigned int > _material_property_dependencies
The set of material properties (as given by their IDs) that this object depends on.
void markMatPropRequested(const std::string &)
A proxy method for _mi_feproblem.markMatPropRequested(name)
std::shared_ptr< MaterialData > _material_data
Pointer to the material data class that stores properties.
bool _stateful_allowed
True by default.
template<typename T >
const MaterialProperty< T > & MaterialPropertyInterface::getMaterialPropertyOlder ( const std::string &  name)
inherited

Definition at line 323 of file MaterialPropertyInterface.h.

324 {
325  if (!_stateful_allowed)
326  mooseError("Stateful material properties not allowed for this object."
327  " Older property for \"",
328  name,
329  "\" was requested.");
330 
331  // Check if the supplied parameter is a valid input parameter key
332  std::string prop_name = deducePropertyName(name);
333 
334  // Check if it's just a constant
335  const MaterialProperty<T> * default_property = defaultMaterialProperty<T>(prop_name);
336  if (default_property)
337  return *default_property;
338 
339  return getMaterialPropertyOlderByName<T>(prop_name);
340 }
void mooseError(Args &&...args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:182
std::string deducePropertyName(const std::string &name)
Small helper to look up a material property name through the input parameter keys.
Concrete definition of a parameter value for a specified type.
bool _stateful_allowed
True by default.
template<typename T >
const MaterialProperty< T > & MaterialPropertyInterface::getMaterialPropertyOlderByName ( const MaterialPropertyName &  name)
inherited

Definition at line 393 of file MaterialPropertyInterface.h.

394 {
395  if (!_stateful_allowed)
396  mooseError("Stateful material properties not allowed for this object."
397  " Older property for \"",
398  name,
399  "\" was requested.");
400 
401  // mark property as requested
402  markMatPropRequested(name);
403 
404  _material_property_dependencies.insert(_material_data->getPropertyId(name));
405 
406  return _material_data->getPropertyOlder<T>(name);
407 }
void mooseError(Args &&...args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:182
std::set< unsigned int > _material_property_dependencies
The set of material properties (as given by their IDs) that this object depends on.
void markMatPropRequested(const std::string &)
A proxy method for _mi_feproblem.markMatPropRequested(name)
std::shared_ptr< MaterialData > _material_data
Pointer to the material data class that stores properties.
bool _stateful_allowed
True by default.
const std::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 181 of file MaterialPropertyInterface.h.

Referenced by LineMaterialSamplerBase< T >::execute().

182  {
184  }
std::set< unsigned int > _material_property_dependencies
The set of material properties (as given by their IDs) that this object depends on.
template<typename T >
const MaterialProperty< T > & TwoMaterialPropertyInterface::getNeighborMaterialProperty ( const std::string &  name)

Retrieve the property named "name".

Definition at line 60 of file TwoMaterialPropertyInterface.h.

61 {
62  // Check if the supplied parameter is a valid input parameter key
63  std::string prop_name = deducePropertyName(name);
64 
65  // Check if it's just a constant
66  const MaterialProperty<T> * default_property = defaultMaterialProperty<T>(prop_name);
67  if (default_property)
68  return *default_property;
69  else
70  return _neighbor_material_data->getProperty<T>(prop_name);
71 }
std::string deducePropertyName(const std::string &name)
Small helper to look up a material property name through the input parameter keys.
std::shared_ptr< MaterialData > _neighbor_material_data
Concrete definition of a parameter value for a specified type.
template<typename T >
const MaterialProperty< T > & TwoMaterialPropertyInterface::getNeighborMaterialPropertyOld ( const std::string &  name)

Definition at line 75 of file TwoMaterialPropertyInterface.h.

76 {
77  // Check if the supplied parameter is a valid input parameter key
78  std::string prop_name = deducePropertyName(name);
79 
80  // Check if it's just a constant
81  const MaterialProperty<T> * default_property = defaultMaterialProperty<T>(prop_name);
82  if (default_property)
83  return *default_property;
84  else
85  return _neighbor_material_data->getPropertyOld<T>(prop_name);
86 }
std::string deducePropertyName(const std::string &name)
Small helper to look up a material property name through the input parameter keys.
std::shared_ptr< MaterialData > _neighbor_material_data
Concrete definition of a parameter value for a specified type.
template<typename T >
const MaterialProperty< T > & TwoMaterialPropertyInterface::getNeighborMaterialPropertyOlder ( const std::string &  name)

Definition at line 90 of file TwoMaterialPropertyInterface.h.

91 {
92  // Check if the supplied parameter is a valid input parameter key
93  std::string prop_name = deducePropertyName(name);
94 
95  // Check if it's just a constant
96  const MaterialProperty<T> * default_property = defaultMaterialProperty<T>(prop_name);
97  if (default_property)
98  return *default_property;
99  else
100  return _neighbor_material_data->getPropertyOlder<T>(prop_name);
101 }
std::string deducePropertyName(const std::string &name)
Small helper to look up a material property name through the input parameter keys.
std::shared_ptr< MaterialData > _neighbor_material_data
Concrete definition of a parameter value for a specified type.
template<typename T >
const MaterialProperty< T > & MaterialPropertyInterface::getZeroMaterialProperty ( const std::string &  prop_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 444 of file MaterialPropertyInterface.h.

445 {
446  // static zero property storage
447  static MaterialProperty<T> zero;
448 
449  // resize to accomodate maximum number of qpoints
450  // (in multiapp scenarios getMaxQps can return different values in each app; we need the max)
451  unsigned int nqp = _mi_feproblem.getMaxQps();
452  if (nqp > zero.size())
453  zero.resize(nqp);
454 
455  // set values for all qpoints to zero
456  for (unsigned int qp = 0; qp < nqp; ++qp)
457  mooseSetToZero<T>(zero[qp]);
458 
459  return zero;
460 }
FEProblemBase & _mi_feproblem
Reference to the FEProblemBase class.
virtual void resize(int n)
Resizes the property to the size n.
unsigned int getMaxQps() const
Concrete definition of a parameter value for a specified type.
unsigned int size() const
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 428 of file MaterialPropertyInterface.h.

429 {
430  // Check if the supplied parameter is a valid input parameter key
431  std::string prop_name = deducePropertyName(name);
432  return _material_data->haveProperty<T>(prop_name);
433 }
std::string deducePropertyName(const std::string &name)
Small helper to look up a material property name through the input parameter keys.
std::shared_ptr< MaterialData > _material_data
Pointer to the material data class that stores properties.
template<typename T >
bool MaterialPropertyInterface::hasMaterialPropertyByName ( const std::string &  name)
inherited

Definition at line 437 of file MaterialPropertyInterface.h.

438 {
439  return _material_data->haveProperty<T>(name);
440 }
std::shared_ptr< MaterialData > _material_data
Pointer to the material data class that stores properties.
void MaterialPropertyInterface::markMatPropRequested ( const std::string &  name)
protectedinherited

A proxy method for _mi_feproblem.markMatPropRequested(name)

Definition at line 152 of file MaterialPropertyInterface.C.

Referenced by MaterialPropertyInterface::getMaterialPropertyByName(), MaterialPropertyInterface::getMaterialPropertyOldByName(), and MaterialPropertyInterface::getMaterialPropertyOlderByName().

153 {
155 }
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:275
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 158 of file MaterialPropertyInterface.C.

Referenced by DiracKernel::DiracKernel().

159 {
160  _stateful_allowed = stateful_allowed;
161 }
bool _stateful_allowed
True by default.

Member Data Documentation

std::vector<std::unique_ptr<MaterialProperty<Real> > > MaterialPropertyInterface::_default_real_properties
protectedinherited

Storage vector for MaterialProperty<Real> default objects.

Definition at line 243 of file MaterialPropertyInterface.h.

Referenced by MaterialPropertyInterface::defaultMaterialProperty().

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 240 of file MaterialPropertyInterface.h.

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

std::shared_ptr<MaterialData> MaterialPropertyInterface::_material_data
protectedinherited
Moose::MaterialDataType MaterialPropertyInterface::_material_data_type
protectedinherited
std::set<unsigned int> MaterialPropertyInterface::_material_property_dependencies
protectedinherited
FEProblemBase& MaterialPropertyInterface::_mi_feproblem
protectedinherited
const std::string MaterialPropertyInterface::_mi_name
protectedinherited

The name of the object that this interface belongs to.

Definition at line 191 of file MaterialPropertyInterface.h.

Referenced by MaterialPropertyInterface::checkMaterialProperty(), and MaterialPropertyInterface::getMaterialByName().

const InputParameters& MaterialPropertyInterface::_mi_params
protectedinherited
const THREAD_ID MaterialPropertyInterface::_mi_tid
protectedinherited

Current threaded it.

Definition at line 203 of file MaterialPropertyInterface.h.

Referenced by MaterialPropertyInterface::getMaterialByName().

std::shared_ptr<MaterialData> TwoMaterialPropertyInterface::_neighbor_material_data
protected
bool MaterialPropertyInterface::_stateful_allowed
protectedinherited

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