include/pops/numerics/elliptic/eb/cut_fraction.hpp File ReferenceΒΆ

adc_cpp: include/pops/numerics/elliptic/eb/cut_fraction.hpp File Reference
adc_cpp 0.3.0
Model-free C++23 core for coupled hyperbolic-elliptic systems on adaptive (AMR) meshes, with MPI and GPU (Kokkos) backends
cut_fraction.hpp File Reference

SHARED cut-fraction primitive (cut-cell / embedded boundary). More...

+ Include dependency graph for cut_fraction.hpp:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  pops::detail::CutFraction
 Geometric result of crossing a cut cell: 4 cut distances per face, the 4 apertures alpha_f normalized in [0, 1] (alpha_f = face_distance / h), and the volume fraction kappa of the cell (share of the cell in the active domain). More...
 
struct  pops::detail::ShortleyWellerWeights
 Shortley-Weller weights (5-point cut-cell stencil) from the 4 cut distances. More...
 

Namespaces

namespace  pops
 
namespace  pops::detail
 

Functions

POPS_HD Real pops::detail::cut_distance (Real lc, Real ln, Real h)
 Cut distance of ONE face along a direction, starting from the active center (ls < 0).
 
template<class LevelSet >
POPS_HD CutFraction pops::detail::cut_fraction (const LevelSet &ls, Real xc, Real yc, Real dx, Real dy)
 Computes the cut geometry of an ACTIVE cell (center (xc, yc) with ls < 0) from a level-set ls evaluated at the center and at the 4 cardinal neighbors at distance dx / dy.
 
POPS_HD ShortleyWellerWeights pops::detail::shortley_weller (const CutFraction &cf)
 

Detailed Description

SHARED cut-fraction primitive (cut-cell / embedded boundary).

A SINGLE face-crossing computation shared between:

  • the elliptic solver (geometric_mg.hpp: Shortley-Weller weights of the Poisson wall),
  • the future EB transport (FV aperture of the disc faces). Both MUST read the SAME aperture geometry so the FV aperture is bit-consistent with the elliptic wall (the "Cartesian ring edge" lock: the FV aperture and the elliptic wall must agree on the same disc-of-radius-R boundary; cf. docs/HOFFART_FIDELITY.md for the validation fidelity table).

The canonical level-set is detail::DiscDomain::level_set (numerics/embedded_boundary.hpp): ls(x, y) = hypot(x - cx, y - cy) - R, < 0 INSIDE, sign of the boundary. This primitive is header-only, POPS_HD (device-safe) and STATELESS: it takes a level-set callback by value and the cell, and returns purely geometric distances/aperture.