|
core 1.5.0
Shared MPI block decomposition, asynchronous ghost-layer exchange, SDF geometry, load balancing (header-only C++20)
|
core — the shared cut-cell IBM boundary-distance closure polynomials (flow <-> amr). More...
Go to the source code of this file.
Namespaces | |
| namespace | peclet |
| namespace | peclet::core |
| namespace | peclet::core::scheme |
Macros | |
| #define | PECLET_CORE_CC_HD KOKKOS_INLINE_FUNCTION |
core — the shared cut-cell IBM boundary-distance closure polynomials (flow <-> amr).
QUALITY_PLAN §3.G.2 ("What IS shared"): the one-sided Dirichlet closure that a cut cell's Shortley-Weller ghost value satisfies,
poly_D(th) * u_ghost = 2*u_bc + poly_Nc(th)*u_near + poly_N_nb(th)*u_far th = sdf_near / (sdf_near - sdf_ghost), clamped to (0, 1]
(plus its sandwiched-axis and cell-average siblings) was written independently twice: in flow/src/cut_cell_ibm.hpp (float, KOKKOS_INLINE_FUNCTION, the momentum IBM's Robust-Scaled overlay) and in amr/include/peclet/amr/cut_cell.hpp's cc:: namespace (double, MORTON_HD, the octree's Dirichlet operator). Both are pure functions of local crossing fractions with no data layout in them, so this ONE templated copy replaces both: flow instantiates it at Real = float (or double under -DPECLET_FLOW_OPERATOR_DOUBLE, G.6), amr at Real = double. Verified identical between the two pre-lift copies (same formulas, same literal constants, same operation order) before this header existed; a unit test (tests/test_cut_cell_closure.cpp) pins every polynomial against the literal expressions at a few theta values.
amr's cc:: namespace used only the point-value (SCHEME 0) subset — poly_D, poly_N_nb, poly_Nc, poly_Nbc, poly_D_sandwich, poly_N_c_sandwich, poly_Nbc_pp_sw, poly_Nbc_mp_sw — plus its own poly_abs (a host/device std::fabs substitute, not part of the closure family, so it is NOT lifted here; amr keeps it local). This header also carries flow's cell-average (SCHEME 1) siblings (poly_D_avg, poly_Nnb_avg, poly_Nc_avg, poly_Nbc_avg, poly_D_sandwich_avg, poly_N_c_sandwich_avg, poly_Nbc_pp_sw_avg, poly_Nbc_mp_sw_avg) and the Navier-slip generalization (poly_D_slip, poly_N_nb_slip, poly_Nc_slip, WO-V6b) that amr does not use but flow does – one file, every scheme.
Host/device: PECLET_CORE_CC_HD is KOKKOS_INLINE_FUNCTION when Kokkos_Core.hpp has been included BEFORE this header, plain inline otherwise (host-only oracle builds) – the same convention scheme/ghost_closure.hpp uses.
Definition in file cut_cell_closure.hpp.
| #define PECLET_CORE_CC_HD KOKKOS_INLINE_FUNCTION |
Definition at line 37 of file cut_cell_closure.hpp.