inciter::ALE class

ALE Charm++ chare array used to perform arbitrary ALE mesh movement.

Constructors, destructors, conversion operators

ALE(CkMigrateMessage*) explicit
Migrate constructor.

Public functions

auto ALE(const tk::CProxy_ConjugateGradients& conjugategradientsproxy, const std::array<std::vector<tk::real>, 3>& coord, const std::vector<std::size_t>& inpoel, const std::vector<std::size_t>& gid, const std::unordered_map<std::size_t, std::size_t>& lid, const tk::NodeCommMap& nodecommmap) -> ALE_SDAG_CODE explicit
Constructor.
void solve(CkCallback c)
Solve linear system to smooth ALE mesh velocity.
auto converged() const -> bool
Query the solution of the Conjugrate Gradients linear solver.
void start(const tk::UnsMesh::Coords vel, const std::vector<tk::real>& soundspeed, CkCallback done, const std::array<std::vector<tk::real>, 3>& coord, const tk::UnsMesh::Coords coordn, const std::vector<tk::real>& vol0, const std::vector<tk::real>& vol, const std::unordered_map<int, std::unordered_map<std::size_t, std::array<tk::real, 4>>>& bnorm, std::size_t initial, std::size_t it, tk::real t, tk::real adt)
Start computing new mesh velocity for ALE mesh motion.
auto meshvel() const -> const tk::Fields&
Query the mesh velocity.
void meshvelBnd(const std::map<int, std::vector<std::size_t>>& bface, const std::map<int, std::vector<std::size_t>>& bnode, const std::vector<std::size_t>& triinpoel)
Query mesh velocity boundary conditions node lists and node list at which ALE moves boundaries.
void comvort(const std::vector<std::size_t>& gid, const std::vector<std::array<tk::real, 3>>& v)
Receive contributions to vorticity on chare-boundaries.
void comdiv(const std::vector<std::size_t>& gid, const std::vector<tk::real>& v)
Receive contributions to velocity divergence on chare-boundaries.
void compot(const std::vector<std::size_t>& gid, const std::vector<std::array<tk::real, 3>>& v)
Receive contributions to scalar potential gradient on chare-boundaries.
void comfor(const std::vector<std::size_t>& gid, const std::vector<std::array<tk::real, 3>>& w)
Receive contributions to ALE mesh force on chare-boundaries.
void meshvelbc(tk::real maxv = 0.0)
Apply mesh velocity smoother boundary conditions for ALE mesh motion.
void applied(CkDataMsg* msg = nullptr)
Solve mesh velocity linear solve for ALE mesh motion.
void solved(CkDataMsg* msg = nullptr)
Mesh velocity smoother linear solver converged.
void helmholtz(CkDataMsg* msg = nullptr)
Compute the gradient of the scalar potential for ALE.

Pack/unpack (Charm++ serialization) routines

void pup(PUP::er& p) override
Pack/Unpack serialize member function.
void operator|(PUP::er& p, ALE& a)
Pack/Unpack serialize operator|.

Function documentation

ALE_SDAG_CODE inciter::ALE::ALE(const tk::CProxy_ConjugateGradients& conjugategradientsproxy, const std::array<std::vector<tk::real>, 3>& coord, const std::vector<std::size_t>& inpoel, const std::vector<std::size_t>& gid, const std::unordered_map<std::size_t, std::size_t>& lid, const tk::NodeCommMap& nodecommmap) explicit

Constructor.

Parameters
conjugategradientsproxy in Distributed Conjugrate Gradients linear solver proxy (bound to ALE proxy)
coord in Mesh node coordinates
inpoel in Mesh element connectivity
gid in Local->global node id map
lid in Global->locbal node id map
nodecommmap

bool inciter::ALE::converged() const

Query the solution of the Conjugrate Gradients linear solver.

Returns Solution to the Conjugate Gradients linear solve

void inciter::ALE::start(const tk::UnsMesh::Coords vel, const std::vector<tk::real>& soundspeed, CkCallback done, const std::array<std::vector<tk::real>, 3>& coord, const tk::UnsMesh::Coords coordn, const std::vector<tk::real>& vol0, const std::vector<tk::real>& vol, const std::unordered_map<int, std::unordered_map<std::size_t, std::array<tk::real, 4>>>& bnorm, std::size_t initial, std::size_t it, tk::real t, tk::real adt)

Start computing new mesh velocity for ALE mesh motion.

Parameters
vel in Fluid velocity at mesh nodes
soundspeed in Speed of sound at mesh nodes
done in Function to continue with when mesh velocity has been computed
coord in Mesh node coordinates
coordn in Mesh node coordinates at the previous time step
vol0 in Nodal mesh volumes at t=t0
vol in Nodal mesh volumes
bnorm in Face normals in boundary points associated to side sets
initial in Nonzero during the first time step stage, zero otherwise
it in Iteration count
in Physics time
adt in alpha*dt of the RK time step

void inciter::ALE::meshvelBnd(const std::map<int, std::vector<std::size_t>>& bface, const std::map<int, std::vector<std::size_t>>& bnode, const std::vector<std::size_t>& triinpoel)

Query mesh velocity boundary conditions node lists and node list at which ALE moves boundaries.

Parameters
bface in Boundary-faces mapped to side sets used in the input file
bnode in Boundary-node lists mapped to side sets used in input file
triinpoel in Boundary-face connectivity where BCs set

void inciter::ALE::comvort(const std::vector<std::size_t>& gid, const std::vector<std::array<tk::real, 3>>& v)

Receive contributions to vorticity on chare-boundaries.

Parameters
gid in Global mesh node IDs at which we receive contributions
in Partial contributions to chare-boundary nodes

void inciter::ALE::comdiv(const std::vector<std::size_t>& gid, const std::vector<tk::real>& v)

Receive contributions to velocity divergence on chare-boundaries.

Parameters
gid in Global mesh node IDs at which we receive RHS contributions
in Partial contributions to chare-boundary nodes

void inciter::ALE::compot(const std::vector<std::size_t>& gid, const std::vector<std::array<tk::real, 3>>& v)

Receive contributions to scalar potential gradient on chare-boundaries.

Parameters
gid in Global mesh node IDs at which we receive contributions
in Partial contributions to chare-boundary nodes

void inciter::ALE::comfor(const std::vector<std::size_t>& gid, const std::vector<std::array<tk::real, 3>>& w)

Receive contributions to ALE mesh force on chare-boundaries.

Parameters
gid in Global mesh node IDs at which we receive contributions
in Partial contributions to chare-boundary nodes

void inciter::ALE::meshvelbc(tk::real maxv = 0.0)

Apply mesh velocity smoother boundary conditions for ALE mesh motion.

Parameters
maxv in The largest vorticity magnitude across the whole problem

void inciter::ALE::pup(PUP::er& p) override

Pack/Unpack serialize member function.

Parameters
in/out Charm++'s PUP::er serializer object reference

void inciter::ALE::operator|(PUP::er& p, ALE& a)

Pack/Unpack serialize operator|.

Parameters
in/out Charm++'s PUP::er serializer object reference
in/out ALE object reference