SAMSIM
|
Computes the Salt fluxes caused by gravity drainage. More...
Functions/Subroutines | |
subroutine, public | fl_grav_drain (S_br, S_bu, psi_l, psi_s, psi_g, thick, S_abs, H_abs, T, m, dt, Nlayer, N_active, ray, T_bottom, S_bu_bottom, grav_drain, grav_temp, grav_salt, grav_heat_flag, harmonic_flag, fl_brine_bgc) |
Calculates fluxes caused by gravity drainage. More... | |
subroutine, public | fl_grav_drain_simple (psi_s, psi_l, thick, S_abs, S_br, Nlayer, N_active, ray, grav_drain, harmonic_flag) |
Calculates salinity to imitate the effects gravity drainage. More... | |
Computes the Salt fluxes caused by gravity drainage.
COPYRIGHT
This file is part of SAMSIM.
SAMSIM is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
SAMSIM is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with SAMSIM. If not, see http://www.gnu.org/licenses/.
subroutine, public mo_grav_drain::fl_grav_drain | ( | real(wp), dimension(nlayer), intent(in) | S_br, |
real(wp), dimension(nlayer), intent(in) | S_bu, | ||
real(wp), dimension(nlayer), intent(in) | psi_l, | ||
real(wp), dimension(nlayer), intent(in) | psi_s, | ||
real(wp), dimension(nlayer), intent(in) | psi_g, | ||
real(wp), dimension(nlayer), intent(in) | thick, | ||
real(wp), dimension(nlayer), intent(inout) | S_abs, | ||
real(wp), dimension(nlayer), intent(inout) | H_abs, | ||
real(wp), dimension(nlayer), intent(in) | T, | ||
real(wp), dimension(nlayer), intent(inout) | m, | ||
real(wp), intent(in) | dt, | ||
integer, intent(in) | Nlayer, | ||
integer, intent(in) | N_active, | ||
real(wp), dimension(nlayer-1), intent(out) | ray, | ||
real(wp), intent(in) | T_bottom, | ||
real(wp), intent(in) | S_bu_bottom, | ||
real(wp), intent(inout) | grav_drain, | ||
real(wp), intent(inout) | grav_temp, | ||
real(wp), intent(inout) | grav_salt, | ||
integer, intent(in) | grav_heat_flag, | ||
integer, intent(in) | harmonic_flag, | ||
real(wp), dimension(nlayer+1,nlayer+1), intent(inout), optional | fl_brine_bgc | ||
) |
Calculates fluxes caused by gravity drainage.
If the Rayleigh number of a layer is higher then the critical value, brine leaves the layer by a theoretical brine channel. The discharged brine flows downward through all layers directly into the underlying ocean. To preserve mass the same amount of water flows upwards through all lower layers. In contrast to the downward flux the upward flux is assumed to be in thermal equilibrium thus moving salt and heat to each layer. The upward flux is a standard upwind advection. The downward flux of a layer over the timestep is = x*(Ray-Ray_crit)*dt*thick.
| ->__|__<- |______________| v |__________________ | ^ ->| |<- ^ |______________| |__________________ | ^ ^ ->|||||<- ^ ^ |______________|vvv|__________________ ^ ^ ^ ^ ^ ^ This superb ascii art is supposed to show how the assumed fluxes flow downward through a brine channel and upwards through the layer. x and r are passed on to enable easy optimization. The effect of the upward moving brine is calculated in mass_transfer.
IMPORTANT: The height assumptions are special. The bottom of the ice edge is assumed to be at psi_s(N_active)/psi_s_min *thick_0
The first approach assumed that brine drainage occurred between two layers but performed poorly.
If grav_heat_flag is set to 2 the amount of heat transported out of the ice will be compensated in the lowest layer
[out] | ray | Rayleigh number |
subroutine, public mo_grav_drain::fl_grav_drain_simple | ( | real(wp), dimension(nlayer), intent(in) | psi_s, |
real(wp), dimension(nlayer), intent(in) | psi_l, | ||
real(wp), dimension(nlayer), intent(in) | thick, | ||
real(wp), dimension(nlayer), intent(inout) | S_abs, | ||
real(wp), dimension(nlayer), intent(in) | S_br, | ||
integer, intent(in) | Nlayer, | ||
integer, intent(in) | N_active, | ||
real(wp), dimension(nlayer-1), intent(out) | ray, | ||
real(wp), intent(inout) | grav_drain, | ||
integer, intent(in) | harmonic_flag | ||
) |
Calculates salinity to imitate the effects gravity drainage.
Based on the assumption that super critical Rayleigh numbers are quickly reduced below the critical Rayleigh number. Proposed as a very simplified parametrisation of gravity drainage. Includes no fluxes of any kind, instead bulk salinity is simply reduced when ever the Rayleigh number is above the critical values. The parametrization begins from the bottom layers and moves upward.
[out] | ray | Rayleigh number |