CLASSIC
Canadian Land Surface Scheme including Biogeochemical Cycles
|
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) |
Addresses melting of the snow pack.
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 | ||
) |
[in,out] | htc | Internal energy change of soil layer due to conduction and/or change in mass \([W m^{-2}]\) |
[in,out] | zsnow | Depth of snow pack [m] |
[in,out] | tsnow | Temperature of the snow pack [C] |
[in,out] | qmelt | Energy available for melting of snow \([W m^{-2}]\) |
[in,out] | r | Rainfall rate \([m s^{-1}]\) |
[in,out] | tr | Temperature of rainfall [C] |
[in,out] | gzero | Heat flow into soil surface \([W m^{-2}]\) |
[out] | ralb | Rainfall rate saved for snow albedo calculations \([m s^{-1}]\) |
[in,out] | hmfn | Energy associated with freezing or thawing of water in the snow pack \([W m^{-2}]\) |
[in,out] | htcs | Internal energy change of snow pack due to conduction and/or change in mass \([W m^{-2}]\) |
[in] | fi | Fractional coverage of subarea in question on modelled area [ ] |
[in,out] | hcpsno | Heat capacity of snow pack \([J m^{-3} K^{-1}]\) |
[in] | rhosno | Density of snow pack \([kg m^{-3}]\) |
[in,out] | wsnow | Liquid water content of snow pack \([kg m^{-2}]\) |
[in] | isand | Sand 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.