|
core 1.5.0
Shared MPI block decomposition, asynchronous ghost-layer exchange, SDF geometry, load balancing (header-only C++20)
|
Namespaces | |
| namespace | detail |
Classes | |
| struct | CutCellGeometry |
| The geometric record of one cell (§2.1). Double, cell-centred frame, internal lengths. More... | |
| struct | GpFace |
| struct | ProbeResult |
| One facet's probe: the rung, the probe distance s, and n stencil cells (lattice offsets relative to the facet's cell, weights summing to 1). More... | |
Enumerations | |
| enum class | CutCellKind : int { none = 0 , single = 1 , gap = 2 , thinSolid = 3 } |
| Facet classification of a cut cell (§2.2). More... | |
| enum | GpState : int8_t { GP_COUPLED = 0 , GP_QUAD = 1 , GP_LIN = 2 , GP_BC_ONLY = 3 , GP_EXPLICIT = 4 } |
Functions | |
| template<class Real > | |
| PECLET_CORE_CC_HD Real | poly_D (Real xi) |
| template<class Real > | |
| PECLET_CORE_CC_HD Real | poly_N_nb (Real xi) |
| template<class Real > | |
| PECLET_CORE_CC_HD Real | poly_Nc (Real xi) |
| template<class Real > | |
| PECLET_CORE_CC_HD Real | poly_Nbc (Real) |
| template<class Real > | |
| PECLET_CORE_CC_HD Real | poly_D_avg (Real xi) |
| template<class Real > | |
| PECLET_CORE_CC_HD Real | poly_Nnb_avg (Real xi) |
| template<class Real > | |
| PECLET_CORE_CC_HD Real | poly_Nc_avg (Real xi) |
| template<class Real > | |
| PECLET_CORE_CC_HD Real | poly_Nbc_avg (Real) |
| template<class Real > | |
| PECLET_CORE_CC_HD Real | poly_D_slip (Real xi, Real lam) |
| template<class Real > | |
| PECLET_CORE_CC_HD Real | poly_N_nb_slip (Real xi, Real lam) |
| template<class Real > | |
| PECLET_CORE_CC_HD Real | poly_Nc_slip (Real xi, Real lam) |
| template<class Real > | |
| PECLET_CORE_CC_HD Real | poly_D_sandwich (Real xi_m, Real xi_p) |
| template<class Real > | |
| PECLET_CORE_CC_HD Real | poly_N_c_sandwich (Real xi_m, Real xi_p) |
| template<class Real > | |
| PECLET_CORE_CC_HD Real | poly_Nbc_pp_sw (Real xi_m, Real xi_p) |
| template<class Real > | |
| PECLET_CORE_CC_HD Real | poly_Nbc_mp_sw (Real xi_m, Real xi_p) |
| template<class Real > | |
| PECLET_CORE_CC_HD Real | poly_D_sandwich_avg (Real xi_m, Real xi_p) |
| template<class Real > | |
| PECLET_CORE_CC_HD Real | poly_N_c_sandwich_avg (Real xi_m, Real xi_p) |
| template<class Real > | |
| PECLET_CORE_CC_HD Real | poly_Nbc_pp_sw_avg (Real xi_m, Real xi_p) |
| template<class Real > | |
| PECLET_CORE_CC_HD Real | poly_Nbc_mp_sw_avg (Real xi_m, Real xi_p) |
| PECLET_CORE_CC_HD double | triPositiveFraction (double a, double b, double c) |
| Fraction of a triangle on which the linear interpolant of its vertex values (a, b, c) is strictly positive. | |
| PECLET_CORE_CC_HD double | tetPositiveFraction (double v0, double v1, double v2, double v3) |
| Fraction of a tetrahedron on which the linear interpolant of its vertex values is strictly positive (§2.2). | |
| PECLET_CORE_CC_HD double | fanFaceAperture (double v00, double v10, double v11, double v01, double cc) |
| PL aperture of one face from its fan (§2.2): the corner values in loop order c00, c10, c11, c01 over the face's tangent axes (t1 < t2) and the face-centre value cc, ¼ (F(c00,c10,cc) + F(c10,c11,cc) + F(c11,c01,cc) + F(c01,c00,cc)), summed in that order. | |
| PECLET_CORE_CC_HD double | snapAperture (double a) |
| Snap a face aperture at both ends (§2.3): a < 1e-3 → 0, a > 1 − 1e-3 → 1, else a. | |
| PECLET_CORE_CC_HD double | cutCellFaceArea (int a, const double h[3]) |
| Face area of axis a for cell size h: the product of the two other spacings. | |
| PECLET_CORE_CC_HD void | facetAreaVector (const double ap[6], const double h[3], double out[3]) |
| The area vector the apertures imply through the divergence theorem (§2.3): out_a = A_a (ap[2a+1] − ap[2a]), A_a the a-face area. | |
| PECLET_CORE_CC_HD CutCellGeometry | cutCellGeometryFanTet (const double corner[8], const double face[6], double centre, const double h[3]) |
| The cut-cell record of one cell from its 15 PL samples (§2.2): corner[8] (index bx+2by+4bz), face[6] (−x,+x,−y,+y,−z,+z), the centre value, and the cell size h[3] (internal lengths). | |
| 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. | |
| PECLET_CORE_CC_HD double | probeSupport (const double n[3], const double h[3]) |
| S(n) = ½ Σ_a |n_a| h_a: the support half-width of a cell of size h along the unit normal n (§3.1). | |
| PECLET_CORE_CC_HD void | trilinearStencil (const double xi[3], int base[3], double w[8]) |
| Trilinear stencil of the index-space point ξ (cell centres at integer ξ, relative to the facet's cell): base = floor(ξ), and w[k] for the cell base + (k & 1, (k >> 1) & 1, k >> 2), w[k] = Π_a (bit_a ? f_a : 1 − f_a) with f = ξ − base. | |
| template<class Lookup > | |
| PECLET_CORE_CC_HD ProbeResult | buildProbe (const double xw[3], const double n[3], const double h[3], const Lookup &L) |
| Build the probe of one facet by the ladder of §3.3. | |
| PECLET_CORE_CC_HD double | wallConductance (double s, double L, double k) |
| Wall conductance of a Robin facet (§1.4): G = 1 / (s/L + 1/k), the flux out of the fluid per area being G (u_p − g). | |
| PECLET_CORE_CC_HD double | interfaceConductance (double sf, double Lf, double Rc, double ss, double Ls) |
| Conjugate interface conductance (§1.4): the series resistance of the fluid probe leg, the contact resistance and the solid probe leg, G_c = 1 / (s_f/Λ_f + R_c + s_s/Λ_s), so that the flux from solid to fluid is G_c (u_ps − u_pf) in the ψ form. | |
Variables | |
| constexpr double | kApertureSnap = 1e-3 |
| Aperture snap threshold at BOTH ends (§2.3): a < 1e-3 → 0, a > 1 − 1e-3 → 1. | |
| constexpr double | kPieceDropRel = 1e-14 |
| A facet piece with area < kPieceDropRel · min_a A_a is dropped (§2.2). | |
| constexpr double | kSingleFacetRho = 0.5 |
| ρ = |areaPL| / areaSum at or above which the cell carries ONE facet (§2.2). | |
| constexpr float | GP_THETA_MIN = 1e-4f |
| constexpr int | kProbeR0 = 0 |
Ladder rungs, in ProbeResult::rung (flow stores them as uint8). | |
| constexpr int | kProbeR1a = 1 |
| constexpr int | kProbeR1b = 2 |
| constexpr int | kProbeR2 = 3 |
| constexpr double | kProbeSigma = 1.1 |
| Probe distance factors on S(n) (§3.1, §3.3): R0 = 1.1, R1a = 1.5, R2 = 0.5. | |
| constexpr double | kProbeSigmaLong = 1.5 |
| constexpr double | kProbeSigmaLast = 0.5 |
| constexpr double | kProbeWeightEps = 1e-12 |
| V1 ignores stencil cells whose weight is at most this. | |
| constexpr double | kProbeClearance = 0.5 |
| V2: φ_phase(p) ≥ kProbeClearance · s. | |
| constexpr int | kProbeReach = 2 |
| V3: every stencil cell within ±kProbeReach cells on each axis (the G = 2 halo). | |
| constexpr double | kProbeGapMin = 0.2 |
| R1b is attempted only when the estimated gap w exceeds kProbeGapMin · S(n) ... | |
| constexpr double | kProbeMinKeptWeight = 0.5 |
| ... and accepted only when the kept weights sum to at least kProbeMinKeptWeight. | |
|
strong |
Facet classification of a cut cell (§2.2).
Definition at line 53 of file cut_cell_geometry.hpp.
| Enumerator | |
|---|---|
| GP_COUPLED | |
| GP_QUAD | |
| GP_LIN | |
| GP_BC_ONLY | |
| GP_EXPLICIT | |
Definition at line 46 of file ghost_closure.hpp.
| PECLET_CORE_CC_HD Real peclet::core::scheme::poly_D | ( | Real | xi | ) |
Definition at line 46 of file cut_cell_closure.hpp.
Referenced by poly_D_slip().
| PECLET_CORE_CC_HD Real peclet::core::scheme::poly_N_nb | ( | Real | xi | ) |
Definition at line 50 of file cut_cell_closure.hpp.
Referenced by poly_N_nb_slip().
| PECLET_CORE_CC_HD Real peclet::core::scheme::poly_Nc | ( | Real | xi | ) |
Definition at line 54 of file cut_cell_closure.hpp.
Referenced by poly_Nc_slip().
| PECLET_CORE_CC_HD Real peclet::core::scheme::poly_Nbc | ( | Real | ) |
Definition at line 58 of file cut_cell_closure.hpp.
| PECLET_CORE_CC_HD Real peclet::core::scheme::poly_D_avg | ( | Real | xi | ) |
Definition at line 64 of file cut_cell_closure.hpp.
| PECLET_CORE_CC_HD Real peclet::core::scheme::poly_Nnb_avg | ( | Real | xi | ) |
Definition at line 68 of file cut_cell_closure.hpp.
| PECLET_CORE_CC_HD Real peclet::core::scheme::poly_Nc_avg | ( | Real | xi | ) |
Definition at line 72 of file cut_cell_closure.hpp.
| PECLET_CORE_CC_HD Real peclet::core::scheme::poly_Nbc_avg | ( | Real | ) |
Definition at line 76 of file cut_cell_closure.hpp.
| PECLET_CORE_CC_HD Real peclet::core::scheme::poly_D_slip | ( | Real | xi, |
| Real | lam | ||
| ) |
Definition at line 85 of file cut_cell_closure.hpp.
References poly_D().
| PECLET_CORE_CC_HD Real peclet::core::scheme::poly_N_nb_slip | ( | Real | xi, |
| Real | lam | ||
| ) |
Definition at line 89 of file cut_cell_closure.hpp.
References poly_N_nb().
| PECLET_CORE_CC_HD Real peclet::core::scheme::poly_Nc_slip | ( | Real | xi, |
| Real | lam | ||
| ) |
Definition at line 93 of file cut_cell_closure.hpp.
References poly_Nc().
| PECLET_CORE_CC_HD Real peclet::core::scheme::poly_D_sandwich | ( | Real | xi_m, |
| Real | xi_p | ||
| ) |
Definition at line 99 of file cut_cell_closure.hpp.
| PECLET_CORE_CC_HD Real peclet::core::scheme::poly_N_c_sandwich | ( | Real | xi_m, |
| Real | xi_p | ||
| ) |
Definition at line 103 of file cut_cell_closure.hpp.
| PECLET_CORE_CC_HD Real peclet::core::scheme::poly_Nbc_pp_sw | ( | Real | xi_m, |
| Real | xi_p | ||
| ) |
Definition at line 107 of file cut_cell_closure.hpp.
| PECLET_CORE_CC_HD Real peclet::core::scheme::poly_Nbc_mp_sw | ( | Real | xi_m, |
| Real | xi_p | ||
| ) |
Definition at line 111 of file cut_cell_closure.hpp.
| PECLET_CORE_CC_HD Real peclet::core::scheme::poly_D_sandwich_avg | ( | Real | xi_m, |
| Real | xi_p | ||
| ) |
Definition at line 115 of file cut_cell_closure.hpp.
| PECLET_CORE_CC_HD Real peclet::core::scheme::poly_N_c_sandwich_avg | ( | Real | xi_m, |
| Real | xi_p | ||
| ) |
Definition at line 119 of file cut_cell_closure.hpp.
| PECLET_CORE_CC_HD Real peclet::core::scheme::poly_Nbc_pp_sw_avg | ( | Real | xi_m, |
| Real | xi_p | ||
| ) |
Definition at line 123 of file cut_cell_closure.hpp.
| PECLET_CORE_CC_HD Real peclet::core::scheme::poly_Nbc_mp_sw_avg | ( | Real | xi_m, |
| Real | xi_p | ||
| ) |
Definition at line 127 of file cut_cell_closure.hpp.
| PECLET_CORE_CC_HD double peclet::core::scheme::triPositiveFraction | ( | double | a, |
| double | b, | ||
| double | c | ||
| ) |
Fraction of a triangle on which the linear interpolant of its vertex values (a, b, c) is strictly positive.
Robust case formulas (§2.2), no subtraction of close numbers; the vertex rotation mirrors flow's ccTriFrac.
Definition at line 145 of file cut_cell_geometry.hpp.
References peclet::core::scheme::detail::triOnePositive().
Referenced by fanFaceAperture().
| PECLET_CORE_CC_HD double peclet::core::scheme::tetPositiveFraction | ( | double | v0, |
| double | v1, | ||
| double | v2, | ||
| double | v3 | ||
| ) |
Fraction of a tetrahedron on which the linear interpolant of its vertex values is strictly positive (§2.2).
Vertices with value exactly 0 count as non-positive (solid).
Definition at line 170 of file cut_cell_geometry.hpp.
References peclet::core::scheme::detail::tetOnePositive(), and peclet::core::scheme::detail::tetTwoPositive().
Referenced by cutCellGeometryFanTet().
| PECLET_CORE_CC_HD double peclet::core::scheme::fanFaceAperture | ( | double | v00, |
| double | v10, | ||
| double | v11, | ||
| double | v01, | ||
| double | cc | ||
| ) |
PL aperture of one face from its fan (§2.2): the corner values in loop order c00, c10, c11, c01 over the face's tangent axes (t1 < t2) and the face-centre value cc, ¼ (F(c00,c10,cc) + F(c10,c11,cc) + F(c11,c01,cc) + F(c01,c00,cc)), summed in that order.
The face kernel of a container and cutCellGeometryFanTet both call this, so a face's aperture is the same bits from either cell and from the face kernel.
Definition at line 196 of file cut_cell_geometry.hpp.
References triPositiveFraction().
Referenced by cutCellGeometryFanTet().
| PECLET_CORE_CC_HD double peclet::core::scheme::snapAperture | ( | double | a | ) |
Snap a face aperture at both ends (§2.3): a < 1e-3 → 0, a > 1 − 1e-3 → 1, else a.
Definition at line 203 of file cut_cell_geometry.hpp.
References kApertureSnap.
| PECLET_CORE_CC_HD double peclet::core::scheme::cutCellFaceArea | ( | int | a, |
| const double | h[3] | ||
| ) |
Face area of axis a for cell size h: the product of the two other spacings.
Definition at line 212 of file cut_cell_geometry.hpp.
Referenced by cutCellGeometryFanTet(), and facetAreaVector().
| PECLET_CORE_CC_HD void peclet::core::scheme::facetAreaVector | ( | const double | ap[6], |
| const double | h[3], | ||
| double | out[3] | ||
| ) |
The area vector the apertures imply through the divergence theorem (§2.3): out_a = A_a (ap[2a+1] − ap[2a]), A_a the a-face area.
Applied to the UNSNAPPED apertures it is areaPL (the PL identity); applied to the snapped ones it is the operator's A⃗^snap.
Definition at line 219 of file cut_cell_geometry.hpp.
References cutCellFaceArea().
| PECLET_CORE_CC_HD CutCellGeometry peclet::core::scheme::cutCellGeometryFanTet | ( | const double | corner[8], |
| const double | face[6], | ||
| double | centre, | ||
| const double | h[3] | ||
| ) |
The cut-cell record of one cell from its 15 PL samples (§2.2): corner[8] (index bx+2by+4bz), face[6] (−x,+x,−y,+y,−z,+z), the centre value, and the cell size h[3] (internal lengths).
single (facet 0 = areaPL at the areaSum-weighted piece centroid). Otherwise the pieces split into two groups by the sign of n_piece · n_ref (n_ref = the largest piece; a piece with n_piece · n_ref ≥ 0 joins the reference group A, which is facet 0) — gap if (x̄_B − x̄_A) · n_A > 0, else thinSolid; an empty group falls back to single. Definition at line 373 of file cut_cell_geometry.hpp.
References peclet::core::scheme::CutCellGeometry::aperture, peclet::core::scheme::CutCellGeometry::areaPL, peclet::core::scheme::CutCellGeometry::areaSum, peclet::core::scheme::detail::ccgFanCorner(), peclet::core::scheme::detail::ccgFanTet(), peclet::core::scheme::detail::ccgNorm(), peclet::core::scheme::detail::ccgTetPiece(), cutCellFaceArea(), peclet::core::dot(), peclet::core::scheme::CutCellGeometry::facetArea, peclet::core::scheme::CutCellGeometry::facetCentroid, fanFaceAperture(), gap, peclet::core::scheme::CutCellGeometry::kappa, peclet::core::scheme::CutCellGeometry::kind, kPieceDropRel, kSingleFacetRho, peclet::core::scheme::CutCellGeometry::nFacet, none, single, tetPositiveFraction(), and thinSolid.
| 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(), and gpOrderWeights().
| PECLET_CORE_CC_HD double peclet::core::scheme::probeSupport | ( | const double | n[3], |
| const double | h[3] | ||
| ) |
S(n) = ½ Σ_a |n_a| h_a: the support half-width of a cell of size h along the unit normal n (§3.1).
A cell whose centre lies at signed distance ≥ −S(n) from a plane meets its positive half-space.
Definition at line 75 of file probe_flux.hpp.
Referenced by buildProbe().
| PECLET_CORE_CC_HD void peclet::core::scheme::trilinearStencil | ( | const double | xi[3], |
| int | base[3], | ||
| double | w[8] | ||
| ) |
Trilinear stencil of the index-space point ξ (cell centres at integer ξ, relative to the facet's cell): base = floor(ξ), and w[k] for the cell base + (k & 1, (k >> 1) & 1, k >> 2), w[k] = Π_a (bit_a ? f_a : 1 − f_a) with f = ξ − base.
Reproduces linear fields exactly.
Definition at line 97 of file probe_flux.hpp.
References peclet::core::scheme::detail::probeFloor().
Referenced by peclet::core::scheme::detail::probeCandidate().
| PECLET_CORE_CC_HD ProbeResult peclet::core::scheme::buildProbe | ( | const double | xw[3], |
| const double | n[3], | ||
| const double | h[3], | ||
| const Lookup & | L | ||
| ) |
Build the probe of one facet by the ladder of §3.3.
xw is the facet centroid relative to its cell centre and n the unit normal INTO the probed phase (the solid side passes −n, the solid flags and −φ through its own Lookup); both in internal lengths, h the cell size. Lookup provides bool unknown(int dx, int dy, int dz) const (lattice offset from the facet's cell) and double phi(const double xi[3]) const (the phase-signed SDF at the index-space point ξ relative to the cell, in internal lengths).
Definition at line 158 of file probe_flux.hpp.
References gap, kProbeClearance, kProbeGapMin, kProbeMinKeptWeight, kProbeR0, kProbeR1a, kProbeR1b, kProbeR2, kProbeSigma, kProbeSigmaLast, kProbeSigmaLong, peclet::core::scheme::ProbeResult::n, peclet::core::scheme::ProbeResult::off, peclet::core::scheme::detail::probeAllUnknown(), peclet::core::scheme::detail::probeCandidate(), peclet::core::scheme::detail::probeFillAll(), probeSupport(), peclet::core::scheme::ProbeResult::rung, peclet::core::scheme::ProbeResult::s, and peclet::core::scheme::ProbeResult::w.
| PECLET_CORE_CC_HD double peclet::core::scheme::wallConductance | ( | double | s, |
| double | L, | ||
| double | k | ||
| ) |
Wall conductance of a Robin facet (§1.4): G = 1 / (s/L + 1/k), the flux out of the fluid per area being G (u_p − g).
k = 0 is Neumann (G = 0), k = +inf Dirichlet (G = L/s). s is the probe distance and L the phase conductivity (Λ_f = D).
Definition at line 229 of file probe_flux.hpp.
| PECLET_CORE_CC_HD double peclet::core::scheme::interfaceConductance | ( | double | sf, |
| double | Lf, | ||
| double | Rc, | ||
| double | ss, | ||
| double | Ls | ||
| ) |
Conjugate interface conductance (§1.4): the series resistance of the fluid probe leg, the contact resistance and the solid probe leg, G_c = 1 / (s_f/Λ_f + R_c + s_s/Λ_s), so that the flux from solid to fluid is G_c (u_ps − u_pf) in the ψ form.
Definition at line 241 of file probe_flux.hpp.
Aperture snap threshold at BOTH ends (§2.3): a < 1e-3 → 0, a > 1 − 1e-3 → 1.
The 1e-3 floor is flow's pressure constant; snapping both ends keeps a_s = 1 − a^snap exact (linear exactness).
Definition at line 46 of file cut_cell_geometry.hpp.
Referenced by snapAperture().
A facet piece with area < kPieceDropRel · min_a A_a is dropped (§2.2).
Definition at line 48 of file cut_cell_geometry.hpp.
Referenced by cutCellGeometryFanTet().
ρ = |areaPL| / areaSum at or above which the cell carries ONE facet (§2.2).
Definition at line 50 of file cut_cell_geometry.hpp.
Referenced by cutCellGeometryFanTet().
Definition at line 44 of file ghost_closure.hpp.
Referenced by gpClassifyFace().
Ladder rungs, in ProbeResult::rung (flow stores them as uint8).
Definition at line 40 of file probe_flux.hpp.
Referenced by buildProbe().
Definition at line 41 of file probe_flux.hpp.
Referenced by buildProbe().
Definition at line 42 of file probe_flux.hpp.
Referenced by buildProbe().
Definition at line 43 of file probe_flux.hpp.
Referenced by buildProbe().
Probe distance factors on S(n) (§3.1, §3.3): R0 = 1.1, R1a = 1.5, R2 = 0.5.
Definition at line 46 of file probe_flux.hpp.
Referenced by buildProbe().
Definition at line 47 of file probe_flux.hpp.
Referenced by buildProbe().
Definition at line 48 of file probe_flux.hpp.
Referenced by buildProbe().
V1 ignores stencil cells whose weight is at most this.
Definition at line 50 of file probe_flux.hpp.
Referenced by peclet::core::scheme::detail::probeAllUnknown().
V2: φ_phase(p) ≥ kProbeClearance · s.
Definition at line 52 of file probe_flux.hpp.
Referenced by buildProbe().
V3: every stencil cell within ±kProbeReach cells on each axis (the G = 2 halo).
Definition at line 54 of file probe_flux.hpp.
Referenced by peclet::core::scheme::detail::probeCandidate().
R1b is attempted only when the estimated gap w exceeds kProbeGapMin · S(n) ...
Definition at line 56 of file probe_flux.hpp.
Referenced by buildProbe().
... and accepted only when the kept weights sum to at least kProbeMinKeptWeight.
Definition at line 58 of file probe_flux.hpp.
Referenced by buildProbe().