inciter namespace

Inciter declarations and definitions.

Namespaces

namespace ctr
Inciter control facilitating user input to internal data transfer.

Classes

class Discretization
Discretization Charm++ chare array holding common functinoality to all discretization schemes.
class KozCG
KozCG Charm++ chare array used to advance PDEs in time with KozCG.
class LaxCG
LaxCG Charm++ chare array used to advance PDEs in time with LaxCG.
class NodeDiagnostics
NodeDiagnostics class used to compute diagnostics while integrating PDEs.
class Partitioner
class Refiner
Mesh refiner for interfacing the mesh refinement library.
class RieCG
RieCG Charm++ chare array used to advance PDEs in time with RieCG.
class Sorter
Mesh sorter for global distributed mesh node reordering.
class Transporter
Transporter drives the time integration of transport equations.
class ZalCG
ZalCG Charm++ chare array used to advance PDEs in time with ZalCG.
struct MESH_DATA
Zoltan mesh data structure.

Enums

enum ProgMesh { PART =0, DIST, REFINE, BND, COMM, MASK, REORD }
Indices for progress report on mesh preparation.
enum ProgWork { CREATE =0 }
Indices for progress report on workers preparation.

Typedefs

using HistData = tk::TaggedTuple<brigand::list<tag::id, std::string, tag::elem, std::size_t, tag::fn, std::array<tk::real, 4>>>
History point data.

Functions

static auto centroids(const std::vector<std::size_t>& inpoel, const std::array<std::vector<tk::real>, 3>& coord) -> std::array<std::vector<tk::real>, 3>
auto geomPartMesh(const char* alg, const std::vector<std::string>& zoltan_params, const std::vector<std::size_t>& inpoel, const std::array<std::vector<tk::real>, 3>& coord, int npart) -> std::vector<std::size_t>
Partition mesh using Zoltan with a geometric partitioner.
static void createHyperGraph(const std::vector<std::size_t>& gid, const std::unordered_map<std::size_t, std::vector<std::size_t>>& graph, MESH_DATA& hg)
auto graphPartMesh(const std::vector<std::size_t>& ginpoel, const std::unordered_map<std::size_t, std::vector<std::size_t>>& graph, const std::vector<std::string>& zoltan_params, int npart) -> std::unordered_map<std::size_t, std::size_t>
Partition mesh using Zoltan with a graph partitioner.

Variables

ctr::Config g_cfg
static const std::array<tk::real, 3> rkcoef
Runge-Kutta coefficients.
static const std::array<tk::real, 3> rkcoef
Runge-Kutta coefficients.
int g_nrestart
Number of times restarted counter.
static const std::array<std::string, 7> ProgMeshPrefix
Prefixes for progress report on mesh preparation.
static const std::array<std::string, 1> ProgWorkPrefix
Prefixes for progress report on workers preparation.

Function documentation

static std::array<std::vector<tk::real>, 3> inciter::centroids(const std::vector<std::size_t>& inpoel, const std::array<std::vector<tk::real>, 3>& coord)

Parameters
inpoel in Mesh connectivity with local ids
coord in Node coordinates
Returns Centroids for all cells on this compute node

std::vector<std::size_t> inciter::geomPartMesh(const char* alg, const std::vector<std::string>& zoltan_params, const std::vector<std::size_t>& inpoel, const std::array<std::vector<tk::real>, 3>& coord, int npart)

Partition mesh using Zoltan with a geometric partitioner.

Parameters
alg in Partitioning algorithm to use
zoltan_params in Extra parameters pass to zoltan
inpoel in Mesh connectivity with local ids
coord in Node coordinates
npart in Number of desired partitions
Returns Array of chare ownership IDs mapping elements to chares

This function uses Zoltan to partition the mesh in parallel. It assumes that the mesh is distributed among all the MPI ranks.

static void inciter::createHyperGraph(const std::vector<std::size_t>& gid, const std::unordered_map<std::size_t, std::vector<std::size_t>>& graph, MESH_DATA& hg)

Parameters
gid in Global node ids
graph in Aggregated mesh graph point connectivity
hg in/out Hypergraph data structure to fill
Returns Number of hyperedges in graph (number of nodes in our mesh chunk)

std::unordered_map<std::size_t, std::size_t> inciter::graphPartMesh(const std::vector<std::size_t>& ginpoel, const std::unordered_map<std::size_t, std::vector<std::size_t>>& graph, const std::vector<std::string>& zoltan_params, int npart)

Partition mesh using Zoltan with a graph partitioner.

Parameters
ginpoel in Mesh connectivity with global ids
graph in Mesh graph point connectivity
zoltan_params in Extra parameters pass to zoltan
npart in Number of desired partitions
Returns Array of chare ownership IDs mapping points owned to chares

This function uses Zoltan to partition the mesh in parallel. It assumes that the mesh is distributed among all the MPI ranks.

Variable documentation

ctr::Config inciter::g_cfg

Global-scope data. Initialized by the main chare and distibuted to all PEs by the Charm++ runtime system. Though semantically not const, all these global data should be considered read-only. See also http://charm.cs.illinois.edu/manuals/html/charm++/manual.html. The data below is global-scope because they must be available to all PEs which could be on different machines. Configuration data structure, containing all input data

This object is in global scope, it contains all of user input, and thus it is made available to all PEs for convenience reasons. The runtime system distributes it to all PEs during initialization. Once distributed, the object does not change.