SAMSIM
Functions/Subroutines
mo_snow Module Reference

Module contains all things directly related to snow. More...

Functions/Subroutines

subroutine, public snow_coupling (H_abs_snow, phi_s, T_snow, H_abs, H, phi, T, m_snow, S_abs_snow, m, S_bu)
 Subroutine to couple a thin snow layer to the upper ice layer. More...
 
subroutine, public snow_precip (m_snow, H_abs_snow, thick_snow, psi_s_snow, dt, liquid_precip_in, T2m, solid_precip_in)
 Subroutine for calculating precipitation on an existing snow cover. More...
 
subroutine, public snow_precip_0 (H_abs, S_abs, m, T, dt, liquid_precip_in, T2m, solid_precip_in)
 Subroutine for calculating precipitation into the ocean. More...
 
subroutine, public snow_thermo (psi_l_snow, psi_s_snow, psi_g_snow, thick_snow, S_abs_snow, H_abs_snow, m_snow, T_snow, m, thick, H_abs)
 Subroutine for calculating snow thermodynamics. More...
 
subroutine, public snow_thermo_meltwater (psi_l_snow, psi_s_snow, psi_g_snow, thick_snow, S_abs_snow, H_abs_snow, m_snow, T_snow, m, thick, H_abs, melt_thick_snow)
 Subroutine for calculating snow thermodynamics. More...
 
subroutine, public sub_fl_q_0_snow_thin (m_snow, thick_snow, T_snow, psi_s, psi_l, psi_g, thick, T_bound, fl_Q_snow)
 Determines conductive Heat flux for combined top ice and snow layer. More...
 
subroutine, public sub_fl_q_snow (m_snow, thick_snow, T_snow, psi_s_2, psi_l_2, psi_g_2, thick_2, T_2, fl_Q)
 Determines conductive Heat flux between Snow and top ice layer. More...
 
subroutine, public sub_fl_q_0_snow (m_snow, thick_snow, T_snow, T_bound, fl_Q)
 Determines conductive Heat between snow layer and upper boundary layer. A limiting factor is added to increase stability of layers thinner then thick_min. More...
 
real(wp) function, public func_k_snow (m_snow, thick_snow)
 Calculates the thermal conductivity of the snow layer as a function of the density. More...
 

Detailed Description

Module contains all things directly related to snow.

Author
Philipp Griewank

Function/Subroutine Documentation

real(wp) function, public mo_snow::func_k_snow ( real(wp), intent(in)  m_snow,
real(wp), intent(in)  thick_snow 
)

Calculates the thermal conductivity of the snow layer as a function of the density.

Based on the Sturm et al 1997 data fit for densities greater then 0.156 g/cm**3. Warning, Sturm et al use g/cm**3, I use kg/m**3 Snow density probability functions can be included lated to raise the effective conductivity. Warning!: added 0.15 to the thermal conductivity.

Revision History
Forged by Philipp Griewank (2010-12-13)
subroutine, public mo_snow::snow_coupling ( real(wp), intent(inout)  H_abs_snow,
real(wp), intent(inout)  phi_s,
real(wp), intent(inout)  T_snow,
real(wp), intent(inout)  H_abs,
real(wp), intent(inout)  H,
real(wp), intent(inout)  phi,
real(wp), intent(inout)  T,
real(wp), intent(in)  m_snow,
real(wp), intent(in)  S_abs_snow,
real(wp), intent(in)  m,
real(wp), intent(in)  S_bu 
)

Subroutine to couple a thin snow layer to the upper ice layer.

Subroutine is activated when thick_snow<thick_min. The enthalpies of the two layers are adjusted until both layers have the same temperatures. The following approach is used.

  1. The enthalpies are adjusted so T_snow=0, and phi_s=1.
  2. The temperatures are calculated.
  3. If the ice temperature is greater 0 the balanced enthalpies are calculated directly. ELSE they are calculated iteratively.
Revision History
Written by Philipp Griewank, IMPRS (2011-01-20)
subroutine, public mo_snow::snow_precip ( real(wp), intent(inout)  m_snow,
real(wp), intent(inout)  H_abs_snow,
real(wp), intent(inout)  thick_snow,
real(wp), intent(inout)  psi_s_snow,
real(wp), intent(in)  dt,
real(wp), intent(in)  liquid_precip_in,
real(wp), intent(in)  T2m,
real(wp), intent(in), optional  solid_precip_in 
)

Subroutine for calculating precipitation on an existing snow cover.

Can optionally deal with separate solid and liquid precipitation or a single liquid input. The 2 meter temperature determines the temperature of the precipitation. In case of single input the 2 meter temperature determines if snow or rain falls. Snow makes the thickness grow according to the density of new snow(rho_snow), while rain falls into the snow without increasing snow depth. It is necessary to calculate the new psi_s_snow to ensure proper melting in snow_thermo.

