List of all members
AlgorithmNodegroup< ParallelComponent, SpectreArrayIndex > Class Template Reference

A Spectre algorithm object that wraps a charm++ nodegroup chare. More...

#include <AlgorithmNodegroup.hpp>

Detailed Description

template<typename ParallelComponent, typename SpectreArrayIndex>
class AlgorithmNodegroup< ParallelComponent, SpectreArrayIndex >

A Spectre algorithm object that wraps a charm++ nodegroup chare.


This object is the definition of the distributed charm++ object associated with the SpECTRE component wrappers (see Parallelization, Charm++, and Core Concepts). See also the charm++ documentation: When comparing against the implementations in the charm++ documentation, this object is the one directly associated to declarations in the corresponding file.

Unlike the techniques described in the charm++ documentation, however, we define AlgorithmNodegroup as a strong typedef so that the core functionality can be shared between chare types by introducing an additional inheritance layer. The documentation suggests the inheritance path A -> CBase_A, where we have the inheritance path:

AlgorithmSingleton -> AlgorithmImpl -> CBase_AlgorithmSingleton

That allows us to introduce the template class Parallel::AlgorithmImpl that handles all generalizable control-flow.

The documentation for this class was generated from the following file:
A Spectre algorithm object that wraps a charm++ singleton chare.
Definition: AlgorithmSingleton.hpp:43