Navigation: Home ›  The Model ›  Model Development ›  Details

Details of Development since WaSiM 6.4


2005 2006 2007 2008 2009 2010 2011 2012 2013 2014
2015 2016 2017 2018 2019 2020 2021 2022 2023 2024

!= bug fix (patch), error correction
+= new features
-= discontinued features
o= other changes
top2024
WaSiM 10.08.00, Apr 14, 2024
==> Official Release
- all 32 bit versions on Windows and all versions for older Linux distributions and all WaSiM-Topmodel versions will not be supported any longer. There is one Windows version that replaces all older versions (except Topmodel): wasimmpic64.exe, providing Support for OpenMP and MPI. And there are four new Linux distributions that are supported with the openMP and openMPI version (in the same executable).
+ ShowGrid in version 1.5: netCDF grids and time series (i.e. stacks as well) can be viewed with Showgrid now
+ MPI-Support was completely rewritten and downgraded from C++ to C, since the C++ interface is not supported since at least 15 years in the standard and many Linux distributions do not support the C++ bindings any more. The newly added Microsoft-MPI implementation for the WaSiM Windows version is written in C and is fully compatible with the Linux versions, easy to install and easy to use, even on a single computer. It's the recommended version to use (and the only available one).
+ ArcVeg components integrated for Growing Degree Days, Inundation depth and some helper grids (10.07.02b and c)
+ Interpolation methods extended: added four new optional parameters for each interpolator that limits the region for the actual interpolation. Can be used if many regions are used to reduce the run time for interpolation (if no regions are used, the parameters can be omitted).

Setup example:

[temperature_Region1]
10 # methods, see comments above
$inpath_meteo//Region1/T_1991-2020.dat AdditionalColumns=0 xmin=670000 xmax=840500 ymin=122000 ymax=282500
# file name with station data (if method = 1, 3 or 4, else ignored), AdditionalColumns= if there are columns other than yyyy mm dd and hh (or mm) before the actual data columns start; xmin=670000 xmax=840500 ymin=122000 ymax=282500 --> this are the new optional parameters (each one is optional on it's own) describing the coordinate window for the interpolation.


--> not applicable for reading in grids, spline and bilinear interpolation methods, most useful for IDW, since this is the slowest method, but also for elevation dependent regression
--> note: it is recommended to extend the area for each region by the value of [region_transition_distance] in order to guarantee a smooth shift from one region to the other
+ field capacity grids and statistics can be created and updated during the model run if set up in section [standard_grids]. This feature is handled in sub model unsatzonmodel.

Sample for creating nFC grids:
1. create variables:

$set $nFK_grid_mm_min = uFCminmm//$grid//.//$suffix # min usable water content (i.e. residual water content) in mm
$set $nFK_grid_mm_max = uFCmaxmm//$grid//.//$suffix # max field capacity in mm
$set $nFK_grid_mm = uFCmm//$grid//.//$suffix # usable water content in mm
$set $nFK_grid_perc = uFCperc//$grid//.//$suffix # usable water content as perc of max


2. define new series of [standard_grids]

$inpath_grid//$nFK_grid_mm_min minFieldCapacity_mm fillcode = 1 defaultValue = 100 readcode = 0 outname = $outpath//$nFK_grid_mm_min writecode = 103 # maximum usable field capacity in mm (depends on soil property psi_FC, or 200cm suction as default, calculated over the actual root depth at every time step, result of max grid is available when writecode contains a max output like 2xx)
$inpath_grid//$nFK_grid_mm_max maxFieldCapacity_mm fillcode = 1 defaultValue = 100 readcode = 0 outname = $outpath//$nFK_grid_mm_max writecode = 203 # maximum usable field capacity in mm (depends on soil property psi_FC, or 200cm suction as default, calculated over the actual root depth at every time step, result of max grid is available when writecode contains a max output like 2xx)
$inpath_grid//$nFK_grid_mm usableFieldCapacity_mm fillcode = 1 defaultValue = 100 readcode = 0 outname = $outpath//$nFK_grid_mm writecode = 5 statfile = $outpath//uFCmm//$grid//.//$code//$year statcode = $hour_mean # actual usable water capacity in mm (depends on max field capacity and the actual water content)
$inpath_grid//$nFK_grid_perc usableFieldCapacity_perc fillcode = 1 defaultValue = 100 readcode = 0 outname = $outpath//$nFK_grid_perc writecode = 5 statfile = $outpath//uFCperc//$grid//.//$code//$year statcode = $hour_mean # actual usable field capacity in % (depends on max field capacity and the actual water content)

notes:
1) to get minimum and maximum values of usable water content use writecodes 103 for minFieldCapacity_mm and writecode 203 for maxFieldCapacity_mm
2) statistics must also be defined here
3) the default psi value (suction pressure in soil layers) is 200 cm (or hPa)

psi_FC can be set for every soil type and every soil layer:

