A model consisting of physical and statistical components to calculate the surface mass balance of individual or multiple glaciers.
Glacier surface mass balances are quantified by calculating the difference between the glacier mass gain ascribed to deposited snow and the mass loss associated with melting of bare an debris-covered ice as well as supraglacial snow and firn. The initial glacier outlines and surface conditions can be defined in
'debrisThickness' (for more information see
inputGlacierSMBM-class). Accumulation and ablation is iteratively modelled for every discrete time step (e.g. month, day or hour). The function
snowFall is applied to quantify accumulation for every pixel and time step (note: mass input from redistributed snow has not yet been implemented). Ablation does only occur in the model at air temperatures above freezing since the complex process of percolation, retention and refreezing of meltwater is (so far) neglected. The extent and height of supraglacial snow changes with time due to the interplay of snow accumulation (
snowFall) and snow melt (
snowMelt). Ablation of debris-free (
iceMelt) or debris-covered glacier ice (
debrisCoveredIceMelt) sets in as soon as the overlying snow pack is completely melted and takes place as long as a pixel is snow-free. For more information please refer to the applied funtions, the examples below or the original publication (Groos et al., submitted).
The potential model output consists of sixteen individual
'RasterLayers' and a summarising table:
Accumulation rate (for every time step).
Accumulation sum (for the modelling period).
Glacial ablation rate (for every time step).
Glacial ablation sum (for the modelling period).
Ice melt rate (for every time step).
Ice melt sum (for the modelling period).
Debris ice melt rate (for every time step).
Debris ice melt sum (for the modelling period).
Firn melt rate (for every time step).
Firn melt sum (for the modelling period).
Snow melt rate (for every time step).
Snow melt sum (for the modelling period).
Snow cover (for every time step).
Snow height (for the modelling period).
Glacier surface mass balance (for every time step).
Glacier surface mass balance (for the modelling period).
Output table consisting of the spatial average of the fourteen variables above for every time step.
The following input variables in
inputGlacierSMBM-class are the requested minimum to run the model:
'date' (date and time of each
RasterLayer in the following
'airT' (for every time step)
'netRad' (for every time step)
'precip' (for every time step)
'airDensity' (stationary or for every time step)
'glacierMask' (stationary or for every time step)
'iceMask' (stationary or for every time step)
'firnMask' (stationary or for every time step)
'debrisMask' (stationary or for every time step)
'debrisThickness' (stationary or for every time step)
If the investigated glacier or glacier area is debris-free or snow-free, pass a
'RasterLayer' with the extent of
'glacierMask' and all values = 0 (zero means no snow or no debris, respectively) to the respective
'inRadLW' are provided instead of
'netRad', the energy-balance at the atmosphere-debris interface is calculated taking the
'thermalEmissivity' of the debris layer into account.
A default value (constant in space and time) is given for each additional argument in
'thermalConductivity'. If desired, the default parameters can be modified. Furthermore, there is the option to pass distributed values (stationary or for every time step) instead of general values using the related 'dis*'-arguments like
'disThermalConductivity'. In this case, the general parameter is ignored.
File format of written ouput: GeoTIFF: GeoTIFF (1-16) and text file (17).
Alexander R. Groos (firstname.lastname@example.org)
Groos, A.R., Mayer, C., Smiraglia, C., Diolaiuti, G., and Lambrecht A. (submitted). A first attempt to model region-wide glacier surface mass balances in the Karakoram: findings and future challenges. Geografia Fisica e Dinamica Quaternaria.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
# Load the provided RasterLayer objects as exemplary # input for the function data(airTemperature_30m_daily, airDensity_30m_daily, netRad_30m_daily, glacierMask_30m, iceMask_30m, firnMask_30m, debrisMask_30m, debrisThickness_30m, precipTuningFactor_30m, snowFall_30m_daily, package = "glacierSMBM") # Individual RasterLayer objects should be loaded or # created using the function raster() # create a three-day virtual meteorological data set AirT <- stack(airTemperature_30m_daily, airTemperature_30m_daily * 0.99, airTemperature_30m_daily * 1.01) NetRad <- stack(netRad_30m_daily,netRad_30m_daily * 0.99, netRad_30m_daily * 1.01) Snowfall <- stack(snowFall_30m_daily, snowFall_30m_daily * 2, snowFall_30m_daily * 0.3) # create a new object of class "inputGlacierSMBM" which is # requested as input for the glacier surface mass balance model InputGlacierSMBM <- new("inputGlacierSMBM") # Add the required data and information to the respective # slots of the new object (for additional setting options read # the help section of class "inputGlacierSMBM") # Create a numeric vector containing date and time of # the meteorological input data InputGlacierSMBM@date <- seq.POSIXt(ISOdate(2011,8,15), ISOdate(2011,8,17), "days") InputGlacierSMBM@decimalPlaces <- 4 InputGlacierSMBM@airT <- AirT InputGlacierSMBM@airDensity <- stack(airDensity_30m_daily) InputGlacierSMBM@netRad <- NetRad InputGlacierSMBM@snowfall <- Snowfall InputGlacierSMBM@glacierMask <- stack(glacierMask_30m) InputGlacierSMBM@iceMask <- stack(iceMask_30m) InputGlacierSMBM@firnMask <- stack(firnMask_30m) InputGlacierSMBM@debrisMask <- stack(debrisMask_30m) InputGlacierSMBM@debrisThickness <- stack(debrisThickness_30m) InputGlacierSMBM@disTuningFacPrecip <- stack(precipTuningFactor_30m) # Calculate glacier surface mass balance using standard settings, # but suppress to write any output InputGlacierSMBM@writeOutput <- rep(0, 17) ## Not run: output <- glacierSMBM(inputGlacierSMBM = InputGlacierSMBM) # Plot output plot(output, main = "glacier surface mass balance", legend.args=list(text='Mass balance (m d-1)', side=3, line=1.5), col = colorRampPalette(c("darkred", "red", "blue"))(100)) ## End(Not run) # Calculate glacier surface mass balance using modified settings # Change thermal conductivity and wind speed applied in the # implemented function "debrisCoveredIceMelt" InputGlacierSMBM@thermalConductivity <- 1.5 InputGlacierSMBM@windSpeed <- 5 ## Not run: output <- glacierSMBM(inputGlacierSMBM = InputGlacierSMBM) # Plot output plot(output, main = "glacier surface mass balance", legend.args=list(text='Mass balance (m d-1)', side=3, line=1.5), col = colorRampPalette(c("darkred", "red", "blue"))(100)) ## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.