25 _mesh(_subproblem.
mesh()),
26 _current_elem(_assembly.elem()),
27 _current_elem_volume(_assembly.elemVolume()),
28 _q_point(_assembly.qPoints()),
29 _qrule(_assembly.qRule()),
30 _JxW(_assembly.JxW()),
31 _coord(_assembly.coordTransformation()),
32 _have_interface_elems(false)
36 for (
unsigned int i = 0; i < coupled_vars.size(); i++)
45 _mesh(
x._subproblem.
mesh()),
46 _current_elem(
x._assembly.elem()),
47 _current_elem_volume(
x._assembly.elemVolume()),
48 _q_point(
x._assembly.qPoints()),
49 _qrule(
x._assembly.qRule()),
50 _JxW(
x._assembly.JxW()),
51 _coord(
x._assembly.coordTransformation()),
52 _have_interface_elems(false)
55 const std::vector<MooseVariableFEBase *> & coupled_vars =
x.getCoupledMooseVars();
56 for (
unsigned int i = 0; i < coupled_vars.size(); i++)
82 _subdomain = std::numeric_limits<SubdomainID>::max();
83 ConstElemRange::const_iterator el = elem_range.begin();
84 for (el = elem_range.begin(); el != elem_range.end(); ++el)
89 const Elem * elem = *el;
90 unsigned int cur_subdomain = elem->subdomain_id();
103 for (
unsigned int side = 0; side < elem->n_sides(); side++)
107 if (boundary_ids.size() > 0)
108 for (std::vector<BoundaryID>::iterator it = boundary_ids.begin();
109 it != boundary_ids.end();
113 if (elem->neighbor_ptr(side) != NULL)
115 if (this->
hasBlocks(elem->neighbor_ptr(side)->subdomain_id()))
117 if (boundary_ids.size() > 0)
118 for (std::vector<BoundaryID>::iterator it = boundary_ids.begin();
119 it != boundary_ids.end();
178 (elem_id < neighbor_id)) ||
206 (elem_id < neighbor_id)) ||
261 std::string what(e.
what());
virtual void computeElement()
ConstElemRange * getActiveLocalElementRange()
virtual const char * what() const
A base class that loops over elements and do things.
static InputParameters validParams()
virtual void setException(const std::string &message)
virtual void onInterface(const Elem *elem, unsigned int side, BoundaryID bnd_id)
virtual void initialize()
virtual void onInternalSide(const Elem *elem, unsigned int side)
virtual void caughtMooseException(MooseException &e)
static InputParameters validParams()
virtual void onBoundary(const Elem *elem, unsigned int side, BoundaryID bnd_id)
ElementLoopUserObject(const InputParameters ¶meters)
StoredRange< MeshBase::const_element_iterator, const Elem *> ConstElemRange
static InputParameters validParams()
virtual void computeBoundary()
SubdomainID _subdomain
The subdomain for the current element.
virtual void computeInternalSide()
virtual void preElement(const Elem *elem)
virtual void computeInterface()
const std::vector< double > x
const Elem * _current_neighbor
boundary_id_type BoundaryID
virtual void meshChanged()
virtual void onElement(const Elem *elem)
SubdomainID _old_subdomain
The subdomain for the last element.
virtual void setCurrentSubdomainID(const Elem *elem, const THREAD_ID tid) override
virtual void subdomainChanged()
const std::vector< MooseVariableFieldBase *> & getCoupledMooseVars() const
unsigned int _current_side
void addMooseVariableDependency(MooseVariableFieldBase *var)
std::set< dof_id_type > _interface_elem_ids
List of element IDs that are on the processor boundary and need to be send to other processors...
FEProblemBase & _fe_problem
bool _have_interface_elems
true if we have cached interface elements, false if they need to be cached. We want to (re)cache only...
std::vector< BoundaryID > getBoundaryIDs(const Elem *const elem, const unsigned short int side) const
const Elem * _current_elem
bool hasBlocks(const SubdomainName &name) const
void join(const ElementLoopUserObject &)
virtual ~ElementLoopUserObject()