SpECTRE  v2024.04.12
AlgorithmGroup< ParallelComponent, SpectreArrayIndex > Class Template Reference

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

#include <AlgorithmGroup.hpp>

Detailed Description

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

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

Details

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: https://charm.readthedocs.io/en/latest/charm++/manual.html#group-objects When comparing against the implementations in the charm++ documentation, this object is the one directly associated to declarations in the corresponding AlgorithmGroup.ci file.

Unlike the techniques described in the charm++ documentation, however, we define AlgorithmGroup 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:

AlgorithmGroup -> DistributedObject -> CBase_AlgorithmGroup
A Spectre algorithm object that wraps a charm++ group chare.
Definition: AlgorithmGroup.hpp:47

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


The documentation for this class was generated from the following file: