53 const auto tid = puid.
id;
55 for (
const auto & belem : range)
57 const Elem * elem = belem->_elem;
58 const auto boundary_id = belem->_bnd_id;
59 const auto side = belem->_side;
67 const auto & bnd_name =
mesh.getBoundaryName(boundary_id);
70 std::vector<SideUserObject *> objs;
76 for (
const auto & uo : objs)
77 if (uo->checkVariableBoundaryIntegrity())
79 auto leftover_vars = uo->checkAllVariables(*elem);
80 if (!leftover_vars.empty())
82 const auto neighbor = elem->neighbor_ptr(side);
83 const bool upwind_elem = !neighbor || elem->id() < neighbor->id();
84 const Elem * lower_d_elem =
85 upwind_elem ?
mesh.getLowerDElem(elem, side)
86 :
mesh.getLowerDElem(neighbor, neighbor->which_neighbor_am_i(elem));
88 leftover_vars = uo->checkVariables(*lower_d_elem, leftover_vars);
93 auto check = [elem, boundary_id, &bnd_name, tid, &
mesh, side](
const auto & warehouse)
95 if (!warehouse.hasBoundaryObjects(boundary_id, tid))
98 const auto & bnd_objects = warehouse.getBoundaryObjects(boundary_id, tid);
99 for (
const auto & bnd_object : bnd_objects)
102 if (!bnd_object->requiresGeometricSearch() && bnd_object->checkVariableBoundaryIntegrity())
105 auto leftover_vars = bnd_object->checkAllVariables(*elem);
106 if (!leftover_vars.empty())
108 const auto neighbor = elem->neighbor_ptr(side);
109 const bool upwind_elem = !neighbor || elem->id() < neighbor->id();
110 const Elem * lower_d_elem =
111 upwind_elem ?
mesh.getLowerDElem(elem, side)
112 :
mesh.getLowerDElem(neighbor, neighbor->which_neighbor_am_i(elem));
114 leftover_vars = bnd_object->checkVariables(*lower_d_elem, leftover_vars);
136 const std::set<MooseVariableFieldBase *> & variables,
137 const BoundaryName & boundary_name)
139 if (variables.empty())
142 std::vector<std::string> names;
143 names.reserve(variables.size());
144 for (
const auto *
const var : variables)
145 names.push_back(var->name());
151 "' depends on variable(s) '",
152 MooseUtils::join(names,
","),
153 "'. However, that variable does not appear to be defined on (all of) boundary '",
void boundaryIntegrityCheckError(const MooseObject &object, const std::set< MooseVariableFieldBase * > &variables, const BoundaryName &boundary_name)
Compose boundary restricted error message for the provided object, variables, and boundary_name if th...
void boundaryIntegrityCheckError(const MooseObject &object, const std::set< MooseVariableFieldBase * > &variables, const BoundaryName &boundary_name)
Compose boundary restricted error message for the provided object, variables, and boundary_name if th...