class
TransporterTransporter drives the time integration of transport equations.
Contents
Constructors, destructors, conversion operators
 Transporter(CkMigrateMessage* m) explicit
 Migrate constructor: returning from a checkpoint.
Public functions
 auto Transporter() > Transporter_SDAG_CODE explicit
 Constructor.
 void load(std::size_t nelem)
 Reduction target: the mesh has been read from file on all PEs.
 void partition()
 Reduction target: all Solver (PEs) have computed the number of chares they will recieve contributions from during linear solution.
 void distributed()
 Reduction target: all PEs have distrbuted their mesh after partitioning.
 void queriedRef()
 Reduction target: all Refiner chares have queried their boundary edges.
 void respondedRef()
 Reduction target: all Refiner mesh refiner chares have setup their boundary edges.
 void refinserted(int error)
 Reduction target: all PEs have created the mesh refiners.
 void discinserted()
 Reduction target: all Discretization chares have been inserted.
 void disccreated(std::size_t npoin)
 Reduction target: all Discretization constructors have been called.
 void workinserted()
 Reduction target: all worker (derived discretization) chares have been inserted.
 void compatibility(int modified)
 Reduction target: all mesh refiner chares have received a round of edges, and ran their compatibility algorithm.
 void matched(std::size_t nextra, std::size_t nref, std::size_t nderef, std::size_t initial)
 Reduction target: all mesh refiner chares have matched/corrected the tagging of chareboundary edges, all chares are ready to perform refinement.

void bndint(tk::
real sx, tk::real sy, tk::real sz, tk::real cb)  Compute surface integral across the whole problem and perform leaktest.
 void refined(std::size_t nelem, std::size_t npoin)
 Reduction target: all PEs have optionally refined their mesh.
 void resized()
 Reduction target: all worker chares have resized their own data after mesh refinement.
 void startEsup()
 Reduction target: all worker chares have generated their own esup.
 void queried()
 Reduction target: all Sorter chares have queried their boundary nodes.
 void responded()
 Reduction target: all Sorter chares have responded with their boundary nodes.
 void pepartitioned()
 Nonreduction target for receiving progress report on partitioning mesh.
 void pedistributed()
 Nonreduction target for receiving progress report on distributing mesh.
 void chbnd()
 Nonreduction target for receiving progress report on finding bnd nodes.
 void chcomm()
 Nonreduction target for receiving progress report on node ID comm map.
 void chmask()
 Nonreduction target for receiving progress report on node ID mask.
 void chreordered()
 Nonreduction target for receiving progress report on reordering mesh.
 void chcreated()
 Nonreduction target for receiving progress report on creating workers.
 void chbndface()
 Nonreduction target for receiving progress report on finding bnd faces.
 void chcomfac()
 Nonreduction target for receiving progress report on face communication.
 void chghost()
 Nonreduction target for receiving progress report on sending ghost data.
 void chadj()
 Nonreduction target for receiving progress report on face adjacency.
 void comfinal(int initial)
 Reduction target indicating that the communication maps have been setup.

void totalvol(tk::
real v, tk::real initial)  Reduction target summing total mesh volume.

void minstat(tk::
real d0, tk::real d1, tk::real d2)  Reduction target yielding the minimum mesh statistics across all workers.

void maxstat(tk::
real d0, tk::real d1, tk::real d2)  Reduction target yielding the maximum mesh statistics across all workers.

void sumstat(tk::
real d0, tk::real d1, tk::real d2, tk::real d3, tk::real d4, tk::real d5)  Reduction target yielding the sum of mesh statistics across all workers.
 void pdfstat(CkReductionMsg* msg)
 Reduction target yielding PDF of mesh statistics across all workers.

void boxvol(tk::
real v)  Reduction target computing total volume of IC box.
 void diagnostics(CkReductionMsg* msg)
 Reduction target optionally collecting diagnostics, e.g., residuals, from all worker chares.
 void resume()
 Resume execution from checkpoint/restart files.
 void checkpoint(int finished)
 Save checkpoint/restart files.
 void finish()
 Normal finish of time stepping.
Charm++ pack/unpack serializer member functions
 void pup(PUP::er& p) override
 Pack/Unpack serialize member function.
 void operator(PUP::er& p, Transporter& t)
 Pack/Unpack serialize operator.
Function documentation
void inciter::Transporter:: load(std::size_t nelem)
Reduction target: the mesh has been read from file on all PEs.
Parameters  

nelem in  Total number of mesh elements (summed across all PEs) 
void inciter::Transporter:: refinserted(int error)
Reduction target: all PEs have created the mesh refiners.
Parameters  

error in  aggregated across all PEs with operator max 
void inciter::Transporter:: disccreated(std::size_t npoin)
Reduction target: all Discretization constructors have been called.
Parameters  

