Changelog2 2 0

This is the changelog for MeteoIO release 2.2.0

  • Improvements, cleanup

    • better error messages for file handling
    • c++ name demangling when throwing exceptions (only for gcc)
    • cleaned up unnecessary copies of identical objects in IOManager and its objects
    • code security audit with Flawfinder: several small corrections
    • outputs warning/error messages done on stderr in order to avoid polluting the application's stdout
    • bug fixes in HNW_melt, Nearestneighbour scaling, valgrind checks, SimpleDEMWindInterpolate, 64 bit
    • warnings fixes (including for VC++)
    • artithmetic exceptions fixes (FilterRate, SimpleDEMWindInterpolate, libsmet, etc)
    • IOManager memory error fixed (ref to an external Config object)
    • documentation fixes and improvements (plugins summary table)
  • Speed optimizations

    • lots of benchmarking
    • replacing std::endl by "\n" to avoid flushing buffers (performance improvement)
    • callgrind speed improvements
    • speed improvements for IDW with large number of stations
    • speed enhancements by helping auto-vectorization
    • code speed up and cleanup (consts, reserve())
    • optimization in dates comparisons (almost 30% speed increase)
    • resampling rewite (see below)
    • BUFF_GRIDS=0 bypasses grids buffering
  • Interface changes

    • better structured handling of gridded data: the grid specification is passed to the plugin which handles it according to its own rules (for building a file name for example)
    • added the () operator on 2D and 3D grids for convenience
    • grids: add isEmpty(), clear() and getNx()/Ny()/Nz()
    • standardized options for grids handling: GRID2DPATH, GRID2DEXT and GRID2DPREFIX
    • support for rotated coordinates in Coords
    • move coordinates in Coords
    • IOManager API extensions (point interpolation, new calls for reading/writing grids, new calls for spatial interpolations)
  • Resampling

    • code cleanup and massive rewrite. Now the search window behaves as expected
    • re-accumulation now works as expected with arbitrary input data and with consistent nodata handling (up sampling, down sampling)
    • large speed up of window handling for resampling/reaccumulating (roughtly by a factor of 5 the the whole data reading process)
    • some resampling algorithms were silently extrapolating, this has been fixed
  • filters

    • code cleanup in filters (cleaner inheritance, separation between filtering and extra processing)
    • rewrite of the filtering window so that it behaves as expected: specifying 4 points and 6 hours will guarantee both conditions
    • ADD, MULT and UNDERCATCH processing elements (with WMO+Japanese RT3+Swiss Hellmann corrections) and unheated_raingauge
    • FilterWindAvg now handles nodata correctly
  • plugins

    • SMETIO
      • more checks and error messages in to help identify errors in files (including duplicated timestamps or non-chronological order)
      • fixed end of lines issues
      • read special points in smet format
      • fixed handling of output time zone
    • PNGIO plugin for reading PNGs
      • support for several methods of rescaling, legend, indexed color map, lots of color gradients including several isomorphic gradients, speed or size optimization, metadata, autoscale, world file, 1 bit alpha, arbitrary number of colors.
      • File size is up to 87% smaller than a full color file.
    • PGMIO
      • fixed an arithmetic error
      • Min and Max written in the metadata
    • ARCIO
      • generate standard names or A3Dviewer names
      • 6x faster grid reading
    • GRIBIO for handling GRIB files
      • read specific grids or time series from virtual stations, computing requested parameters from alternate parameters if needed
    • A3DIO
      • cleanup in special points handling
      • handled like any other plugin
    • SNIO
      • better error messages
    • GEOTOPIO
      • plugion adapted to the latest GeoTop
      • speed improvements
      • more features (use only a subset of stations, flexible sequence of metadata, consistency checks)
    • IMISIO
      • use SNOWPACK SWE to infere precipitation if USE_SNOWPACK_HNW
      • IMIS precipitation input validated
      • better error messages
    • RPSIO
      • ability to read more fields. But the format is so sick that there is no way to be sure of anything...
    • GSNIO
      • now compiles with code::blocks
  • compilation

    • fixed variable names starting with "_"
    • Math constants redefined in meteoconst.h for portability
    • Improvements for popc support through cmake (but the compiler has to be manually forced to popcc)
    • better detection of MeteoIO by cmake
  • New models

    • Crawford and Duchon ILWR model, Unsworth ILWR model, Prata 1996 and Dilley 1998 clear sky radiation models and Kasten cloudiness model
    • Windchill and heat index implemented
    • Wind log scaling law for wind speed correction
    • getSolarTime added to SunTrajectory