zoomy_core.model.models.sme_model module#
SME — Shallow Moment Equations (hydrostatic).
Derivation:
system = FullINS(state).system()
system.equations["z_momentum"].apply({w: 0, τ_zz: 0, τ_zx: 0})
→ ∂p/∂z/ρ + g = 0 → p = p_atm + ρg(η - z)
system.apply({p: p_hydro})
del system.equations["z_momentum"]
system.apply(DepthIntegrate)
system.apply(ApplyKinematicBCs)
...
- zoomy_core.model.models.sme_model.hydrostatic_scaling(state)#
Dict that drops w and all z-row/z-column stresses (hydrostatic assumption).
Dimension-agnostic: works for 2D (x-z) and 3D (x-y-z).
- class zoomy_core.model.models.sme_model.INSModel(level=0, n_layers=1, basis_type=<class 'zoomy_core.model.models.basisfunctions.Legendre_shifted'>, eigenvalue_mode=None, dimension=None, **kwargs)#
Bases:
DerivedModelRoot: the full incompressible Navier-Stokes (all equations).
Dimension-agnostic: works for 2D (x-z) and 3D (x-y-z). The
ins_dimensionparameter controls the INS state space:2: u, w (standard 2D vertical slice)
3: u, v, w (full 3D)
Uses numerical eigenvalues (np.linalg.eigvals on quasilinear matrix) because the symbolic Cardano formula produces complex intermediates for higher-moment models (casus irreducibilis).
- eigenvalue_mode = 'numerical'#
- ins_dimension = 2#
- derive_model()#
Override to build/refine the equation system.
Root classes: call
self._init_system(...)to create equations. Child classes: callsuper().derive_model()thenself.apply(...)to transform.
- class zoomy_core.model.models.sme_model.SMEModel(level=0, n_layers=1, basis_type=<class 'zoomy_core.model.models.basisfunctions.Legendre_shifted'>, eigenvalue_mode=None, dimension=None, **kwargs)#
Bases:
INSModelShallow Moment Equations — hydrostatic, depth-integrated, Newtonian.
- projectable = True#
- derive_model()#
Override to build/refine the equation system.
Root classes: call
self._init_system(...)to create equations. Child classes: callsuper().derive_model()thenself.apply(...)to transform.
- source()#
Source.
- class zoomy_core.model.models.sme_model.SMEInviscid(level=0, n_layers=1, basis_type=<class 'zoomy_core.model.models.basisfunctions.Legendre_shifted'>, eigenvalue_mode=None, dimension=None, **kwargs)#
Bases:
INSModelSME without viscosity.
- projectable = True#
- derive_model()#
Override to build/refine the equation system.
Root classes: call
self._init_system(...)to create equations. Child classes: callsuper().derive_model()thenself.apply(...)to transform.