CLASSIC
Canadian Land Surface Scheme including Biogeochemical Cycles
snowTempUpdate.f90 File Reference

Snow temperature calculations and cleanup after surface energy budget calculations. More...

Functions/Subroutines

subroutine snowtempupdate (GSNOW, TSNOW, WSNOW, RHOSNO, QMELTG, GZERO, TSNBOT, HTCS, HMFN, GCONSTS, GCOEFFS, GCONST, GCOEFF, TBAR, TSURF, ZSNOW, TCSNOW, HCPSNO, QTRANS, FI, DELZ, ILG, IL1, IL2, JL, IG)
 

Detailed Description

Snow temperature calculations and cleanup after surface energy budget calculations.

Author
D. Verseghy, M. Lazare

Function/Subroutine Documentation

◆ snowtempupdate()

subroutine snowtempupdate ( real, dimension (ilg), intent(inout)  GSNOW,
real, dimension (ilg), intent(inout)  TSNOW,
real, dimension (ilg), intent(inout)  WSNOW,
real, dimension(ilg), intent(inout)  RHOSNO,
real, dimension(ilg), intent(inout)  QMELTG,
real, dimension (ilg), intent(inout)  GZERO,
real, dimension(ilg), intent(inout)  TSNBOT,
real, dimension (ilg), intent(inout)  HTCS,
real, dimension (ilg), intent(inout)  HMFN,
real, dimension(ilg), intent(in)  GCONSTS,
real, dimension(ilg), intent(in)  GCOEFFS,
real, dimension(ilg), intent(in)  GCONST,
real, dimension(ilg), intent(in)  GCOEFF,
real, dimension(ilg,ig), intent(in)  TBAR,
real, dimension (ilg), intent(in)  TSURF,
real, dimension (ilg), intent(in)  ZSNOW,
real, dimension(ilg), intent(in)  TCSNOW,
real, dimension(ilg), intent(inout)  HCPSNO,
real, dimension(ilg), intent(in)  QTRANS,
real, dimension (ilg), intent(in)  FI,
real, dimension (ig), intent(in)  DELZ,
integer, intent(in)  ILG,
integer, intent(in)  IL1,
integer, intent(in)  IL2,
integer, intent(in)  JL,
integer, intent(in)  IG 
)
Parameters
[in,out]gzeroHeat conduction into soil surface \([W m^{-2}] (G(\Delta z_s))\)
[in,out]tsnbotTemperature at bottom of snow pack [K]
[in,out]gsnowHeat conduction into surface of snow pack \([W m^{-2}] (G(0))\)
[in,out]tsnowSnowpack temperature \([K/C] (T_s)\)
[in,out]wsnowLiquid water content of snow pack \([kg m^{-2}] (w_s)\)
[in,out]rhosnoDensity of snow \([kg m^{-3}] (\rho_s)\)
[in,out]qmeltgAvailable energy to be applied to melting of snow \([W m^{-2}]\)
[in,out]htcsInternal energy change of snow pack due to conduction and/or change in mass \([W m^{-2}] (I_s)\)
[in,out]hmfnEnergy associated with phase change of water in snow pack \([W m^{-2}]\)
[in]tsurfSnow surface temperature [K]
[in]zsnowDepth of snow pack \([m] (\Delta z_s)\)
[in]tcsnowThermal conductivity of snow \([W m^{-1} K^{-1}]\)
[in,out]hcpsnoHeat capacity of snow \([J m^{-3} K^1] (C_s)\)
[in]qtransShortwave radiation transmitted through the snow pack \([W m^{-2}]\)
[in]gconstIntercept used in equation relating snow surface heat flux to snow surface temperature \([W m^{-2}]\)
[in]gcoeffMultiplier used in equation relating snow surface heat flux to snow surface temperature \([W m^{-2} K^{-1}]\)
[in]fiFractional coverage of subarea in question on modelled area \([ ] (X_i)\)
[in]gconstsIntercept used in equation relating snow surface heat flux to snow surface temperature \([W m^{-2}]\)
[in]gcoeffsMultiplier used in equation relating snow surface heat flux to snow surface temperature \([W m^{-2} K^{-1}]\)
[in]tbarTemperatures of soil layers, averaged over modelled area [K]
[in]delzOverall thickness of soil layer [m]

In the 100 loop, the heat flux into the snow surface (without adjustments that may have been applied relating to partitioning of the residual of the surface energy balance among the surface flux terms) is calculated from the snow surface temperature TSURF, using the GCOEFFS and GCONSTS terms (see documentation of subroutine snowHeatCond). The temperature at the bottom of the snow pack, TSNBOT, is then calculated. Currently TSNBOT is determined as a simple average of the temperatures of the snow and the first soil layer, weighted according to their respective depths (and constrained to be \(\leq\) 0 C), but this is under review. The heat flux into the soil surface is then evaluated from TSNBOT and the GCOEFF and GCONST terms (see documentation of subroutine soilHeatFluxPrep). If the energy to be applied to the melting of snow, QMELTG, is negative (indicating an energy sink), QMELTG is added to the heat flux into the ground, GZERO, and reset to zero. The temperature of the snow pack is then stepped forward using the heat fluxes at the top and bottom of the snow pack, G(0) and \(G(\Delta z_s)\):

\(\Delta T_s = [G(0) - G(\Delta z_s)] \Delta t /(C_s \Delta z_s)\)

where \(C_s\) is the snow heat capacity, \(\Delta t\) the time step and \(\Delta z_s\) the snow depth. If the new snow temperature is greater than zero, the excess amount of heat is calculated and added to QMELTG and subtracted from GSNOW, and TSNOW is reset to 0 C. Finally, the shortwave radiation transmitted through the snow pack, QTRANS, is added to GZERO.

In the 200 loop, since liquid water is assumed only to exist in the snow pack if it is at 0 C, a check is carried out to determine whether the liquid water content WSNOW > 0 at the same time as the snow temperature TSNOW < 0. If so, the change of internal energy \(I_s\) of the snow pack as a result of this phase change is calculated as the difference in \(I_s\) between the beginning and end of the loop:

\(\Delta I_s = X_i \Delta [C_s T_s]/ \Delta t\)

where \(X_i\) represents the fractional coverage of the subarea under consideration relative to the modelled area. The total energy sink HADD available to freeze liquid water in the snow pack is calculated from TSNOW, and the amount of energy HCONV required to freeze all the available water is calculated from WSNOW. If HADD < HCONV, only part of WSNOW is frozen; this amount WFREZ is calculated from HADD and subtracted from WSNOW, the snow temperature is reset to 0 C, the frozen water is used to update the snow density, and the snow heat capacity is recalculated:

\(C_s = C_i [\rho_s /\rho_i] + C_w w_s/[\rho_w \Delta z_s]\)

where \(C_i\) and \(C_w\) are the heat capacities of ice and water respectively, \(w_s\) is the snow water content and \(\rho_s\), \(\rho_i\) and \(\rho_w\) are the densities of snow, ice and water respectively. If HADD > HCONV, the available energy sink is sufficient to freeze all of WSNOW. HADD is recalculated as HADD – HCONV, WFREZ is set to WSNOW and added to the snow density, WSNOW is set to zero, the snow heat capacity is recalculated and HADD is used to determine a new value of TSNOW. Finally, WFREZ is used to update the diagnostic variables HMFN describing phase changes of water in the snow pack, and the change in internal energy HTCS.