SAMSIM
Functions/Subroutines
mo_grav_drain Module Reference

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...
 

Detailed Description

Computes the Salt fluxes caused by gravity drainage.

Author
Philipp Griewank

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/.

Function/Subroutine Documentation

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

Revision History
created by Philipp Griewank, IMPRS (2010-08-27)
Completely revised to assume brine channels by Philipp Griewank , IMPRS (2010-11-05)
Mass_transfer is used to advect H and S by Philipp Griewank, IMPRS (2010-11-05)
Added condition S_br(k)>S_br(k+1) by Philipp Griewank. IMPRS (2011-04-29)
Added harmonic mean for permeability by Philipp Griewank (2014-01-05)
Parameters
[out]rayRayleigh 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.

Revision History
created by Philipp Griewank, IMPRS (2012-01-01)
Parameters
[out]rayRayleigh number