class
DGDG Charm++ chare array used to advance PDEs in time with DG+RK.
Contents
Public static functions
- static void registerReducers()
- Configure Charm++ reduction types for concatenating BC nodelists.
Constructors, destructors, conversion operators
- DG(CkMigrateMessage* msg) explicit
- Migrate constructor.
Public functions
- auto DG(const CProxy_Discretization& disc, const std::map<int, std::vector<std::size_t>>& bface, const std::map<int, std::vector<std::size_t>>&, const std::vector<std::size_t>& triinpoel) -> DG_SDAG_CODE explicit
- Constructor.
- void ResumeFromSync() override
- Return from migration.
- void resizeComm()
- Start sizing communication buffers and setting up ghost data.
-
void comfac(int fromch,
const tk::
UnsMesh:: FaceSet& infaces) - Receive unique set of faces we potentially share with/from another chare.
- void comGhost(int fromch, const GhostData& ghost)
- Receive ghost data on chare boundaries from fellow chare.
- void reqGhost()
- Receive requests for ghost data.
- void sendGhost()
- Send all of our ghost data to fellow chares.
- void nodeNeighSetup()
- Setup node-neighborhood (esup)
-
void comEsup(int fromch,
const std::unordered_map<std::size_t, std::vector<std::size_t>>& bndEsup,
const std::unordered_map<std::size_t, std::vector<tk::
real>>& nodeBndCells) - Receive element-surr-points data on chare boundaries from fellow chare.
- void setup()
- Setup: query boundary conditions, output mesh, etc.
-
void box(tk::
real v) - Receive total box IC volume and set conditions in box.
- void evalLB(int nrestart)
- void start()
- Start time stepping.
- void next()
- Continue to next time step.
-
void comlim(int fromch,
const std::vector<std::size_t>& tetid,
const std::vector<std::vector<tk::
real>>& u, const std::vector<std::vector<tk:: real>>& prim, const std::vector<std::size_t>& ndof) - Receive chare-boundary limiter function data from neighboring chares.
-
void comreco(int fromch,
const std::vector<std::size_t>& tetid,
const std::vector<std::vector<tk::
real>>& u, const std::vector<std::vector<tk:: real>>& prim, const std::vector<std::vector<tk:: real>>& volfm, const std::vector<std::size_t>& ndof) - Receive chare-boundary reconstructed data from neighboring chares.
-
void comsol(int fromch,
std::size_t fromstage,
const std::vector<std::size_t>& tetid,
const std::vector<std::vector<tk::
real>>& u, const std::vector<std::vector<tk:: real>>& prim, const std::vector<std::size_t>& ndof) - Receive chare-boundary ghost data from neighboring chares.
-
void comnodeout(const std::vector<std::size_t>& gid,
const std::vector<std::size_t>& nesup,
const std::vector<std::vector<tk::
real>>& L) - Receive nodal solution (ofor field output) contributions from neighboring chares.
-
void refine(const std::vector<tk::
real>& l2res) - Optionally refine/derefine mesh.
-
void resizePostAMR(const std::vector<std::size_t>&,
const tk::
UnsMesh:: Chunk& chunk, const tk:: UnsMesh:: Coords& coord, const std::unordered_map<std::size_t, tk:: UnsMesh:: Edge>&, const std::unordered_map<std::size_t, std::size_t>& addedTets, const tk:: NodeCommMap& nodeCommMap, const std::map<int, std::vector<std::size_t>>& bface, const std::map<int, std::vector<std::size_t>>&, const std::vector<std::size_t>& triinpoel) - Receive new mesh from Refiner.
-
void extractFieldOutput(const std::vector<std::size_t>&,
const tk::
UnsMesh:: Chunk& chunk, const tk:: UnsMesh:: Coords& coord, const std::unordered_map<std::size_t, tk:: UnsMesh:: Edge>&, const std::unordered_map<std::size_t, std::size_t>& addedTets, const tk:: NodeCommMap& nodeCommMap, const std::map<int, std::vector<std::size_t>>& bface, const std::map<int, std::vector<std::size_t>>&, const std::vector<std::size_t>& triinpoel, CkCallback c) - Extract field output going to file.
- auto solution() const -> const tk::Fields&
- void lhs()
- Compute left hand side.
- void resized()
- Unused in DG.
-
void solve(tk::
real newdt) - Compute right hand side and solve system.
- void step()
- Evaluate whether to continue with next time step.
Charm++ pack/unpack serializer member functions
Function documentation
static void inciter:: DG:: registerReducers()
Configure Charm++ reduction types for concatenating BC nodelists.
Since this is a [initnode] routine, the runtime system executes the routine exactly once on every logical node early on in the Charm++ init sequence. Must be static as it is called without an object. See also: Section "Initializations at Program Startup" at in the Charm++ manual http:/
DG_SDAG_CODE inciter:: DG:: DG(const CProxy_Discretization& disc,
const std::map<int, std::vector<std::size_t>>& bface,
const std::map<int, std::vector<std::size_t>>&,
const std::vector<std::size_t>& triinpoel) explicit
Constructor.
Parameters | |
---|---|
disc in | Discretization proxy |
bface in | Boundary-faces mapped to side set ids |
triinpoel in | Boundary-face connectivity |
void inciter:: DG:: ResumeFromSync() override
Return from migration.
This is called when load balancing (LB) completes. The presence of this function does not affect whether or not we block on LB.
void inciter:: DG:: comfac(int fromch,
const tk:: UnsMesh:: FaceSet& infaces)
Receive unique set of faces we potentially share with/from another chare.
Parameters | |
---|---|
fromch in | Sender chare id |
infaces in | Unique set of faces we potentially share with fromch |
void inciter:: DG:: nodeNeighSetup()
Setup node-neighborhood (esup)
At this point the face-ghost communication map has been established on this chare. This function begins generating the node-ghost comm map.
void inciter:: DG:: comEsup(int fromch,
const std::unordered_map<std::size_t, std::vector<std::size_t>>& bndEsup,
const std::unordered_map<std::size_t, std::vector<tk:: real>>& nodeBndCells)
Receive element-surr-points data on chare boundaries from fellow chare.
Parameters | |
---|---|
fromch in | Sender chare id |
bndEsup in | Elements-surrounding-points data-structure from fromch |
nodeBndCells in | Map containing element geometries associated with remote element IDs in the esup |
Receive elements-surrounding-points data-structure for points on.
void inciter:: DG:: evalLB(int nrestart)
Parameters | |
---|---|
nrestart in | Number of times restarted |
void inciter:: DG:: comlim(int fromch,
const std::vector<std::size_t>& tetid,
const std::vector<std::vector<tk:: real>>& u,
const std::vector<std::vector<tk:: real>>& prim,
const std::vector<std::size_t>& ndof)
Receive chare-boundary limiter function data from neighboring chares.
Parameters | |
---|---|
fromch in | Sender chare id |
tetid in | Ghost tet ids we receive solution data for |
u in | Limited high-order solution |
prim in | Limited high-order primitive quantities |
ndof in | Number of degrees of freedom for chare-boundary elements |
This function receives contributions to the limited solution from fellow chares.
void inciter:: DG:: comreco(int fromch,
const std::vector<std::size_t>& tetid,
const std::vector<std::vector<tk:: real>>& u,
const std::vector<std::vector<tk:: real>>& prim,
const std::vector<std::vector<tk:: real>>& volfm,
const std::vector<std::size_t>& ndof)
Receive chare-boundary reconstructed data from neighboring chares.
Parameters | |
---|---|
fromch in | Sender chare id |
tetid in | Ghost tet ids we receive solution data for |
u in | Reconstructed high-order solution |
prim in | Limited high-order primitive quantities |
volfm | |
ndof in | Number of degrees of freedom for chare-boundary elements |
This function receives contributions to the reconstructed solution from fellow chares.
void inciter:: DG:: comsol(int fromch,
std::size_t fromstage,
const std::vector<std::size_t>& tetid,
const std::vector<std::vector<tk:: real>>& u,
const std::vector<std::vector<tk:: real>>& prim,
const std::vector<std::size_t>& ndof)
Receive chare-boundary ghost data from neighboring chares.
Parameters | |
---|---|
fromch in | Sender chare id |
fromstage in | Sender chare time step stage |
tetid in | Ghost tet ids we receive solution data for |
u in | Solution ghost data |
prim in | Primitive variables in ghost cells |
ndof in | Number of degrees of freedom for chare-boundary elements |
This function receives contributions to the unlimited solution from fellow chares.
void inciter:: DG:: comnodeout(const std::vector<std::size_t>& gid,
const std::vector<std::size_t>& nesup,
const std::vector<std::vector<tk:: real>>& L)
Receive nodal solution (ofor field output) contributions from neighboring chares.
Parameters | |
---|---|
gid in | Global mesh node IDs at which we receive contributions |
nesup in | Number of elements surrounding points |
L in | Partial contributions of node fields to chare-boundary nodes |
void inciter:: DG:: resizePostAMR(const std::vector<std::size_t>&,
const tk:: UnsMesh:: Chunk& chunk,
const tk:: UnsMesh:: Coords& coord,
const std::unordered_map<std::size_t, tk:: UnsMesh:: Edge>&,
const std::unordered_map<std::size_t, std::size_t>& addedTets,
const tk:: NodeCommMap& nodeCommMap,
const std::map<int, std::vector<std::size_t>>& bface,
const std::map<int, std::vector<std::size_t>>&,
const std::vector<std::size_t>& triinpoel)
Receive new mesh from Refiner.
Parameters | |
---|---|
chunk in | New mesh chunk (connectivity and global<->local id maps) |
coord in | New mesh node coordinates |
addedTets in | Newly added mesh cells and their parents (local ids) |
nodeCommMap in | New node communication map |
bface in | Boundary-faces mapped to side set ids |
triinpoel in | Boundary-face connectivity |
void inciter:: DG:: extractFieldOutput(const std::vector<std::size_t>&,
const tk:: UnsMesh:: Chunk& chunk,
const tk:: UnsMesh:: Coords& coord,
const std::unordered_map<std::size_t, tk:: UnsMesh:: Edge>&,
const std::unordered_map<std::size_t, std::size_t>& addedTets,
const tk:: NodeCommMap& nodeCommMap,
const std::map<int, std::vector<std::size_t>>& bface,
const std::map<int, std::vector<std::size_t>>&,
const std::vector<std::size_t>& triinpoel,
CkCallback c)
Extract field output going to file.
Parameters | |
---|---|
chunk in | Field-output mesh chunk (connectivity and global<->local id maps) |
coord in | Field-output mesh node coordinates |
addedTets in | Field-output mesh cells and their parents (local ids) |
nodeCommMap in | Field-output mesh node communication map |
bface in | Field-output meshndary-faces mapped to side set ids |
triinpoel in | Field-output mesh boundary-face connectivity |
c in | Function to continue with after the write |
const tk::Fields& inciter:: DG:: solution() const
Returns | Const-ref to current solution |
---|
Const-ref access to current solution
void inciter:: DG:: pup(PUP::er& p) override
Pack/Unpack serialize member function.
Parameters | |
---|---|
p in/out | Charm++'s PUP::er serializer object reference |