nonhydro#
Module: fridom.nonhydro
Submodules
Module that stores all available grids for the non-hydrostatic model. |
|
A collection of modules for the nonhydrostatic model. |
|
Initial Conditions for the Nonhydrostatic Model |
|
Time Steppers |
|
Utility functions and classes for the FRIDOM framework. |
|
Projection |
Classes, Functions, and Variables
Configuration class for the fridom framework. |
Instances of the Logger class represent a single logging channel. |
|
Model settings for the 3D non-hydrostatic model. |
|
|
|
|
Class for field variables in the framework. |
|
Stores the model state variables and the time information. |
|
Base class for the model. |
A 3D non-hydrostatic Boussinesq model.
Description#
The model is based on the ps3D model by Prof. Carsten Eden ( ceden/ps3D ).
System of Equations#
The model solves the scaled non-hydrostatic Boussinesq equations given by the momentum equations:
The buoyancy equation:
And the continuity equation:
- with:
\(\boldsymbol{u} = (u, v, w)\) the velocity vector,
\(p\) the model pressure,
\(b\) the model buoyancy,
\(f\) the Coriolis parameter,
\(N\) the buoyancy frequency,
\(\boldsymbol{F}_i\) are sources and sinks,
\(Ro\) the Rossby number (1 for unscaled equations),
\(\delta\) the aspect ratio (1 for unscaled equations),
Meaning of Pressure and Buoyancy#
TL;DR:
The pressure \(p\), buoyancy \(b\), and buoyancy frequency \(N\) are related to the real pressure and density by the following equations:
- with:
\(\pi\) the real pressure,
\(\pi_s\) the hydrostatic background pressure,
\(\rho'\) the density perturbation,
\(\rho_0\) the constant Boussinesq density,
\(\rho_s\) the background density profile.
Let \(\rho\) be the real density (the one that we would measure in a real fluid), and \(\pi\) be the real pressure. In this section, we link the model pressure \(p\), the model buoyancy \(b\), and the buoyancy frequency \(N\) to the real pressure and density. For that, we start with the full Boussinesq equations (neglect scaling and source terms):
where \(D_t = \partial_t + \boldsymbol{u} \cdot \nabla\) is the material derivative, \(\rho_0\) is the constant Boussinesq density. We further decompose the density into a part that only depends on the vertical coordinate \(\rho_s(z)\), and a perturbation \(\rho'\):
We now solve the vertical momentum equation for \(w=0\), and \(\rho' = 0\):
where \(\pi_s\) is the hydrostatic background pressure. Defining the pressure \(p\), and buoyancy \(b\) as:
the Boussinesq equations become:
To obtain a tendency equation for the buoyancy, we compute its differential:
where the buoyancy frequency \(N\) is defined as:
Divide the differential by \(dt\) to obtain the tendency equation:
By further assuming that the density is conserved, we obtain the buoyancy equation:
Scaling#
The system is nondimensionalized by introducing the following nondimensional coordinates:
where \(L\) is the horizontal length scale, \(H\) is the vertical length scale, and \(\Omega\) is the rotation rate. The nondimensional variables are alwqays denoted with the prime. The nondimensional model parameters are:
where \(N^*\) is the order of magnitude of the buoyancy frequency. The nondimensional model variables are:
where \(U\) is the order of magnitude of the horizontal velocity, \(W\) is the order of magnitude of the vertical velocity, \(P\) is the order of magnitude of the pressure, and \(B\) is the order of magnitude of the buoyancy. We define the scaling parameters as follows:
where \(Ro\) is the Rossby number, \(\delta\) is the aspect ratio, and \(L_r\) is the Rossby deformation radius. Inserting the nondimensional variables into the continuity equation, we obtain the following scaling relation for the aspect ratio:
We assume a small Rossby number and that the momentum equations are in balance (e.g. the time derivatives vanish). This leads to the following scaling relation:
We further assume that the length scale is of the same order of magnitude as the Rossby deformation radius. Or in other words, a Froude number of order one. From this assumption, we can relate the buoyancy frequency to the rotation rate and the aspect ratio:
Inserting everything into the full Boussinesq equations, we obtain the scaled equations that are given at the beginning.
Time Stepping#
We recall that the full system of equations is given by (neglecting scaling):
where \(\Delta_{\boldsymbol{u}}\) includes all tendency terms on the right hand side of the momentum equations except the pressure gradient term. And the same for \(\Delta_b\). Taking the divergence of the momentum equations, we obtain the Poisson equation for the pressure:
This means that the pressure is implicitly given by the velocity and buoyancy. Hence, the full system of equations can be written as:
where \(\boldsymbol{z} = (\boldsymbol{u}, b)\) is the state vector, and
\(\boldsymbol{f}\) is the right hand side of the equations. For the explicit
time stepping schemes, we must evaluate the right hand side of the equations at
a given time level. This is done by first computing the tendency terms
\(\Delta_{\boldsymbol{u}}\) and \(\Delta_b\), and then solving the
Poisson equation for the pressure. And finally, we remove the pressure gradient
term from the tendency terms to obtain the right hand side of the equations.
For more details on the pressure solver, see
fridom.nonhydro.modules.pressure_solvers.