zoomy_core.fvm.solver_column module

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: IMEXSolver

Solver 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'#