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

Addresses melting of the snow pack. More...

Functions/Subroutines

subroutine snowmelt (ZSNOW, TSNOW, QMELT, R, TR, GZERO, RALB, HMFN, HTCS, HTC, FI, HCPSNO, RHOSNO, WSNOW, ISAND, IG, ILG, IL1, IL2, JL)
 

Detailed Description

Addresses melting of the snow pack.

Author
D. Verseghy, M. Lazare

Function/Subroutine Documentation

◆ snowmelt()

subroutine snowmelt ( real, dimension (ilg), intent(inout)  ZSNOW,
real, dimension (ilg), intent(inout)  TSNOW,
real, dimension (ilg), intent(inout)  QMELT,
real, dimension (ilg), intent(inout)  R,
real, dimension (ilg), intent(inout)  TR,
real, dimension (ilg), intent(inout)  GZERO,
real, dimension (ilg), intent(out)  RALB,
real, dimension (ilg), intent(inout)  HMFN,
real, dimension (ilg), intent(inout)  HTCS,
real, dimension (ilg,ig), intent(inout)  HTC,
real, dimension (ilg), intent(in)  FI,
real, dimension(ilg), intent(inout)  HCPSNO,
real, dimension(ilg), intent(in)  RHOSNO,
real, dimension (ilg), intent(inout)  WSNOW,
integer, dimension (ilg,ig), intent(in)  ISAND,
integer, intent(in)  IG,
integer, intent(in)  ILG,
integer, intent(in)  IL1,
integer, intent(in)  IL2,
integer, intent(in)  JL 
)
Parameters
[in,out]htcInternal energy change of soil layer due to conduction and/or change in mass \([W m^{-2}]\)
[in,out]zsnowDepth of snow pack [m]
[in,out]tsnowTemperature of the snow pack [C]
[in,out]qmeltEnergy available for melting of snow \([W m^{-2}]\)
[in,out]rRainfall rate \([m s^{-1}]\)
[in,out]trTemperature of rainfall [C]
[in,out]gzeroHeat flow into soil surface \([W m^{-2}]\)
[out]ralbRainfall rate saved for snow albedo calculations \([m s^{-1}]\)
[in,out]hmfnEnergy associated with freezing or thawing of water in the snow pack \([W m^{-2}]\)
[in,out]htcsInternal energy change of snow pack due to conduction and/or change in mass \([W m^{-2}]\)
[in]fiFractional coverage of subarea in question on modelled area [ ]
[in,out]hcpsnoHeat capacity of snow pack \([J m^{-3} K^{-1}]\)
[in]rhosnoDensity of snow pack \([kg m^{-3}]\)
[in,out]wsnowLiquid water content of snow pack \([kg m^{-2}]\)
[in]isandSand content flag

Melting of the snow pack occurs if a source of available energy QMELT is produced as a result of the solution of the surface energy balance, or if the snow pack temperature is projected to go above 0 C in the current time step (the available energy thus produced is added to QMELT in subroutine snowTempUpdate). The change in internal energy in the snow pack is calculated at the beginning and end of the subroutine, and stored in diagnostic variable HTCS (see notes on subroutine snowAddNew).

The calculations in the 100 loop are performed if QFREZ and the snow depth ZSNOW are both greater than zero. The available energy HADD to be applied to the snow pack is calculated from QMELT. The amount of energy required to raise the snow pack temperature to 0 C and melt it completely is calculated as HCONV. If HADD \(\leq\) HCONV, the depth of snow ZMELT that is warmed to 0 C and melted is calculated from HADD. (It is assumed that melting of an upper layer of snow can occur even if the lower part of the snow pack is still below 0 C.) The amount of water generated by melting the snow, RMELTS, is calculated from ZMELT, and the temperature of the meltwater TRMELT is set to 0 C. ZMELT is subtracted from ZSNOW, the heat capacity of the snow is recalculated, and HTCS is corrected for the amount of heat used to warm the removed portion of the snow pack.

If HADD > HCONV, the amount of available energy is sufficient to warm and melt the whole snow pack, with some energy left over. The amount of water generated by melting the snow, RMELTS, is calculated from ZSNOW, and the total amount of water reaching the soil, RMELT, is obtained by adding the liquid water content of the snow pack, WSNOW, to RMELTS. HADD is recalculated as HADD – HCONV, and used to calculate TRMELT. The snow depth, heat capacity, temperature and water content are set to zero, and HTCS is corrected for the amount of heat that was used to warm the snow pack to 0 C.

After the IF block, the diagnostic variable HMFN describing melting or freezing of water in the snow pack is updated using RMELTS, the temperature of the rainfall rate reaching the soil is updated using TRMELT, and RMELT is added to the rainfall rate R. QMELT is set to zero, and a flag variable RALB, used later in subroutine snowAging, is set to the rainfall rate reaching the ground.

In the 200 loop, a check is performed to see whether QMELT is still greater than zero and the modelled area is not an ice sheet (ISAND > -4). In this case QMELT is added to the ground heat flux GZERO, and the internal energy diagnostics HTCS and HTC for the snow and soil respectively are corrected. The flag variable RALB is evaluated as above.