Snow Module

History

current version 1.3 - 15th January 2025

version date comment
1.0 15/Feb/2023 Original code
1.1 29/May/2023 change in configuration file to read initial snow water equivalent and water in snow
1.2 02/Dec/2024 added refreezing of water retained in snow and snow water holding capacity
1.3 15/Jan/2025 refreezing coefficient and snow water holding capacity read from configuration file

License

license: GNU GPL http://www.gnu.org/licenses/

Module Description

Module to simulate snow accumulation and melting. The code is a rewriting of the original code initially developed in the master thesis by Alessio Salandin and Giorgio Valè (2003)



Variables

Type Visibility Attributes Name Initial
type(grid_real), public :: cRefreeze

coefficient of refreeze (-)

integer(kind=short), public :: dtSnow

computation time step

type(grid_real), public :: excessWaterSnowFlux

excess of water retained in snow flux (m/s)

type(grid_real), public :: lowerTemperature

lower temperature for partitioning precipitation (°C)

type(grid_real), public :: meltCoefficient

melt coefficient (mm/day/°C)

type(grid_real), public :: meltTemperature

threshold temperature for melt starts (°C)

type(grid_real), public :: rainfall

liquid precipitation (m/s)

type(grid_real), public :: rainfallrate

precipitation liquid fraction (m/s)

type(grid_real), public :: snowConductivity

snow hydraulic conductivity (m/s)

type(grid_real), public :: snowMelt

snow melt amount within the time step (m)

type(grid_real), public :: swe

snow water equivalent (m)

type(grid_real), public :: swhc

snow water holding capacity (-)

type(grid_real), public :: upperTemperature

upper temperature for partitioning precipitation (°C)

type(grid_real), public :: waterInSnow

free water in snow pack (m)

type(grid_real), private :: QinSnow
type(grid_real), private :: QoutSnow
integer(kind=short), private :: fileUnitPointSWE
type(grid_integer), private :: meltModel

melt model map

type(ObservationalNetwork), private :: sites
type(ObservationalNetwork), private :: sitesSWE
type(DateTime), private :: timePointExport

Functions

public function DegreeDay(tempAir, tempMelt, cMelt) result(melt)

compute melt rate (m/s) using degreeday temperature based model

Arguments

Type IntentOptional Attributes Name
real(kind=float), intent(in) :: tempAir

air temperature (°C)

real(kind=float), intent(in) :: tempMelt

melting temperature (°C)

real(kind=float), intent(in) :: cMelt

melting coefficient (m/s/°C)

Return Value real(kind=float)

melt rate (m/s)

private function Refreezing(tempAir, tempMelt, cMelt, cRefreeze) result(freeze)

compute refreezing rate (m/s) of the water retained in snowpack

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=float), intent(in) :: tempAir

air temperature (°C)

real(kind=float), intent(in) :: tempMelt

melting temperature (°C)

real(kind=float), intent(in) :: cMelt

melting coefficient (m/s/°C)

real(kind=float), intent(in) :: cRefreeze

refreezing coefficient (-)

Return Value real(kind=float)

refreezing rate (m/s)


Subroutines

public subroutine SnowInit(inifile, mask, time)

Initialize snow model

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: inifile

stores configuration information

type(grid_integer), intent(in) :: mask
type(DateTime), intent(in) :: time

public subroutine SnowPointInit(pointfile, path_out, time)

Initialize export of point site data

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: pointfile

file containing coordinate of points

character(len=*), intent(in) :: path_out

path of output folder

type(DateTime), intent(in) :: time

start time

public subroutine SnowUpdate(time, mask)

compute accumulation and melting and update snow water equivalent

Arguments

Type IntentOptional Attributes Name
type(DateTime), intent(in) :: time
type(grid_integer), intent(in) :: mask

private subroutine SnowParameterUpdate(time)

update parameter map that change in time

Arguments

Type IntentOptional Attributes Name
type(DateTime), intent(in) :: time

private subroutine SnowPointExport(time)

Export of point site data

Arguments

Type IntentOptional Attributes Name
type(DateTime), intent(in) :: time