A virtual base for user-defined integrators. More...
Public Member Functions | |
Integrator (int o) | |
Construct an Integrator given an order of accuracy. | |
void | process (Mesh *m) |
Run the Integrator over the local Mesh. | |
void | process (MeshElement *e) |
Run the Integrator over a Mesh Element. | |
virtual void | inElement (MeshElement *) |
User callback: element entry. | |
virtual void | outElement () |
User callback: element exit. | |
virtual void | atPoint (Vector3 const &p, double w, double dV)=0 |
User callback: accumulation. | |
virtual void | parallelReduce () |
User callback: parallel reduction. |
A virtual base for user-defined integrators.
Users of APF can define an Integrator object to handle integrating expressions over elements and over meshes. Users specify the accuracy of the integration and provide accumulation callbacks which APF uses at each integration point. The APF-provided process functions will perform the integration over an element or mesh using the callbacks. In parallel, users must provide a reduction callback to turn locally accumulated values into a globally integrated value.
virtual void apf::Integrator::atPoint | ( | Vector3 const & | p, | |
double | w, | |||
double | dV | |||
) | [pure virtual] |
User callback: accumulation.
APF will call this function at each integration point. Users should evaluate their expression and accumulate the value.
p | The local coordinates of the point. | |
w | The integration weight of the point. | |
dV | The differential volume at that point. |
virtual void apf::Integrator::inElement | ( | MeshElement * | ) | [virtual] |
User callback: element entry.
APF will call this function every time the Integrator begins operating over a new element. Users can then construct Field Elements, for example.
virtual void apf::Integrator::outElement | ( | ) | [virtual] |
User callback: element exit.
APF will call this function once an Integrator is done operating over an element. This can be used to destroy Field Elements, for example.
virtual void apf::Integrator::parallelReduce | ( | ) | [virtual] |
User callback: parallel reduction.
This function should use communication to reduce process-local integrations into a global mesh integration, if that is the user's goal.