zoomy_amrex.solvers

zoomy_amrex.solvers#

zoomy_amrex.solvers — param.Parameterized solver wrappers (gui REQ-131).

The GUI/CLI-facing entry point for the AMReX backend. Two solver families, both driving the existing run_case machinery (codegen → AMReX inputs deck → make → run → VTK):

  • HyperbolicSolver — explicit finite-volume march (SWE / SME) on the AmrCore driver.

  • SplitSolver — N sequential system models + pressure projection (Chorin pressure-corrector; NOT VAM-specific), auto-selected for models that expose chorin_split.

Usage (identical shape across all backends):

    from zoomy_amrex.solvers import HyperbolicSolver
    solver = HyperbolicSolver(CFL=0.45, order=2)
    solver.solve(model, mesh, settings)      # -> VTK series in settings.output.directory

Design (gui REQ-131, user-approved 2026-07-13):

  • solve(model, mesh, settings) writes a VTK series into settings.output.directory and returns the .pvd path.

  • settings is STRUCTURED — settings.output.{directory, filename, snapshots} is always honored; settings.time_end / settings.mesh.n_cells carry the run/grid properties. Model-/scheme-specific things (reconstruction, eigenvalues, sources, IC, BC) come from the MODEL symbolically.

  • mesh is a path (.msh — the structured domain is the mesh bbox) OR a descriptor {"domain": [...], "n_cells": [...]}. RESOLUTION always comes from the mesh/settings, never a solver param.

  • NO case knowledge lives here. Case physics (e.g. a closed-basin wall) is a Wall BC on the MODEL, not a raster hack — the driver dispatches the model’s face BCs (West/East/South/North).

Module Contents#

Classes#

HyperbolicSolver

Explicit finite-volume march for hyperbolic models (SWE / SME).

SplitSolver

Sequential system models + pressure projection (Chorin pressure-corrector).

API#

class zoomy_amrex.solvers.HyperbolicSolver(**params)#

Bases: zoomy_amrex.solvers._BaseSolver

Explicit finite-volume march for hyperbolic models (SWE / SME).

The GUI auto-generates widgets from these bounded params.

Initialization

CFL#

‘Number(…)’

order#

‘Integer(…)’

well_balanced#

‘Boolean(…)’

positivity#

‘Selector(…)’

solve(model, mesh, settings, on_progress=None)#
class zoomy_amrex.solvers.SplitSolver(**params)#

Bases: zoomy_amrex.solvers._BaseSolver

Sequential system models + pressure projection (Chorin pressure-corrector).

The split structure — predictor / pressure / corrector sub-models — comes from the MODEL (model.chorin_split); this wrapper only exposes the march and pressure-solve knobs.

Initialization

cfl#

‘Number(…)’

precond#

‘Integer(…)’

dt#

‘Number(…)’

solve(model, mesh, settings, on_progress=None)#