SpECTRE  v2024.04.12
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.

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#nodegroup-objects When comparing against the implementations in the charm++ documentation, this object is the one directly associated to declarations in the corresponding AlgorithmNodegroup.ci 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:

AlgorithmNodegroup -> DistributedObject -> CBase_AlgorithmNodegroup
A Spectre algorithm object that wraps a charm++ nodegroup chare.
Definition: AlgorithmNodegroup.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: