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:
IMEXSolverIMEX 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:
SplittingSolverSplitting 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'#