zoomy_core.fvm.solver_splitting_numpy module

zoomy_core.fvm.solver_splitting_numpy module#

Pressure-splitting solver: IMEX + Poisson constraint (numpy backend).

Extends IMEXSolver with a pressure Poisson correction step (Chorin projection). Uses face-based divergence and gradient, and GMRES for the Poisson solve.

Solver hierarchy:
SplittingSolver(IMEXSolver)
-> step(dt):

[explicit flux] -> viscous diffusion -> pressure_correction -> update_state

class zoomy_core.fvm.solver_splitting_numpy.SplittingSolver(**kwargs)#

Bases: IMEXSolver

IMEX solver with pressure Poisson correction (Chorin projection).

The model state Q holds velocity components. Pressure is a separate field solved at each timestep via the incompressibility constraint.

pressure_gmres_tol = 1e-06#
pressure_gmres_maxiter = 200#
viscosity = 0.01#
setup_simulation(mesh, model, write_output=False)#

Build all operators including Poisson infrastructure.

step(dt)#

One splitting timestep: flux -> viscous diffusion -> pressure correction.

Each line is one physics operation. No if-clauses.

run_simulation()#

Time loop for splitting solver.

solve(mesh, model, write_output=False)#

Convenience: setup_simulation + run_simulation.

name = 'SplittingSolver'#
class zoomy_core.fvm.solver_splitting_numpy.FSFSplittingSolver(**kwargs)#

Bases: SplittingSolver

Splitting solver for free-surface flows (SWE, SME, VAM).

Combines: - Positive Rusanov for explicit flux (requires h/b) - Implicit source stepping - Pressure Poisson correction

Requires model variables ‘b’ and ‘h’.

name = 'FSFSplittingSolver'#