37 _mesh(_subproblem.
mesh()),
38 _q_point(_assembly.qPointsFace()),
39 _qrule(_assembly.qRuleFace()),
40 _JxW(_assembly.JxWFace()),
41 _coord(_assembly.coordTransformation()),
42 _normals(_assembly.normals()),
43 _current_elem(_assembly.elem()),
44 _current_side(_assembly.side()),
45 _current_side_elem(_assembly.sideElem()),
46 _current_side_volume(_assembly.sideElemVolume()),
47 _current_boundary_id(_assembly.currentBoundaryID())
64 if (consumed_props.empty())
72 if (!interface_materials.hasActiveBoundaryObjects(bnd_id,
_tid))
75 for (
const auto & material : interface_materials.getActiveBoundaryObjects(bnd_id,
_tid))
76 for (
const auto supplied_prop : material->getSuppliedPropIDs())
77 if (consumed_props.count(supplied_prop))
81 "' consumes material property '",
82 registry.getName(supplied_prop),
83 "', which is declared by interface material '",
85 "'. Side user objects do not execute in an interface material context; use a "
86 "class derived from InterfaceUserObject or InterfacePostprocessor for "
87 "interface quantities. Please refer to "
88 "https://github.com/idaholab/moose/pull/33168 for further context.");
101 mooseAssert(
_current_elem->active(),
"The current element should be active");
106 std::vector<const Elem *> candidate_neighbors = {side_neighbor};
109 if (!side_neighbor->active())
110 side_neighbor->active_family_tree_by_neighbor(candidate_neighbors,
_current_elem);
112 for (
const Elem * neighbor : candidate_neighbors)
132 mooseAssert(fi,
"Face info must not be null.");
139 mooseAssert(fi,
"Face info must not be null.");
A class for requiring an object to be boundary restricted.
static InputParameters validParams()
virtual const std::set< BoundaryID > & boundaryIDs() const
Return the boundary IDs for this object.
const MaterialWarehouse & getInterfaceMaterialsWarehouse() const
const MaterialPropertyRegistry & getMaterialPropertyRegistry() const
bool sideUOInterfaceMatPropIntegrityCheck() const
An interface for accessing Materials.
virtual const std::unordered_set< unsigned int > & getMatPropDependencies() const
Retrieve the set of material properties that this object depends on.
static InputParameters validParams()
const std::string & name() const
Get the name of the class.
void paramError(const std::string ¶m, Args... args) const
Emits an error prefixed with the file and line number of the given param (from the input file) along ...
const std::vector< const FaceInfo * > & faceInfo() const
Accessor for local FaceInfo objects.
virtual void initialSetup()
Gets called at the beginning of the simulation before this object is asked to do its job.
const unsigned int & _current_side
current side of the current element
static InputParameters validParams()
void checkNoInterfaceMaterialPropertyDependencies() const
virtual void initialSetup() override
Gets called at the beginning of the simulation before this object is asked to do its job.
const Elem *const & _current_elem
SideUserObject(const InputParameters ¶meters)
void getFaceInfos()
Computes the local FaceInfo(s) to use in functor arguments and interpolations.
std::vector< const FaceInfo * > _face_infos
Holds the FaceInfos to loop on to consider all active neighbors of an element on a given side.
Interface for objects that needs transient capabilities.
FEProblemBase & _fe_problem
Reference to the FEProblemBase for this user object.
const THREAD_ID _tid
Thread ID of this postprocessor.
Base class for user-specific data.
static InputParameters validParams()
MOOSE now contains C++17 code, so give a reasonable error message stating what the user can do to add...