core 0.5.0
Shared MPI block decomposition + asynchronous ghost-layer exchange (header-only C++20)
Loading...
Searching...
No Matches
peclet::core::scheme Namespace Reference

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
 

Enumeration Type Documentation

◆ GpState

Enumerator
GP_COUPLED 
GP_QUAD 
GP_LIN 
GP_BC_ONLY 
GP_EXPLICIT 

Definition at line 46 of file ghost_closure.hpp.

Function Documentation

◆ gpPolyD()

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().

◆ gpPolyNc()

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().

◆ gpPolyNnb()

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().

◆ gpNan()

PECLET_CORE_GP_HD float peclet::core::scheme::gpNan ( )

Definition at line 69 of file ghost_closure.hpp.

Referenced by gpFillRow().

◆ gpFinite()

PECLET_CORE_GP_HD bool peclet::core::scheme::gpFinite ( float  x)

Definition at line 76 of file ghost_closure.hpp.

Referenced by gpClassifyFace().

◆ gpOrderWeights()

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().

◆ gpClassifyFace()

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().

◆ gpFillRow()

template<class OV , class CellId >
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().

Variable Documentation

◆ GP_THETA_MIN

constexpr float peclet::core::scheme::GP_THETA_MIN = 1e-4f
constexpr

Definition at line 44 of file ghost_closure.hpp.

Referenced by gpClassifyFace().