inciter::ElemDiagnostics class

ElemDiagnostics class used to compute diagnostics while integrating PDEs.

Public static functions

static void registerReducers()
Configure Charm++ custom reduction types initiated from this class.

Public functions

auto compute(Discretization& d, const std::size_t nchGhost, const tk::Fields& geoElem, const std::vector<std::size_t>& ndofel, const tk::Fields& u) const -> bool
Compute diagnostics, e.g., residuals, norms of errors, etc.

Charm++ pack/unpack serializer member functions

void pup(PUP::er&)
Pack/Unpack serialize member function.
void operator|(PUP::er& p, ElemDiagnostics& d)
Pack/Unpack serialize operator|.

Function documentation

static void inciter::ElemDiagnostics::registerReducers()

Configure Charm++ custom reduction types initiated from this class.

This routine is supposed to be called from a Charm++ initnode routine. Since the runtime system executes initnode routines exactly once on every logical node early on in the Charm++ init sequence, they must be static as they are called without an object. See also: Section "Initializations at Program Startup" at in the Charm++ manual http://charm.cs.illinois.edu/manuals/html/charm++/manual.html.

bool inciter::ElemDiagnostics::compute(Discretization& d, const std::size_t nchGhost, const tk::Fields& geoElem, const std::vector<std::size_t>& ndofel, const tk::Fields& u) const

Compute diagnostics, e.g., residuals, norms of errors, etc.

Parameters
in Discretization base class to read from
nchGhost in Number of chare boundary ghost elements
geoElem in Element geometry
ndofel in Vector of local number of degrees of freedom
in Current solution vector
Returns True if diagnostics have been computed

Diagnostics are defined as some norm, e.g., L2 norm, of a quantity, computed in mesh elements, A, as ||A||_2 = sqrt[ sum_i(A_i)^2 V_i ], where the sum is taken over all mesh elements and V_i is the cell volume. We send multiple sets of quantities to the host for aggregation across the whole mesh. The final aggregated solution will end up in Transporter::diagnostics(). Aggregation of the partially computed diagnostics is done via potentially different policies for each field.

void inciter::ElemDiagnostics::operator|(PUP::er& p, ElemDiagnostics& d)

Pack/Unpack serialize operator|.

Parameters
in/out Charm++'s PUP::er serializer object reference
in/out Diagnostics object reference