A base class that loops over elements and do things. More...
#include <ElementLoopUserObject.h>
Public Member Functions | |
ElementLoopUserObject (const InputParameters ¶meters) | |
ElementLoopUserObject (ElementLoopUserObject &x, Threads::split split) | |
virtual | ~ElementLoopUserObject () |
virtual void | initialize () |
virtual void | execute () |
virtual void | finalize () |
virtual void | pre () |
virtual void | preElement (const Elem *elem) |
virtual void | onElement (const Elem *elem) |
virtual void | onBoundary (const Elem *elem, unsigned int side, BoundaryID bnd_id) |
virtual void | onInternalSide (const Elem *elem, unsigned int side) |
virtual void | onInterface (const Elem *elem, unsigned int side, BoundaryID bnd_id) |
virtual void | post () |
virtual void | subdomainChanged () |
virtual bool | keepGoing () |
virtual void | meshChanged () |
void | join (const ElementLoopUserObject &) |
Protected Member Functions | |
virtual void | caughtMooseException (MooseException &e) |
virtual void | computeElement () |
virtual void | computeBoundary () |
virtual void | computeInternalSide () |
virtual void | computeInterface () |
Protected Attributes | |
MooseMesh & | _mesh |
const Elem * | _current_elem |
const Real & | _current_elem_volume |
unsigned int | _current_side |
const Elem * | _current_neighbor |
const MooseArray< Point > & | _q_point |
const QBase *const & | _qrule |
const MooseArray< Real > & | _JxW |
const MooseArray< Real > & | _coord |
bool | _have_interface_elems |
true if we have cached interface elements, false if they need to be cached. We want to (re)cache only when mesh changed More... | |
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. More... | |
SubdomainID | _subdomain |
The subdomain for the current element. More... | |
SubdomainID | _old_subdomain |
The subdomain for the last element. More... | |
A base class that loops over elements and do things.
Notes:
this class is designed to enable more than one element-loop in the execution of user objects. It is necessary because in many numerical schemes, the data required in one element-loop should be pre-computed from another element-loop.
For example, in the workflow of a cell-centered finite volume method, two element-loops are required in a specific sequence in user objects:
First, an element-loop is requried to calculate the in-cell gradients of variables using a piecewise linear reconstruction scheme.
Second, another element-loop is required to calculate the limited in-cell gradients of variables based on the reconstructed gradients from the element and its face-neighboring elements.
Definition at line 58 of file ElementLoopUserObject.h.
ElementLoopUserObject::ElementLoopUserObject | ( | const InputParameters & | parameters | ) |
Definition at line 21 of file ElementLoopUserObject.C.
ElementLoopUserObject::ElementLoopUserObject | ( | ElementLoopUserObject & | x, |
Threads::split | split | ||
) |
Definition at line 41 of file ElementLoopUserObject.C.
|
virtual |
Definition at line 61 of file ElementLoopUserObject.C.
|
protectedvirtual |
Definition at line 260 of file ElementLoopUserObject.C.
Referenced by execute().
|
protectedvirtual |
|
protectedvirtual |
Reimplemented in SlopeReconstructionBase, and SlopeLimitingBase.
Definition at line 233 of file ElementLoopUserObject.C.
Referenced by onElement().
|
protectedvirtual |
|
protectedvirtual |
|
virtual |
Definition at line 75 of file ElementLoopUserObject.C.
|
virtual |
Reimplemented in SlopeReconstructionBase, and SlopeLimitingBase.
Definition at line 137 of file ElementLoopUserObject.C.
Referenced by SlopeLimitingBase::finalize(), and SlopeReconstructionBase::finalize().
|
virtual |
Reimplemented in SlopeReconstructionBase, and SlopeLimitingBase.
Definition at line 64 of file ElementLoopUserObject.C.
Referenced by SlopeLimitingBase::initialize(), and SlopeReconstructionBase::initialize().
void ElementLoopUserObject::join | ( | const ElementLoopUserObject & | ) |
Definition at line 228 of file ElementLoopUserObject.C.
|
inlinevirtual |
|
virtual |
Reimplemented in SlopeReconstructionBase.
Definition at line 253 of file ElementLoopUserObject.C.
Referenced by SlopeReconstructionBase::meshChanged().
|
virtual |
Definition at line 160 of file ElementLoopUserObject.C.
Referenced by execute().
|
virtual |
Definition at line 153 of file ElementLoopUserObject.C.
Referenced by execute().
|
virtual |
|
virtual |
|
virtual |
|
virtual |
|
virtual |
Definition at line 69 of file ElementLoopUserObject.C.
Referenced by execute().
|
virtual |
|
protected |
Definition at line 99 of file ElementLoopUserObject.h.
|
protected |
Definition at line 91 of file ElementLoopUserObject.h.
Referenced by SlopeLimitingBase::computeElement(), AEFVSlopeLimitingOneD::limitElementSlope(), onElement(), onInterface(), and onInternalSide().
|
protected |
Definition at line 92 of file ElementLoopUserObject.h.
|
protected |
Definition at line 94 of file ElementLoopUserObject.h.
Referenced by onInterface(), and onInternalSide().
|
protected |
Definition at line 93 of file ElementLoopUserObject.h.
Referenced by onBoundary().
|
protected |
true if we have cached interface elements, false if they need to be cached. We want to (re)cache only when mesh changed
Definition at line 102 of file ElementLoopUserObject.h.
Referenced by finalize(), meshChanged(), onInterface(), and onInternalSide().
|
protected |
List of element IDs that are on the processor boundary and need to be send to other processors.
Definition at line 104 of file ElementLoopUserObject.h.
Referenced by meshChanged(), onInterface(), onInternalSide(), SlopeLimitingBase::serialize(), and SlopeReconstructionBase::serialize().
|
protected |
Definition at line 98 of file ElementLoopUserObject.h.
|
protected |
Definition at line 89 of file ElementLoopUserObject.h.
Referenced by execute(), and SlopeReconstructionMultiD::SlopeReconstructionMultiD().
|
protected |
The subdomain for the last element.
Definition at line 110 of file ElementLoopUserObject.h.
Referenced by execute().
|
protected |
Definition at line 96 of file ElementLoopUserObject.h.
|
protected |
Definition at line 97 of file ElementLoopUserObject.h.
|
protected |
The subdomain for the current element.
Definition at line 107 of file ElementLoopUserObject.h.
Referenced by execute().