zoomy_core.model.models.vam_zeta_projection module

zoomy_core.model.models.vam_zeta_projection module#

VAM Derivation: Phase 2 – Abstract zeta-space projection for VAM.

Takes VAMPreProjectedEquations and writes the formal Galerkin projection in normalized zeta-space [0,1] with abstract matrix symbols.

Unlike the SME projection, VAM has: - x-momentum AND z-momentum projections - Cross-momentum terms (u*w coupling) - Pressure terms kept separate (implicit, not substituted) - Poisson constraint equations I1, I2

Usage:

from zoomy_core.model.models.vam_derivation import derive_vam_moments from zoomy_core.model.models.vam_zeta_projection import project_vam_to_zeta

state = StateSpace(dimension=2) vam = derive_vam_moments(state) zeta = project_vam_to_zeta(vam) print(zeta.summary())

class zoomy_core.model.models.vam_zeta_projection.VAMTermType(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)#

Bases: str, Enum

Term types for VAM projected equations.

MASS_TEMPORAL = 'mass_temporal'#
MASS_FLUX = 'mass_flux'#
U_INERTIA = 'u_inertia'#
U_ADVECTIVE_FLUX = 'u_advective_flux'#
U_TOPOGRAPHY_NC = 'u_topography_nc'#
U_VERTICAL_ADV_NC = 'u_vertical_adv_nc'#
U_MEAN_VEL_NC = 'u_mean_vel_nc'#
W_INERTIA = 'w_inertia'#
W_CROSS_FLUX = 'w_cross_flux'#
W_VERTICAL_ADV = 'w_vertical_adv'#
W_GRAVITY = 'w_gravity'#
PRESSURE_X_GRADIENT = 'pressure_x_gradient'#
PRESSURE_X_BOUNDARY = 'pressure_x_boundary'#
PRESSURE_Z_VOLUME = 'pressure_z_volume'#
PRESSURE_Z_BOUNDARY = 'pressure_z_boundary'#
POISSON_I1 = 'poisson_I1'#
POISSON_I2 = 'poisson_I2'#
W_CLOSURE = 'w_closure'#
class zoomy_core.model.models.vam_zeta_projection.VAMZetaProjectedEquations(state, continuity=<factory>, x_momentum=<factory>, z_momentum=<factory>, pressure_x=<factory>, pressure_z=<factory>, poisson=<factory>, assumptions_applied=<factory>, dimension=2)#

Bases: object

VAM equations projected into abstract zeta-space [0, 1].

Contains the formal Galerkin projection for non-hydrostatic shallow water:

x-momentum (mode l, raw, before M^{-1}):

\[h M_{lk} \frac{\partial \alpha_k}{\partial t} + \frac{\partial}{\partial x}(h A_{lij} \alpha_i \alpha_j) + g h \Phi_l \frac{\partial b}{\partial x} + \text{NC terms} = -\frac{\partial(h\pi_0)}{\partial x} \Phi_l - \text{pressure BCs}\]

z-momentum (mode l, raw):

\[h M_{lk} \frac{\partial \gamma_k}{\partial t} + \frac{\partial}{\partial x}(h A_{lij} \alpha_i \gamma_j) + g \Phi_l = \int_0^1 p \frac{d\varphi_l}{d\zeta} d\zeta + \text{pressure BCs}\]
Abstract basis matrices:

M_{lk}, A_{lij}, D_{lk}, B_{lij}, Phi_l, phib_l

Parameters:
  • state (object) –

  • continuity (List[ZetaTerm]) –

  • x_momentum (List[ZetaTerm]) –

  • z_momentum (List[ZetaTerm]) –

  • pressure_x (List[ZetaTerm]) –

  • pressure_z (List[ZetaTerm]) –

  • poisson (List[ZetaTerm]) –

  • assumptions_applied (List[str]) –

  • dimension (int) –

state: object#
continuity: List[ZetaTerm]#
x_momentum: List[ZetaTerm]#
z_momentum: List[ZetaTerm]#
pressure_x: List[ZetaTerm]#
pressure_z: List[ZetaTerm]#
poisson: List[ZetaTerm]#
assumptions_applied: List[str]#
dimension: int = 2#
property horizontal_dim#
all_equations()#
Return type:

Dict[str, List[ZetaTerm]]

summary()#
Return type:

str

latex_system()#

Return LaTeX for the projected VAM PDE system.

Return type:

str

zoomy_core.model.models.vam_zeta_projection.project_vam_to_zeta(pre)#

Phase 2: Formal Galerkin projection of VAM equations into abstract zeta-space.

Produces abstract matrix symbols for all terms. No basis or level chosen yet.

Parameters:

pre (VAMPreProjectedEquations) –

Return type:

VAMZetaProjectedEquations