Table of Content

Brief changelog of Alpine3D-3.2.0

New features

  • support of grooming / technical snow production (TechSNowA3D class)
  • First proposal of a method to deal with lateral flow in Alpine3d. Only works with Richards equation. Set key LATERAL_FLOW = TRUE in the [Alpine3D] section of the ini-file to use it (default is false). It only works with the branches/dev version of SNOWPACK.
  • Adding support for the grid DW (wind direction) in Alpine3D


  • A quite severe performance issue has been found (after weeks and weeks of tedious debugging): for large simulations running multithreaded (ie OpenMP), the SnowStation data (that is a large array, common to all threads) was written column-major while the threads actually all work more or less on the same line at the same time (so although each thread processes it column-major, at any given point in time the simultaneous access by the whole threads pool is kind of row-major). This means that for small simulations (when the whole table fits in cache), there is no problem but when a simulation is too large, each thread invalidates the cache for the next one (by loading a bunch of columns that has nothing to do with the columns the next thread will need), leading to a large performance hit...
  • A memory leak has been fixed in SnowpackInterface
  • In order to generate less data copies, more methods have been defined to directly return the requested data (so it can be assigned to a const variable on the receiving end).
  • New MPI slicing function, smarter slicing taking into account non computed pixels
  • Tunned MPI smart splitting to handle situation where the number of MPI instances is close to the number of columns in the DEM
  • Added new OMP control namespace, implemented a new OpenMP slicing
  • Corrected runoff output module to work with the new meteoio ability to keep netdcf files open. If runoff output is enbled in netcdf and it points to the same netcdf file than the other grid outputs, it will use the same IOManager object than SnowpackInterface instead of its inner one, to avoid multiple opening of the same file


  • For the avalanche dynamics team, a special interest is the average snow temperature in the top 50 cm. Providing now grid output for this variable (called TS50CM).
  • It is now possible to request gridded outputs of: 1) the snow temperature at a given depth; 2) the average snow temperature until a given depth; 3) the average snow density until a given depth.
  • MS_WATER added to snGrids and now outputable
  • Now SnowpackIO is used, instead of separate AsciiIO and SmetIO. The meteo output is now named XXX_meteo to avoid file name collision when TS is outputed as SMET. This change makes that now the file format indicated in the ini file for TS output is respected
  • Fixed SNO_write crash bug (call to smetIO null pointer in SnowpackIO) when SNOW_WRITE=FALSE but POI are written
  • It is now possible to ouput several soil temperatures simultaneously, by setting the SOIL_TEMPERATURE_DEPTHS key in the [Output] section. Gridded TSG could not be outputed, this has been corrected.
  • Fixed bug leading to pixel mixing when writing all snow files (for restart)
  • Added output of custom variables in NetCDF. Now custom variables are supported in ARC and NetCDF, an error is trown if custom variables are used with other grid fromat
  • Corrected POI writing, fixed missing POI in MPI simulations
  • Fixed swapped rows in smet outputs at POIs (thanks Pirmin!)
  • Now the output rate of runoff grids is the same as the other grids (from ini GRIDS_DAY_BETWEEN) and not every time step
  • Evapotranspiration can now be in output grids with the name SnGrids::ET. Canopy tramspiration and evaporation is taken into account if canopy is enabled (added to soil evaporation + sublimation)
  • Correct grid name for paramaters which are NOT in MeteoGrids::Parameters and when A3D_VIEW = FALSE


  • Added a section on how to install Alpine3D
  • Adding the MPI scaling experiment I did a while ago on Hera (with the Gemstock, 1m simulation)
  • Added documentation on how to couple Snowpack with Alpine3D for using parameters that could normally not be interpolated (ie converting HS into PSUM, RSWR into RSWR, etc)
  • updating the syntax of the example io.ini
  • Documentation improvements, hoping that which modules are called when running a simulation would get clearer
  • Documentation improvements: showing different possible workflows
  • When doing restarts, it is specially important to set the "EXPERIMENT_NAME" key. This is now mandatory and documented.
  • The script has been adapted to the slurm job manager
  • The example ini files were using the BUFF_CHNUK SIZE deprecated key. They have been updated.
  • updating the Stillberg io.ini to reflect recent changes here and there

Build and packaging

  • Changed the order of the ADD_SUBDIRECTORY in order to properly inherit the plugins settings (see issue 513)
  • There was no need to keep all the .class files, a how-to has been written that explains how to regenerate them from the view.jar file and how to re-pack them if necessary. Obsolete options have been removed from and the unnecessary SETUP has been deleted (this was a copy/past from sngui and nothing seemed to belong to view.jar)
  • Preventing multiple calls to FindXXX, updated FindMeteoIO and FindLibsnowpack
  • turning off some (stupid) warnings and making RadiationField work with the latest MeteoIO
  • A compiler option was not supported by some versions of gcc, it is now properly tested for the version number
  • an OpenMP call that was not protected by #ifdef
  • Trying to make the CMakeLists closer to Snowpack's
  • The packaging for Windows was not working properly
  • More fixes for the whole compilation chain, including porting MeteoIO's SetCompilerOptions
  • Removed -Wunused-template with Clang, not working correctly
  • Allow to set ARCH_OPTIM with Intel compilers
  • Solving ambiguity which prevented the intel compiler from compiling Alpine3d.
  • better handling of RPATH


  • Glaciers
    • moving the GLACIER_KATABATIC_FLOW key to the Alpine3D section
    • Fixed some inconsistencies for the Katabatic flows (not always looking for a key in the same section, inconsistent documentation) and made one key mandatory (that should always have been)
    • Now keys REDUCE_N_ELEMENTS, ADJUST_HEIGHT_OF_METEO_VALUES, and ADJUST_HEIGHT_OF_WIND_VALUE are changed for glacier pixels to get a correct computation over glacier pixels (following snowpack commits 1777 to 1779)
    • Now glacier can be read from a provided glacier height map
  • changing the way Snowpack handles inconsistently configured Canopy pixels
  • Now checking that the LUS and DEM have the same geolocalization
  • Adding a key to set the slope algorithm
  • Fixed a small bug (thanks FĂ©lix!) using solar radiation with the wrong time zone information
  • In the Simple terrain radiation model, the local albedo is now computed as the average of nine cells instead of only the actuall cell
  • Prevent nodata to be reported as too cold.

Created: 14 days 19 hours ago
by Mathias Bavay