File ListΒΆ
|
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
|
File List
Here is a list of all files with brief descriptions:
[detail level 1234567]
| ▼ include | |
| ▼ pops | |
| ▼ amr | |
| ► hierarchy | |
| amr_hierarchy.hpp | AmrHierarchy: the stack of refinement levels (container of the AMR hierarchy) |
| refinement_ratio.hpp | Single source of truth for the native AMR refinement ratio |
| ► regridding | |
| regrid.hpp | Dynamic regrid: (re)builds a fine level from the tagging of a coarse level |
| ► tagging | |
| cluster.hpp | Berger-Rigoutsos clustering: tag grid -> small set of boxes covering the tagged cells |
| tag_box.hpp | TagBox: dense grid of markers (0/1) over a region, input to Berger-Rigoutsos clustering |
| ▼ core | |
| ► foundation | |
| allocator.hpp | Fab2D storage allocator, selectable at compile time |
| cold.hpp | POPS_COLD_FN: opt out the COLD host factories from the optimizer (ADC-337, P1-B) |
| kokkos_env.hpp | Shared Kokkos lifecycle: lazy init + device barrier |
| types.hpp | Base scalar types and the POPS_HD macro (host+device portability) |
| ► model | |
| coupled_system.hpp | CoupledSystem: heterogeneous collection of equation blocks (multi-species, multi-scheme) |
| equation_block.hpp | EquationBlock: association (model, field U, spatial scheme, time policy, BC) |
| physical_model.hpp | C++20 concepts defining the contract of the physics layer |
| ► state | |
| aux_names.hpp | HOST-ONLY canonical aux name<->component table: the C++ mirror of AUX_CANONICAL (python/pops/dsl.py) |
| state.hpp | Pointwise types of the physics layer: StateVec<N> (conserved state) and Aux (auxiliary fields from the elliptic solver) |
| variables.hpp | Descriptor of a model's variables (Vars) |
| ▼ coupling | |
| ► amr | |
| amr_coupler_mp.hpp | AmrCouplerMP: MULTI-PATCH E x B AMR coupler (coarse Poisson -> aux = grad phi -> fine injection -> conservative AMR step), multi-box per-level hierarchy |
| amr_diagnostics.hpp | Diagnostics extracted from the AMR couplers: mass and max drift speed (responsibility c) |
| amr_level_storage.hpp | AmrLevelStack: AMR hierarchy storage (levels + aux) extracted from the couplers |
| amr_regrid_coupler.hpp | Amr_regrid_finest: Berger-Rigoutsos regrid of the finest level (responsibility b) |
| ► base | |
| aux_fill.hpp | Helpers shared by the three couplers (single-block Coupler, SystemAssembler, AmrSystemCoupler) for the aux channel |
| coupling_policy.hpp | Hyperbolic-elliptic temporal coupling policies (compile-time tag types) |
| elliptic_rhs.hpp | Elliptic (Poisson) RIGHT-HAND-SIDE assemblers: single-model and N-species |
| ► schur | |
| ► amr | |
| amr_condensed_schur_source_stepper.hpp | AmrCondensedSchurSourceStepper: AMR counterpart of the Schur-condensed SOURCE stage (CondensedSchurSourceStepper, #126), carried over a HIERARCHY of levels (AmrLevelMP) rather than over a uniform grid |
| ► core | |
| schur_condensation.hpp | BUILDER (NOT solver) of the Schur-condensed source stage of the implicit source coupling potential / velocity / Lorentz (design and references in docs/SCHUR_CONDENSATION_DESIGN.md) |
| schur_source_kernels.hpp | Geometry-INDEPENDENT device kernels shared by the Schur SOURCE-STAGE steppers: the Cartesian condensed_schur_source_stepper.hpp, the polar polar_condensed_schur_source_stepper.hpp, and (transitively) the AMR variant |
| ► source | |
| condensed_schur_source_stepper.hpp | CondensedSchurSourceStepper: Schur-condensed SOURCE STAGE (level 4 of docs/SCHUR_CONDENSATION_DESIGN.md) for the implicit source coupling potential / velocity / Lorentz |
| polar_condensed_schur_source_stepper.hpp | PolarCondensedSchurSourceStepper: SOURCE STAGE condensed by Schur in POLAR geometry (ring (r, theta)) |
| ► single | |
| coupler.hpp | Coupler: single-block hyperbolic-elliptic coupler (Poisson -> aux -> advance loop) |
| ► source | |
| coupled_source.hpp | CoupledSourceFor / NoCoupledSource: contract of an inter-species COUPLING source |
| coupled_source_program.hpp | Generic COUPLED SOURCE interpreter: postfix bytecode evaluated on device (P5 phase 1) |
| ► system | |
| amr_system_coupler.hpp | AmrSystemCoupler: multi-species SYSTEM coupler on AMR (milestone 2.3) |
| system_coupler.hpp | Single-level multi-species coupled system: SystemAssembler (assembles) + SystemDriver (advances) |
| ▼ mesh | |
| ► boundary | |
| fill_boundary.hpp | Fill_boundary: INTRA-level halo exchange (fills ghosts from neighbors) |
| halo_schedule.hpp | HaloSchedule: memoized intra-level halo-exchange plan for fill_boundary (ADC-260) |
| physical_bc.hpp | PHYSICAL boundary conditions at the domain edge (BCType, BCRec, fill_physical_bc, fill_ghosts) |
| ► execution | |
| for_each.hpp | For_each_cell and reductions: the parallelism SEAM over the cells of a Box2D; sync_host / sync_device: the residency COHERENCE seam (counterpart for host accesses) |
| ► geometry | |
| geometry.hpp | Geometry: index-space (Box2D) <-> Cartesian physical-space mapping; PolarGeometry: SIBLING for a global annular domain (r, theta) |
| ► index | |
| box2d.hpp | Box2D: the integer index space of a 2D cell-centered Cartesian grid |
| box_hash.hpp | BoxHash: spatial hash for fast lookup of boxes intersecting a query |
| ► layout | |
| box_array.hpp | BoxArray: the set of boxes tiling a level (disjoint, covering) |
| distribution_mapping.hpp | DistributionMapping: maps each box (by global index) to its owning MPI rank |
| patch_box.hpp | PatchBox: index-space footprint of an AMR fine patch, exposed read-only to Python |
| refinement.hpp | AMR inter-level transfer operators (integer ratio r) + parallel_copy |
| ► storage | |
| fab2d.hpp | Fab2D: single-grid data on a Box2D (in-house equivalent of AMReX's FArrayBox); Array4 / ConstArray4: lightweight POD device-copyable handles over its buffer |
| mf_arith.hpp | MultiFab arithmetic (saxpy, lincomb, norm_inf, dot) over VALID cells |
| multifab.hpp | MultiFab: a field DISTRIBUTED over a level (equivalent of AMReX's MultiFab) |
| ▼ numerics | |
| ► elliptic | |
| ► eb | |
| cut_fraction.hpp | SHARED cut-fraction primitive (cut-cell / embedded boundary) |
| ► interface | |
| elliptic_interface.hpp | C++20 concepts NAMING the common contracts of the elliptic stage: EllipticOperator (operator role), LinearSolver (iterative subset), FieldPostProcessor (field derivation) |
| elliptic_problem.hpp | DESCRIPTIVE types of the elliptic stage: EllipticProblem (problem definition) and FieldPostProcess (field derivation convention), plus additive factories |
| elliptic_solver.hpp | EllipticSolver concept: common contract for elliptic solvers at the MultiFab level (solve D phi = f), so couplers depend on the concept and not on a concrete class |
| ► linear | |
| generic_krylov.hpp | Generic MATRIX-FREE Krylov solver loops – richardson_solve, cg_solve, bicgstab_solve, gmres_solve – operating on pops::MultiFab with the operator supplied as a CALLBACK (ApplyFn) |
| krylov_result.hpp | KrylovResult – the shared result type of every Krylov solve in include/pops/numerics/elliptic/linear |
| krylov_solver.hpp | TensorKrylovSolver: MATRIX-FREE Krylov solver (BiCGStab) with MG preconditioning, for the FULL-TENSOR elliptic operator L(phi) = -div(A grad phi) + kappa phi, A possibly non-symmetric |
| ► mg | |
| composite_fac_poisson.hpp | CompositeFacPoisson: 2-level AMR COMPOSITE elliptic solver (Fast Adaptive Composite, FAC) for the SCALAR Poisson Lap phi = f on a coarse level + ONE fine patch (ratio 2) |
| geometric_mg.hpp | GeometricMG: in-house geometric multigrid (V-cycle) for the elliptic operator, Gauss-Seidel smoother and bottom solve |
| ► poisson | |
| poisson_fft.hpp | Low-level FFT brick: PoissonFFT (spectral periodic Poisson solver, slab-distributed) plus 1D radix-2 FFT primitives (fft1d) and a direct DFT fallback (dft1d_direct) |
| poisson_fft_solver.hpp | DIRECT EllipticSolver backends via spectral FFT (periodic BCs), MultiFab wrappers around PoissonFFT: PoissonFFTSolver (single-rank, single box), DistributedFFTSolver (distributed, slabs) and RemappedFFTSolver (System single-box layout outward, slabs inside) |
| poisson_operator.hpp | Free functions of the elliptic operator: apply_laplacian (matvec), poisson_residual (residual), gs_color/gs_smooth (red-black Gauss-Seidel smoother), zero_conductor (embedded Dirichlet) |
| ► polar | |
| polar_poisson_solver.hpp | Direct POLAR Poisson solver on an annulus (PolarGeometry), Phase 2a |
| polar_tensor_operator.hpp | Iterative POLAR elliptic operator with anisotropic TENSOR coefficient (cross terms) |
| ► fv | |
| numerical_flux.hpp | Single-interface numerical flux policies: Rusanov, HLL, HLLC, Roe |
| reconstruction.hpp | Interface reconstruction policies: MUSCL limiters and WENO5-Z |
| spatial_discretisation.hpp | "Spatial method" aggregate: reconstruction (limiter) + numerical flux in one named type |
| ► linalg | |
| dense_eig.hpp | Spectrum extremes (real parts) of a small dense matrix: signed wave-speed bounds supplied by a model (exact HLL via flux Jacobian) |
| lorentz_eliminator.hpp | LorentzEliminator: 2x2 operator B of the Schur scheme for implicit velocity elimination |
| ► spatial | |
| ► embedded_boundary | |
| domain.hpp | Generic EMBEDDED-BOUNDARY / LEVEL-SET DOMAIN contract (ADC-327) |
| operator.hpp | CUT-CELL / EMBEDDED BOUNDARY (EB) spatial operator: R = -div_eb F + S on a disc, in CONSERVATIVE finite volumes with face apertures alpha_f and volume fraction kappa derived from detail::cut_fraction (project T5-PR1) |
| ► operators | |
| cartesian_operator.hpp | Cartesian residual R = -div Fhat + S over the cells of a level (method of lines) |
| masked_operator.hpp | Domain-mask-aware Cartesian residual (conservative active sub-domain, OPT-IN) |
| polar_operator.hpp | Additive POLAR spatial operator: R = -div_polar F + S on an annular grid (r, theta) |
| ► primitives | |
| face_flux.hpp | Face-state reconstruction and face fluxes of the Cartesian spatial operator |
| positivity.hpp | Zhang-Shu positivity limiter and Density-role resolution |
| state_access.hpp | Model/state/aux access layer of the Cartesian spatial operator |
| wave_speed.hpp | Global wave-speed / step-bound reductions and the HLL wave-speed cache |
| ► time | |
| ► amr | |
| ► advance | |
| amr_advance.hpp | Unified production facade for the AMR time engine: LevelHierarchy type (the AMR hierarchy as a named object), OwnershipPolicy alias, and the advance_amr entry point |
| ► levels | |
| amr_patch_range.hpp | Named types of the multi-patch coarse-fine interface: PatchRange (coarse footprint of a fine patch), FluxRegister (GLOBAL-indexed coarse buffer + all_reduce), CoverageMask (cells shadowed by a patch), SubcyclingSchedule (Berger-Oliger cadence) and CoarseFineInterface (coverage + reflux routing), with the multi-box fill/avgdown helpers (mf_fill_fine_ghosts_multi, mf_average_down_multi, fill_periodic_local) |
| amr_subcycling.hpp | AMR multi-patch subcycling engine (several fine boxes per level): 2-level step (amr_step_2level_multipatch), N-level recursion (detail::subcycle_level_mp, detail::amr_step_multilevel_multipatch), SSPRK3 per-stage advance, multi-box helpers (mf_fill_fine_ghosts_mb, mf_average_down_mb, mf_find_box, coarsen_grown) and types AmrLevelMP / RegMP |
| ► reflux | |
| amr_flux_helpers.hpp | Basic MultiFab building blocks of an AMR step: AmrTimeMethod enum, device-clean functors and advance helpers (flux divergence, explicit/IMEX source, 2x2 average_down, space-time coarse-fine ghosts mono-box), shared by the whole subcycling path |
| amr_reflux_mf.hpp | Umbrella for the AMR MultiFab stack: includes the numerics/time sub-headers in dependency order (flux_helpers -> level -> patch_range -> subcycling -> advance) |
| ► integrators | |
| implicit_stepper.hpp | Implicit / IMEX block step as a named CONTRACT |
| ssprk.hpp | Free convenience function advance_ssprk2: one single-level SSP-RK2 step that assembles the residual evaluator (fill_ghosts + assemble_rhs) and delegates to SSPRK2Step |
| time_integrator.hpp | Scheme tags (SSPRK2, SSPRK3, UserTimeIntegrator), TimeTreatment enum and per-block time policies: template TimePolicy<Method, Treatment, Substeps, Stride>, its traits (TimePolicyTraits) and the aliases ExplicitTime / ImplicitTime / IMEXTime / PrescribedTime |
| time_steppers.hpp | Time integrators as first-class OBJECTS with a take_step method: TimeStepper concept, and the ForwardEuler, SSPRK2Step, SSPRK3Step (Shu-Osher) schemes |
| ► reference | |
| amr_level.hpp | Single-box MultiFab AMR stack: struct detail::AmrLevelMF and the recursive engine (amr_step_2level_mf, subcycle_level_mf, amr_step_multilevel_mf) |
| amr_reflux.hpp | Reference conservation-critical brick (Fab2D, 1 component): 2-level reflux a la AMReX |
| ► schemes | |
| imex.hpp | Asymptotic-preserving IMEX (implicit-explicit) integrator: imex_euler_step, order-1 forward-backward Euler step, U^{n+1} = U^n + dt T(U^n) + dt S(U^{n+1}) |
| scheduler.hpp | Minimal scheduler for coupled systems: advance_subcycled reads each block's time policy (traits block_substeps_v / block_stride_v / block_time_treatment_v) and calls a user callable on the substeps |
| splitting.hpp | Operator splitting: decomposes dU/dt = T(U) + S(U) into separate substeps |
| spatial_operator.hpp | Cartesian spatial operator: assembles R(U, aux) = -div F + S over the cells of a level |
| ▼ parallel | |
| comm.hpp | Parallel seam: minimal MPI abstraction (rank/size + collectives) with serial fallback |
| load_balance.hpp | AMR load balancing: builds a DistributionMapping (box -> rank) from a BoxArray, using a Z-order space-filling curve (SFC) or LPT knapsack |
| ▼ physics | |
| ► bricks | |
| bricks.hpp | Umbrella for composable GENERIC physics bricks (compat) |
| elliptic.hpp | Elliptic RIGHT-HAND-SIDE bricks f(U): a block's contribution to the right-hand side of the system elliptic equation (Poisson) |
| hyperbolic.hpp | Generic HYPERBOLIC bricks: Vars (cons U / prim P + conversions + descriptor) + flux + wave speeds |
| source.hpp | SOURCE bricks S(U, aux): local term, generic over state size (acts on energy if 4 variables) |
| ► composition | |
| composite.hpp | CompositeModel: assembles (hyperbolic, source, elliptic) into one compiled PhysicalModel |
| ► fluids | |
| euler.hpp | 2D compressible Euler model (ideal gas): pure HYPERBOLIC brick satisfying the HyperbolicPhysicalModel concept |
| ▼ runtime | |
| ► amr | |
| amr_runtime.hpp | AMR multi-block engine at RUNTIME (type-erased registry keyed by name) |
| ► builders | |
| ► block | |
| amr_block_seam.hpp | Per-transport block-build seam for AmrSystem (ADC-335 / P0-B), mirror of block_seam.hpp |
| block_builder.hpp | Builds the closures of a block (time advance + residual + Poisson contribution) from a COMPILED model (CompositeModel) and a grid context |
| block_builder_polar.hpp | POLAR counterpart of block_builder.hpp: builds a block's closures (time advance + residual + Poisson contribution + wave speed) on an ANNULAR grid (PolarGeometry), by REUSING assemble_rhs_polar (include/pops/numerics/spatial_operator_polar.hpp) |
| block_seam.hpp | Per-transport block-build seam (ADC-335 / P0-B) |
| ► compiled | |
| amr_dsl_block.hpp | Add_compiled_model on the AmrSystem side: wires a COMPILED model (a CompositeModel, generated by the DSL or hand-written, known at COMPILE time) as a block of an AMR hierarchy, EXACTLY the production path of AmrSystem::add_block but WITHOUT going through the ModelSpec dispatch (the model is already a concrete type) |
| compiled_block_abi.hpp | C ABI of an AOT-COMPILED block: a model generated by the DSL, compiled ahead-of-time into a .so, exposes its residual / advance / wave speed / Poisson right-hand side through extern "C" functions |
| dsl_block.hpp | Add_compiled_model: wires a COMPILED model (a CompositeModel, typically generated by the DSL then included at COMPILE time) as a NATIVE block of the System |
| native_loader.hpp | NativeLoader: loading a .so generated by the DSL (JIT / AOT / native paths) + ABI guard |
| ► factory | |
| model_factory.hpp | Assemble a CompositeModel from a ModelSpec (bricks + parameters) |
| ► config | |
| dispatch_tags.hpp | SINGLE registry of spatial scheme tags (limiters + Riemann fluxes): shared source of truth for ALL dispatches (System make_block, AMR dispatch_amr_block / dispatch_amr_compiled, polar make_block_polar) |
| model_spec.hpp | Flat specification of a model: chosen bricks plus their parameters |
| runtime_params.hpp | RuntimeParams: carrier for the RUNTIME PARAMETERS of a DSL model (P7-b) |
| ► context | |
| grid_context.hpp | Block grid context plus closures, shared between System (which installs them) and block_builder.hpp (which builds them from a compiled model) |
| wall_predicate.hpp | ELLIPTIC conductor-wall predicate shared by the System and AmrSystem runtimes (the wall acts on the Poisson side) |
| ► dynamic | |
| abi_key.hpp | ABI key of the pops core: stable string identifying the (compiler, C++ standard, header tree signature) combination a unit was compiled with |
| dynamic_model.hpp | TYPE-ERASED model interface: runtime dispatch of a model (via vtable) |
| dynlib.hpp | PORTABLE dynamic loading: dlopen/dlsym/dlclose (POSIX) <-> LoadLibraryW/ GetProcAddress/FreeLibrary (Windows) |
| model_registry.hpp | SINGLE registry of builtin MODEL BRICK tags (transport / source / elliptic): the shared source of truth for every model dispatch – detail::dispatch_transport / dispatch_source / dispatch_elliptic (model_factory.hpp), the polar dispatch (block_builder_polar.hpp) and the per-transport seams in python/system.cpp / python/amr_system.cpp |
| ► program | |
| cache_manager.hpp | |
| external_brick.hpp | |
| external_riemann_brick.hpp | |
| module_metadata.hpp | |
| profiler.hpp | |
| program_context.hpp | ProgramContext – the C++-side facade a generated problem.so calls to run a compiled time Program during sim.step(dt) (epic ADC-399, ADC-401 Phase 2b) |
| ► system | |
| system_block_store.hpp | SystemBlockStore: the BLOCK MANAGEMENT responsibility extracted from the god-class System::Impl (audit Lot B.3, last P0 extraction; follows SystemFieldSolver #176 and SystemStepper) |
| system_field_solver.hpp | SystemFieldSolver: the ELLIPTIC SOLVE + FIELD DERIVATION responsibility extracted from the god-class System::Impl (audit Lot B, cf |
| system_stepper.hpp | SystemStepper: the TIME ADVANCE responsibility extracted from the god-class System::Impl (audit Lot B, continuation of SystemFieldSolver #176) |
| amr_system.hpp | Multi-species composition on AMR at runtime: the refined counterpart of System |
| export.hpp | POPS_EXPORT: force DEFAULT VISIBILITY on an out-of-line symbol, even when the unit is compiled with -fvisibility=hidden (case of the pybind11 _pops module) |
| facade_options.hpp | OPTIONS PODs for the public facades (System / AmrSystem), grouping the long families of HOMOGENEOUS parameters that posed an ordering footgun (C++ Core Guidelines I.23) |
| module_capabilities.hpp | Authoritative STATIC capability facts of the built _pops module (Spec 5 sec.13.12 / sec.13.12.1, criteria #36/#37) |
| system.hpp | Runtime multi-species composition: one coupled system, block by block |
| ▼ validation | |
| ► physics | |
| advection_diffusion.hpp | Scalar advection-diffusion model (AdvectionDiffusion): VALIDATION/REFERENCE brick |
| langmuir.hpp | 0D kernel of the linearized Langmuir mode (LangmuirMode): IMEX VALIDATION/REFERENCE brick |
| two_fluid_isothermal.hpp | Linear two-fluid isothermal electrostatic kernel (TwoFluidLinear): VALIDATION/REFERENCE |
Generated by