12#ifndef PECLET_FLOW_GRID_LAYOUT_HPP
13#define PECLET_FLOW_GRID_LAYOUT_HPP
36 static constexpr const char*
name =
"staggered";
39 return c == 0 ?
Off3{-0.5f, 0.0f, 0.0f}
40 : c == 1 ?
Off3{0.0f, -0.5f, 0.0f}
41 :
Off3{0.0f, 0.0f, -0.5f};
44 KOKKOS_INLINE_FUNCTION
static double advect(
int c,
int x,
int y,
int z, A U, A V, A W, A
F) {
48 KOKKOS_INLINE_FUNCTION
static double advect_sou(
int c,
int x,
int y,
int z, A U, A V, A W, A
F) {
52 KOKKOS_INLINE_FUNCTION
static double advect_fou(
int c,
int x,
int y,
int z, A U, A V, A W, A
F) {
56 KOKKOS_INLINE_FUNCTION
static void fou_operator(
int c,
int x,
int y,
int z, A U, A V, A W,
57 double dt,
double& cC,
double& cxm,
double& cxp,
58 double& cym,
double& cyp,
double& czm,
60 sadv::fou_operator(c, x, y, z, U, V, W, dt, cC, cxm, cxp, cym, cyp, czm, czp);
69 static constexpr const char*
name =
"colocated";
73 KOKKOS_INLINE_FUNCTION
static double advect(
int c,
int x,
int y,
int z, A U, A V, A W, A
F) {
77 KOKKOS_INLINE_FUNCTION
static double advect_sou(
int c,
int x,
int y,
int z, A U, A V, A W, A
F) {
81 KOKKOS_INLINE_FUNCTION
static double advect_fou(
int c,
int x,
int y,
int z, A U, A V, A W, A
F) {
85 KOKKOS_INLINE_FUNCTION
static void fou_operator(
int c,
int x,
int y,
int z, A U, A V, A W,
86 double dt,
double& cC,
double& cxm,
double& cxp,
87 double& cym,
double& cyp,
double& czm,
89 cadv::fou_operator(c, x, y, z, U, V, W, dt, cC, cxm, cxp, cym, cyp, czm, czp);
flow — collocated (cell-centered) momentum advection (Koren TVD + FOU).
flow — portable (Kokkos) IBM geometric fields + variable-coefficient RB-GS smoother.
void fou_operator(int comp, int x, int y, int z, A U, A V, A W, double dt, double &cC, double &cxm, double &cxp, double &cym, double &cyp, double &czm, double &czp)
double advect_fou(int comp, int x, int y, int z, A U, A V, A W, A PHI)
double advect_sou(int comp, int x, int y, int z, A U, A V, A W, A PHI)
double advect(int comp, int x, int y, int z, A U, A V, A W, A PHI)
double advect(int comp, int x, int y, int z, A U, A V, A W, A PHI)
double advect_sou(int comp, int x, int y, int z, A U, A V, A W, A PHI)
void fou_operator(int comp, int x, int y, int z, A U, A V, A W, double dt, double &cC, double &cxm, double &cxp, double &cym, double &cyp, double &czm, double &czp)
double advect_fou(int comp, int x, int y, int z, A U, A V, A W, A PHI)
flow — portable (Kokkos) staggered MAC momentum advection (Koren TVD + FOU).
static void fou_operator(int c, int x, int y, int z, A U, A V, A W, double dt, double &cC, double &cxm, double &cxp, double &cym, double &cyp, double &czm, double &czp)
static constexpr const char * name
static constexpr Off3 offset(int)
static constexpr bool collocated
static double advect_sou(int c, int x, int y, int z, A U, A V, A W, A F)
static double advect(int c, int x, int y, int z, A U, A V, A W, A F)
static double advect_fou(int c, int x, int y, int z, A U, A V, A W, A F)
static double advect(int c, int x, int y, int z, A U, A V, A W, A F)
static constexpr const char * name
static double advect_fou(int c, int x, int y, int z, A U, A V, A W, A F)
static constexpr bool collocated
static constexpr Off3 offset(int c)
static double advect_sou(int c, int x, int y, int z, A U, A V, A W, A F)
static void fou_operator(int c, int x, int y, int z, A U, A V, A W, double dt, double &cC, double &cxm, double &cxp, double &cym, double &cyp, double &czm, double &czp)
static constexpr double F