Warning, /doc/examples/plume_on_slope/plume_on_slope.rst is written in an unsupported language. File is not indexed.
view on githubraw file Latest commit 0bad585a on 2022-02-16 18:55:09 UTC
3ceb1ce0a9 Jeff*0001 .. _tutorial_plume_on_slope:
0002
d67096e55c Jeff*0003 Gravity Plume On a Continental Slope
0004 ====================================
0005
0006 (in directory: :filelink:`verification/tutorial_plume_on_slope/`)
0007
0008 .. figure:: figs/billows.png
0009 :width: 80%
0010 :align: center
0011 :alt: plume on slope image
0012 :name: tut_plume_on_slop_out
0013
0014 Temperature after 23 hours of cooling. The cold dense water is mixed with ambient water as it accelerates down the slope and hence is warmer than the unmixed plume.
0015
0016 An important test of any ocean model is the ability to represent the
0017 flow of dense fluid down a slope. One example of such a flow is a
0018 non-rotating gravity plume on a continental slope, forced by a limited
0019 area of surface cooling above a continental shelf. Because the flow is
0020 non-rotating, a two dimensional model can be used in the across slope
0021 direction. The experiment is non-hydrostatic and uses open-boundaries to
0022 radiate transients at the deep water end. (Dense flow down a slope can
0023 also be forced by a dense inflow prescribed on the continental shelf;
0024 this configuration is being implemented by the DOME (Dynamics of
0025 Overflow Mixing and Entrainment) collaboration to compare solutions in
0026 different models).
0027
0028 The fluid is initially unstratified. The surface buoyancy loss
0029 :math:`B_0` (dimensions of L\ :math:`^2`\ T\ :math:`^{-3}`) over a
0030 cross-shelf distance :math:`R` causes vertical convective mixing and
0031 modifies the density of the fluid by an amount
0032
0033 .. math:: \Delta \rho = \frac{B_0 \rho_0 t}{g H}
0034
0035 where :math:`H` is the depth of the shelf, :math:`g` is the
0036 acceleration due to gravity, :math:`t` is time since onset of cooling
0037 and :math:`\rho_0` is the reference density. Dense fluid slumps under
0038 gravity, with a flow speed close to the gravity wave speed:
0039
0040 .. math::
0041
0042 U
0043 \sim \sqrt{g' H}
0044 \sim \sqrt{ \frac{g \Delta \rho H}{\rho_0} }
0045 \sim \sqrt{B_0 t}
0046
0047 A steady state is rapidly established in which the buoyancy flux out of
0048 the cooling region is balanced by the surface buoyancy loss. Then
0049
0050 .. math:: U \sim (B_0 R)^{1/3} \mbox{ ; } \Delta \rho \sim \frac{\rho_0}{g H} (B_0 R)^{2/3}
0051
0052 The Froude number of the flow on the shelf is close to unity (but in
0053 practice slightly less than unity, giving subcritical flow). When the
0054 flow reaches the slope, it accelerates, so that it may become
0055 supercritical (provided the slope angle :math:`\alpha` is steep
0056 enough). In this case, a hydraulic control is established at the shelf
0057 break. On the slope, where the Froude number is greater than one, and
0058 gradient Richardson number (defined as :math:`Ri \sim g' h^*/U^2` where
0059 :math:`h^*` is the thickness of the interface between dense and ambient
0060 fluid) is reduced below 1/4, Kelvin-Helmholtz instability is possible,
0061 and leads to entrainment of ambient fluid into the plume, modifying the
0062 density, and hence the acceleration down the slope. Kelvin-Helmholtz
0063 instability is suppressed at low Reynolds and Peclet numbers given by
0064
0065 .. math:: Re \sim \frac{U h}{ \nu} \sim \frac{(B_0 R)^{1/3} h}{\nu} \mbox{ ; } Pe = Re Pr
0066
0067 where :math:`h` is the depth of the dense fluid on the slope. Hence
0068 this experiment is carried out in the high Re, Pe regime. A further
0069 constraint is that the convective heat flux must be much greater than
0bad585a21 Navi*0070 the diffusive heat flux (Nusselt number :math:`\gg 1`). Then
d67096e55c Jeff*0071
0bad585a21 Navi*0072 .. math:: Nu = \frac{U h^* }{\kappa} \gg 1
d67096e55c Jeff*0073
0074 Finally, since we have assumed that the convective mixing on the shelf
0075 occurs in a much shorter time than the horizontal equilibration, this
0bad585a21 Navi*0076 implies :math:`H/R \ll 1`.
d67096e55c Jeff*0077
0078 Hence to summarize the important non-dimensional parameters, and the
0079 limits we are considering:
0080
0081 .. math::
0082
0bad585a21 Navi*0083 \frac{H}{R} \ll 1 \mbox{ ; } Re \gg 1 \mbox{ ; } Pe \gg 1 \mbox{ ; } Nu \gg 1
0084 \mbox{ ; } \mbox{ ; } Ri < 1/4 .
d67096e55c Jeff*0085
0086 In addition we are assuming that the slope is steep enough to provide
0087 sufficient acceleration to the gravity plume, but nonetheless much less
0088 that 1:1, since many Kelvin-Helmholtz billows appear on the
0bad585a21 Navi*0089 slope, implying horizontal length scale of the slope :math:`\gg` the depth
d67096e55c Jeff*0090 of the dense fluid.
0091
0092 Configuration
0093 -------------
0094
0095 The topography, spatial grid, forcing and initial conditions are all
0096 specified in binary data files generated using matlab script
0097 :filelink:`verification/tutorial_plume_on_slope/input/gendata.m` and detailed in :numref:`tut_plume_on_slope_config`. Other model
0098 parameters are specified in :filelink:`input/data <verification/tutorial_plume_on_slope/input/data>` and
0099 :filelink:`input/data.obcs <verification/tutorial_plume_on_slope/input/data.obcs>` and detailed in :numref:`tut_plume_on_slope_mod_parms`.
0100
0101 .. _tut_plume_on_slope_config:
0102
0103 Binary input data
0104 -----------------
0105
0106 .. figure:: figs/dx.png
0107 :width: 80%
0108 :align: center
0109 :alt: plume on slope dx
0110 :name: dx-plume-on-slope
0111
0112 Horizontal grid spacing, :math:`\Delta x`, in the across-slope direction for the gravity plume experiment.
0113
0114 |
0115
0116 .. figure:: figs/Depth.png
0117 :width: 80%
0118 :align: center
0119 :alt: plume on slope Depth
0120 :name: depth-plume-on-slope
0121
0122 Topography, :math:`h(x)`, used for the gravity plume experiment.
0123
0124 |
0125
0126 .. figure:: figs/Qsurf.png
0127 :width: 80%
0128 :align: center
0129 :alt: plume on slope Qsurf
0130 :name: Q-plume-on-slope
0131
0132 Upward surface heat flux, :math:`Q(x)`, used as forcing in the gravity plume experiment.
0133
0134 The domain is :math:`200` m deep and :math:`6.4` km across. Uniform
0135 resolution of :math:`60\times3^1/_3` m is used in the vertical and
0136 variable resolution of the form shown in :numref:`dx-plume-on-slope`
0137 with 320 points is used in the horizontal. The formula for
0138 :math:`\Delta x` is:
0139
0140 .. math::
0141
0142 \Delta x(i) = \Delta x_1 + ( \Delta x_2 - \Delta x_1 )
0143 ( 1 + \tanh{\left(\frac{i-i_s}{w}\right)} ) /2
0144
0145 where
0146
0147 .. math::
0148
0149 \begin{aligned}
0bad585a21 Navi*0150 Nx & = 320 \\
0151 Lx & = 6400 \;\; \mbox{(m)} \\
0152 \Delta x_1 & = \frac{2}{3} \frac{Lx}{Nx} \;\; \mbox{(m)} \\
0153 \Delta x_2 & = \frac{Lx/2}{Nx-Lx/(2 \Delta x_1)} \;\; \mbox{(m)} \\
0154 i_s & = Lx/( 2 \Delta x_1 ) \\
0155 w & = 40\end{aligned}
d67096e55c Jeff*0156
0157 Here, :math:`\Delta x_1` is the resolution on the shelf,
0158 :math:`\Delta x_2` is the resolution in deep water and :math:`Nx` is the
0159 number of points in the horizontal.
0160
0161 The topography, shown in :numref:`depth-plume-on-slope`, is given by:
0162
0163 .. math:: H(x) = -H_o + (H_o - h_s) ( 1 + \tanh{\left(\frac{x-x_s}{L_s}\right)} ) / 2
0164
0165 where
0166
0167 .. math::
0168
0169 \begin{aligned}
0bad585a21 Navi*0170 H_o & = 200 \;\; \mbox{(m)} \\
0171 h_s & = 40 \;\; \mbox{(m)} \\
0172 x_s & = 1500 + Lx/2 \;\; \mbox{(m)} \\
0173 L_s & = \frac{(H_o - h_s)}{2 s} \;\; \mbox{(m)} \\
0174 s & = 0.15\end{aligned}
d67096e55c Jeff*0175
0176 Here, :math:`s` is the maximum slope, :math:`H_o` is the maximum depth,
0177 :math:`h_s` is the shelf depth, :math:`x_s` is the lateral position of
0178 the shelf-break and :math:`L_s` is the length-scale of the slope.
0179
0180 The forcing is through heat loss over the shelf, shown in
0181 :numref:`Q-plume-on-slope` and takes the form of a fixed flux with
0182 profile:
0183
0184 .. math:: Q(x) = Q_o ( 1 + \tanh{\left(\frac{x - x_q}{L_q}\right)} ) / 2
0185
0186 where
0187
0188 .. math::
0189
0190 \begin{aligned}
0bad585a21 Navi*0191 Q_o & = 200 \;\; \mbox{(W m$^{-2}$)} \\
0192 x_q & = 2500 + Lx/2 \;\; \mbox{(m)} \\
0193 L_q & = 100 \;\; \mbox{(m)}\end{aligned}
d67096e55c Jeff*0194
0195 Here, :math:`Q_o` is the maximum heat flux, :math:`x_q` is the
0196 position of the cut-off, and :math:`L_q` is the width of the cut-off.
0197
0198 The initial temperature field is unstratified but with random
0199 perturbations, to induce convection early on in the run. The random
0200 perturbation are calculated in computational space and because of the
0201 variable resolution introduce some spatial correlations, but this does
0202 not matter for this experiment. The perturbations have range
0203 :math:`0-0.01` :math:`^{\circ}\mathrm{K}`.
0204
0205 Code configuration
0206 ------------------
0207
0208 The computational domain (number of gridpoints) is specified in
0209 :filelink:`code/SIZE.h <verification/tutorial_plume_on_slope/code/SIZE.h>`
0210 and is configured as a single tile of dimensions
0211 :math:`320\times1\times60`.
0212
0213 To compile the model code for this experiment, the non-hydrostatic
0214 algorithm needs to be enabled, and the open-boundaries package (:filelink:`pkg/obcs`) is required:
0215
0216 - Non-hydrostatic terms and algorithm are enabled with ``#define``
0217 :varlink:`ALLOW_NONHYDROSTATIC` in :filelink:`code/CPP_OPTIONS.h <verification/tutorial_plume_on_slope/code/CPP_OPTIONS.h>`
0218 and activated with
0219 :varlink:`nonHydrostatic` ``=.TRUE,`` in namelist ``PARM01``
0220 of :filelink:`input/data <verification/tutorial_plume_on_slope/input/data>`.
0221
0222 - Open boundaries are enabled by adding line ``obcs`` to package
0223 configuration file :filelink:`code/packages.conf <verification/tutorial_plume_on_slope/code/packages.conf>`
0224 and activated via
0225 :varlink:`useOBCS` ``=.TRUE,`` in namelist ``PACKAGES``
0226 of :filelink:`input/data.pkg <verification/tutorial_plume_on_slope/input/data.pkg>`.
0227
0228 .. _tut_plume_on_slope_mod_parms:
0229
0230 Model parameters
0231 ----------------
0232
0233 .. table:: Model parameters used in the gravity plume experiment.
0234 :name: tut_plume_parm_table
0235
0236 +-----------------------+---------------------------------------------------------+----------------------------------------------+
0237 | **Parameter** | **Value** | **Description** |
0238 +=======================+=========================================================+==============================================+
0239 | :math:`g` | 9.81 m s\ :sup:`-2` | acceleration due to gravity |
0240 +-----------------------+---------------------------------------------------------+----------------------------------------------+
0241 | :math:`\rho_o` | 999.8 kg m\ :sup:`-3` | reference density |
0242 +-----------------------+---------------------------------------------------------+----------------------------------------------+
0243 | :math:`\alpha` | 2 :math:`\times` 10\ :sup:`-4` K\ :sup:`-1` | expansion coefficient |
0244 +-----------------------+---------------------------------------------------------+----------------------------------------------+
0245 | :math:`A_h` | 1 :math:`\times` 10\ :sup:`-2` m\ :sup:`2` s\ :sup:`-1` | horizontal viscosity |
0246 +-----------------------+---------------------------------------------------------+----------------------------------------------+
0247 | :math:`A_v` | 1 :math:`\times` 10\ :sup:`-3` m\ :sup:`2` s\ :sup:`-1` | vertical viscosity |
0248 +-----------------------+---------------------------------------------------------+----------------------------------------------+
0249 | :math:`\kappa_h` | 0 m\ :sup:`2` s\ :sup:`-1` | (explicit) horizontal diffusion |
0250 +-----------------------+---------------------------------------------------------+----------------------------------------------+
0251 | :math:`\kappa_v` | 0 m\ :sup:`2` s\ :sup:`-1` | (explicit) vertical diffusion |
0252 +-----------------------+---------------------------------------------------------+----------------------------------------------+
0253 | :math:`\Delta t` | 20 s | time step |
0254 +-----------------------+---------------------------------------------------------+----------------------------------------------+
0255 | :math:`\Delta z` | 3.33333 m | vertical grid spacing |
0256 +-----------------------+---------------------------------------------------------+----------------------------------------------+
0257 | :math:`\Delta x` | 13.3333 - 39.5 m | horizontal grid spacing |
0258 +-----------------------+---------------------------------------------------------+----------------------------------------------+
0259
0260 The model parameters (:numref:`tut_plume_parm_table`) are specified in
0261 :filelink:`input/data <verification/tutorial_plume_on_slope/input/data>`
0262 and if not assume the default values as defined in :numref:`customize_model`.
0263 A linear equation of state is used,
0264 :varlink:`eosType` ``=’LINEAR’``, but only temperature is active, :varlink:`sBeta` ``=0.E-11``.
0265 For the given heat flux, :math:`Q_o`, the buoyancy forcing is
0266 :math:`B_o = \frac{g \alpha Q}{\rho_o c_p} \sim
0267 10^{-7}` m\ :sup:`2` s\ :sup:`-3`. Using :math:`R=10^3` m, the
0268 shelf width, this gives a velocity scale of
0269 :math:`U\sim 5 \times 10^{-2}` m s\ :sup:`-1` for the initial front but
0270 will accelerate by an order of magnitude over the slope. The temperature
0271 anomaly will be of order :math:`\Delta \theta \sim 3
0272 \times 10^{-2}` K. The viscosity is constant and gives a Reynolds number
0273 of :math:`100`, using :math:`h=20` m for the initial front and will be
0274 an order magnitude bigger over the slope. There is no explicit diffusion
0275 but a non-linear advection scheme is used for temperature which adds
0276 enough diffusion so as to keep the model stable. The time-step is set to
0277 :math:`20` s and gives Courant number order one when the flow reaches
0278 the bottom of the slope.
0279