Revision History
Sired by Philipp Griewank, IMPRS (2010-12-14)
subroutine, public mo_snow::snow_precip_0 ( real(wp), intent(inout)  H_abs,
real(wp), intent(inout)  S_abs,
real(wp), intent(in)  m,
real(wp), intent(in)  T,
real(wp), intent(in)  dt,
real(wp), intent(in)  liquid_precip_in,
real(wp), intent(in)  T2m,
real(wp), intent(in), optional  solid_precip_in 
)

Subroutine for calculating precipitation into the ocean.

Can optionally deal with separate solid and liquid precipitation or a single liquid input. The 2 meter temperature determines the temperature of the precipitation. In case of single input the 2 meter temperature determines if snow or rain falls. It is important, that the mass, energy and salt leaving the upper layer must be outputted. This is not the case. Temp!

Revision History
Copy and Pasted by Philipp Griewank, IMPRS (2011-01-10)
subroutine, public mo_snow::snow_thermo ( real(wp), intent(inout)  psi_l_snow,
real(wp), intent(inout)  psi_s_snow,
real(wp), intent(inout)  psi_g_snow,
real(wp), intent(inout)  thick_snow,
real(wp), intent(inout)  S_abs_snow,
real(wp), intent(inout)  H_abs_snow,
real(wp), intent(inout)  m_snow,
real(wp), intent(inout)  T_snow,
real(wp), intent(inout)  m,
real(wp), intent(inout)  thick,
real(wp), intent(inout)  H_abs 
)

Subroutine for calculating snow thermodynamics.

Behaves similar to mushy layer sea ice. Important differences are:

  1. no expulsion, thick_snow is raised if the volume expands.
  2. The liquid fraction is limited.
  3. When the liquid fraction exceeds it's limit the thickness of the snow layer is reduced. This is done as follows: Only applies if the fluid fraction is above the irreducible water content as defined in Coleuo-Lasaffre 98. thick_snow=thick_snow*(1._wp-(psi_s_old-psi_s_snow)/psi_s_old) Warning: the formula for liquid water content in Coleuo-Lasaffre contains 2 typos When the water exceeds the limit water runs down to the bottom of the snow layer. The saturated lower layer is added to the top ice layer.
Revision History
Fabricated by Philipp Griewank, IMPRS (2010-12-14)
Major redo, water saturated bottom snow added to top ice layer by Philipp Griewank (2010-12-14)
Parameters
[in,out]h_absTop ice layer variables
subroutine, public mo_snow::snow_thermo_meltwater ( real(wp), intent(inout)  psi_l_snow,
real(wp), intent(inout)  psi_s_snow,
real(wp), intent(inout)  psi_g_snow,
real(wp), intent(inout)  thick_snow,
real(wp), intent(inout)  S_abs_snow,
real(wp), intent(inout)  H_abs_snow,
real(wp), intent(inout)  m_snow,
real(wp), intent(inout)  T_snow,
real(wp), intent(inout)  m,
real(wp), intent(inout)  thick,
real(wp), intent(inout)  H_abs,
real(wp), intent(inout)  melt_thick_snow 
)

Subroutine for calculating snow thermodynamics.

most of the physics are taken from snow_thermo() based on lab observations: parts of the snow meltwater percolate directly into the ice

Revision History
introduced by Niels Fuchs (2016-10-13)
Parameters
[in,out]h_absTop ice layer variables
subroutine, public mo_snow::sub_fl_q_0_snow ( real(wp), intent(in)  m_snow,
real(wp), intent(in)  thick_snow,
real(wp), intent(in)  T_snow,
real(wp), intent(in)  T_bound,
real(wp), intent(out)  fl_Q 
)

Determines conductive Heat between snow layer and upper boundary layer. A limiting factor is added to increase stability of layers thinner then thick_min.

Revision History
first version by Philipp Griewank (2010-12-15)
Artificial limitation introduced by Philipp Griewank (2011-01-17)
Parameters
[in]t_boundT_bound temperature of boundary layer
subroutine, public mo_snow::sub_fl_q_0_snow_thin ( real(wp), intent(in)  m_snow,
real(wp), intent(in)  thick_snow,
real(wp), intent(in)  T_snow,
real(wp), intent(in)  psi_s,
real(wp), intent(in)  psi_l,
real(wp), intent(in)  psi_g,
real(wp), intent(in)  thick,
real(wp), intent(in)  T_bound,
real(wp), intent(out)  fl_Q_snow 
)

Determines conductive Heat flux for combined top ice and snow layer.

When thick_snow<thick_min.

Revision History
first version by Philipp Griewank (2011-01-19)
subroutine, public mo_snow::sub_fl_q_snow ( real(wp), intent(in)  m_snow,
real(wp), intent(in)  thick_snow,
real(wp), intent(in)  T_snow,
real(wp), intent(in)  psi_s_2,
real(wp), intent(in)  psi_l_2,
real(wp), intent(in)  psi_g_2,
real(wp), intent(in)  thick_2,
real(wp), intent(in)  T_2,
real(wp), intent(out)  fl_Q 
)

Determines conductive Heat flux between Snow and top ice layer.

Standard approach.

Revision History
first version by Philipp Griewank (2010-12-15)