inciter::Partitioner class

Partitioner Charm++ chare nodegroup class

Instantiations of Partitioner comprise a processor aware Charm++ chare node group. When instantiated, a new object is created on each compute node and not more (as opposed to individual chares or chare array object elements). See also the Charm++ interface file partitioner.ci.

Constructors, destructors, conversion operators

Partitioner(const tk::PartitionerCallback& cbp, const tk::RefinerCallback& cbr, const tk::SorterCallback& cbs, const CProxy_Transporter& host, const CProxy_Refiner& refiner, const CProxy_Sorter& sorter, const tk::CProxy_MeshWriter& meshwriter, const Scheme& scheme, const std::map<int, std::vector<std::size_t>>& bface, const std::map<int, std::vector<std::size_t>>& faces, const std::map<int, std::vector<std::size_t>>& bnode)
Constructor.

Public functions

void partition(int nchare)
Partition the computational mesh into a number of chares.
void addMesh(int fromnode, const std::unordered_map<int, std::tuple<std::vector<std::size_t>, tk::UnsMesh::CoordMap, std::unordered_map<int, std::vector<std::size_t>>, std::unordered_map<int, std::vector<std::size_t>>>>& chmesh)
Receive mesh associated to chares we own after refinement.
void recvMesh()
Acknowledge received mesh after initial mesh refinement.
void refine()
Optionally start refining the mesh.

Function documentation

inciter::Partitioner::Partitioner(const tk::PartitionerCallback& cbp, const tk::RefinerCallback& cbr, const tk::SorterCallback& cbs, const CProxy_Transporter& host, const CProxy_Refiner& refiner, const CProxy_Sorter& sorter, const tk::CProxy_MeshWriter& meshwriter, const Scheme& scheme, const std::map<int, std::vector<std::size_t>>& bface, const std::map<int, std::vector<std::size_t>>& faces, const std::map<int, std::vector<std::size_t>>& bnode)

Constructor.

Parameters
cbp in Charm++ callbacks for Partitioner
cbr in Charm++ callbacks for Refiner
cbs in Charm++ callbacks for Sorter
host in Host Charm++ proxy we are being called from
refiner in Mesh refiner proxy
sorter in Mesh reordering (sorter) proxy
meshwriter in Mesh writer proxy
scheme in Discretization scheme
bface in File-internal elem ids of side sets (whole mesh)
faces in Elem-relative face ids of side sets (whole mesh)
bnode in Node lists of side sets (whole mesh)

void inciter::Partitioner::partition(int nchare)

Partition the computational mesh into a number of chares.

Parameters
nchare in Number of parts the mesh will be partitioned into

This function calls the mesh partitioner to partition the mesh. The number of partitions equals the number nchare argument which must be no lower than the number of compute nodes.

void inciter::Partitioner::addMesh(int fromnode, const std::unordered_map<int, std::tuple<std::vector<std::size_t>, tk::UnsMesh::CoordMap, std::unordered_map<int, std::vector<std::size_t>>, std::unordered_map<int, std::vector<std::size_t>>>>& chmesh)

Receive mesh associated to chares we own after refinement.

Parameters
fromnode in Compute node call coming from
chmesh in Map associating mesh connectivities to global node ids and node coordinates for mesh chunks we are assigned by the partitioner