22Silty_Clay_medium{
method =MultipleHorizons;
ThicknessScaling =$ThicknessScaling2;
MaxInterflowDepth =$MaxInterflowdepth2;
PMacroThresh =$PMacroThresh2;
MacroCapacity =$MacroCapacity2;
CapacityRedu =$CapacityRedu2;
MacroDepth =$MacroDepth2;
horizon =1 2;
Name =T_CuSub_Cu;
ksat =$2e7$1.4e7;
k_recession =0.950.95;
theta_sat =0.430.40;
theta_res =0.110.12;
(hPa)psi_FC=63 96;
alpha =1.7 1.7;
Par_n =1.5 1.5;
Par_tau =0.5 0.5;
thickness =0.2 0.3;
layers =10 10;
}
+ runoff routing with new option 3 (for do-it-parameter: observed runoff can be provided in m3/s instead of in mm/time step only. --> important: in section output_interval the parameter for output generation should match the observed inflow, i.e. set to 1 if do-it for runoff model is set to 3
+ evaluating SB_1_REL_grid in [standard_grids]: If found, unsatzonmodel writes a new grid with soil moisture values relative to the maximum soilmoisture (in root zone) in addition to SB_1, which is relative soil moisture with respect to the total soil volume.
+ when ETR2ETP grid is a standard_grid, then unsatzonmodel now calculates this value always, not only if irrigation module is active
+ pure snow melt: value in this grid QSME is now only the actively calculated M-value from the snow melt model. This doesn't work with the layered snow model yet, where snow melt is estimated by energy balance methods in unsatzonmodel and it is not possible to distinguish between water that stems from rain or from melt from any layer above or from the actual layer
! fixed: for MPIReinfiltration, a row pointer was created twice and freed twice, thus generating an error, that only occured in certain situations
! netCDF handling changed: If using writecodes for writing grids per interval or per day, all grids will be written into the same netCDF, so the naming of the grid changed from a detailed date to the year only.
! fixed: cutting out pre-defined regions out of a larger input grid (interpolation method 9) was fixed, so also cells on the edge of the masked basin will be assigned a value, that is usually created with bilinear interpolation but may not be gathered by using IDW methid, if not all four points for a bilinear interpolation have valid values.
! fixed: when writing sum or avg grids (for months, years and vegetation periods), the year was written with 4 digits, but only as remainder of the modulo 100 division, i.e. 2 significat digits only. This is corrected now (10.07.02a, December 22, 2023)
! fixed a bug when reading in monthly scenario grids in scenmeth 5 and 6. Memory was not correctly handled in MPI mode with more than one rank
! fixed: MPIHLP and MPIREG were not initialized in meteointerpol: no broadcast of the first scenariogrid was done and only rank 0 got the scenarios correctly
! monthly scenario grids with method 5 is now addition, 6 is multiplication as in the documentation.
! when using runoff input for R-square calculation, the combination of mm/time step in input file and m3/s as routing output and the combination of input file in m3 but output in mm/time step was not working correctly. Now, all combinations can be used: when using routing method 1 and 2, observed intput is expected in mm/time step while for method 3 observed input has to be provided in m3/s
top2023
WaSiM 10.07.02, Nov 12, 2023
==> Official Release
+ new functionality for ice wedge degradation: ExcessIceFactor is initialised as additional water equivalent and hgeo and theta are initialized according to the excess ice content. When running unsatzonmodel, actual theta_res and theta_sat are set for each layer in an ice wedge. All functions of the richards-solution (in unsatzon and soiltable) were extended by handling different thetasat and thetares values for ice wedges (e.g. if the normal theta_sat is 0.4 and thetares is 0.1 but with excess ice it is 0.65 and 0.05 resp., a return theta of 0.25 from the h_calc function (which is exactly 50% of useable water in the soil with the original theta values) is changed into 0.35 (which is also 50% of usable water in the soil with the excess ice - here, including the ice of course). After each model run, the changed DHM is written back to the input grid directory of the original dhm with the name extension _out. This could be used for coupling several runs (rename it first and remove the _out-extension!) IceWedge degradation can be used by
  • adding a new control file section like this:

    [ArcVegIntegration]
    1 # do_ArcVeg; 0=no, 1=yes
    $outpath//$ExcessIceStack # stack, factor that expresses the excess ice in that soil layer
    $Writestack # Writecode for this stack

  • adding two standard grids, containing the ice wedges upper and lower depth for each cell (-9999 if no ice wedge is present)

    $set $IceWedgeUpperDepth = $grid//.iwdgup
    $set $IceWedgeLowerDepth = $grid//.iwdglo
    .
    [standard_grids]
    xx # number of standard grids
    ...
    $inpath_grid//$IceWedgeUpperDepth IceWedgeUpperDepth fillcode = 0
    $inpath_grid//$IceWedgeLowerDepth IceWedgeLowerDepth fillcode = 0

  • o (10.06.06) open netCDF files extended to 2000 (November 22)
    ! Grid-filename numbering for annual averages and sums: year will be written with four digits now (instead of only two)
    ! fixed initializing Routing with -mode:routing now correctly initializing lake and reservoir outflows (not 0 as until now)
    ! fixed routing with -mode:routing for lakes with abstraction rule "HydraulicConnection". No routing took place at all because there usually was no connection (both water levels were 0 but channel bottom level was above). To make this work, the routing description must contain two other values: A0 and W0 (A0 = initial area of the lake in m2, W0 is initial water table height in m a.s.l.). Example:

    ...and SP 1 ( file = $outpath//spv_01_sub09.//$code//$year , V0 = 4.69261e+10, A0 = 473.25E6, W0 = 395.107, C0 = 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0, dTmin = $dtmin1 )

    A0 and W0 must follow V0 in this order. A0 and W0 must be provided for all lakes that are connected hydraulically.
    V0, A0 and W0 can/must be taken from the last entry in the lake-statistics file of the previous run manually, since -mode:routing doesn't read these Values from the richards-storage file.
    ! correcting some errors in surface routing:
  • fixed: all rim-cells were acting as constant head boundary conditions
  • fixed: when using heat_transfer and layered snow model, the stored water in surface routing dissapeared in the next unsatzon-model time step
  • ! (December 22, 10.06.07) writecode = 8 works now immediately after reading the standard grids and variable grids and is applied only one single time to the filled but otherwise unchanged grids (e.g. the land use or soil codes are still orginal, aquifer depth is not changed according to the soil depth etc.). Thus, the written grids with the extension.filled could be used to replace standard grids that have not all cells filled
    ! (August 22, 10.06.05a) correction for column number for reading from external abstraction files
    top2022
    WaSiM 10.06.05, May 27, 2022
    + (10.06.05) netCDF read: file name patterns *<var>Layer works again
    top2021
    WaSiM 10.06.00, May 15, 2021
    + (10.06.00) extending the storage_richards file in order to initialize model runs from a storage file with different time step and/or hydraulic parameters, so it's possible to couple an 1h time step run to a 10 min time step run (e.g. for short term forecasts).
    + (10.06.00) Stacks can now be read in netCDF format (only writing was possible until now). Also, standard and variable grids as well as StateIni grids can be read in netCDF format without using the special extensions to the file name <[varname]>[layer]. A new attribute to the data can be used to define the cellsize for one-cell-models.
    top2020
    WaSiM 10.05.05, November 15, 2020
    + (10.05.05) implementing changes into the main branch of WaSiM that were made by Matvey Debolskiy during his PhD thesis to better model the frozen depth in a permafrost soil (only matters when heat transfer is used)
    ! (10.05.04) interpolation method 9 did not handle memory for the filename read from the gridlist correctly (was allocated too late)
    WaSiM 10.05.03, June 01, 2020
    o (10.05.03) new "routing-only-mode" for WaSiM: if WaSiM already created output for a model run, then the command line option -mode:routing can be used to only run the routing (e.g. for parameter optimization)
    o (10.05.02) time variable melting parameters for all T-index and T-u-index melt methods implemented
    o (10.05.01) time steps down to one minute fully integrated now by using a 5th header column in all input data and all output statistics
    top2019
    WaSiM 10.04.07, November 16, 2019
    o (10.04.07) Names of temporary or informational files will not contain a $ any more since Linux may have problems with this names, in particular when using netCDF output
    ! (10.04.07) more than 200 soil layers are possible again (was an error in an optimization introduced in unpublished version 10.04.06)
    ! (10.04.07) soil temperature stack is correctly initialized and values are not overwritten by interpolated temperatures during the first time step
    ! (10.04.07) lake abstractions: smoother reaction on very large abstractions of small lakes (like for e.g. river power plants that do mainly use inflowing water and only dam the river to get a reasonable elevation difference for power generation
    + (10.04.06) performance optimization for Windows with openMP: reduction of maxerror in groundwater flow and surface routing dramatcially accelerated
    + (10.04.06) some other performance optimizations in core routines of unsaturated zone
    ! (10.04.06) storage-file: when using runningAvg for lake abstraction rules, the values are now written and read from corresponding places
    ! (10.04.06) SE-effectiveness default is new 1 for soil heat transfer model. Until now, this was only possible to set when using layered snow model and the default was 0, i.e. without layered snow model, the soil water movement was not affected at all by temperature (since SE was not changed in soil)
    ! (10.04.06) when using re-infiltration (with or without MPI) and layered snow model with more snow layers than soil layers, WaSiM crashed. This is fixed now
    WaSiM 10.04.05, September 02, 2019
    ==> Official Release
    + outflow from reservoir can be computed using the running average of the reservoir content over intervals, where can be defined with an additional optional parameter in the SP-definition of the routing rule: UseRunningAvg = . If present and > 1, the volume for the actual outflow rule is taken form the running average over intervals, otherwise, the old algorithm is used (also when UseRunningAvg is less than 1)
    + SE stack can now be written like other stacks. Name and writecode must follow in two lines after the thawdepth-grid in [heat-transfer] before the readgrid code (which is not effective at all, by the way since the readgrid code from unsatzon_model is used for heat transfer as well
    ! data Assimilation for reservoirs: read value was never used except the first one. -> fixed now
    ! data assimilation MPI: some synchronization issues for grids and reservoirs fixed (only in MPI with more than one ranks)
    WaSiM 10.04.04, July 14, 2019
    + Data Assimilation routines implemented: reading parameter for grid type data assimilation, reading SWE grids, split SWE into liquid and solid fraction depending on the existing ratio or by a default ration; weigh the read in values also for glacierized an unglacierized cells
    + data assimilation routines implemented for reservoir type data (water table in external files in either bafu or wasim format), both work with OpenMPI and MPI as well, reservoir type data assimilation should work with topmodel version as well (not thoroughly tested yet)
    ! Fixed: if data assimilation is switched on but no rule is defined, MPI version crashed.
    WaSiM 10.04.03, April 30, 2019
    + Hamon potential evaporation: adding an optional parameter in the landuse table called ETPHamonFactor that allows a scaling of the potential Hamon evaporation individually for each land use. This can be used to compensate for underestimation of ETP for certain land uses like open water (lake evaporation).
    + Hamon Evaporation: an global correction factor can now be applied to all open water areas (i.e. filled ponds) by adding an additional line after all parameters in [evapotranspiration]: HamonCorrectionOpenWater = 1.5 (with 1.5 as an sampel value only) to increase ETP for Hamon approach by factor 1.5 if the cell has an open water pond (which is filled by more than 2 mm)
    + RegionalSuperPosition: sum of all region weights may become greater than 1.0
    + interpolation of grid values for all ASCII, float or double input grids possible (zone grid is the master that defines the geometry of the grid that is the interpolation target)
    ! in evapotranspiration model: soil evaporation is now also possible for all other methods than Penman-Monteith, thus allowing bare soil for sparsely vegetated areas to at least evaporate water from the uppermost soil layer (or more layers, when EvapMaxDepth is set as a parameter in the soil table per soil type)
    ! when using a hydraulic connection between lakes, the check for water level dropping below channel bottom must only be done when the water level before the routing was above that channel bottom, otherwise (if a lake is already quite dry) the difference was used to fill the lake up to the channel bottom again
    ! for hydraulic connections between lakes: if one of the lakes (i.e. in particular the source lake) has a water level below the channel bottom, there was now flow until now, because the flow depth was <0. Now, the higher water level will be chosen, so there should always be a flow as soon as one of the two lakes has a water level above the channel bottom and the other lake has not the same water level
    ! coordinates of stacks: like for grids, the coordinates of the lower left corner are now only checked for their integer value in order to allow slight differences of less than a meter
    ! re-infiltration: when using multiple sub time steps for unsatzon_model, groundwater model and surface routing (defined in section [soil_surface_groundwater_substeps]), the re-infiltration was wrongly calculated (at least twice as much as was calculated, in MPI even much more). This is corrected now
    WaSiM 10.04.01, March 06, 2019
    ==> Official Release
    + Integration of snow interception and snow canopy energy balance methods as implemented by Kristian Förster (Leibniz University Hannover) and Matthias Kopp (Technical University Munich) but adopted to full compatibility with other WaSiM requirements like MPI parallelization, use of other snow melt methods, use of old control files)
    ! LWout correction like LWin correction for snow model energy balance methods (until now, LWout was not limited at all, now it must be set between 0...+3)
    ! gridasci and wasim: when writing grids and stacks in text mode, the precision is now unlimited for coordinates and cell size (was limited to 6 to 7 significant digits before)
    WaSiM 10.03.00, January 25, 2019
    ==> Official Release
    + Re-infiltration no available in MPI version by re-ordering river link cells in a separate grid row and processing all cells of a single link in a single MPI rank from highest to lowest cell, thus following the natural flow paths. This feature is also used in non-MPI-versions, so the re-infiltration will show slightly different results if compared to older versions. The main advantage of the re-ordering of river link cells and processing them separately from the normal cells is the fact that this can be used in MPI without too big performance losses (and that it is possible now at all to use re-infiltration in MPI).
    + Extended netCDF handling implemented: until now, the variable to read must have had the dimensions in order var(time,x,y), whereas the y variable was considered top-down. New behavior: var(time,x,y) and var(time,y,x) are possible. x-dimension is still always considered to be read from west to east, while y variable can be from south to north or vice versa. var(time,y,x) means, that the grid was written in rows to the netCDF file, starting either from the top or from the bottom of the grid. WaSiM will read the y-dimension variable and analyze the first two entries. If the second entry is larger than the first entry, the rows are considered to start at the lower left hand corner, while when the second y value is smaller than the first y value, the rows are considered to start in the upper left hand corner.
    o runoff routing: progress dots will be printed when looking the starting date (still slow, because the buffer is filled with C++ streaming operators and not with C-like fscanf like in meteointerpol), so the user can at least see that something is going on
    ! fixed a bug in the glacier module: when plenty of snow is left on a cell and that cell is converted to a glacier, a new glacier ID is assigned to the cell. This should always be a new unique ID, but until now it could happen that an ID was assigned that had already been in use in older runs. If that old glacier was removed (because it had molten completely), the ID was still stored in the GLID grid, but was not known to the actual glacier list. So when a new glacier was created on that old location, the old ID was revoked for this glacier. If the same ID were already in use (because in another year on another location a glacier was created with that "free? ID), there were suddenly two glaciers with the same ID but potentially in different sub basins. When starting the model the next time with this glacier IDs as input, the model would stop with an error message. The new version doesn't hide unused glacier IDs from the glacier list, so it can not happen that a single glacier ID is used for multiple glaciers.
    top2018
    WaSiM 10.02.08, November 19, 2018
    + making groundwater colmation between the first and second aquifer dynamically dependent on frozen state of the lowest soil layer: If that lowermost soil layer is frozen, the colmation in gw_colmation_1 is set to the value of a new standard grid (gw_1_colmation_frozen), otherwise to the value of another new standard grid (gw_1_colmation_unfrozen). Both values must be provided in m/s, e.g. 1e-10 for frozen conditions and 1e-6 for unfrozen conditions. Attention: Since WaSiM uses still a multi-layer 2D-groundwater model and no true 3D model, numeric instabilities and oscillations can occur when the conductivity for unfrozen conditions is set to too high values. Use of explicit sub-steps in section [soil_surface_groundwater_substeps] is recommended in such cases (set to higher values than the default 1).
    WaSiM 10.02.07, September 21, 2018
    ! when reading single precision binary stacks, data was not read in correctly
    WaSiM 10.02.06, August 09, 2018
    o performance optimization for reading netCDF files: an already opened netCDF file will be kept open for much faster reading, especially when the netCDF content is zipped (the unzipping would otherwise be done every time the file is accessed). Up to 200 files can be hold open in each sub model (each interpolator or other sub model that uses netCDF as input)
    WaSiM 10.02.05, July 01, 2018
    ! initializing of lake volumes went wrong when there were cells in shallower shore areas that were not actually part of the lake (but only potentially when the lake gets flooded) and those cells contained some water in their pond storage. This is fixed now in a way that for initializing the lake volume, all pond cells of the lake (even ones that are not part of the lake yet) are summed up and then the total volume is known. This can, however, differ slightly from the last volume which was calculated without regarding those still "dry" cells (even if they contain some water).
    WaSiM 10.02.04, June 06, 2018
    ! when using optional parameter WriteNetcdfGrids = 1 in control file section [output_interval], all other grid and stack output will now be suppressed, i.e. only netCDF grids and stacks will be written (and can be used for input as normal ASCII or binary grids for subsequent model runs)
    ! when checking observed data for runofff against nodata, the operator >= is now replaced by a simple > in order to make sure that -9999 is already interpreted as nodata
    + adding date and time to the header of external exchange list files like this:
    date: 1991-01-01
    hour: 06h
    precipitation interpolated with elevation dependent regression + idw, all values taken from ..; 21 zones
    1 1.01235
    2 0.31103
    .
    WaSiM 10.02.03, May 21, 2018
    ==> Official Release
    + when reading netCDF files, the coordinates of the lower left corner and the cellsize can be defined in the header of the meteo-input text file (where the netCDF files are listed for interpolation method 9). The read in netCDF file is then interpolated by bilinear interpolation to the wasim model grid.

    When the header information in the meteo-file contains 9999, wasim assumes that the x- and y dimension in the netCDF file match the ncols and nrows variables of the internal grids and that the cellsize is identical, too, so the grid is tried to match 1:1 (assuming also identical xllcorner and yllcorner coordinates). If dimensions are not equal and coordinates in the header of the meteorologic input file are all set to 9999, an error is thrown (exception 22)
    o netCDF: Naming of netCDF files simplified: extension .nc is simply appended instead of removing everything after _ or .
    ! netCDF: rows and cols switched position when writing netCDFs
    + netCDF: reading CDF format is also possible (not only HDF)
    o writing is now done in HDF format with compression set to highest level 9
    ! when reading netCDF grids in MPI mode, only rank 0 will read the grid and scatter the result to all other ranks
    ! when writing netCDF grids, multiple grids can now be written to the netCDF file
    + added netCDF support for reading and writing of grid data (like precipitation fields etc.); Thanks to the LRZ (Leibnitz Supercomputer Centre Munich, who provided the code for integrating netCDF). NetCDF support is available for all version (Windows 32 and 64 bit, Richards and Topmodel, various Linux distributions). Prerequisites:
  • Windows: some DLL's need to be installed (can be retrieved from the WaSiM web site):
    • netcdf.dll
    • hdf5.dll
    • hdf5_hl.dll
    • zlib1.dll
  • Linux: depending on the distribution, a netCDF package must be installed Ubuntu: using software center to look for libnetcdf
      CentOS6:
      • first install package source epel with yum install epel-release
      • then actualize certificates yum -disablerepo=epel -y update ca-certificates
      • then install netcdf package yum install netcdf-devel
      • when running, loading the module for openmpi seems to be required
      CentOS7
      • first install package source epel with yum install epel-release
      • then install netcdf package yum install netcdf-devel
      • when running, loading the module for openmpi seems to be required
      OpenSuse
      • use yast and search for netcdf
      • install netcdf package
      Opensuse 13.1
      • when running, LD_LIBRARY_PATH may be required top be set to the install path of the OpenMPI lib (e.g. export LD_LIBRARY_PATH=/usr/lib64/mpi/gcc/openmpi/lib64) and the netCDF-lib (use yast's list file utility to see what the actual path to the libraries is)
      Opensuse Leap42.3
      • when running, loading the module for openMPI seems to be required (like "module load gnu/openmpi" or list the available modules first with "module avail")
  • + (10.02.00, internal version only) External Coupling re-activated
  • runs in MPI mode as well as in normal executables
  • runs on Windows and Linux
  • semaphore file may contain a specific command (Command=Continue; Command=Finish; Command=StopWithoutSaving; Command=SaveAndContinue;). These commands act like the input code typed in after pressing Ctrl+C (Continue=0;Finish=1, StopWithoutSaving=2, SaveAndContinue=3)
  • when finishing the model run, WaSiM always and automatically does two things: the content of the semaphore file which WaSiM writes, will be changed to "Command=Finish;". This will cause the external model to finish as well, as long as the external model can interpret such commands
  • an extra semaphore file will be written, which has the same name as the normal semaphore file but with the extension "_Done". This file also contains the line "Command=Finish;". It can be used to make sure that WaSiM has finished it's model run.
  • The Wait-mechanism is performance optimized: There exist some library functions that make the running program sleep for a given amount of time without using any CPU resources. However, since these functions are not defined in the C/C++ standard, and the old _sleep() function is deprecated, the new functions are slightly different for Windows and Linux. There is, however, no difference in parameterizing the wait interval. It is given in milliseconds in both systems. However, when running WaSiM in MPI mode with multiple instances, only rank 0 will wait for the semaphore file. So only this instance will sleep, while all other instances wait at the next barrier to be synchronized with instance 0 again. That leads to 100% CPU-usage of the respective cores of all other ranks while rank 0 is waiting in sleep mode for the semaphore file. A possibility to overcome this on a single processor machine is to use multiple OpenMP threads in a single WaSiM instance instead of multiple WaSiM instances with no OpenMP threads at all. Such, the CPU usage during waiting periods is almost zero for that single WaSiM instance and can use all CPU cores when active. However, on a multi-CPU computer (cluster or super computer) this is not feasible and OpenMP can not be used there over multiple CPU's anyway (so the CPUs will be fully used by the MPI version of WaSiM even when waiting for the semaphore file).
  • ! (10.02.00, internal version only) Fixed a bug when reading single precision stacks from file
    + (10.01.01, internal version only) soil temperatures for glacierized cells will be taken from nearest neighbor that is at least partly unglacierized in order to have a good initialization value when the cells becomes partly unglacierized, too. The algorithm works with MPI as well, but is limited then to the actual mpi ranks cells. So if a nearer partly unglacierized cell is somewhere in another mpi rank, that cells temperatures will NOT be used for setting the actual cells soil temperatures.
    + (10.01.00, internal version only) hydraulic connection between lakes using Manning-Strickler flow equation depending on real difference between the water tables of connected lakes implemented, even, if required, with consideration of the rate of change in water level in the target lake (which is switched off because the test basin didn't react as well as hoped for). The hydraulic connection is re-calculated (like all other routings) for every sub time step anew, so that the solution is not entirely but almost stable (not entirely because source and target water levels are not completely known during the time step - especially the target water level may change in a different way than in the previous time step, so the assumptions in any source basin based on the previous time step may be wrong)
    o (10.00.04, internal version only) QtoSpend works with negative runofs as well (must still be larger than -9999)
    ! (10.00.04, internal version only) bug fix when reading in stacks that made wasim crash
    ! (10.00.04, internal version only) start row for calculating slope and aspect is now set to the correct value (usually 1 instead of 0 as before), thus allowing the calculation of slope and aspect in MPI mode with more than one ranks now (this resulted in a crash before)
    ! (10.00.04, internal version only) when reading stacks in binary format, double stacks were read in as float values, leading to invalid initialization data
    ! (10.00.04, internal version only) when writing stacks to existing files (overwriting) in MPI binary mode (i.e. running the MPI version and using single or double output format), the file is resized after writing to the actual fiel size. Otherwise it was possible until now to overwrite stacks that were written in double precision with a single precision version without changing their size (so half of the file contais rubbish only, not affecting SG or WaSIM, but this was annoying anyway)
    top2017
    WaSiM 10.00.03, November 04, 2017
    + MPI parallel reading of stacks accelerated considerably (for large stacks this can be crucial to even start the program within a reasonable amount of time on some distributed systems)
    ! fixed TLOWBND error (grid was set to NULL in unsatzon::ClearMemory even if it should be released in defaultini only, causing abortion on some systems)
    o Some MPI optimizations (e.g. IN_PLACE usage when reducing zonal statistics for every statistics file and every time step (so this definitely has some effect on performance) or calling IRecv before ISend when synchronizing MPI-Halos (which has not so much effect).
    WaSiM 10.00.02, September 14, 2017
    ! fixed several small memory leaks and some wrong calloc/new/free/delete combinations (must be new/delete[] or calloc/free). These errors were mainly existing in the initialization and cleanup parts, not in the main time step loop, so it is very too probable that less run time errors will occur (they may also be connected to the MPI libraries). However, none of th two two mem-check tools used for debugging show any wrong memory handling any more now
    WaSiM 10.00.01, August 21, 2017
    ! SUMTRIB routing with observed runoff values used only the input of the first of the SUMTRIB inputs. This is fixed now, if a SUMTRIB input has observations and the do_it switch is set to 2 (using observed runoff if available), then for this input the observations are taken.
    WaSiM 10.00.00, July 4, 2017
    ==> Official Release
    + new sub model [LayeredSnowModel] implemented over the last few months The layered snow model is only working together with activated heat transfer model. If configured otherwise, the model will throw an error. The snow melt method can be chosen as usual. The new layered snow model does create a lot of internal stacks and writes also a lot of new stacks to the disk. Be careful to not to configure too many layers, since the computer may not have so much memory installed. The configuration is done in the new section [LayeredSnowModel] and in a new [LayeredSnowProperties]-table which is generally constructed like a soil ztable but should have one single entry only. Actually, the snow density is not modeled. But heat transfer through snow and snow melt are modeled lie for partly frozen soil layers. So the algorithms are basically identical to the already known algorithms for heat transfer and water flow through the unsaturated soil. The snow layers are in fact handled like additional soil layers. The only exception is that the snow layers may accumulate and melt and thus can change their number and their thicknesses. Since the heat transfer model must be turned on, the overall runtime will increase considerably when using the layered snow model. See also controlfile.txt in the test data set.
    + groundwater permeability can be scaled for frozen soils by a factor from the control file (new section [groundwater_tuning])
    + surface routing and snow model can write dump files like the unsaturated zone model. This is still experiemtal and should be used with care (can fill up your hard disk quite fast)
    + Haude, Wendling and Hamon approaches for potential evapotranspiration will now work with sub-daily time steps, too (and with time steps of more than 24 hours as well, e.g. 5 days or so).
    + adding a dump function to surface routing. Works the same way as for unsaturated zone model ands using the same command line parameters. Dump files will be named with surfrout*.dmp
    o Reading grids in ESRI-ASCII format accepts now also UPPERCASE headers (like NCOLS 100) instead of only lower case (like ncols 100)
    ! layered snow model/common snow model: energy balance method: when a melt value is negative because of too much outgoing radiation even when the air temperature is above 0°C, the melt is set to 0 now (was wrongly handled as "added" snow formerly)
    ! when reading GIF files as grid inputs, the algorithm read the grid multiple times (one for each grid row). This was considerably slowing down the model performance. This is fixed now.
    ! energy balance in snow model: under refreezing conditions (T_air < T_0) the (negative!) latent heat flux was always subtracted instead if added. A good energy balance (in terms of snow accumulation) was usually achieved only by applying correction factors less than 1 (e.g. 0.6...0.8).
    ! snow model: when using energy balance approaches, the temperature of the snow pack was changed too fast (wrong weighting of solid and liquid fractions for heat capacity: adding up 1.0 + 1.0 weights instead of n+(1-n) weights)
    ! heat transfer model: when using no snow model, the heat transfer model ran into an access violation when trying to access the snow grid.
    ! surface routing: for method 6 (Gauss-Krueger solution of the flow equations) maximum iteration number and maximum iteration error can now be set by using the same parameters that are used for iterating the flow velocity in other methods
    ! snow slides: for slopes larger than the parameter of maximum deposition slope it was possible that the maximum deposition became negative, leading to negative SWE values after modeling snow slides. Fixed now.
    ! glacier resizing: minimum area is again set to 0.0543 km^2 (in order to avoid completely removed glaciers)
    ! surface routing stacks FLUX and SRFCVEL will now work with writegrid codes with more than one digit for the accumulated grid layer (i.e. the total flux and the average velocity can be written as accumulated or averaged values for multiple time steps
    ! idwp: when a daily-sum-station is located at the exact location of an hourly-data-station, this caused a 0 value until now. Now the interpolation is done with a virtual distance of 0.1m
    ! refine: when using text mode input formats, the input columns were moved by 6 to 12 columns in the output. That is fixed now
    ! WaSiM: surface routing: when there is absolutely no flux into any river cell, the value was set to -nan on Linux or -1.#Inf on Windows. That is fixed now
    ! spinup-mode: when using extended snow melt methods without energy balance, the model crashed in spin-up in first time step -> Fixed issue
    ! MPI mode: model crashed when deleting all sub models at the end because for groundwater table was tried to release memory that was never allocated -> fixed
    ! corrected: count of oscillating cells in groundwater model was written out for the maximum count of all MPI regions only instead of the total count (MPI::MAX instead of MPI::SUM as reduction function)
    top2016
    WaSiM 9.10.01, December 11, 2016
    ! glacier model: error in snow evaporation fixed that manifested itself only in MPI mode for teh first cell of an MPI region and only if that cell were located on a glacier
    ! glacier model: creating enw glaciers and adding cells to existing ones from old snow: there were several mass balances errors under specific conditions that are fixed now
    ! unsatzon model: groundwater table initialization was osmetimes wrongly initialized for MPI mode
    + Tanalys: 4-way-compatible flow dirction algorithm can be set to generate river networks that can more efficiently be used in surface routing (no diagonal flow in shallow rivers that are part of surface routing from cell to cell means that river cells must be connected by the edge of the cells, not by the corners only)
    WaSiM 9.10.00, December 04, 2016
    + new surface routing using true 2D-flow (accounting for backwater conditions and with mass conservation, but without conservation of energy and momentum). Solution is done by an iterative Gauss-Seidel-algorithm. The new method is quite stable and much faster than the old purely explicit solution. However, since the surface fluxes are non-linearly depending on flow thickness, roughness and slope, the direct extraction from surface velocities and fluxes is generally not recommended but should rather be done by using the direct flow in the direct flow gird (where river cells are defined).
    + optimized for OpenMP 3.1 on Linux with gcc 4.8 and higher (groundwater and surface routing will be much faster with OpenMP since the max-error reduction function is no longer an "omp critical" section but can be solved by native OpenMP reduction functions (older stadards only supported + and - etc.). On WIndows, OpenMP is version 2 still, so it is slower there, too, than MPI.
    + added an equation system solver to groundwater module that is implicit for rows and explicit for columns, thus allowing the equation system to be solved in parallel (MPI) efficiently by updating the mostly horizontal mpi regions after each run iteratively. This approach still inherits the danger of oscillations, so it should only be applied for short sub time steps and relatively stable conditions (low permeabilities, low gradients). Gauss-Seidel-method is still more stable.
    ! error when initializing unsatzon model for glacierized basins: glacierized cells in the glacier grid that were outside the basin caused memory access errors (work around was to mask all grids with the subbasin grid completely)
    ! precipitation correction: when using method 9 in either wind, temperatur or precip interpolation, the correction is done on the interpolated grids like for superposed regions (this works even in MPI mode -> crashed before and gave unexpected results)
    ! snow melt: energy balance methods: some performance optimization (computing wet bulb temperature only when temperature is > 0°C)
    ! special output: when using MPI version, writing the special output was very slow since all values were gathered individually. This is done now row-wise, which is much faster
    ! Richards-model-groundwater-coupling: when the groundwater level rose or fell from one layer to another layer with very different porosities and/or other hydraulic parameters, the groundwater level was sometimes estimated much too high or too low (one or two entire layers too high or too low). This has been reduced now considerably, resulting in much less cells oscillating with a much smaller amplitude
    WaSiM 9.09.09 (internal), October 29, 2016
    + extension to -dumpmode option: -dumpmode: can be an integer number or 0 (default=0, means no limitation). Per MPI rank that maximum number of dump files is written. afterwards, the repairAfterDump option still works, but no more dumpfiles are written (to save disk space)
    o when running the MPI version, only one temporary control file (.$$$) is created, not one per rank as before
    o some performance optimizations for surface routing
    ! the surface routing entries to the storage_richards.ftz_0 fiel are now written into the correct file (was something like [lake_model]_0 before. Also reading of that file will now work in surface routing again (this worked well before, but because no section for surface routing was written into the correct file, it could not be read)
    ! readstacksfromfile did always allocate the complete stack for rank 0 even if the input format was double or float and never released the not needed memory. Now the allocated memory is deallocated correctly, causing much less memeory requirements for rank 0.
    WaSiM 9.09.08, October 19, 2016
    + creating new glaciers: When a cell has no glacier code yet or the cell has such a code and the ICE value is 0 and the SWE when resizing the glaciers is larger than the given threshold (new parameter in the control file for [ice_firn, default 1000), then that cell can be turned into a glacier. The initial glacierized fraction of that new glacier cell is defined by a second new parameter in the control file (default 0.25; both parameters in a single line at the end of section "[ice_firn]"). The glacier ID is either taken from the old ID in GLACID or from the immediate neighborhood (search order N, E, S, W, then NE, SE, SW, NW) of the same sub basin. If there is still no code found, a new glacier with a new code is created
    + added a new command line option -repairAfterDump that can be used in combination with -dumpmode (only exclusive use of either -closeAfterDump or -repairAfterDump possible). That algorithm tries to repair the "misbehaving" entity (e.g. a soil temperature that starts to leave the reasonable range by getting warmer or cooler than the neighboring layers) to the accepted range, which may be the maximum or minimum of the temperatures of the actual layer and the neighboring layers before or after computing the actual time step. There is no guarantee, though, that the model will continue without producing additional dumpfiles after that repair, so the hard disk may still be flooded with dump files! There is actually no option to repair the errors without writing dumpfiles at all.
    + added a new scaling factor for snow melt methods that work with energy balance approach to account for the fact that the entire snow pack is warmed up and cooled down. The scaling factor can be added at the end of the snow model section (default 1.0)
    + moving leftover snow (above a parameterizable threshold, see first point) for partly glacierized cells from the unglacierized fraction to the glacierized fraction in order to avoid snow from mounting up over the years to large SWE values. This enhancement works on glacierized cells only, i.e. the value of the ICE grid must be > 0. If a cell is already glacier free, a new glacier must be created (see first point)
    o MPIHelper and MPIHalo grids will only be written when the model is compiled with debug information (that keeps the model from writing hundreds of files during initialization when running hundreds of ranks)
    ! the flow velocities of surface water are now limited by the maximum allowed fluxes in a slightly relaxed way compared to version 9.09.07 (and there where no limitation before that version at all): if there are backwater conditions (i.e. the water level in the target cell is above the actual cells DEM value), the limitation as in version 9.09.07 is applied, i.e. the maximum flow is twice the volume that fits between the two water levels of the neighboring cells. New is, that for normal flow conditions (i.e. water level in the target cell is below the actual DEM value) the maximum allowed flux is the value that fits between the actual water level in the source cell and the DEM in the target cell. Such, the outflow into river cells is not limited and fluxes into cells that for their part flow into rivers will flow faster because that cell can be poured within a time step more easily. after several sub time steps, all cells that are in direct or indirect connection to a river cell will drain rapidly, except those cells behind a dam, i.e. in lakes or low centered polygones etc. There we still have real backwater conditions and the flux restriction of version 9.09.07 is applied, making sure that the surface of the lake is kept smooth.
    ! "nulling" the snow amount on glacierized cells with ICE value of 1.0, i.e. there is no unglacierized fraction. Since the model kept track of the snow pack on the glacierized and the unglacierized fractions seperately without taking into account the size of the glacierized fraction, it could happen that a fully glacierized cell had large accumulated SWE on it for the unglacierized fraction (which didn't really count but was visible in the grids of e.g. SSTO, SSNOW and SLIQ). In order to make these grids more useable for visualization, the snow pack for the unglacierized fraction is now completely removed when resizing the glaciers (note that the correct way to obtain grids with snow storage values that are representative for the total areal average of all [partly] glacierized cells was and is to multiply the snow storage grids with the grid containing the glacierized fractions for values valid for the glacierized fractions and to multiply with the inverted glacierized fractions (1 - glacierized fraction) for values valid for the unglacierized fractions)
    ! for MPI with multiple instances: when reading standardgrids and initialization grids that are stored in single precision binary format, the grids were not read in correctly (wrong buffer used, data were read but never used). This is fixed now.
    WaSiM 9.09.07, September 25, 2016
    ! surface routing: tweaking maximum allowed flow for backwater conditions leading to smooth lake surfaces now without extreme fluctuations
    ! meteo interpolation: method 9 and pre-SpinUp: File reset error fixed (file was not closed before re-opening it again)
    ! Halo Grids: When writing the HALO grids in each rank, the parts that lay outside the rows of the MPI region were set to nodata before writing when using binary output mode for grids. That is fixed now (had not a big impact because internally the send and receive structeres are used and not the HALO grids itself)
    ! SpinUp: error when using snow melt methods without energy balance -> Fixed issue
    ! Surface routing: Syncing Halos of fluxes two times more to make sure the MPI rank get the correct input on intermediate time steps
    ! unsatzon: gwstand and maxpond are now used for HALO syncing as well to have this values available in groundwater model for all neighboring cells
    ! gwflow: stripes at MPI-region borders (halos) in groundwater table and other variables removed (soil depth was not set for halo cells from the soil table but only from the aq1 grid (when there were even very small differences between aq1 grid and total soil depth from soil table, a frozen soil could lead to such stripes along the halo cells, since the virtual depth is strongly decreased for frozen soil)
    o MPI-output: messages for all instances is sent to the standard output and to the XML files in order to finds error messages that occured in other ranks than rank 0 more easily
    WaSiM 9.09.06 (unpublished, see patch 9.09.07), September 12, 2016
    o intermediate version for temporary use (internally during development for 9.09.07)
    WaSiM 9.09.05 (unpublished, see patch 9.09.07), August 24, 2016
    ! when evaluating the target capacity of an abstraction target, the internal indexing didn't work correctly as soon as the subbasin codes had gaps (i.e. like 1, 2, 3, 4, 8, 9, 10 --> gap between 4 and 8) and the target subbasin had a code above the first gap. Also, if a target basin had no inflow, the target capacity couldn't computed correctly (since we need at least one tributary for this). The corrected version uses the correct inflow (accounting for gaps) and if there is no inflow, no reduction by a target capacity is applied.
    WaSiM 9.09.04, July 03, 2016
    ! changed writing of binary stacks: instead of writing each column of a stack separately, all content for a single rank will be buffered first and then the buffer is written as one big chunk. This is much much faster, especially on distributed file systems (super compuiters, clusters etc.)
    ! MPI halo exchange caused errors for certain MPI-region pattern (application hang during initialization) -> Fixed
    ! When using bilinear interpolation in MPI version, application crashed -> Fixed (thanks to Jens Weissmüller, LRZ Munich, to find and fix this problem)
    ! surface interaction with rivers: option 2 (exfiltration AND re-infiltration) is working again (was erronously switched off completely in version 9.03)
    o when surface interaction is set to 2, MPI versions with more than one rank will stop with an error
    WaSiM 9.09.03 (unpublished), June 04, 2016
    ! when slope and aspect are not read in, MPI version threw an error because an out-of-range array index
    ! precipitation correction accessed MPI grids without having the correct pointers assigned
    ! path names in DefaultOutputDirectory that started with \\ (windows UNC-path) where not correctly resolved for zonal statistics
    WaSiM 9.09.02, April 30, 2016
    + Abstraction rules with the new optional parameter "TableIndex = Flow" (the old default behaviour can be achieved by using "TableIndex = Value" or by omitting this parameter - do use qithout quotes) can now be used. This is useful for lakes or reservoirs with outflow rules (so called Regulierlinien in German) which are defined for various dates during a normal year with the same flow value but for different water levels. This means that the weir should be daily adjusted in a way that the required outflow is guaranteed for every day of the year depending on the observed water level. Since this is extremely inconvenient to achieve with the conventional abstraction rule (which is rather useful for lakes with unregulated outflows, since it defines an outflow for several volumes), especially when the rules has to be interpolated in time, the new table reverts the table indexes and the table values. So the outflow appears in the first column as table index and then for each defined Julian day the matching reservoir content (volumes in m^3) has to be put into the table as corresponding table values (not the water table elevation, since this is not available when the lake model is not used but reservoirs are defined in the routing model only). WaSiM interpolates the reservoir content in time to make sure that the rule is applied for each day correctly. WaSiM also interpolates linearly between the table values, so if the regulated outflow should be increased step-wise, the same rule has to be put twice into the table, once for the minimum reservoir content and once for the maximum reservoir content for this outflow. But be careful: to avoid oscillating outflows, the next rule should not be too close in terms of reservoir content to one of the neighboring rules (otherwise very small changes in volume can trigger the next outflow step, leading to changes in the volume which in turn triggers the old outflow step again in the next time step). See also the sample control file for an example on how to configure the new abstraction tables.
    + abstraction rules from reservoirs and rivers are now interpolated in time as well as between the fix points. This was already implemented for the reservoir outflow (i.e. the direct outflow as flood spill or residual flow), but not for abstractions. If a constant abstraction over time is required, the rule now needs to be replicated for the beginning and the end of the period with a required constant abstraction (which was not the case before)
    ! limiting abstraction by a target capacity didn't work correctly. However, even with the new version it is recommended to use a separate, very small (one or some cells only) sub basin with a single inflow and a single outflow as the target of an abstraction. Such, WaSiM can exactly calculate the required abstraction and feed-back loops (causing oscillations) can be avoided.
    WaSiM 9.09.01, March 04, 2016
    + added a new option for sequence of interception and snow model: if interception method is set to 11 or 12, then interception will now run before the snow model and not afterwards
    ! when running in non-MPI mode, precipitation on lakes was not regarded for lake water balances
    ! dumpmode: correction for initializing dump values
    WaSiM 9.09.00, February 03, 2016
    ==> Official Release
    + MPI memory optimized version. Although this was a major task with changes to several thousand lines of code, the functionality didn't change at all (except when some bugs were found during rewriting or debugging some code). Some important notes:
  • If input grids are binary, MPI can use collective I/O, i.e. the grids will be read in much faster since every instance can read it's own stripe
  • When writing grids, the format should be set to double (section [output_intervak], key WriteDoubleGrid=1 (WriteAsciiGrids must be set to 0). This will speed up writing the grid results considerably, especially when some output is written per timestep.
  • A basic memory requirement of approx. 200MB RAM per rank remains.
  • If more MPI instances will be used as there are populated rows in the grid, the memory amount will not be reduced further since WaSiM still allocates memory on a per-row basis
  • For some grids, a halo is allocated around the active stripe and for other grids rank 0 will allocate and read/create the entire grid (algorithms that cannot easily be parallelized, e.g. glacier resizing, snow slides, shading), so the total amount of memory also depends on the modules choosen.
  • o new command line parameter -closeAfterDump to be used in combination with -dumpmode: WaSiM will abort after writing the first dumpfile.
    o some additional variables will be stored in the dump files when using heat transfer (like internal heat transfer time step and air temperature)
    ! precipitation interpolation for IDW+REGR (methods 3 and 11) with anisotropy: rotated coordinates were used for regression, too, which lead to differences in elevation dependent regressions when using different cut-outs of the basin. This is corrected now: coordinates for regressions are always non-rotated (reuslts for methods 3 and 11 will be the same as before when no anisotropy was used, otherwise you may need to recalibrate your application probably)
    ! precipitation correction: when using elevation dependent regressions for P and/or T, the regression will not be done for known P-stations but for virtual locations only (the elevation profile of precip is corrected using the elevation profiles for T and u). Therefore, the T- und u-regressions used center coordinates. Since this will result in different correction values depending on the size and shape of the basin, the areal regression will be switched off for precipitation correction.
    ! when using glaciers in multiple subbasins with some glacierized and some unglacierized subbasins, then the internal superposition of runoff from the glaciers used sometimes wrong orders (internal indices) leading to some runoff parts that went lost. Using the new version, this error is fixed resulting usually in a bit increased runoff from glaciers
    ! when using -dumpmode option, too many dump files were created when a temperature change was to fast (temperature change of neighboring layers higher than one would assume when only the actual layer and its direct neighbors are known due to e.g. very high or very low input temperatures at the soil surface). The condition check is now even more restrictive and decides to write a dump file only when the resulting temperature is higher (resp. lower) than either the start or the end temperature of both of the neighboring layers
    top2015
    WaSiM 9.08.06, November 02, 2015
    + writing grids with writecode 2 will now create grids for time steps of less than one hour for every time step with an extended naming scheme and will thus not overwrite the same grid again and again until a new hour starts. New naming schema will be <entity name>yyyymmdd.hhh_nnn with nnn = counter of sub-hour intervals, starting for the second of such intervals (the first grid is written in the old naming schema without _nnn in order to keep compatibility with external applications).
    ! surface routing didn't store SLR contents in the storage_richards.ftz file and therefore subsequent model runs using surface routing didn't always match (i.e. if there was a direct runoff/QD component greater than 0). New: storage_richards.ftz file will now contain a section for surface routing as well, so if a new WaSiM version will start with an old control file, it may throw an error. To avoid this, WaSiM doesn't throw an error when it does not find the section [SurfaceRoutingModel] but only writes a warning.
    o reading storage_richards.ftz for surface routing: if file name is not present, there should only be a warning, no fatal error. Later, this may be changed, so every storage file needs that section, but for compatibility, this will not be required now.
    ! snow melt on glaciers: when using old methods 1 to 12, the melt rate was sometimes wrongly initialized. This is fixed now by forcing the melt rate on glaciers to be 0 when starting the calculation.
    WaSiM 9.08.05, October 10, 2015
    + new and easy to use method to change soil depth and at the same time make sure that the groundwater depth of the uppermost aquifer equals the soil depth. For each soil type, an optional parameter ThicknessScaling can be used (default=1.0). When reading in the soil table, the thickness for all numerical layers is then multiplied by this value. Also, when initializing the groundwater model, the first aquifers thickness is always set to the total thickness of the soil (including ThicknessScaling but not requireing that parameter at all). Note: Although the geodetic elevation in hgeo stack is corrected for ThicknessScaling, the other values in other stacks are not adjusted. This may lead to unexpected results during the new warming up period, e.g. when hydraulic heads are suddenly resulting in a gradient where there was no gradient before etc. So the safest method is to use ThicknessScaling for cold start conditions only or with at least a one-year warming-up period after changing the ThicknessScaling.
    + no matter what value the write code for a grid has: the last grid of a model run is always written now (using the configured file name). Until now, when using other write codes than 1, 3, or 4, the grids got renamed with a time series like extension. The last grid of the run was also renamed. To use this grid as initial grid for the next model run, it had to be renamed manually. This step is now not required any more.
    + snow model with energy balance approaches: the surface temperature can now be used directly. It must be provided llike the normal air temperature as an interpolated entity. The section name must be [surfacetemperature]. The measure should be in Kelvin. However, if the values are below 100, the program automatically assumes the values to be in °C and adds a constant of 273.16 in order to convert the values into Kelvin.
    + snow melt with energy balance methods: latent heat flux was added instead of subtracted from the snow storage, resulting in the snow pack slowly growing instead of sublimating/evaporating. This is fixed now (effects were biggest for lower altitudes with higher latent heat fluxes and a much bigger relative part of evaporation/sublimation on the total SWE.
    ! for precipitation correction, the elevation dependent regression didn't set the upper inversion limit/elevation correctly under certain conditions.
    ! Check if groundwater model is used at all before changing FROZENDEPTH (to avoid errors when addressing frozen depth grid)
    !
    WaSiM 9.08.04, June 12, 2015
    ! Topofact: all formats (single, double, ascii) are now supported correctly (did not work for ascii and double before)
    ! WaSiM-Richards: "bad theta calculated ..." message for evaporation withdrawal suppressed in production mode (only visible after compiling in debug mode). Also, the message itself is now an OpenMP critical section in order to prevent the program from crashing when multiple threads try to write the same message.
    WaSiM 9.08.03, May 25, 2015
    o new redistributables required for OpenMP version, since the development of WaSiM under Windows was ported from MS Visual Studio 2010 to MS Visual Studio 2013. Please download the new redistributables from either Microsoft or from the WaSiM homepage
    + Introducing mapping parameters for mapping GIF values. The required five parameters must be listed after the list file name (like the parameters for regression in interpolation methods 10 and 11)
    + -9999 in a list file: the last valid file name is taken for reading in that file again instead of doing nothing (because when doing nothing, the precipitation may have changed by the avalanche model)
    + a scalinggrid can be used for each interpolation section. The grid must be read in as standard grid. The identification is "scalinggrid_", e.g. "scalinggrid_precipitation" or "scalinggrid_temperature". The valudes of the interpolation result are multiplied with the matching cell of the scaling grid.
    o when grids are read in, missing values can be filled optionally. The maximum search radius was 50, it is now 10. When no valid cell is found within this radius, the model stops with an error. Now, optionally the default value can be used instead (i.e. no error, but the cell is filled with the default value). This is used internally when reading in Radar GIF images. If a radar station is down and the entire grid is empty, the default value (0) will be used in precipitation interpolation.
    WaSiM 9.08.02, May 09, 2015
    ! When calculating the internal time step for the Richards-approach with heat model turned on, the relative saturation SE can have a major impact on the conductivity and hence on the timestep. For long timesteps with high conductivity soils in dry conditions (sand, gravel, peat), this could result in too long sub time steps. So SE is now limited to be at least 0.5.
    ! There was an error when restricting the soil water fluxes. For certain conditions (see bug above: long timesteps, high conductivity soils, shallow layers) the restriction didn't work at all, resulting in a negative soil water content, which in turn lead to invalid temperatures later
    + Added a dump mode: when WaSiM is started with a command line option -dumpmode (in addition to any control file), it activates some code that will actively survey the changes in soil temperatures, soil water content and groundwater table movement. If these entities leave the physical limits (e.g. a temperature becomes higher or lower than any temperatures of the neighboring layers or water content drops below zero or rises above saturation), a file with the exact location and time of the error in it's name is written containing a dump of all variables for the actual cell. Thus, a debug session can be started that reads in this dump file to reproduce the error immediately.
    WaSiM 9.08.01, May 01, 2015
    ==> available with patch 9.08.02 only
    + GIFs from Swiss radar observations can be read in as precipitation (or other grid) directly. xll, yll and cellsize of the GIF must be defined in the header as x, y and elevation value of the virtual station in the list file for interpolation method 9 (reads grids from file which are listed in a list file).
    ! Automatically disable lake module if in spinUp-mode
    +/! when interpolation is done visa reading in grids or GIF files, lines that contain no valid name but -9999 instead will be handled as missing values, i.e. the old values will still be valid.
    ! when in meteorologic interpolation the old values remain valid (because no grid was read in or no station had valid data for that time step) no correction factor and no scenario is now applied to the old values in order to leave them unchanged
    ! initializing an internal glacier-table went wrong when for a subbasin all glacierized fractions were set to 0 during a former resizing, thus removing the glacier completely. But since the glacierized fractions was set to 0 instead to nodata, the internal glacier-table assumed that the subbasin was glacierized anyway. Such sub basins were modelled after a restart with the mentioned glacier grid with strongly rising runoffs.
    ! Snow slides are skipped now for spin-up mode automatically
    ! when creating HRUs, sqrt-method for reclassifying handles negative values now by converting them to positives.
    ! fixed a bug when calculating sunshine duration from observed and theoretic radiation. Under certain circumstances it could be that the temperature correction in ETP was extremely high (can only happen when
    a) using daily time steps
    b) using Penman-Monteith method
    c) modeling SSD from RG (i.e. there is no SSD as input
    d) observed RG is much larger than the theoretical RG, which can happen when the model is applied to arctic regions and the day is the first day when the sun comes above the horizon
    WaSiM 9.08.00, April 21, 2015
    ==> Official Release
    + The HRU concept (Hydrologic Response Unit) was introduced in WaSiM. It is mainly thought to be used for SpinUp mode. Use and generation of HRUs can be controlled by a new optional control file section [SpinUp]. There, some parameters can be defined like what grids should be used for HRU generation and how often the initialization period should be run repeatedly in order to get a good spin-up result. In Addition, it is possible to run a pre-spin-up for temperature only. This is used to initialize the soil temperature before starting the normal spin-up. Although HRUs are thought to be used for spin-up only, the model can be run in spin-up mode almost as in normal mode - only faster. The sub-models will run on HRU master cells only (unique HRUs, i.e. for each HRU each algorithm is done once). All other cells which are no HRU masters will get the complete results from their master HRU. Thus, the model provides results for the entire basin (even with runoff routing) as one would expect from a normal model run (some differences will be visible when comparing grids, though). To run the model in spin-up mode/HRU mode, all lateral processes mustn't be included in the setup (some will be overjumped automatically, some not).
    WaSiM 9.07.02, February 15, 2015
    ! some grid tools wrote ascii format grids mit "ncolsa" and "nrowsa" instead of "ncols" and "nrows" resp. in the file headers --> fixed
    ! Albedo in snow model is now calculated before the melt routine runs, so freshly fallen snow will have the new albedo already
    ! when using the new energy balance approaches for snow melt in daily time step, global radiation was not converted into W/m^2 but used in Wh/m^2. The resulting energy balance was much too high, resulting in too much snow evaporation. --> fixed.
    ! snow and snow surface temperature could become extremely low when using the energy balance approach (especially for long time steps). Snow temperature and snow surface temperature are now limited. (no sub time step is used yet)
    ! when using energy balance approaches for snow melt for daily time steps, the relative fraction of day and night were not considered. --> fixed.
    top2014
    WaSiM 9.07.01, December 30, 2014
    ! groundwater model: checking for glaciers first when setting transmissivities for dry cells to the value of the neighboring cell in order to avoid groundwater movement between glacierized cells (and between glacierized and unglacierized cells as well)
    ! fixed a bug: sow model didn't work with methods 1 to 4 for latest version 9.07.00.
    WaSiM 9.07.00, December 23, 2014
    ==> Official Release
    +/! major change to handling snow on partly glacierized cells: grids for snow storage (solid, liquid, total) and snow melt as well as for snow evaporation, snow temperature and surface temperature are now duplicated as grids that are valid for the glacierized fraction of a cell only (unweighed raw values, though, i.e. to get real value the grid must be multiplied with the glacierized fraction grid). All snow model methods are now done in parallel for the unglacierized fraction and for the glacierized fraction of a cell. THis was neccessary since the dynamic glacier model turns old snow into firn and thus changed to amount of snow for the glacierized fractoion of a cell only. The new weighed handling is also accounted for in the slides module, which can take input from partly glacierized cells and transport the snow to other partly, completely or unglacierized cell. To use the new features, the control file must contain some new parameters (i.e. grid names and write codes and the name of the new statistics file) - see latest documentation for more info
    ! bug fix in groundwater model: cells with empty groundwater reservoir can be filled up from neighboring cells. In order to do this, the transmissivity of the empty cell is set to the transmissivity of the filled cell. There was the error that this was done even if the gradient was from the dry cell to the filled cell, so the equation systems solution lead to a flux from the empty cell to the filled cell, thus generating virtual water and resulting in a wrong balance.
    ! redistribution of glacier balances to the changes area after resizing the glacier in order to keep the balance
    ! creating an additional statistics on immobilized or mobilized soil water that must be added to the statistics only when glaciers were resized.
    ! snow slides are now limited to the sub basin only. It could happen before that a snow slide left the sub basin (e.g. because the slope to the next cell outside the sub basin was steeper than to the next cell in the sub basin itself). Now, it is checked before routing a slide if the target cell belongs to the subbasin. If not, no mass is allowed to cross that border.
    ! flux and storage balances for snow model: snow melt on glaciers was added to firn runoff, but by doing so, the snow melt rate for the unglacierized fraction of a cell was also set to 0, leading to positive mass balance errors, since unsatzonmodel received to less melt. Now, snow melt and glacier melt are dealt with separately, ensuring a correct water balance.
    ! gw-model switch (usually 1 or 0) can have a value of 3 for limiting gw-flow to hydrologic subbasins in order to keep the water within balance regions (useful when using low resolutions in mountainous regions). This didn't work at all until now. This has been fixed now.
    ! temporal interpolation of abstraction rules did not work since the weights were handled as integers (and therefor there were no intermediate values between 0 and 1). This is fixed now, resulting in smoother abstractions when moving from one rule to another over time.
    WaSiM 9.06.10, November 08, 2014
    ! when glaciers are not located completely within one sub-basin, the model will now throw an exception at start-up to prevent the model from generating runoff values far above expected values.
    ! some other bugs in dynamic glacier model fixed:
    i) Qice and Qfirn were not re-initialized for each cell and each time step, so it could happen that these components stayed constant or even grew constantly, especially after a glacier resizing
    ii) initialization of glaciers war done wrong when the glaciers mass balance grids (glmb_old) was not zero for all values. This lead to different results of the resizing algorithm, depending on when the model run was started (could be everything from rarely observable to extreme behavior like full extinction of some glaciers)
    iii) minor issue: when the snow storage was completely gone, ice and firn melt was only calculated starting with the next time step for that cell.
    + (9.06.09, 22 October 2014) making the maximum depth for interflow generation a parameter in the soil table. Until now, interflow could only be created down to 2m depth (or at horizon borders). Now, that depth can be set by using the optional parameter MaxInterflowDepth for each soil type. It is intended for deeper soils (or soils over thick aquifers with deep groundwater).
    ! (Showgrid:) Memory handling of grids when showing mixed stacks and grids corrected (sometimes, Showgrid crashed when loading stacks and grids in mixed mode)
    ! when using the energy balance approach, the model crashed sometimes although the algorithms are OK. This may be because of complex equations. After splitting the equations into multiple sub-equations and combining the sub-equations to the final equations, the model didn't crash any more, so it is assumed that special optimizations went wrong in the MS Visual Studio compiler (since it did crash with this compiler only, not on Linux and not in Debug-mode).
    ! (9.06.08, 19 September 2014) Glacier model: all calls to the glacier list were made safe for calls with non-existent list IDs. This is the case when a glacier has a valid ID but no call has an ice fraction value greater than 0. All those cells will no be ignored for growing and shrinking the glacier. Only if the cell will be populated by the glacier because it is growing, the ID is newly assigned and the fraction will have a value > 0, so the algorithm will work fine again.
    ! (9.06.07, 18 September 2014) Glaciermodel: when a glacier has a code > 0 but the glacierized fraction is 0, the initialization fails. In some model runs, the error is not obvious and the model crashes only later when updating the glaciers after a few model years.
    ! new energy balance methods in snow model: sublimation (+ or -) was not yet used for snow evaporation. Instead, the old mechanism was kept. Now, when using energy balance methods, the snow evaporation is only taken from the sublimation values. In addition, all ETP values are set to 0 in such cases since the snow should melt/evaporate first before taking any water from the soil by evaporation or transpiration
    ! (9.06.06, 02 September 2014) Special_Output: when using more than one sub step in [soil_surface_groundwater_substeps], some entities that where fluxes in mm/timestep or m/s were not correctly accumulated, since only the last value (of the last sub step) was written to the special output file. This was corrected by calling the internal methods for each sub step and accumulating according to the nature of the entity (e.g. sum for fluxes in mm/timestep or average for fluxes in m/s). All entities that were no fluxes but states (like e.g. soil temperatures, soil moisture values hydraulic heads etc.) represent in any case the state after the last sub time step and weren't affected by the error and consequently not part of the fix. However, the fix includes a new look-up-table for each entity in the sub models unsatzon-model, surface routing and groundwater model. It is specifically defined for each flux variable if and how an accumulation must be conducted. Since this is a major change to the module special_output and although a series of tests have been done during and after the implementation, careful regression tests for that modules results are recommended when using the fixed version.
    ! (9.06.05, 29 August 2014) Dynamic glacier model: when a glacierized cell was on the edge of the model domain (i.e. in the first or last grid row or column) it could happen that the model crashed when glaciers were shrank or grown.
    + (9.06.04, 26 August 2014) interpolating between abstraction rule dates in time instead of simply using the same rule until a new one gets valid
    ! coupling subsequent model runs: When using ASCII-grids and stacks as input, stacks caused an error when reading in.
    WaSiM 9.06.03, July 19, 2014
    ! coupling subsequent model runs: groundwater feedback to soil model was not stored correctly. Now, the respective grid (qb grid) is stored from the groundwater module (and overwrites the grid written by unsatzon model) to make sure that at the re-start of the model the correct value is read in from that grid. (problem was manifested by too low baseflow values in the first few time steps of the subsequent run)
    WaSiM 9.06.02, July 16, 2014
    ==> Official Release
    ! fixed some source code compatibility problems between Windows and Linux versions (mainly compiler specific checks that were not done in Windows by VC++ but under linux by g++)
    + (July, 11th) extending ascii2stack and stack2ascii to write and read ascii, single and double stacks, resp.
    + extending WaSiM to read and write ascii stacks
    + Showgrid: reads and writes grids in all known formats (ascii, single and double) and reads and writes stacks in ascii, single and double (still writes only single grid layers from a stack as grid)
    o (July 6th)extending all gridtools to be able to read and write ASCII and single precision as well as double precision binary grids
    + (June 29th) Snowmodel: new methods:
    5 = Enhanced energy balance approach (with more sophisticated parameter estimations)
    6 = Enhanced energy balance approach + gravitational slides
    7 = Enhanced energy balance approach + gravitational slides + wind redistribution
    8 = T-Index + gravitational slides
    9 = T-Index + gravitational slides + wind redistribution
    10 = T-Index + wind redistribution
    11 = Enhanced energy balance approach + wind redistribution
    12 = T-u-Index + gravitational slides
    13 = T-u-Index + wind redistribution
    14 = T-u-Index + gravitational slides + wind redistribution
    + Snowmodel/Glacier model: when using method 13 for glaciers, the model is dynamic (as 11 or 12), but melt algorithms for snow are shared with snow model. This results in much smoother areal snow melt pattern in partly glacierized areas
    + (June, 9th) adding correction factors for long wave incoming and long wave outgoing radiation (LWINcorr and LWOUTcorr) to the snow model (new energy balance aproaches) in order to fine adjust energy balance
    + adding snow temperature modelling (bulk approach from energy balance)
    + (May, 28th) Iteration for calculating surface energy balance for snow melt optimized (kind of dynamically adjustable binary search)
    + (May, 26th) some optimizations for energy balance method in snow model
    + (May, 23rd) snow slides: generating elevation order grids directly in WaSiM, improvements in slide algorithm (technical robustness against nodata-neighbors)
    + made slide algorithm MPI compliant
    ! glacier retreat and advance: gathering and scattering firn stack in MPI mode correctly
    + (May, 13th) snow model extensions for wind driven snow redistribution, radiation melt and gravitational snow redistribution added (after Warscher, 2013)
    ! (May, 4th) readgrids was not available in runoff routing, so it was not defined if an initial routing was done or not. Now, the readgrids state is taken from the soilmodel (either richards or topmopdel version)
    WaSiM 9.05.04, May 01, 2014
    ! max_Error for iterations in Richards-Model: previously (since Version 9.04.03) it was wrongly enlarged after the first cell, which needed more than 20 iterations, resulting in too less required iterations for all following cells and time steps. This is fixed now.
    ! temperature model: due to calculating a effective temperature for phase change effects in partly saturated soils, the array boundaries of two internal lookup-tables could be violated, resulting in randomly occuring artifacts in soil temperatures (much too high or much too low temperature at some cells). This is fixed now.
    WaSiM 9.05.03, March 02, 2014
    ==> Official Release
    ! changed the effective thickness of an aquifer when heat transfer is used and the aquifer is NOT fully frozen to the ground (i.e. no real deep permafrost, as is normal in most regions of the world). Until now, the active layer thickness was used as groundwater layer thickness. Since the active layer thickness was initialized with zero, there was no groundwater flow at all when the soil was thawed completely. Now, the thickness of the frozen, saturated part of the soil is subtracted from the saturated thickness to get the effective transmissivity for partly frozen soil (but still no confined conditions are assumed under a frozen horizon)
    WaSiM 9.05.02, February 05, 2014
    ! changing flux restrictions: there was one case when a soil layer drained to the lower as well as to the upper layer, when the flux restriction was not correctly handled (adding a correction flux instead of subtracting). This could lead to positive feed-backs (since the laxer became even dryer), especially for long time steps (daily) in dry environments after a heavy rainfall event and when using macropore infiltration at the same time. This is fixed now.
    WaSiM 9.05.01, January 19, 2014
    ! bugfix in MPI version: when used without heat transfer model, the model crashed (because a grid was not found when trying to sync the halos)
    ! IDWP: max number of stations increased from 100 to 2000
    WaSiM 9.05.00, January 05, 2014
    + enabling Ctrl+C handling for MPI applications: the actual Ctrl-C state will be broadcasted to all instances, so if the user presses Ctrl-C in an interactive MPI-run, all instances will wait and react in the same manner as the instance that caught the input event. Thus, an MPI application can always be stopped from the terminal where it was started (as long as the MPI implementation allows Ctrl-C at all, as is usually the case on super computers (e.g. Cray) but is not the case in mpich2 on Windows. There, Ctrl-C kills the entire MPI application without sending the event to WaSiM - can't do anything about that...
    + surface routing is now MPI aware. This was the last major sub model (beside groundwater model, see below) that was not MPI aware until now. So the actual version can efficiently be used on a supercomputer now.
    + adding MPI functionality to groundwater model. This encompasses a minor redesign of the basic module interface since two vectors with halo information will be created during initialization and then passed to every module. The groundwater module is the first module using that halo information because it must synchronize its rim (i.e. the halo) for every iteration step with the other running instances
    + changed the way, stacks are allocated and freed in order to be able to speed up gathering of stacks in MPI mode: The single rows of a stack were formerly allocated using minimum memory requirements (by the internal log_2(2) optimization). For gathering entire rows of a stack in MPI mode, this is not feasible since there were usually multiple allocators involved. Now, rows of stacks are allocated as a huge linear memory block - the single cell-stacks are then only set as references to the last level of the 3-dimensional array. When releasing, only the references to the row (the huge linear memory block) must be freed. MPI-send/recv is much, much faster with few large blocks compared to many small blocks
    + changed gathering of stacks in MPI mode: since the single rows of a stack are now always stored in huge linear memory block, only one call of MPI::COMM_WORLD:Recv/Send per row is usually required, thus speeding up the gathering considerably (by factor 1000 or so).
    ! groundwater model now takes into account not only water in POND grids but also water in Surface storage of surface routing module
    ! unsaturated zone model now takes evaporation from surface storage of surface routing, if any water is in there, to prevent the Richards-equation or the groundwater model from numerical instabilities
    ! some minor bugs in surface routing fixed (e.g. directions for fastest slope now in 8 instead of 4 directions regarded etc.)
    ! changing MPI Halo synchronization to unblocking Isend and Irecv commands instead of the blocking versions. On some machines, the Send and Recv versions were really blocking (e.g. Cray-Linux), on others not (e.g. Windows), so it was important to make it everywhere working by using the unblocking versions with a closing call to Waitall.
    o all grids are now allocated without special memory management to prevent future issues as with MPI send/recv which rely on the linear structure of the memory
    o removing default(none) from all OpenMP for clauses in order to be compatible wit other implementations (e.g. PGI compiler).
    top2013
    WaSiM 9.04.03, 22.11.2013
    ! when using no groundwater model, the baseflow is estimates by Q0*exp(-z/k). This expression didn't properly account for sub-steps (by automatic sub-division because of the Courant condition). So the model delivered too less baseflow for certain configurations, especially if the soil has a high hydraulic conductivity, soil layers are thin and time step was long (e.g. 24h). This implementation lead to varying base flow amounts if [soil_surface_groundwater_substeps] in the control set was set to other values than 1 (which is default) - making the error obvious. However, the real error occurred not because of using [soil_surface_groundwater_substeps] with values > 1 but because internally the time steps were not subdivided as much as they were when using only 1 main time step in [soil_surface_groundwater_substeps]. Since this is fixed now, all applications without groundwater model may experience a higher baseflow - so the Q0 value should be reduced accordingly, if required.
    ! in certain configurations (similar to the ones described above, but specifically when a layer with lower hydraulic conductivity was on top of a layer with higher hydraulic conductivity) the estimation of groundwater level was not correct, since a relative saturation of 99.95% was already taken as completely saturated. This was changed now to 99.99999% (100% is not feasible because of small numeric deviations during the solution of the Richards-equation).
    WaSiM 9.04.02, 15.11.2013
    + unsaturated zone and heat transfer model: hydraulic head will no be calculated depending on theta*SE (absolute liquid water contend).
    + adding an optional section to the control file named [unsatzon_tuning] which offers access to some parameters (may be extended in the future). Actually, there are two parameters controlling the iteration for the Richards equation (since this equation is still not solved using an implicite solution schema):
    -> max_error = (default 1e-5) defines the maximum error between two iteration steps (pairwise for each soil level) in hydraulic head/suction
    -> max _iter = (default 100) defines the maximum number of iterations for the Richards-equation that may run until the actual step is finished for this cell
    WaSiM 9.04.01, 09.11.2013
    ==> Official Release
    +new algorithms for SE calculation (relative water saturation in permafrost or water/ice ratio), computing the temperature shift depending on the shape of the dE/dT curve and the relative theta value
    +new algorithm for effective thermal conductivity, using a kind of geometric average for conductivities of water, ice, soil material and air
    +changes to heat transfer model:
    -> a) effective hydraulic conductivity is now calculated based on van-Genuchten Parameters and water/ice saturation value SE
    -> b) unfrozen water content or water/ice saturation SE takes into account partly water saturated soils, resulting in less ice at deeper temperatures, since water is only available in smaller pores for unsaturated soils.
    -> c) changing dE/dT accordingly (energy change do to freezing/thawing)
    -> d) allowing the lower boundary condition for temperature model to be of type contant heat flux (is active as soon as a standard grid is loaded with identifyer _HeatFlux_Lower_Boundary_Condition_
    -> Note 1: all changes are documented in the actual documentation ("WaSiM-Documentation 2013.pdf", chapter 2.24 on heat transfer).
    -> Note 2: If the constant flux boundary is used, the constant temperature (either as grid or derived from global parameters) is used anyway for initialization.
    WaSiM 9.03.03, 24.08.2013
    ==> Official Release
    ! Update runoff values for efficiency criteria was wrong: shift of 0 was really a shift of +1, or: the R^2 etc. for a time shift of 0 was printed for a shift of -1.
    + changes for MPI: preparations for making groundwater model MPI aware (MPI-Halo now different etc.)
    WaSiM 9.03.02, 05.06.2013
    +snow model: dynamic glacier retreat and advance is now MPI aware.
    !some MPI functions were corrected and optimized. Since the MPI-Version was not maintained during the last three years, there were some issues to be fixed:
    -> Superposition didn't work correctly (double output)
    -> sum grids were not always written correctly
    -> direct flow and interflow were not correctly accumulated in MPI mode for the first few time steps
    -> groundwater module works now 100% compatible (but not yet in MPI mode) with MPI modules (i.e. the output of the model including groundwater is now identical weather MPI is used or not).
    Attention: Surface routing and Channel routing with Lake-Model is not yet MPI aware.
    !the MPI version was not working any more, so there were some issues to be fixed: Log-files, temporary control files, XML-diagnostics and storage file will now be written for each MPI-instance with its rank in the file name, so there will be no file which is opened multiple times for reading on the same machine and thus causing no file read error any more.
    +Also, the MPI functionality is now available with integrated OpenMP - even under Linux! Thus, MPI becomes a real alternative
    +Optimizing reduction function for groundwater flows under partly glacierized cells in order to minimize balance errors
    WaSiM 9.03.01, 05.05.2013
    ! ETR for methods 2, 3 and 4 (all except Penman-Monteith) was wrongly written to the statistics file: values for vegetation layer 1 were accumulated rather than cleared for every time step. This was an output problem only, internally, the correct evaporation values were used.
    WaSiM 9.03.00, 03.05.2013
    o doubling memory usage for internal file buffers from 1 to 2 Megabyte since the double format needs twice as much memory.
    WaSiM 9.02.02, 25.04.2013
    + changed all single precision data types (float) to double precision data types (double) internally. This speeds up the model by 7% to 20% (and increases RAM usage by appr. 5 to 10%).
    + adding an option to write all grids with double precision instead of single precision only. Default is single precision for backward compatibility reasons. When grids should be written in double precision (which may be better when using these grids for initialization of successive model runs later), the line "WriteDoubleGrids = 1" must be added to the section [output_interval] in the control file. Attention: double precision grids cannot be viewed by showgrid and cannot be handled by any of the wasim grid tools yet. For viewing grids with showgrid, the option "WriteAsciiGrids = 1" or "WriteDoubleGrids = 0" in section [output_interval] should be set (WriteAsciiGrid overwrites the settings of "WriteDoubleGrids = 1", since an ASCII format is written with the original internal double value anyway. Also, all WaSiM version can now automatically read in grids and stacks in single or double floating point precision (for grids, also ASCII will be recognized automatically, but not for stacks). Thus, internally all handling of the gridded data is now in double precision, whereas the input and output may still be in single precision, resulting in smaller and backward compatible files but also in a very slight loss of precision - this may be an issue when coupling model runs via the results of one run to the other. Combined results of such runs may look slightly different directly after the coupling than an uninterrupted run would look there.
    ! fixed a bug in setting the transmissivity for (partly) frozen aquifers from the soil model. It was virtual impermeable before. Now, the transmissivity is not set by the soil model but by taking into account the thaw depth of the uppermost aquifer in the groundwater model itself. The second aquifer is then a confined aquifer which is either limited by the permafrost or which lies completely in the permafrost itself.
    WaSiM 9.02.01, 19.03.2013
    ! permafrost thaw depth will now be regarded not only when the simple permafrost model is used but also when the heat transfer model is used
    + new method for groundwater: method 3 restricts the groundwater flow to their sub-basin. Until now the groundwater current could move into other sub-basins if the underground head gradient allowed this. This can now be suppressed by using method 3. It should be made sure, however, that no "enclaves" of a sub-basin exist (i.e. cells which have no direct neighbor with the same sub-basin code).
    ! reduction of real soil evaporation when a "bad theta" warning was issued was not implemented, so the theta value was limited to 0 but the real evaporation was not reduced by the cut-away amount. This is fixed now.
    ! gwflow: reduction function for partly glacierized cells changed to (1-icevalue)*(1-icevalue)
    ! correcting Head in gw-model when a boundary condition of constant head is used (caused the model too lose/gain water every time step without leveling out of the heads).
    o Cleaning up debug code used while checking for balance errors
    o changed reduction function for partly glacierized cells in GW-model back to a simple quadratic one (1-icevalue)^2
    WaSiM 9.2.0, 07.02.2013
    ! Optimizing reduction function for groundwater flows under partly glacierized cells in order to minimize balance errors
    ! several corrections for clean(er) balances when using dynamic glaciers with partly glacierized cells. There is still a small known balance problem for partly glacierized cells which manifests itself when the soil is highly permeable and/or the soil drains to low theta values fast (parameterized as rock).
    ! interception: statistic will be written correctly per vegetation layer (was zero until now except for the total sum over all layers, which was still correct). Grids were still ok, this was only a statistics problem.
    ! superposition: statistics for precipitation corrected: precipitation correction was carried out after writing the correction, this was changed to write the statistics for the corrected precipitation.
    o Now snow evaporation is calculated before the snow model runs. Thus, snow evaporation can be accounted for by glacier balance.
    ! glacier model:
    • accounting for snow evaporation in glacier balance
    • glacier runoff and firn etc. statistics have now 5 significant digits instead of four (due to the small portion of glaciers the total runoff for the entire basin is often very small, so that 4 decimal digits were often too less)
    • glacier total runoff was wrongly weighed for the statistics. Since this statistic value was input to the flow routing, the total runoff from glaciers may have been modelled inaccurate in old versions (probably in a range of max. +/- 2% with regard to the entire basin). This was only a matter when using the new dynamic glacier model and when using many small subbasins with glaciers).
    • common statistics: weighted statistics are corrected. So far the weighting was done in a wrong way. This had an impact on the unweighted glacier mass balance only (absolute balance per glacier in mm)
    • soil model (Richards): some corrections for statistics when dynamic glaciers were used.
    ! Initializing grids: zone grid is analyzed first (creating FirstLastCol-array) before loading all the other grids and filling missing values.
    o speed up of showgrid for large grids by omitting rows and columns which would be drawn on existing pixel rows/columns.
    top2012
    WaSiM 9.1.1, 28.11.2012
    ! So far interpolation method 12 (Thiessen plus lapse rate) did not work correctly when only one station was used. This bug is fixed now.
    o New versions of the WaSiM helptools Showgrid and Graphlines are available: better Windows 7 compatibility and much better performance when showing large grids.
    WaSiM 9.1.0, 28.10.2012
    ==> Official Release
    o some internal clean-up: String utilities are grouped together in a new helper class (e.g. StringSplit, stripInt, stripDouble, stripString etc.). This affects source codes like defltuzr, meteoint, reading soiltable, landuse table, etc.)
    + glacier melt: If no global radiation is available, then the model uses automatically the theoretical radiation for clear sky conditions regarding the local geometry (slope, aspect).
    + glacier model: A debris grid can be provided as standard grid (id = debris_on_glaciers). This grid may contain values at all cells for which the melt coefficient for glacier ice melt should be reduced. So the value range should be between 0 and 1. However, the debris grid can also be used to amplify the melting by setting the value to greater than 1 (e.g. for so called warm ice). The debris grid is only evaluated for ice cells without any firn on it. If there is a cell with a valid value in the debris grid but with firn (or snow) on it, then no ice melt will be there and thus no impact of the debris at all. So it is safe or even a good idea for the firn and debris grids to overlap a bit, especially for the dynamic glacier model, where the firn may disappear during a model run.
    + The debris grid value may be globally scaled by a "global debris scale factor". This is a new parameter in the control file at the very end of the glacier model which is only read in when a debris grid was found (otherwise it is set to 1.0 internally, so no change in old control files are necessary).
    + A new section may be added to the control file for special outputs: [special_output]. It can be used to write time series for any set of selected cells of any gridded entity, e.g. soil moisture, soil temperatures or melt rates. The output can be grouped together into various files, depending on the criterias (e.g. sorted by cell location or sorted by sub-model or sorted by entity). The configuration is highly customizable. For each output file a set of entity definitions can be configured which in turn may contain any set of cells (given by their coordinates) and levels (for stacks). A sample configuration looks like this: More »
    WaSiM 9.0.13, 22.10.2012
    ! Corrected balances of abstractions from reservoirs. There were some problems in the case of small reservoirs which could be completely emptied in one interval.
    o TargetCap changed for abstractions from reservoirs to consider the total flow in the target basin instead of the capacity of the abstraction itself (since this can be accounted for in the abstraction rules already)
    + 1D vertical heat transfer extended by advection induced heat transfer (using method code 12) -> still not tested
    ! reading and writing of parameters in storage_topmodel.fzt: actual content of QD was not correctly stored and read.
    WaSiM 9.0.12a, 19.09.2012
    ! storage file for snowmodel: contents of glacier runoff components where not written when using readgrids=1.
    ! topmodel version: still wrong initialization of soil model: it was initialized in a way that the snow outflow was not used as input for soil model but the precipitation itself. The same error was already fixed for the Richards-Version in release 9.00.06. Only an internal release.
    WaSiM 9.0.12, 15.08.2012
    ! when landuse is read in as periodically changing standard grids, all the layers were not updated with the changed landuse codes, only the base landuse grid (which corresponds to the multi-layer landuse grid).
    WaSiM 9.0.11, 20.07.2012
    ! wrong reference to a land-use type fixed (this caused an error when calling a function to calculate the actual n-factor for soil heat transfer - only important for heat transfer model)
    ! make sure that no storage file is written when snow model finishes and no glacier model was active (this may cause incomplete files when the model run stopped before glacier balances are computed once a model year)
    ! dealing correctly with nodata values in the observed runoff files
    WaSiM 9.0.10, 18.06.2012
    + DryDensity, DryThermalConduct (conductivity) and DryHeatCapacity of soils can be parameterized for each soil horizon and not for the entire soil as a bulk property (simply by providing a value for each horizon as for other horizon-specific parameters like van Genuchten-parameters)
    + n-factor (boundary condition for heat transfer model) can be parameterized as monthly value (or rather per JD sample point) per land-use as the other time variable phenologic parameters
    + evaporation can be extracted not only from the soil first layer but from a given soil depth (use new parameter EvapMaxDepth in the soil table; default is the depth of the first numeric layer)
    + new method for calculating hydraulic conductivity for partly saturated and partly frozen soils. k_sat_of_SE is not only depending on SE(T) but also on Theta (see documentation)
    ! some fixes for wrong error numbers
    ! nodata values in observed external inflows are handled as zero-values (runoff and concentrations of tracers are set to 0)
    ! bug in parallelising of heat transfer has been fixed: ksat was not really thread safe since the ice/water dependent hydraulic conductivity was stored in the soiltable instead in the active cell. Now there are stable runs and identical results between different runs of the same control file.
    ! when using statistics write codes of 1xxx and 3xxx resp., the program wrote beyond array boundaries when initializing the statistics, causing program terminations. This is fixed now.
    WaSiM 9.0.9, 29.05.2012
    ! initializing grids before writing with writegrid = 8 (for generating default grids when reading those grids as standard grids)
    ! now standard grids may mix periodicity with outputname or statistics parameter
    ! ice_firn grid no longer required for dynamic glacier model
    WaSiM 9.0.8, 01.05.2012
    ==> Official Release
    ! checking and correcting all error codes according to the new documentation
    ! calculation of ETP for open water: Radiation was not correctly applied (there was some radiation spared for soil heat flux, which is now used for evaporation too)
    ! DynamicPhenology_4: altitude correction is now working for non-dynamic sample days (was not working at all for DP4 previously)
    WaSiM 9.0.7, 30.04.2012
    + Implemented implicit solution schema for heat transfer model: Now this scheme is delivering exactly the same results as the explicit solution. Thus allowing to take advantage of an implicit solution. There are almost no numerical instabilities when using much longer time steps. Tests revealed that for daily time step the sub time step for explicit solutions should not be larger than 1800 seconds, whereas for implicit solutions the time step can still be as large as a day without any substantial loss of accuracy. For hourly resolution the situation is similar: Explicit solution should not use larger time steps than 1200 seconds whereas for implicit solutions 3600 seconds are still ok. However, some artificial effects will be seen in both versions because of the larger temporal temperature gradients within a day. So shorter time steps are recommended as down to 900s for both methods when running in an hourly time step. For even shorter input data resolution even shorter sub time steps may apply.
    + sub-timestep-optimizer (based on the mesh Fourier number) for heat transfer implemented (and commented, because it is often useless when melting energy and it's fast change over time must be considered, so the old approach of the explicit solution is kept active).
    WaSiM 9.0.6, 10.03.2012
    ! fixed a severe implementation error from version 9.0.4: Since the order of initialization for snow model and soil model was changed, there were some settings for snow model related entities which were set do their default values in unsatzonmodel (so the soil model acted as if no snow model was active). This is fixed now by changing the initialization order back to the original order and extending the snow model by a call to the same zone identification method as in the soil model, thus making sure that the snow model uses the same zones for glaciers as are used in the soil model.
    ! making sure that the glacier zones used in the soil model were taken from the correct grid: if the traditional ice_firn grid AND the new glacierized cells (fraction of cells with glaciers) were read in both, until now the soil model used the glacierized cells grid, no matter if the static or dynamic glacier model was used. Thus, if both grids were different (what is the case most probably) the resulting runoff could be wrong at all. This is fixed now: the soil model will also look for some spezial grids only available when using the dynamic glacier model prior to decide which glacier grid to use.
    WaSiM 9.0.5, 28.02.2012
    ! When using Wendling Evaporation algorithm (Method 3) and having no radiation as input data (modelled by sunshine duration instead), the model crashed because internally the DEM was not retrieved for radiation modelling.
    ! corrected interpolation of HAMON coefficients (so far only a shift of 15 days was possible)
    WaSiM 9.0.4, 27.02.2012
    ! thorough debugging of the 32-bit version: Chrashes when using the lake model and abstractions, and inflows could occur due to some wrong memory allocations when parsing the control file. Should be fixed now.
    ! glacier statistics and ELS handling in snow model: Now this will be controlled by the same zones as used in the unsaturated zone model and in the routing model, since the runoff of the glaciers must be available in those sub-models in the expected zonal structure. Thus, other zones may be used in the snow model for other statistics like snow storage etc. (all not [only] glacier model related statistics and all non-glacier-runoff linked variables even from the glacier model). There is no user action (i.e. control file change) required The addresses will be taken automatically from the unsatzonmodel. For this purpose the order of initialization of snow model and unsatzonmodel was changed internally. Now the snowmodel is initialized after the unsatzonmodel, since otherwise the addresses of the zone-related objects (taken form unsatzonmodel) were not yet available.
    WaSiM 9.0.3, 21.02.2012
    + optimizing the performance of the heat transfer model: Now the sub time step for heat transfer and water transport are handled separately. If the sub time step for heat transfer is half or less of the water transfer sub time step, the heat transfer sub time step is made an integer factor of the water transport sub time step (i.e. if heat transfer sub time step would be 48 seconds and water transfer sub time steps would be 600 seconds, the integer factor would be 13 (600/48 = 12.5 ? rounded up to 13), so the effective heat transfer time step is now 600/13 = 46.15 seconds. This allows the heat transfer to be de-coupled from the sub time steps of the water transport. Now, in this example in every water transport sub time step, the heat transfer is completely computed 13 times, thus reducing the computational time for water transport by factor 13, which affects strongly the entire run time of the model (experimental results: speed up is approx. 2 times).
    WaSiM 9.0.2, 18.02.2012
    !/o changing the parsing mechanism for routing descriptions from pure old C to C++ streams and strings. Thereby simplifying the code considerably and removing some implicit errors with copying strings.
    WaSiM 9.0.1, 16.02.2012
    + a brand new sub-model is available: the 1D vertical heat transfer. It is coupled to the solution of the Richards equation. So it will be available in the Richards-version of WaSiM only. For this first version only heat diffusion is regarded (no advection by infiltrating water etc.). Also, no heat transfer trough snow packs, no lateral heat diffusion, no heat advection by lateral groundwater flows etc. are implemented. However, the temperatures in the soil column can be modelled now - and thus the effects of frozen soil on runoff generation, infiltration etc. There is one disadvantage: The computational times will multiply depending on the configuration (number and thickness of soil layers, especially thickness of the uppermost layers down to approx. 10 cm) by a factor of up to 10 to 20 compared to model runs without heat model. For daily time steps, the increase may be even larger, since internally the time step may be reduced to some seconds in order to keep the numerical solution schema stable.
    top2011
    WaSiM 8.10.4, 14.10.2011
    ! check in unsatzonmodel if root depth is less than soil depth
    ! error fixed in precipitation correction when using regions for interpolation (no wind dependent correction was done for snow)
    ! fixed an error in week day dependent abstraction rules (on Mondays, no abstractions were taken from the reservoirs at all)
    WaSiM 8.10.3, 20.09.2011
    + date dependent abstraction rules implemented
    + time dependent abstraction rules implemented
    + writing standard grids rightly after reading (in order to get the changes made by nearest neighbor-fill algorithm)
    ! corrected error in GLMB initialization when reading grids from disk
    o minor changes to error message when reading row and col parameters
    o OpenMP: in debug-mode, the output when a balance is wrong in a cell must be put into an OpenMP-critical section
    WaSiM 8.10.2, 19.06.2011
    ! Make sure that no negative volumes and areas can occur. This also prevents the total runoff from -1.#IND values from glacierized areas with zero area.
    o writing balance errors into the log file: make this section critical for OMP (only important for debugging the application
    WaSiM 8.10.1, 25.05.2011
    ! Expression parser results were not returned correctly to WaSiM values resulting in SDISP=0 etc. for all time steps. Error is fixed now.
    WaSiM 8.10.0, 16.04.2011
    ==> Official Release
    + expression parser implemented into the silting-up model... More »
    ! fixed a bug when searching the control file for some optional parameters which could cause WaSiM to loop infinitely
    + extension of meteo interpolation method 12. Now three new parameters can be used optionally (as a group):
    • upper inversion elevation
    • upper lapse rate
    • data type (T-type for continuous data like temperature; P-type for discontinuous data like precipitation or sunshine duration)
    This extension allows the definition of two different lapse rate ranges with elevation, so the lapse rate may change in a certain elevation in intensity and/or even in sign. More »
    WaSiM 8.9.5, 19.02.2011
    + added 8 new optional parameters to the control file for [SiltingUpModel]. The parameters are used for the following equations... More »
    + added a method in section [SiltingUpModel] in the control file.
    • OLD:
      [SiltingUpModel]
      1 # 0=ignore this module, 1 = run the module
      $time # duration of a time step in minutes
    • NEW:
      [SiltingUpModel]
      1 # 0=ignore this module, 1 = run the module
      $time # duration of a time step in minutes
      1 # 1=default, 2=read parameters, 3=free expressions
    WaSiM 8.9.4, 13.02.2011
    + added a parameter to the permafrost model: k_sat_reduced will be taken instead of 1e-12 (taken in former versions as constant value) to define the infiltration capacity into frozen soil layers.
    WaSiM 8.9.3, 09.02.2011
    ! some minor bug fixed for dynamic glaciers: firn modelling used n-1 layers instead of all n layers and SSTO and SLIQ were not set to 0 when making old snow to firn.
    WaSiM 8.9.2, 08.02.2011
    + adding an optional parameter to the 5 regression parameters in elevation dependent regression method 10 for meteo interpolation. This is a fix lapse rate valid for the uppermost range. Applicable for regions where we have no information on, e.g. precipitation in high elevations. So we can set a constant lapse rate to be able to reduce precipitation in elevations of e.g. higher than 2500m. The new parameter set would look like this:

    [precipitation]
    10 # method
    $inpath//precip.txt AdditionalColumns=0
    800 1400 200 1 300 -0.002
    # regression parameters for precipitation:
    # lower inversion, upper inversion, tolerance, overlap (0/1),
    # max cluster range, lapse rate fix for upper regression...
    WaSiM 8.9.1, 06.02.2011
    ! Irrigation method 4 (ETR/ETP > x): when transpiration was taken from interception and/or snow only, the soil transpiration was zero and thus ETR/ETP was always < x. This is fixed now: ETR/ETP will be 1.0 in these cases.
    ! Permafrost: transpiration extraction not possible from frozen soil now (below thaw depth)
    ! After thaw depth increases, the soil will get it's old k_sat value instead of keeping the reduced value of 1e-12 m/s forever.
    ! Now infiltration into first soil layer is controlled by the reduced k_sat value (of 1e-12) if thaw depth is within this layer. Before, the first soil layer could be saturated even if permafrost was in layer 1. This could have strong effects on soil water when the first soil layer was considerably thicker than a few mm.
    top2010
    WaSiM 8.9.0, 15.09.2010
    + Now standard grids can be configured to create output statistics as well as to be written as any other grid (like variable grids) at any requested interval. This is useful for grids which will usually be created and changed internally by default. Now they can be read as standard grids (or even created and given a default value). More »
    + adding RSE, ALbedo, LAI[layer], VCF[layer], RSC[layer], RSI[layer], Z0[layer] and ROOT[layer] to the detailed output in the otherdata file for the control cell.
    WaSiM 8.8.3, 24.08.2010
    ! Error in initialization of lakes: Lakes with a certain shape stretching from the upper right hand corner to the lower left hand corner with the upper left cell being the most left cell of this lake at all were initialized wrongly: this cell did not count as lake internally.
    WaSiM 8.8.2, 06.08.2010
    ! Output of “otherdata” statistics: there was some rubbish beyond the last data column (depending on how many soil layers there were). These columns are removed now.
    ! Glacierized cells caused an error in the topmodel version when using no lake grid.
    ! Glacierized and unglacierized cells were swapped for balances.
    WaSiM 8.8.1, 09.07.2010
    + Implementing a soil stability index into WaSiM-Topmodel version. Documentation on demand (will be part of the new documentation - coming soon).
    WaSiM 8.8.0, 16.06.2010
    ==> Official Release
    + Sub-time step for the sub-model group "soil model, surface routing, groundwater" implemented in the Richards version. Thus, these three sub-models can run with a shorter time step (as the soil model and surface model already did) in a loop, e.g. in areas where the gradients are too high for the common model time step;
    for instance, when running the model in 1 m spatial resolution with strong local gradients of up to 0.5 in a moor or marsh region with high hydraulic conductivities in an hourly temporal resolution. Internally, soil model and surface routing model will keep using their dynamically estimated sub-time step, which has now an upper limit set by the new sub-time step of the mentioned model group; now it can not be longer than that sub-time step, but can well be shorter. The required model setting in the control file is a single parameter (the number of sub-time steps) in a new section [soil_surface_groundwater_substeps]. Values to start with are 1 (default), 2 (half of the common time step), 3 etc. Please set this value carefully. Too high values can decrease the model performance dramatically, since unsatzonmodel and surface routing are called each time!
    ! made warnings "no station in search radius" thread safe (module could crash when two or more messages were printed at the same time from different processors).
    o routing module: changed the WARNING that no oberved runoff is used for calculating the efficiency criterion into an INFO.
    WaSiM 8.7.0, 25.05.2010
    + Dynamic glacier model implemented. This is a major extension to the existing glacier model:
    • Glacier areas may shrink and grow depending on the mass balance over the year.
    • The glacier area is not restricted to its own sub-basin.
    • There may be an enclosing basin (for one or more glaciers) which is the basis for all glacier statistics in mm (since are will change, the statistics need a new fix area the regard to).
    • Each glacier must have an ID in order to apply the V-A-relation properly.
    • Some new parameters must be provided in the control file (see separate documentation).
    + new interpolation method 12 (Thiessen + lapse rate).
    ! air pressure calculated for actual elevation for radiation extinction instead of set to 970 as fix value (only small effects on results).
    ! Topmodel version crashed because it could not find the MPI-regions (which are now created by default as in the Richards-Version).
    ! Topmodel version crashed when cancel the model run with option 2 because output stream was deleted before the last message was printed to the stream. This is fixed now.
    WaSiM 8.6.3, 10.04.2010
    ==> Official Release
    ! bug fix for initialization of DynamicPhenology_2: When starting the model under cold start conditions, DP2 switches to DP1 and causes an access violation when trying to access a data structure not valid for DP2 but DP3 only. Now the data structure is accessed for DP3 only, so DP2 will work properly even when using DP1 for the first model year.
    WaSiM 8.6.2, 25.03.2010
    o Changing diagnostic levels for some messages from WARNING to INFO in order to allow FEWS a smoother run.
    + Added an optional output statistics for thaw depth. To enable this statistics, after the last parameter (readgrids) in section [SurfaceRoutingModel] of the control file a common parameter set for statistical files has to be added (i.e. a filename or a variable containing a filename and a 4-digit code specifying the output like:
    $outpath//sfstsr//$grid//.//$code//$year $hour_mean
    # statistics for surface storage in mm per sub catchment)
    WaSiM 8.6.1, 06.03.2010
    ! Initialization of shallow lakes from read in grids corrected for such cells which were fallen dry in the previous simulation.
    ! Handling of complete or incomplete filenames changed when using "/" instead of "\" in Windows environments. Now absolute filenames beginning with "\\" or "//" are also allowed (server-path pattern).
    ! When using WaSiM for interpolation only, now the land-use grid is no longer required to run the model at all.
    + Added a new command line parameter -diaglevel:< level >. < level > can be one of the following:
    DEBUG/Debug/debug: all output except some very special display specific output is also sent to the XML-Diag file
    INFO/Info/info: only error messages, warnings and infos are sent to the - XML-Diag file (information on start time, finish time, finished model day and some more)
    WARNING/Warning/warning: only error messages and warnings are sent to the XML-Diag file
    ERROR/Error/error: only recoverable errors are sent to the XML-Diag file. Actually no error is recoverable, so this setting will have no other effect than FATAL.
    FATAL/Fatal/fatal: only fatal error messages will be sent to the XML-Diag file.
    + Added a new command line parameter -diagfile: < filename >. This parameter gives the filename of the output XML-diagnostics. It is optional. If omitted, the default filename will be WaSiM_diag.xml
    o Some internal changes to the stream handling were made in order to allow suppressing of messages for the XML file (also the message headers like INFO:, WARNING:, a.o. are suppressed now).
    ! When reading the observed runoff file, the analysis of the columns is done on the first valid data row (which is the first row starting with a number). All other rows are expected to have exactly the same number of values like this first row. When this is not true, WaSiM may shift dates and values. This is still a potential problem, but now at least a misreading of a floating point value into an integer date (year, month, day or hour) field will be recognized as an error. WaSiM will stop with an appropriate error message. However, if the file contains integer values only, then no error will occur until the end of the file is read in. The best case will be that the shift in values is not resulting in the exact number of values for the last file row; so the described error may still occur.
    WaSiM 8.5.6, 11.01.2010
    ! When a Pond was overrunning, QD was wrongly assumed to be in mm instead of m/s. This error led to extremely high runoff values for direct flow. It is corrected now.
    ! The storage file was appended to the old file and not re-created when no routing module was active. This is corrected now: When the unsaturated zone model is active only, then the storage file is created there, otherwise it is appended.
    o internal optimization: strstreams replaced with stringstreams in order to avoid deprecated functions
    o changed the internal stream class to make it compatibel with ANSI C++ (and thus operable under Linux)
    ! The snow and rain fractions of precipitation are no input state grids, so they are no longer required when starting with initial conditions.
    top2009
    WaSiM 8.5.5, 16.12.2009
    + Implementation of an additional diagnostics output as XML file. This file with the fix name WaSiM_diag.xml will be created for each model run (and it will overwrite existing files with the same name). It contains the same information as the console output but in XML format and with additional attributes for the severity level:
    0 = FATAL (non recoverable errors)
    1 = ERROR (recoverable errors)
    2 = WARNING
    3 = INFO (most output as written on the console)
    4 = DEBUG (currently not used)
    WaSiM 8.5.4, 06.12.2009
    ! Corrected detailed output "otherdata" in unsatzonmodel: exactly 16 columns shold be written and not as many columns as there are soil layers. This is corrected now.
    + Surface routing: Now it is possible to rout surface runoff across sub-basin borders (but only if the other cell has a valid zone code too; so no routing into nodata-cells is possible). Sub-basin borders may change by rising water tables in very flat regions. Also this configuration allows some “special effects“ when running the model for comparison with some special locations: each location may then be represented by a single-cell sub-basin. However, no channel routing should be used for such applications with single cell locations, since a single cell basin should not be set as a river cell - surface routing would not work then for this cell.
    WaSiM 8.5.3, 29.11.2009
    ! Because of limited numerical precision the comparison between the hydraulic head and the upper limit of an aquifer could result in confined conditions for the uppermost aquifer. This caused some saturated cells with high gradients to the neighboring cells to generate direct runoff when the aquifer thickness was set to 0 within the permafrost extension. Now, the aquifer is assumed to be confined only when the hydraulic head exceeds the elevation of the upper limit of the aquifer by at least 0.01m.
    WaSiM 8.5.2, 22.11.2009
    + Groundwater model extended by an active layer algorithm for deep permafrost: lateral flows in the thawed soil layer may be calculated with the groundwater model now. The transmissivity for the aquifer is limited to the thickness of the active layer. This will NOT work for shallow permafrost but only for deep permafrost. In multi-aquifer models, the lower aquifers are not affected by this change (the deeper aquifers are assumed to be unfrozen all the time).
    WaSiM 8.5.1, 17.11.2009
    ! Content of irrigation grid was always 0 because the grid was written after setting the irrigation amount to 0 in unsatzonmodel again. Now it is written directly in the irrigation model after calculating the irrigation.
    WaSiM 8.5.0, 29.09.2009
    ==> Official Release
    + New method for demand driven irrigation implemented: method 4 does not use critical suction values for irrigation start and stop but rather the ratio of ETR/ETP... More »
    + New module [RegionalSuperposition] implemented: short description of the new module... More »
    Note that the use of the region grid in its old way is no longer possible!
    + Optimization of model performance:
    - unsatzon-model: implemented look-up table for h(theta) and k(theta) search as binary search (speed up will be up to 20%!)
    - exposition dependent radiation correction and shading: now shading algorithm works like an active ray tracer (formerly as a passive shading algorithm). Speed up may be up to 10% for very large grid dimensions (e.g. 1 Million cells).
    + Permafrost algorithms completely implemented and tested.
    + Some preparations have been done for integrating WaSiM in FEWS-FOEN, the Flood Early Warning System used at the Swiss Federal Office of Environment:
    - Now elevation dependent regressions are directly calculated without further need of using the helptools regr or regress.
    - Now write grids can be written in ESRI ASCII format.
    - Now default input and output directories can be defined.
    ! (27.09.2009) An internal temporary variable in the snow model was declared as integer but should have been float. This lead to some sudden but short peaks in the snow melt. This is fixed now.
    ! (25.09.2009) Thiessen interpolation used wrong coordinates when an anisotropy was defined, resulting in incorrect interpolation results. Now the Thiessen method uses unrotated coordinates again. This error was already some years old, obviously nobody used this method or if, then only for a single station. In the latter case is no difference in using the rotated or the unrotated coordinate system().
    ! So far the runoff dynamics in surface routing was limited by the amount of water stored in the active cell (however, water from other cells could flow into each cell, but the outflow was limited). Now this limitation is overcome. But there is another point to pay attention: since WaSiM does not use a hydrodynamic flow model (but kinematic wave instead), the parameter for setting the maximum allowed sub-time step has a second meaning now. After the time given with this parameter, all flow velocities are newly calculated. Thus, it is possible to pour the entire grid cell content within the period of the major sub-time step (the maximum allowed one). All following sub-time steps will then operate with the new velocities and thus with the new water content until the next major sub-time step is reached. Consequently, some calibrating work is needed for this parameter now (as well as for the Manning roughness parameter for each land-use type).
    WaSiM 8.4.3, 19.08.2009
    o Now MPI-regions are defined without taking into account the river cells. This ensures a fast gathering of grids and stacks. The disadvantage is that re-infiltration from rivers into lakes can not be used in the MPI-Version. However, this may not be dramatically since usually the effects of re-infiltrating water are small.
    ! Evaporation when using HAMON: wind speed is not needed as input any longer (was never used, but searched for).
    ! Groundwater when using multiple layers: problems are fixed for the case that the uppermost layer falls dry and the lower layer also becomes unconfined. Until now a leakage was calculated from the uppermost to the second aquifer. This was because of the pressure head in the uppermost layer which was limited to not fall below the bottom of the layer. When the head in the lower aquifer decreases below the boundary between the two layers, there was calculated a positive head difference, resulting in a leakage (even if there was no water at all...). This is fixed. Now the groundwater model has a zero balance even when running with multiple layers.
    WaSiM 8.4.2, 09.08.2009
    ! Now explicitly looking for „temperatur_14“ and „air_humidity_14“ as these meteorological variables are used in Haude-evaporation Schema. This also implies looking for „temperature_14“ in the snow model as well when no other temperature was found.
    ! When using lakes but not explicite the lake model (by using a lake grid), then the model ran into an access violation when the lake were overflowing. This is fixed now.
    + Now the model components surface routing and channel routing will be skipped if the model is run in MPI-mode and the actual instance is NOT of MPI-rank 0. This means that only the instance with rank 0 will run these submodels. Thus, MPI-implementations may run with all submodels now (which has still to be tested with irrigation, surface routing, and silting up).
    WaSiM 8.4.1, 10.07.2009
    +(10.07.2009) Time step splitting for reservoir/lake handling implemented. This is especially usefull for small reservoirs in case of floods when a long time step would cause strong nonlinearities in volume-outflow-relations (e.g. the reservoir could be emptied in one time step and filled again in the next one or never reach the maximum filling at all, even if the flood is serious. Changes in the control file are... More »
    +(05.07.2009) Permafrost Thawing algorithms implemented (not yet the core in snowmodel, but all the input/output stuff as well as the setting of the saturated hydraulic conductivity within the unsaturated zone model). Changes in the control file are... More »
    !(26.06.2009) bugfix in handling of POND: when MAXPOND is 0, then this spot is NOT handled as a POND at all. Hence infiltration excess may discharge as direct runoff whereas it was set to 0 before and stored into the soil somehow.
    WaSiM 8.4.0, 24.04.2009
    +(24.04.2009) Now storage capacity s0 (drainable porosity) of the groundwater model is calculated in the unsatzonmodel in order to have a better match between both modules. However, the s0-value is calculated for the soil layer where the groundwater table is actually within, so different theta-values in other layers may still lead to oscillations, but with a far lesser aplitude than before.
    +A new parameter for non-persistent default grids is added: the last parameter says for how many intervals the new default grid should be valid until the original default is valid again (this is important when reading a new constant head boundary with rising groundwater tables, because the s0-value as described above may not be as expected. When making the boundary condition grid valid for 2 or 3 intervals, the oscillation will be damped sufficiently.
    +(23.04.2009) The option persistent=0|1 for standardgrids was introduced (in combination with option periodicity). This means, that a non-persistent standard grid will be valid for a single time step only until it is replaced by the old standard grid read in at model start... More »
    +(20.04.2009) MPI in snowmodel was implemented (still except for the glaciermodel!)
    +Implemented MPI-compatibility in irrigation module: since MPI is not suiteable here, the inputgrids must be gathered and (after this submodel) be scattered to all the instances.
    +The reduce function for statistics was changed to a function using a custom MPI::Op-style function.
    +(19.04.2009) MPI was extended up to evaporation (potential, snow, real). The longwave outgoing radiation calculation was changed: the cloudiness at night, which is at day estimated by the sunshine duration, was formerly estimated by taking the average value of the sunshine duration for all intervals of bright day for an entire subbasin. Now, it is the average value of each cell only. Thus, we are avoiding synchronization overhead between MPI-instances. And anyhow: using a subbasin mean value is a somewhat artificial limitation, so it is even more to the basic concepts of gridded modelling now.
    +(16.04.2009) Now MPIGatherFloatGrid and MPIGatherDoubleGrid is available.
    +(13.04.2009) First experimental MPI version of WaSiM available. Note that Message Passing Interface (MPI) is needed to use WaSiM in computer clusters and supercomputers. As a first step MPI was implemented for the interpolation of meteorological data, except for writing the result grids -> meaning that it cannot be used for real modelling until at least the results of the interpolation are gathered in rank 0 instance.
    WaSiM 8.3.2, 17.03.2009
    !When reading grids in the [unsatzon_model] with readcode 2, then not only the groundwater table below surface will be read in but also the POND grid (if ponds are enabled). This will lead to a proper initialization of lakes. Because lakes are in very close connection to groundwater. This feature is rather a bug fix then a new feature. All other grids are initialized depending on the groundwater table (i.e. soil water content, hydraulic heads, etc.).
    WaSiM 8.3.1, 11.03.2009
    !When initializing the unsaturated zone, a cell with a lake code was always set to saturated, even if the lake was not fully extended. So the margins of the lake which were empty and dry had a saturated soil which led to a wave of groundwater exfiltration into the lake after model start and to a suddenly much higher mean groundwater table for the subbasin than in the old model run. Now only those cells which are belong to a lake and have a positive POND volume will be initialized in this way. When old grids are read in, this should be the state of the old grids anyway.
    WaSiM 8.3.0, 02.03.2009
    !Balancing of GW: Until now the last (lowest) grid row and the last (rightmost) grid column were not regarded in calculations of fluxes for tracer mixing and balance checks.
    !Balancing of GW: Storage change was wrongly subtracted from balance of fluxes (added instead of subtracted), so the balances were double the total flux.
    +Grid for groundwater balance has been implemented -> It must be added in the control file for each aquifer after the flow grid together with the writecode for the grid, which should be 10 or 20 or 13 or 23 in order to have the sum over the model period or each year, respectively.
    +Internal precision in groundwater model has been increased from single to double in order to allow much smaller errors in mass balances when small head changes occur only; e.g. an actual head change of 0.1mm at a total head of 2000m a.s.l. would require more than 7 significant digits for keeping precise results.
    +New balance check of groundwater implemented: The change in storage is calculated based on the change in hydraulic heads and the storage coefficient. Additionally, the fluxes into and out of the element are balanced as div(grad(h)). The difference of both entities is taken as the calculation error. The error should be near zero, unless there are constant head boundary conditions. Constant flux boundary conditions will also be considered. The averaged annual sum of those balance will serve as a water balance correction term when using boundary conditions in the groundwater model.
    Attention: This method cannot be applied when an external groundwater model should be coupled.
    +Periodical re-reading of standard grids during the model run has been implemented. For setting up this feature, the paragraph [standard_grids] may contain optional parameters for each grid: after the name, the identification and the fillcode, three more parameters may follow a keyword "periodicity": the number of periods to wait until a new grid is read in, the period (H=hour, D=day, M=month, Y=year) and the number of sub intervals of this period. "periodicity 2 D 12" means that each other day (second day, i.e.) at hour 12 a new grid is re-read. The grids must have a filename matching the original filename of the standard grid extended by the date-time-scheme. In the above example, the grid name may be m500.bh1, so the next standard grids must have the names:
    m500.bh1_1984010212
    m500.bh1_1984010412
    m500.bh1_1984010612
    m500.bh1_1984010612
    etc.
    This feature will be interesting for reading known changing boundary conditions for the groundwater model as well as for changing landuse in long term simulations. The only prerequisite is the creation of all the needed grids in advance to the model run. If a grid is missing, the model run will stop with an exception (no results are written!).
    WaSiM 8.2.11, 19.02.2009
    !Macropore infiltration regarded for INFEX output and balancing of PONDs was incorrect since version 8.2.6.
    !QD from snowmelt was added two times under certain conditions (since 8.2.1).
    !Balancing of PONDs was incorrect since 8.2.1, even in 8.2.10.
    WaSiM 8.2.10, 15.02.2009
    !Unsatzonmodel: Now the POND grid is correctly filled (there was a bug introduced in version 8.2.6).
    !GW-Model: The intermediate head for GW-level was written to a wrong grid. As a result of this the iteration took too long. Now corrected!
    !GW-Model: When using boundary conditions (constant head in *.bh*-Grid), then the groundwater level was not correctly written out (except when initializing the unsatzonmodel with readgrids=2, so the real groundwater surface was taken for initialization which should have matched the boundary condition, too). Now, the boundary condition will be regarded correctly.
    Attention: There is still a known problem! When using certain van-Genuchten parameters, then the groundwater level may strongly oscillate when using such boundary conditions. The work on this issue is still in progress.
    WaSiM 8.2.9, 10.01.2009
    ==> Official Release
    !Altitude dependent shift in phenology: fix initialized with -0.025 -0.025 0.025 0.025 for the old style version of the land-use table. Now it is changed to 0.025 0.025 -0.025 -0.025 (so the phenophases will start later in higher elevations and end earlier instead of start earlier and end later).
    !Calculation of snowmelt: the melt amount was defined internally as an integer value, so all melt amounts were rounded to integer values (which was not obvious from the statistics because there we have an average value for a subbasin). Now the melt amount is a floating point value again (bug existed since parallelizing WaSiM with OpenMP in Version 7.5).
    +WaSiM-Helptools for Linux compiled for 64-bit systems -> provided for download according to the latest documentation (1999, which is still valid).
    top2008
    WaSiM 8.2.8, 09.12.2008
    +New grid write codes in lowest significant digit: 6 = at each end of a month, 7 = at the end of a year.
    +New naming scheme for all periodically written grids: _yyyymmdd.024
    !DynamicPhenology 1, 2, 3, and 4: Theta-Scaling default was 1.0, which was not compatible with the new algorithm. Now, Theta-Scaling defaults to 0.0. When running the model without soilmodel (or with topmodel), then Theta-Scaling of 1 may have resulted in too large forcing units (in fact, a value of 1 means a doubling of forcing units).
    WaSiM 8.2.7, 05.12.2008
    !DP4: Start day for vegetation period was calculated correctly but internally never used for evaluating entities with vegetation period dependent average or sum grids. --> corrected. Attention: When using DynamicPhenology_2 or DynamicPhenology_4, be sure to start the model run on or better at least one day before DP2/4_t0_dorm, e.g. on October 1st, when DP4_t0_dorm is October, 2nd. Otherwise WaSiM would use DP1 also for the following model year (because dormation with its chilling units could not be calculated correctly).
    WaSiM 8.2.6, 02.12.2008
    !Bugfix in initialization of Dynamic Phenology 4: MTSTART-stack was only created if at least one other landuse had DP2.
    !Time of starting leave fall was set to the default value for following model years (not the first, but the next ones).
    !Bugfix in macropore infiltration; too much infiltration was calculated due to wrong comparison between infiltration amount in mm and capacity in m/s.
    !Bugfix in Qdir-Statistics: INFEX counted twice; now corrected to count only once.
    !Silting-up/unsatzon/surfacerouting: when no silting up was active but surface routing was, the surface routing storage was not added to the precipitation input.
    WaSiM 8.2.5, 30.11.2008
    +Surface runoff routing: kelsqd and kelsqi from unsatzonmodell are now used. This was not entirely implemented yet (only a default value of 3 for kelsqi ond nothing for kelsqd, meaning QD was only transformed by the translation effect, once a river was reached but not by SLR-effects).
    +Unsatzonmodel: if surface routing is active, then all surface runoff and interflow is now NOT routed into the SLR-cascade but rather statistically accumulated "as is". The transforming takes place in the surface routing model only. Thus, the balances may be checked much easier. Also, the difference in interflow statistics between unsatzonmodel and surface routing will give a hint on the effect of the SLR-cascade.
    !DynamicPhenology4: actual Julian day was internally compared with sample point ID for start leave fall instead of with the corresponding Julian day to this sample point. This lead to unpredictable behaviour in certain cases.
    WaSiM 8.2.4, 27.11.2008
    !Bugfix in generating lookup-tables for van-Genuchten-parameterization when using Par_m (default: m=1-1/Par_n --> no problems there). This error may lead to -1.#IND-results in the soil.
    WaSiM 8.2.3, 23.11.2008
    !Some bugs in setting default parameters for parameters not given in land-use table corrected (value for last sample point was not read in for some variables).
    !Modul silting-up: bug in equation for calculating grain size distribution (*+ instead +) corrected.
    !Modul surfrout: for tau-calculation: slope was used as sqrt(S), should be S --> only. corrected.
    !Modul unsatzon: tracer balance for surface runoff: QDSU now considered.
    !Modul unsatzon: QDGrid: now INFEX considered correctly (was set AFTER setting QDgrid, so it was always zero before).
    WaSiM 8.2.2, 12.11.2008
    !Output of infex and qinf in unsatzonmodell corrected.
    WaSiM 8.2.1, 09.11.2008
    !Outputs of infex and qinf in [unsatzon_model] have been corrected; now qinf contains the downwards infiltration into the soil matrix (without macropore infiltration!) whereas infex represents the excess of input from above (only when no ponds are used), excluding exfiltration water as well.
    !Bug in DP4: when no cell has DP4, then an exception is thrown when accessing the moving average grid (now it is switched off when no DP4 is present).
    +Silting Up: Algorithm only works for cells which have a valid TillageDays-entry in the land-use table. However, the submodel will be called for all cells.
    WaSiM 8.2.0, 04.11.2008
    +Implementation of DynamicPhenology4 (DP4): This method allows to estimate the start of the leave fall. Required new parameters in the land-use table are... More »
    WaSiM 8.1.2, 26.10.2008
    -Conditional compilation removed for surface routing and silting-up module [#ifedef #endif - block definitions of _UNIBW_ removed].
    !Changed measure of INFX from [m/s] into [mm/timestep].
    !Calculation of weights for multiple flow paths corrected.
    +Calculations of flow directions and aspects have been changed. Now all 8 neighboring cells are regarded to calculate the main and minor flow directions.
    +New method parameter for flowpath calculation: 1 = multiple flowpaths without regarding water content, 2 = single flowpaths without regarding water content, 3 = multiple flowpaths with regarding water content, 4 = single flowpaths with regarding water content
    +New algotithms for silting-up module have been implemented (taking into account stones, other infiltration rates, a.s.o); GrainSizeDist must contain values for clay, silt, sand and stones1, stones2, stones3, stones4 (the last ranging from 2-6.3mm, 6.3-20mm, 20-63mm and 63-200mm resp.)
    +Soil table in the control file has been extended by the van Genuchten parameter m. Par_m can be defined for each soil type (analogous to Par_n); default value: Par_m = 1 - 1/Par_n (if omitted).
    +A minimum flow sheet depth for regarding crop roughness for surface routing can be specified.
    WaSiM 8.1.1, 04.10.2008
    +Implementation of "Silting Up Modul" has been completed (Alpha-Version).
    +Now INFEX grid and statistics are written out with the amount of non-infiltrating water from the soil model. [Before: INFEX was always zero since Green-Ampt approach was switched off.]
    +Now filenames for layered entities (e.g. interception evaporation or potential and real evaporation) can be created with relative pathnames. [Before: The dots in the pathnames confused the algorithm to add the layer-ID to the name.]
    WaSiM 8.1.0, 19.09.2008
    +Implementation of surface routing with dynamically calculated roughness: either use conserving (e.g. meadows) or non-conserving (e.g. conventional corn crops) land-use types or other types (e.g. forest) to parameterize k-modelling... More »
    !Radioactive decay for tracer concentrations for groundwater recharge within the unsaturated zone will be only done after mixing with groundwater for unsaturated zone layers (before: The decayed and then mixed concentrations were transferred to the groundwater model leading to a faster decay (appr. 30-50% faster).
    !Clipping drainage runoff to the maximum allowed runoff from that layer (drainable water as for interflow).
    WaSiM 8.0.11, 02.08.2008
    +New writegrid codes: 1xxx and 2xxx are now available to indicate that an additional grid should be written with balances for the vegetation period only. The dates for start and stop of the vegetation period are individually calculated for each cell by using the landuse parameters and lokal climate... More »
    WaSiM 8.0.10, 30.07.2008
    ==> Official Release
    !During initialization no water is taken from reservoirs. Now the start of a new model run can be smoothly connected to an older run.
    !No initial routing is done when readgrids is > 0, since the file "storage_richards.ftz" already contains all the channel content.
    WaSiM 8.0.9, 29.07.2008
    !Fixed initialization of ETR for lake evaporation (so far incorrect when using dynamic time steps).
    +Waterlevel-volume-relation (W-V-function) for lakes has been tweaked: the density of sampling points was increased from 5cm(0..2m), 20cm (2..12m) and 50cm (>12m) to 1cm (0..4m), 2cm (4..14m) and 5cm (>14m), respectively. Thus, the errors in the balance for lakes will be minimized.
    +Basics for vegetation period based statistics implemented: using new landuse dependent parameters like StartVegetationPeriod/StopVegetationPeriod and ResetVegetationPeriod enables the model to calculate the starting point, the endpoint, and the duration of the vegetation period.
    WaSiM 8.0.8, 19.07.2008
    +Irrigation amount will be available as grid output now. The name and the writegrid-code must be given as two new parameters in the unsatzon model (not in irrigation!). So this affects all users and all control files.
    !Simply add the suggested new lines for the file name and the write code and add the variables if symbols are used.
    +Evaporation from lakes: LAI and VCF as well as RSC for lakes are no longer needed. rsc is now set to 0 internally and the algorithms for calculating the effective resistancies are aware of possibly zero values.
    +Also for LAI and VCF values of 0 are now handled specially: no divisions by zero are possible now.
    WaSiM 8.0.7, 17.07.2008
    !When running without interception model, an access violation could occur in etpetr (because it tried to use interception grids.
    !When using sunshine duration with values not equal to 0 for a dark period of the day, radiation exposition correction could deliver invalid corrected temperatures.
    !Interception with one vegetation layer did not use potential interception evaporation until now but rather used the old interception model. Now, when using one layer of vegetation only and using method 2, the potential interception evaporation will be used instead (correctly).
    WaSiM 8.0.6, 24.06.2008
    !Correction of subcatchment-mapping in routing module (for lake modelling) when subcatchments were not enumerated from 1 to n in steps of 1.
    !Same correction in tracer mixing for a special case of foreland flooding.
    WaSiM 8.0.5, 15.06.2008
    !Write a lot of more information for error 152 to be able to find misconfigured landuse or soil types faster.
    WaSiM 8.0.4, 04.06.2008
    !Balance for EVAR corrected (was calculated based on cells with EVAR>0 only, so the average was valid for those cells only, but not for all cells, and thus much too high).
    !Correction for Linux when reading in the abstraction rules for reservoirs and rivers.
    WaSiM 8.0.3, 24.05.2008
    +WaSiM Topmodel version is now also able to use the new lake model. For lake cells, no Topmodel approach is applied (like for glacier cells), so also no groundwater flow balance will be taken into account for lakes in this model version. Note, that the pond grid has NO connection to the soil, so ALL precipitation will be stored in the pond grid and ALL evaporation (only ETP, no EVAR/EVAP here!) will be taken from the POND grid, too.
    WaSiM 8.0.2, 17.05.2008
    +Check for connection of ZL(modus=intern_with_rule) against AL (modus=intern_with_rule) (not only against AL(modus=intern).
    +Adding AL amount to the target subbasin for modus=intern_with_rule (like for modus=intern).
    WaSiM 8.0.0, 01.05.2008
    History of lake model and time variant abstractions:
    24.04.-01.05.2008: Test and documentation, compilation of release and linux versions, regression tests against the older versions.
    !(24.04.2008): Now irrigation code 0 will not reduce tracer concentrations any more.
    !(20.04.2008): Corrections in Alpha 8.0.0 (abstractions and irrigations could lead to negative reservoir content or at least to balance errors)
    +(19.04.2008): Taking into account targetCapacity for internal abstractions. Variable abstraction rules implemented for reservoirs and abstractions (still untested).
    +(16.04.2008): ReadAbstractionRule implemented for Abstractions (not yet for reservoirs).
    +(15.04.2008): Routing-model: added a check for correctly connecting internal abstractions with internal inflows. Each internal abstraction must be connected to an internal inflow in another sub-basin of the model domain.
    +Setting targed data (sub-catchment area and relative area as well as sub-catchment number) in abstraction class in order to be able to limit the abstraction when the target channels capacity is reached.
    !Deleting semaphore file after reading grids (to gain some time).
    !Now irrigation amount is subtracted from the last reservoir in a routing description.
    +(13.04.2008): Implemented abstraction as read in from file.
    !For using observed discharges: When discharges are read in for routing (either for using observed runoff for routing input and/or for calculating r-square), the input file is checked in two ways now:
    1. Only existing columns will be used (if there are more sub-catchments than columns, then the column mappings for such sub-catchments with mapped columns which does not exist in the input file are ignored.
    2. If a "measured" value is -9999, this value is ignored, too.
    +(06.04.2008): Routing: AL_class implemented (refactoring of AL, which was handled within routingclass before);
    Now AL-handling in routingclass before SP handling. So the AL amount is taken from the storage in the same interval;
    SP_class: take abstraction_sum amount into account for balance and error calculations and write it to the result file, too.
    +(04.04.2008): Corrections in routing model (interpolation in W-V-Table), some bugfixes in routing for SP elements.
    !Balance for SP elements corrected by irrigation amount (was not correctly taken into account for balance output only).
    +(24.03.2008): Initializing PONDs and Vakt-Values from each other, depending on readgrids, including tracer-concentrations.
    +(21.03.2008): Partly implementing the initialization of POND grid from routing. The Grid handling is implemented into abflussmodellklasse, routing_model and SP_class (which is newly derived from SP_struct) and handles now all reservoir- or lake-specific functions as methods.
    +(18.03.2008): Lake Evapotranspiration depending on POND content implemented in evapotranspiration model (getETP).
    +(10.03.2008): Initialization for etpetr, unsatzonmodel and gwflowmodel implemented.
    Other changes/bugfixes:
    !(04.03.2008): Inflow files and observed runoff were not processed if they were write protected. This was changed, both file types may be write protected now.
    !(04.03.2008): Preventing the model from a crash when no observed runoff was found but the parameter "use observed runoff" was set (method 2 in routing model).
    WaSiM 7.10.3, 02.03.2008
    !Another bugfix in phenology: z0-values of 0 still caused -1.#IND-values. Now, such values are limited to >=0.01m.
    +Buffering input of observed runoff data and external inflows similar to the input of meteorological data.
    WaSiM 7.10.2, 28.02.2008
    !Bugfix for dynamic phenology 3: When entering a new year, the initial forcing sum is set to 0 for interpolation of phenology now. Thus values of -1.#IND are avoided in ETP (caused by negative values for some phenology parameters due to interpolation between the last forcing value from the last year and the (larger) forcing value in the new year, e.g. for z0, which then was input into a log()-function, resulting in an error for negative arguments).
    WaSiM 7.10.1, 16.01.2008
    !Reading parameters of landuse and soil tables between "{" and "}" only.
    !Corrected initialization of baseflow when groundwater model is disabled. Without this correction extremely high discharge values can be calculated during initialization and also for the first model time step.
    !Coupling external groundwater table: If the external groundwater table is below the soil column, the groundwater table is internally set to the bottom of the soil column (prior it was tried to set the groundwater table to even lower layers, resulting in access violations or other errors).
    +Error handling for reading grids: multiple tests when grid cannot be opened.
    +Grid reading: If nodata values in input grids are smaller than -9999, they are translated into -9999. This may be important for external coupling, when the other model generates nodata values of e.g. -1e+038
    WaSiM 7.10.0, 06.01.2008
    !Tracer handling in [unsaturated zone]: some bugs in balances for tracers were fixed... More »
    +Implementing two new modules: silting up and advanced surface routing as empty frames. It is implemented all the handling of fluxes for water and tracers between the modules. Solely the algorithms of the new modules are still missing... More »
    top2007
    WaSiM 7.9.11, 13.12.2007
    ==> Official Release
    !When generating QB without groundwater model and when using a dynamic timestep at the same time, the baseflow was generated without consideration of the splitfactor.
    WaSiM 7.9.10, 08.12.2007
    !If there were additional regions in the south of the last zone in the zone grid, then the region check failed.
    WaSiM 7.9.9, 28.11.2007
    !Bugfix in output of R-square at the end of the routing output file: When using a selection of subbasins AND discontinuous subbasin codes (e.g. 12,17,28 without subbasins 1 to 11 and 13 to 16 a.s.o) then the R-square values were complete rubbish until now...
    WaSiM 7.9.8, 21.11.2007
    +Two new parameters implemented into the phenological method "DynamicPhenology_2": DP2_Offset_1 (defaults to -3.4 if not present) and DP2_Offset_2 (defaults to 10.4 if not present).
    WaSiM 7.9.7, 18.11.2007
    +Now the POND grid can be considered in the [groundwater_flow] model in order to calculate the hydraulic head and lake growth by exfiltrating water.
    WaSiM 7.9.6, 09.11.2007
    !Fixing a bug for statistics output: When using a set of subcatchments for output only (codes 5 or 6) and at the same time the subcatchments in the zone grid are not numbered from 1..n without missing value, then the output was for invalid zones or even complete rubbish.
    !Extended error handling when using a river link code without corresponding routing description.
    WaSiM 7.9.5, 05.11.2007
    !GW-Reinfiltration was handled with wrong riverflow_table-indices. Now, the indirection for river-links works correctly --> caused segmentation faults under LINUX.
    !Regression with multiple regions: Now zonegrid masks the region grid too in order to avoid errors due to distant regions which have a positive weight in the weighting grid but no region code.
    WaSiM 7.9.4, 28.10.2007
    !Korrekte Ausgabe der Grids gwh1..n, gwx1..n und gwy1..n; diese Ausgaben wurden im Multithread-Modus unterdrückt.
    !Nochmalige Korrektur der ksat_topmodel/ksat-Eingabe (war evtl. ein Linker-Problem).
    !Korrektur für Multithread-Modus bei [unsatzon_model] Methode 3 (dynamischer Zeitschritt). Hier traten Fehler auf, weil eine Variable nicht threadsafe war.
    WaSiM 7.9.3, 23.10.2007
    !Korrektur an GWIN/GWEX-Berechnung, wenn die Bilanzfehler durch numerische Ungenauigkeiten in einem Iterationsschrit im Richardsmodell mithilfe von GWIN/GWEX kompensiert werden.
    +Vorbereitung eines detaillierteren Loggings mit Hilfe eines in der Steuerdatei festlegbaren Parameters - der aber bisher noch nicht eingelesen wird - und auch Logeinträge werden noch nicht erzeugt.
    WaSiM 7.9.2, 18.10.2007
    oAusgabe ETR[0] als Grid und als Statistik: enthält nun die totale reale Evapotranspiration als Summe aus ETR[1..n] + EI[1..n] + EVAR + EVRS
    WaSiM 7.9.1, 16.10.2007
    !Korrektur bei Verwendung von Regionen: Steuerdatei wurde geschlossen und anschliessend wurde der Abschnitt für die externe Kopplung nicht gefunden –> Steuerdatei wird jetzt wieder geöffnet vor der Suche nach den Kopplungsparametern.
    WaSiM 7.9.0, 30.09.2007
    +dynamischer Zeitschritt in Richardsmodell implementiert: neue Methode für Unsatzonmodell: 3=dynamische Zeitschrittsteuerung
    zusätzliche Parameter:
    ominimum dynamic time step in sec
    oresult statistics of the number of substeps
    oresult grids containing the number of substeps
    !ksat_topmodel wird nun nicht mehr irrtümlich gelesen, wenn ksat gesucht wird.
    WaSiM 7.8.3, 20.09.2007
    +Stressfaktor für dynamische Phänologie: fehlt er oder ist er <= 0, dann wird ohne Stressbeeinflussung gerechnet.
    !Temperatur für dynamische Phänologie wird nicht mehr in Expokorr und Verdunstungsmodell verändert (dynamische Phänologie wird VOR Expokorr und ETP berechnet -> bei Stundenschritten also im Intervall 24 des Tages)
    WaSiM 7.8.2, 10.09.2007
    !Korrektur an ETR-Entnahme aus gesättigten Bodenschichten, bei negativen Differenzen zwischen aktuellem und Grenz-Theta
    WaSiM 7.8.1, 23.07.2007
    +Bodenfeuchteabhängigkeit für DynamicPhenology implementiert
    !Korrekturen an der Berechnung des GW-Standes, um Schwingungen im GW-Stand und in hhyd, qu und theta zu vermeiden; Entnahme von Verdunstungswasser aus oberster gesättigter Schicht entgegen der Entnahmedichte, wenn Wurzeln ins GW ragen.
    WaSiM 7.8.0, 30.06.2007
    +Dynamic Phenology 3 implemented: läuft mit Topmodel- und Richardsversion
    WaSiM 7.7.1, 22.05.2007
    +neue Interpolationsmethode 9 zum Einlesen von Grids anstatt zu interpolieren: die Tabellendatei enthält Dateipfade und -namen der einzulesenden Grids.
    WaSiM 7.7.0, 06.05.2007
    +Sequential model 24b for dynamic phenology implemented
    +variable grids must now have a fourth parameter indicating the default value. This was important for reading e.g. chilling units at the model startup.
    WaSiM 7.6.0, 22.04.2007
    +dynamische Phänologie, es wird an einem definierten Tag (in der Steuerdatei pro Landnutzung festlegbar) der TSTART-Wert auf -1 gesetzt und die Forcingunits auf 0. Somit kann man auch längere Jahre simulieren.
    WaSiM 7.5.1a, 10.04.2007 (inoffizielle Zwischenversion)
    +dynamic phenology implementation started; should compile and run with usual control files dynamic phenology is not yet complete:
    - TSTART and FORC grids must be created when required
    - Forcing units must be calculated
    - actual parameters for TSTART must be set when the conditions are meet
    +implementation of dynamic phenology: reading the landuse table is implemented
    todo: creating FORC and TSTART-grids and doing the forcing calculation as well as setting the actual parameter in the LUtable when beiing in a TStart...TStart+Delta time slice
    WaSiM 7.5.1, 06.03.2007
    !in Precicorr war Array entf mit 1 Element zuwenig reserviert, gab Fehler bei nur 1 P-Station
    top2006
    WaSiM 7.5.0, 18.11.2006
    ==> offizieller Release
    +kleinere Korrekturen für die Ausgabe der Nachrichten an den Bildschirm (wurden im Paralelbetrieb bei den sections zerhackt)
    +Modapuzr weiter parallelisiert (GW-Model, Routing etc. als sections definiert)
    +Unsatzon is now threadsafe (there were some errors when updating riverflow_table-content)
    -gwflow will probably never be faster using multiple threads than it is now, so the omp-directives are commented there (in gauss_seidel_iteration only)
    +OpenMP-Threading für Unsatzon arbeitet jetzt, jedoch sind in der Rechnung noch einige winzige Abweichungen im Resultat zu sehen --> irgendwo wird noch eine gemeinsame Variable überschrieben...
    WaSiM 7.2.7, 08.11.2006
    ==> offizieller Release
    !Korrekturen am Externalbalance-Grid sowie an SB1-Statistik
    WaSiM 7.2.6, 08.11.2006
    !Probleme mit externer Kopplung korrigiert (GW-Stand über Gelände verursachte Fehler)
    +Unsatzon: alle ZoneFZT_Q*-Zugriffe nach ausserhalb der Schleife verlegt, leichte Unterschiede in den Ergebnissen aufgrund Speicherung der QD und QI-Werte neu als mm /*timestep) und nicht mehr als m/s, Der Mittelwet wird sozusagen auf bereits umgerechneten Werten berechnet. Früher wurde Qd und Qi erst in m/s für das TG berechnet und dann * timestep genommen, um auf mm zu kommen. Ausserdem sind kleinere arithmetische Unterschiede zwischen GCC und VC-Ergebnissen feststellbar, was aber schon immer so war.
    +Unsatzon: threadsafe except for FZTzone_Q*, which still must be changed -> qd[0]..qd[z]calculation is not independent on the grid cell, so we either introduce a new stack or we move the qd-calculation outside the main parallel loop.
    WaSiM 7.2.5, 30.10.2006 (Seitenzweig, interne Version)
    Unsatzonmodel:
    +9 Funktionen threadsave gemacht (es fehlen noch: new_concentrations; infiltration; wertzufuegen; zoneFZT_Q*-Zugriffe); alle in ::run aufgerufenen Funktionen (innerhalb Zeilenschleife) threadsafe gemacht
    !kleinere Bugs bzgl. Irrigation-Bilanz (DELTAGW-Handling) korrigiert
    !Initialisierung SB bei irrigation korrigiert
    !im Schneemodell einen Bug gefixt, der durch Parallelisierung reingekommen ist (Schneeanteil lokal definiert und als Referenz-Parameter backgegeben aus Calculate_Melt-..)
    WaSiM 7.2.4, 27.10.2006 (Seitenzweig, interne Version)
    !Korrigierte Kopplung mit Externem GW (Theta bei steigendem GW korrekt aufgefüllt)
    !Werte in Storagedatei z.T. Null, weil Format %lf bei exponentialwerten von z.B. 1.5e-7 0 rausschreibt
    !SB_2 Grid Inhalt jetzt korrekt als absoluter Wassergehalt der Bodensäule
    +OpenMP-Implementierung für Meteoint, ETP, Expokorr, Interzeption, Schneemodell und einige Teile Unsatzonmodell (dort 6 Funktionen von 13 bereits ok, die restlichen 7 müssen noch threadsave gemacht werden)
    +OpenMP in Meteointerpol und ExpoKorr drin
    WaSiM 7.2.3, 21.03.2006
    +Ausgabe der Schneeverdunstung
    WaSiM 7.2.2, 18.03.2006
    !Korrigierte Version, nun bilanzrein
    +Detailausgaben ETR, EI, EVAR, EVAP
    +Interzeption für mehrere Vegetations-Layer implementiert
    oAnpassungen für Sleep-Funktion (neu: _sleep in VC++ 2005)
    WaSiM 7.1, 11.03.2006
    !7.0 -> 7.1 Header in wasim.h geändert
    WaSiM 7.0, 11.03.2006
    +detaillierte Ausgabe für ETR aus Bodenmodell
    +Berücksichtigung von Makroporen
    +separate Parametrisierung von Interzeptionsverdunstung und Evaporation
    +diverse zusätzliche Ausgaben
    top2005
    WaSiM 6.8.0, 20.12.2005
    !Bugfixes für Dicken[0] in unsatzonmodel
    +Multi-Layer-Lannutzungstabelle implementiert
    +Aufnehmen der Parameter für Makroporenfluss in die Steuerdatei und Lesen derselben
    +k-recession auch für neue Bodenparameterisierung ermöglicht
    WaSiM 6.7.0, 18.11.2005
    +variable Bodenartentabelle implementiert (nicht nur intern, nun auch über Steuerdatei nutzbar)
    WaSiM 6.6.2, 04.11.2005 (interne Version)
    +Bodentabelle wird intern mit Detailparametern für alle Schichten verwendet
    WaSiM 6.6.1, 22.10.2005
    +in LU-Table und Verdunstungsmodell wurde anaerobe Reduktion der Verdunstung frei parametrisierbar gemacht (TReduWet und LimitReduWet werden nun in der Steuerdatei gelesen und in unsatzonmodel::evapotranspiration berücksichtigt)
    WaSiM 6.5.1, 20.09.2005
    +koppelbare Version
    oLU-Tabelle als gekapselte Klasse -> dies als Vorbereitung auf die anstehende Erweiterung, um die Module davon frei zu halten.
    WaSiM 6.4, 01.07.2005
    ==> offizielles Release
    !Ablageort Storagefile bei Readgrids = 1 in Unsatzonmodel (war neuer Bug in Version 6.1)
    !Infiltration/Exfiltration zwischen Grundwasser und Fliess-Gewässer in Unsatzonmodel korrigiert (nur aufgetreten, wenn die Teileinzugsgebiete nicht fortlaufend nummeriert waren)
    !k-Wert-Berechnung verbessert im Richardsmodell
    +interne van-Genuchten-Tabelle intern mit mehr Stützstellen
    +Dicke erste Bodenschicht neu 0.05 anstatt 0.1 m
    +mehr interne Buffergrössen für seltenere Plattenzugriffe
    +Entnahme Irrigationwasser aus Reservoirs (wenn vorhanden)
    +Neue Initialisierung GW-Level (Steuerfile-Anpassung!)
    +Schneemodell: variable Albedowerte, Modellierung Schneedeckenalter, Anteil Schnee/Regen, variabler Strahlungsanteil für Ice_firn_model --> In Steuerdatei neue Parameter beachten
    +Unsatzonmodel: neue Ausgabegrössen als Grids (2 Bodenwassergehalte sowie Wurzeltiefe) sowie Ausgabe Wurzeltiefe als Statistikfile, Initialisierung GW-Level inSteuerdatei festglegt
    ozulässigen Iterationsfehler verkleinert in Richards-Ansatz (von 1e-3 zu 1e-4)
    back top home

    WaSiM-News

    04/11/2024

    new release availabe:
    WaSiM 10.08.00 -> More »

    05/18/2024

    SG and GL in 64 bit:
    Installer -> here »