zoomy_core.fvm.solver_column module#
Column-integrating solver for depth-integrated equations on extruded meshes.
Extends IMEXSolver with numerical vertical integration. Operates on
the raw depth-integrated equations (from sme() or vam()) before
basis projection — depth integrals are evaluated numerically by summing
over vertical cells in each column.
- Solver hierarchy:
- IMEXSolver (explicit flux + implicit source)
- -> ColumnIntegratingSolver
setup_simulation — builds column structure from extruded mesh integrate_vertical — numerical depth integral depth_average — sigma-coordinate average partial_integrate — running integral from surface/bottom
- class zoomy_core.fvm.solver_column.ColumnIntegratingSolver(**kwargs)#
Bases:
IMEXSolverSolver for depth-integrated equations with numerical vertical integration.
Operates on an extruded mesh in (x, zeta) space. The state vector contains u(x, zeta) at each 3D cell. Depth integrals that appear in the flux and source terms are evaluated numerically by summing over vertical cells in each column.
- Parameters:
n_horizontal (int) – Number of horizontal inner cells.
n_layers (int) – Number of vertical layers in the extrusion.
- n_horizontal = 0#
- n_layers = 1#
- setup_simulation(mesh, model, **kwargs)#
Build all operators + column structure from extruded mesh.
- property columns#
Access the column structure (after setup_simulation).
- integrate_vertical(Q)#
Numerical sigma-coordinate integral: integral_0^1 Q(zeta) dzeta.
- Parameters:
Q (ndarray, shape (n_vars, n_3d_cells)) –
- Return type:
ndarray, shape (n_vars, n_horizontal)
- depth_average(Q, field_index)#
Sigma-coordinate average of a single field.
- Parameters:
Q (ndarray, shape (n_vars, n_3d_cells)) –
field_index (int) –
- Return type:
ndarray, shape (n_horizontal,)
- partial_integrate(Q, from_top=True)#
Running vertical integral per cell.
- Parameters:
Q (ndarray, shape (n_vars, n_3d_cells)) –
from_top (bool) – If True, integral_zeta^1; if False, integral_0^zeta.
- Return type:
ndarray, shape (n_vars, n_3d_cells)
- name = 'ColumnIntegratingSolver'#