npoin in  Total number of mesh points (summed across all PEs). Note that as opposed to npoin in refined(), this npoin is not multicounted, and thus should be correct in parallel. 
void inciter::Transporter:: compatibility(int modified)
Reduction target: all mesh refiner chares have received a round of edges, and ran their compatibility algorithm.
Parameters  

modified in  Sum acorss all workers, if nonzero, mesh is modified 
This is called iteratively, until convergence by Refiner. At this point all Refiner chares have received a round of edge data (tags whether an edge needs to be refined, etc.), and applied the compatibility algorithm independent of other Refiner chares. We keep going until the mesh is no longer modified by the compatibility algorithm (based on a new round of edge data communication started in Refiner::
void inciter::Transporter:: matched(std::size_t nextra,
std::size_t nref,
std::size_t nderef,
std::size_t initial)
Reduction target: all mesh refiner chares have matched/corrected the tagging of chareboundary edges, all chares are ready to perform refinement.
Parameters  

nextra in  Sum (across all chares) of the number of edges on each chare that need correction along chare boundaries 
nref in  Sum of number of refined tetrahedra across all chares. 
nderef in  Sum of number of derefined tetrahedra across all chares. 
initial in  Sum of contributions from all chares. If larger than zero, we are during time stepping and if zero we are during setup. 
void inciter::Transporter:: bndint(tk::real sx,
tk::real sy,
tk::real sz,
tk::real cb)
Compute surface integral across the whole problem and perform leaktest.
Parameters  

sx in  X component of vector summed 
sy in  Y component of vector summed 
sz in  Z component of vector summed 
cb in  Invoke callback if positive 
This function aggregates partial surface integrals across the boundary faces of the whole problem. After this global sum a nonzero vector result indicates a leak, e.g., a hole in the boundary, which indicates an error in the boundary face data structures used to compute the partial surface integrals.
void inciter::Transporter:: refined(std::size_t nelem,
std::size_t npoin)
Reduction target: all PEs have optionally refined their mesh.
Parameters  

nelem in  Total number of elements in mesh across the whole problem 
npoin in  Total number of mesh points (summed across all PEs). Note that in parallel this is larger than the total number of points in the mesh, because the boundary nodes are multicounted. 
void inciter::Transporter:: resized()
Reduction target: all worker chares have resized their own data after mesh refinement.
void inciter::Transporter:: startEsup()
Reduction target: all worker chares have generated their own esup.
void inciter::Transporter:: comfinal(int initial)
Reduction target indicating that the communication maps have been setup.
Parameters  

initial in  Sum of contributions from all chares. If larger than zero, we are during time stepping and if zero we are during setup. 
void inciter::Transporter:: minstat(tk::real d0,
tk::real d1,
tk::real d2)
Reduction target yielding the minimum mesh statistics across all workers.
Parameters  

d0 in  Minimum mesh statistics collected over all chares 
d1 in  Minimum mesh statistics collected over all chares 
d2 in  Minimum mesh statistics collected over all chares 
void inciter::Transporter:: maxstat(tk::real d0,
tk::real d1,
tk::real d2)
Reduction target yielding the maximum mesh statistics across all workers.
Parameters  

d0 in  Maximum mesh statistics collected over all chares 
d1 in  Maximum mesh statistics collected over all chares 
d2 in  Maximum mesh statistics collected over all chares 
void inciter::Transporter:: sumstat(tk::real d0,
tk::real d1,
tk::real d2,
tk::real d3,
tk::real d4,
tk::real d5)
Reduction target yielding the sum of mesh statistics across all workers.
Parameters  

d0 in  Sum mesh statistics collected over all chares 
d1 in  Sum mesh statistics collected over all chares 
d2 in  Sum mesh statistics collected over all chares 
d3 in  Sum mesh statistics collected over all chares 
d4 in  Sum mesh statistics collected over all chares 
d5 in  Sum mesh statistics collected over all chares 
void inciter::Transporter:: pdfstat(CkReductionMsg* msg)
Reduction target yielding PDF of mesh statistics across all workers.
Parameters  

msg in  Serialized PDF 
void inciter::Transporter:: diagnostics(CkReductionMsg* msg)
Reduction target optionally collecting diagnostics, e.g., residuals, from all worker chares.
Parameters  

msg in  Serialized diagnostics vector aggregated across all PEs 
void inciter::Transporter:: resume()
Resume execution from checkpoint/restart files.
This is invoked by Charm++ after the checkpoint is done, as well as when the restart (returning from a checkpoint) is complete
void inciter::Transporter:: checkpoint(int finished)
Save checkpoint/restart files.
Parameters  

finished in  True if finished with time stepping 
void inciter::Transporter:: pup(PUP::er& p) override
Pack/Unpack serialize member function.
Parameters  

p in/out  Charm++'s PUP::er serializer object reference 
void inciter::Transporter:: operator(PUP::er& p,
Transporter& t)
Pack/Unpack serialize operator.
Parameters  

p in/out  Charm++'s PUP::er serializer object reference 
t in/out  Transporter object reference 