zoomy_core.model.models.vam_derivation module

zoomy_core.model.models.vam_derivation module#

VAM (Vorticity-Assisted Model) Derivation: Phase 1.

Derives the non-hydrostatic shallow water moment equations from the full 3D INS, keeping BOTH x-momentum AND z-momentum and treating pressure as an unknown.

This differs from derive_shallow_moments() (which applies hydrostatic assumption and eliminates z-momentum) in three ways:

  1. Non-hydrostatic: z-momentum is kept, not eliminated

  2. Both u and w moments: velocity ansatz includes w(zeta) = sum gamma_k phi_k

  3. Pressure unknown: p(zeta) = sum pi_k phi_k, solved via Poisson constraint

Usage:

state = StateSpace(dimension=2) vam = derive_vam_moments(state, material=Inviscid(state)) # vam contains tagged terms for x-mom, z-mom, pressure, and continuity

class zoomy_core.model.models.vam_derivation.VAMPreProjectedEquations(state, continuity=<factory>, x_momentum=<factory>, z_momentum=<factory>, pressure_x=<factory>, pressure_z=<factory>, continuity_closure=<factory>, assumptions_applied=<factory>, dimension=2)#

Bases: object

Basis-independent non-hydrostatic shallow water equations (VAM).

Unlike PreProjectedEquations (hydrostatic SME), this keeps the z-momentum equation and treats pressure as an unknown field.

Fields:

continuity: depth-integrated continuity (dh/dt + du/dx terms) x_momentum: x-momentum terms (advection, gravity) — NO pressure z_momentum: z-momentum terms (advection, gravity) — NO pressure pressure_x: pressure gradient terms for x-momentum (implicit) pressure_z: pressure gradient terms for z-momentum (implicit) continuity_closure: closure relation for higher w-modes from continuity

Parameters:
state: StateSpace#
continuity: List[TaggedTerm]#
x_momentum: List[TaggedTerm]#
z_momentum: List[TaggedTerm]#
pressure_x: List[TaggedTerm]#
pressure_z: List[TaggedTerm]#
continuity_closure: List[TaggedTerm]#
assumptions_applied: List[str]#
dimension: int = 2#
property horizontal_dim#
all_equations()#
Return type:

Dict[str, List[TaggedTerm]]

summary()#
Return type:

str

zoomy_core.model.models.vam_derivation.derive_vam_moments(state, material=None, slip_length=None)#

Derive the non-hydrostatic VAM equations from the full 3D INS.

Unlike derive_shallow_moments(), this function: - Does NOT apply the hydrostatic assumption - Keeps the z-momentum equation (for vertical velocity moments w_k) - Treats pressure p as an unknown (separated into pressure_x, pressure_z)

Steps: 1. Start from FullINS (continuity, x/z momentum) 2. Apply material model (Inviscid by default for VAM) 3. Separate pressure gradient from advection in x-momentum and z-momentum 4. Tag advective terms (flux/NC/source) 5. Tag pressure terms (source_implicit) 6. Extract continuity closure for auxiliary w-modes

Returns VAMPreProjectedEquations ready for Phase 2 (zeta projection).

Parameters:
  • state (StateSpace) –

  • slip_length (Optional[Symbol]) –

Return type:

VAMPreProjectedEquations