DiscDomain Struct ReferenceΒΆ

adc_cpp: pops::detail::DiscDomain Struct 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

CIRCLE / DISC level-set domain: the canonical instance of the contract and the SINGLE SOURCE of truth for the active circular domain (a disc of radius R; see docs/HOFFART_FIDELITY.md for the reference scenario it was validated against). More...

#include <domain.hpp>

+ Collaboration diagram for pops::detail::DiscDomain:

Public Member Functions

POPS_HD Real level_set (Real x, Real y) const
 Level set ls(x, y) = hypot(x - cx, y - cy) - R: < 0 inside, 0 at the boundary, > 0 outside.
 
POPS_HD Real operator() (Real x, Real y) const
 Callable form (the LevelSet argument of cut_fraction / assemble_rhs_eb); forwards to level_set.
 
POPS_HD bool cell_active (Real x, Real y) const
 ACTIVE cell: its center (x, y) is inside the disc (ls < 0). Same inside test as GeometricMG.
 

Static Public Member Functions

static DiscDomain centered_in_box (double L, double radius)
 Disc centered in a square box [0, L]^2 with radius radius (same center as wall_predicate("circle", radius, L): (L/2, L/2)).
 

Public Attributes

double cx = 0.0
 center x (default L/2 when built from L)
 
double cy = 0.0
 center y (default L/2 when built from L)
 
double R = 0.0
 disc radius
 

Detailed Description

CIRCLE / DISC level-set domain: the canonical instance of the contract and the SINGLE SOURCE of truth for the active circular domain (a disc of radius R; see docs/HOFFART_FIDELITY.md for the reference scenario it was validated against).

It is the "transport" counterpart of the Poisson conductor wall: the wall acts only on the elliptic part (cf. runtime/wall_predicate.hpp / geometric_mg cut_cell), whereas this descriptor drives a cell-centered DOMAIN MASK / cut-cell aperture so the FV transport is disc-aware (the "Cartesian-ring-edge lock", cf. docs/HOFFART_FIDELITY.md).

REUSES EXACTLY the conductor-wall level set (geometric_mg.hpp): ls(x, y) = hypot(x - cx, y - cy) - R, < 0 INSIDE. A cell is ACTIVE when its CENTER is inside (ls < 0), exactly like GeometricMG's inside predicate. The default center (cx, cy) = (L/2, L/2) coincides with that of wall_predicate("circle", ...).

CONTRACT (inert by default): this descriptor changes NOTHING in the default behavior. It is materialized (mask MultiFab, mask-aware transport) only on explicit opt-in (System::set_disc_domain). With no domain set the mask is "all active" and the FV/AMR/MPI path stays BIT-IDENTICAL.

Member Function Documentation

◆ cell_active()

POPS_HD bool pops::detail::DiscDomain::cell_active ( Real  x,
Real  y 
) const
inline

ACTIVE cell: its center (x, y) is inside the disc (ls < 0). Same inside test as GeometricMG.

+ Here is the call graph for this function:

◆ centered_in_box()

static DiscDomain pops::detail::DiscDomain::centered_in_box ( double  L,
double  radius 
)
inlinestatic

Disc centered in a square box [0, L]^2 with radius radius (same center as wall_predicate("circle", radius, L): (L/2, L/2)).

◆ level_set()

POPS_HD Real pops::detail::DiscDomain::level_set ( Real  x,
Real  y 
) const
inline

Level set ls(x, y) = hypot(x - cx, y - cy) - R: < 0 inside, 0 at the boundary, > 0 outside.

Identical to the conductor-wall convention (geometric_mg cut_cell).

+ Here is the caller graph for this function:

◆ operator()()

POPS_HD Real pops::detail::DiscDomain::operator() ( Real  x,
Real  y 
) const
inline

Callable form (the LevelSet argument of cut_fraction / assemble_rhs_eb); forwards to level_set.

+ Here is the call graph for this function:

Member Data Documentation

◆ cx

double pops::detail::DiscDomain::cx = 0.0

center x (default L/2 when built from L)

◆ cy

double pops::detail::DiscDomain::cy = 0.0

center y (default L/2 when built from L)

◆ R

double pops::detail::DiscDomain::R = 0.0

disc radius


The documentation for this struct was generated from the following file:
  • include/pops/numerics/spatial/embedded_boundary/domain.hpp