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

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

#include <AlgorithmArray.hpp>

Detailed Description

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

A Spectre algorithm object that wraps a charm++ array 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#chare-arrays When comparing against the implementations in the charm++ documentation, this object is the one directly associated to declarations in the corresponding AlgorithmArray.ci file.

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

AlgorithmArray -> DistributedObject -> CBase_AlgorithmArray
A Spectre algorithm object that wraps a charm++ array chare.
Definition: AlgorithmArray.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: