zoomy_core.model.models.vam#
VAM: the non-hydrostatic vertically-averaged moment Model, derived with the same Galerkin
recipe as SME but with a modal non-hydrostatic pressure.
SystemModel.from_model(VAM(level=Nu)) gives the square DAE; chorin_split gives the
predictor/pressure/corrector sub-systems.
Module Contents#
Classes#
Non-hydrostatic vertically-averaged moment equations of order |
Data#
API#
- zoomy_core.model.models.vam.zeta#
‘Symbol(…)’
- class zoomy_core.model.models.vam.VAM(init_functions=True, **params)#
Bases:
zoomy_core.model.basemodel.ModelNon-hydrostatic vertically-averaged moment equations of order
level; u, w and the non-hydrostatic pressure share the modal basis.The pressure modes are Lagrange multipliers of the divergence constraints; the predictor keeps the SWE hyperbolic structure.
References
Escalante et al. 2024, https://doi.org/10.1016/j.jcp.2024.112882
Initialization
Declare variables and parameters, run the derivation, and (unless
_finalize_lazy) finalize for the SystemModel.Args
init_functions: register the operator methods as symbolic functions during finalization.
- level#
‘Integer(…)’
- dimension#
‘Integer(…)’
- stress#
‘OptionParam(…)’
- closures#
‘List(…)’
- small_slope#
‘Boolean(…)’
- derive_model()#
Build the declarative VAM model (sigma-map, projected mass, horizontal and vertical momentum, closures) and its 3-D projection rows; called by the base
__init__.
- chorin_split(dt=None, *, system_model=None)#
Split the lifted system into the Chorin predictor, pressure and corrector sub-systems
(SM_pred, SM_press, SM_corr), with row roles read structurally off the operators.Args
dt: time step symbol; defaults to a fresh positivedtthat the solver renames.system_model: an already configured SystemModel; attach ICs/BCs before the split and re-attach BCs onSM_predafter.
References
Chorin 1968, https://doi.org/10.1090/S0025-5718-1968-0242392-2