|
core 0.5.0
Shared MPI block decomposition + asynchronous ghost-layer exchange (header-only C++20)
|
Classes | |
| struct | GpFace |
Enumerations | |
| enum | GpState : int8_t { GP_COUPLED = 0 , GP_QUAD = 1 , GP_LIN = 2 , GP_BC_ONLY = 3 , GP_EXPLICIT = 4 } |
Functions | |
| PECLET_CORE_GP_HD float | gpPolyD (float xi) |
| PECLET_CORE_GP_HD float | gpPolyNc (float xi) |
| PECLET_CORE_GP_HD float | gpPolyNnb (float xi) |
| PECLET_CORE_GP_HD float | gpNan () |
| PECLET_CORE_GP_HD bool | gpFinite (float x) |
| PECLET_CORE_GP_HD void | gpOrderWeights (int8_t st, float th, int order, float &wbc, float &w1, float &w2, float &D) |
| Closure weights for one ghost face at the requested extrapolation order. | |
| PECLET_CORE_GP_HD GpFace | gpClassifyFace (float sg, float sn, float sf, float sb, float snb, float sc1, float sc2, bool otherSolid, float exStd=gpNan(), float exSliver=gpNan()) |
| Classify + fill ONE face from its 1-D sdf samples along the face's axis. | |
| template<class OV , class CellId > | |
| PECLET_CORE_GP_HD bool | gpFillRow (const OV &ov, int slot, CellId cellId, const float F[3][4], const float Cq[3][5], int matrixOrder, int rhsOrder, const float *exStd=nullptr, const float *exSliver=nullptr) |
| Fill one overlay row from the per-axis sample sets. | |
Variables | |
| constexpr float | GP_THETA_MIN = 1e-4f |
| enum peclet::core::scheme::GpState : int8_t |
| Enumerator | |
|---|---|
| GP_COUPLED | |
| GP_QUAD | |
| GP_LIN | |
| GP_BC_ONLY | |
| GP_EXPLICIT | |
Definition at line 46 of file ghost_closure.hpp.
| PECLET_CORE_GP_HD float peclet::core::scheme::gpPolyD | ( | float | xi | ) |
Definition at line 56 of file ghost_closure.hpp.
Referenced by gpClassifyFace(), and gpOrderWeights().
| PECLET_CORE_GP_HD float peclet::core::scheme::gpPolyNc | ( | float | xi | ) |
Definition at line 59 of file ghost_closure.hpp.
Referenced by gpClassifyFace(), and gpOrderWeights().
| PECLET_CORE_GP_HD float peclet::core::scheme::gpPolyNnb | ( | float | xi | ) |
Definition at line 62 of file ghost_closure.hpp.
Referenced by gpClassifyFace(), and gpOrderWeights().
| PECLET_CORE_GP_HD float peclet::core::scheme::gpNan | ( | ) |
Definition at line 69 of file ghost_closure.hpp.
Referenced by gpFillRow().
| PECLET_CORE_GP_HD bool peclet::core::scheme::gpFinite | ( | float | x | ) |
Definition at line 76 of file ghost_closure.hpp.
Referenced by gpClassifyFace().
| PECLET_CORE_GP_HD void peclet::core::scheme::gpOrderWeights | ( | int8_t | st, |
| float | th, | ||
| int | order, | ||
| float & | wbc, | ||
| float & | w1, | ||
| float & | w2, | ||
| float & | D | ||
| ) |
Closure weights for one ghost face at the requested extrapolation order.
order=2 uses the wall-anchored quadratic (only available for GP_QUAD faces); order=1 (or a GP_LIN face) uses the wall-anchored linear closure th*u_g = u_bc + (th-1)*u_near. D is the conditioning factor feeding the row rescale.
Definition at line 84 of file ghost_closure.hpp.
References GP_BC_ONLY, GP_QUAD, gpPolyD(), gpPolyNc(), and gpPolyNnb().
Referenced by gpFillRow().
| PECLET_CORE_GP_HD GpFace peclet::core::scheme::gpClassifyFace | ( | float | sg, |
| float | sn, | ||
| float | sf, | ||
| float | sb, | ||
| float | snb, | ||
| float | sc1, | ||
| float | sc2, | ||
| bool | otherSolid, | ||
| float | exStd = gpNan(), |
||
| float | exSliver = gpNan() |
||
| ) |
Classify + fill ONE face from its 1-D sdf samples along the face's axis.
sg = ghost (this) face sdf sn = near face sdf (the cell's other face on this axis) sf = far face sdf sb = beyond-ghost face sdf (one further into the solid) snb = neighbor center sdf sc1/sc2 = centers needed by the near/far face gradients otherSolid = the cell's other face on this axis is solid (sandwich detection) exStd/exSliver = optional EXACT wall-crossing thetas (analytic-SDF capability) for the standard-ghost / extended-sliver branches; NaN falls back to the linear-interp theta. Pure function of the samples — shared verbatim between flow's uniform grid, the host parity tests, and the AMR octree band.
Definition at line 118 of file ghost_closure.hpp.
References GP_BC_ONLY, GP_COUPLED, GP_EXPLICIT, GP_LIN, GP_QUAD, GP_THETA_MIN, gpFinite(), gpPolyD(), gpPolyNc(), gpPolyNnb(), and peclet::core::scheme::GpFace::state.
Referenced by gpFillRow().
| PECLET_CORE_GP_HD bool peclet::core::scheme::gpFillRow | ( | const OV & | ov, |
| int | slot, | ||
| CellId | cellId, | ||
| const float | F[3][4], | ||
| const float | Cq[3][5], | ||
| int | matrixOrder, | ||
| int | rhsOrder, | ||
| const float * | exStd = nullptr, |
||
| const float * | exSliver = nullptr |
||
| ) |
Fill one overlay row from the per-axis sample sets.
F[a][m+1] = face sdf at face index i+m (m = -1..2, face i+m sits between centers i+m-1 and i+m); Cq[a][q+2] = center sdf at i+q (q = -2..2; Cq[a][2] = own center, fluid by construction). Face slot k = 2*axis + (0 = plus side, 1 = minus side). Fills BOTH weight sets: w_* at rhsOrder (divergence RHS + diagnostic) and wm_* at matrixOrder (implicit phi couplings); the row rescale comes from the matrix weights (it conditions the matrix row). The overlay type OV must expose cell/rescale/coupled/state/th/w_bc/w_n1/w_n2/wm_n1/wm_n2 (indexable SoA — flow's GpOverlayT or the AMR overlay), with cellId whatever cell handle the consumer uses. Returns true if any face is non-COUPLED (i.e. the row belongs in the overlay).
Definition at line 175 of file ghost_closure.hpp.
References GP_COUPLED, GP_EXPLICIT, GP_LIN, GP_QUAD, gpClassifyFace(), gpNan(), gpOrderWeights(), peclet::core::scheme::GpFace::state, and peclet::core::scheme::GpFace::th.
Referenced by peclet::core::amr::buildGhostOverlay().
|
constexpr |
Definition at line 44 of file ghost_closure.hpp.
Referenced by gpClassifyFace().