|
core 1.5.0
Shared MPI block decomposition, asynchronous ghost-layer exchange, SDF geometry, load balancing (header-only C++20)
|
core — the cut-cell geometric record of one cell from a piecewise-linear (PL) model of its signed distance field: fluid fraction, face apertures, facet area vectors and centroids. More...
Go to the source code of this file.
Classes | |
| struct | peclet::core::scheme::CutCellGeometry |
| The geometric record of one cell (§2.1). Double, cell-centred frame, internal lengths. More... | |
Namespaces | |
| namespace | peclet |
| namespace | peclet::core |
| namespace | peclet::core::scheme |
| namespace | peclet::core::scheme::detail |
Enumerations | |
| enum class | peclet::core::scheme::CutCellKind : int { peclet::core::scheme::none = 0 , peclet::core::scheme::single = 1 , peclet::core::scheme::gap = 2 , peclet::core::scheme::thinSolid = 3 } |
| Facet classification of a cut cell (§2.2). More... | |
Variables | |
| constexpr double | peclet::core::scheme::kApertureSnap = 1e-3 |
| Aperture snap threshold at BOTH ends (§2.3): a < 1e-3 → 0, a > 1 − 1e-3 → 1. | |
| constexpr double | peclet::core::scheme::kPieceDropRel = 1e-14 |
| A facet piece with area < kPieceDropRel · min_a A_a is dropped (§2.2). | |
| constexpr double | peclet::core::scheme::kSingleFacetRho = 0.5 |
| ρ = |areaPL| / areaSum at or above which the cell carries ONE facet (§2.2). | |
core — the cut-cell geometric record of one cell from a piecewise-linear (PL) model of its signed distance field: fluid fraction, face apertures, facet area vectors and centroids.
Design: flow doc/scalar_ibm_design.md §2 (decision D4, register entry "Scalar cut-cell
geometry is the fan-tetrahedron PL model"). The record is container-free — scalars and small local arrays, no Kokkos::View, no grid indexing — so ONE copy serves flow's structured grid (WO-2) and amr's leaves (§7.3).
The PL model. A cell carries 15 samples of the SDF φ (internal length units): its 8 corners, its 6 face centres and its centre. Each face is split into 4 triangles (corner, next corner, face centre) — the triangle fan of flow's ccFaceOpenMS — and each triangle is coned to the cell centre, giving 24 tetrahedra of volume V/24. φ is linear on each. Shared faces carry identical fans, so the model is conforming across cells.
**"Fluid" means φ > 0 strictly**: a vertex with φ = 0 is solid, so a wall lying exactly on a face closes that face and κ = 0 never coexists with an open face.
κ, the six apertures and the facet pieces all come from that one polyhedron, so the PL divergence theorem holds to round-off:
Σ_a A_a (aperture_{a+} − aperture_{a−}) e_a = areaPL (A_a = face area)
Conventions. Frame = the cell centre at the origin, internal lengths, cell size h[3]. Corner index c = bx + 2·by + 4·bz (x fastest, the suite's axis order; bit set = high side), i.e. corner c sits at ((bx − ½)h_x, (by − ½)h_y, (bz − ½)h_z). Face order −x, +x, −y, +y, −z, +z. Area vectors point INTO the fluid. Everything is double (D7).
Host/device: PECLET_CORE_CC_HD (from scheme/cut_cell_closure.hpp) is KOKKOS_INLINE_FUNCTION when Kokkos_Core.hpp was included BEFORE this header, plain inline otherwise (host-only oracle builds).
Reserved, NOT implemented (design §7.1, §7.4): the plane source cutCellGeometryFromPlane(const double m[3], double alpha, const double h[3]) for PLIC cells.
Definition in file cut_cell_geometry.hpp.