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:
Non-hydrostatic: z-momentum is kept, not eliminated
Both u and w moments: velocity ansatz includes w(zeta) = sum gamma_k phi_k
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:
objectBasis-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) –
- 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: