# class

NodeDiagnosticsNodeDiagnostics class used to compute diagnostics while integrating PDEs.

### Contents

## Public static functions

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

## Public functions

- auto compute(Discretization& d, 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, NodeDiagnostics& d)
- Pack/Unpack serialize operator|.

## Function documentation

###
static void inciter::NodeDiagnostics:: registerReducers()

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

This routine is supposed to be called from a Charm++ nodeinit routine. Since the runtime system executes nodeinit 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:/

###
bool inciter::NodeDiagnostics:: compute(Discretization& d,
const tk::Fields& u) const

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

Parameters | |
---|---|

d in | Discretization proxy to read from |

u 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 nodes, A, as ||A||_2 = sqrt[ sum_i(A_i)^2 V_i ], where the sum is taken over all mesh nodes and V_i is the nodal 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::

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

Pack/Unpack serialize operator|.

Parameters | |
---|---|

p in/out | Charm++'s PUP::er serializer object reference |

d in/out | Diagnostics object reference |