Changelog2 4 0

This is the changelog for MeteoIO release 2.4.0

  • Code cleanup
    • now using size_t everywhere it is appropriate
    • code cleanup and more comments in IOManager
    • added missing header
    • clean up includes
    • removing unnecessary code
    • simplification of the IOUtils::seek
    • removing pointers, simplifying memory management/handling
    • using ostrinstream whenever possible instead of stringstream
    • more const variables and parameters
    • fixed warnings on various platforms
      • fixed signed/unsigned warnings
      • fixed warnings in MathOptim.h
      • fixed VC++ warnings (more assignments operators)
      • fixed warnings in plugins by keeping a const cfg instead of reference
      • fixed warnings on Hera
      • turned some warnings off on osX (signed/unsigned because of clang divergence from the standards)
    • fixes suggested by static analysis
      • fixes following flawfinder
      • removed unused variables, better iterators incrementation, passing more variables as const&, relying more on STL methods for checking empty vectors (as suggested by cppcheck)
      • more use of copy constructors (instead of construct+copy)
      • remove manuall vector copies, replaced by ovec=ivec
      • relying more on STL methods: vector.front() or .back(), .empty(), empty strings constructed with string(). Leads to 4% speed improvements
    • optimizations
      • micro-optimizations
      • SIMD optimizations
  • Code refactoring

    • refactoring of the spatial interpolations
    • refactoring of the resampling algorithms, making them much more efficient
    • per parameter window size in resampling alongside a new syntax to accomodatefuture evolutions
    • Meteo2DInterpolator refactoring
    • spatial interpolations performed by persistent objects, leading to speed improvements and more possibilities for the algorithms
    • the spatial interpolations are now based on a trend/residuals approach
    • basic kriging now works. But there is no range limitation and the covariance calculation for the variogram is pretty basic...
    • matrix and fit methods now return a boolean to indicate their status instead of throwing and exception
    • simplification of the filters to make it even easier to write them
    • optimized ProcessingStack
  • Plugins

    • more robust ARC
    • A3DIO cleanup and fixed pointer bug
    • SMETIO
      • libsmet does not throw an exception when writing an empty station (but prints a warning)
      • bug fix for SMET when reading a truncated file
      • more error messages in SMETIO
      • fixed invalid error message in SMETIO
    • GeoTop plugin clean up
    • GSNIO
      • GSNIO: improved parameter names mapping
      • time out on GSN connections
      • soap files updated
    • small fixes in GRIBIO, documentation fixes
    • documented the snowpack meteo file format
    • IMISIO
      • data prefetching for Oracle querries, leading to a x2 speed improvement
      • keep the same Statement object for Oracle querries in order to avoid reallocating the object
      • better error messages in IMISIO
      • fixed HS to SWE precipitation generation in the IMIS plugin
  • INI file handling
    • added imports to ini files (IMPORT_BEFORE and IMPORT_AFTER)
    • simplification of io.ini
    • printing a config file now produces a valid config file
    • new method in Config to retrieve all values whose keys match a given pattern (for example, STATIONxx). The plugins using these keys now support arbitrarily numbered keys
    • Config::keyExist() implemented
  • Error reporting
    • better error messages (no more full path in front of cc file name)
    • dialog boxes for exception messages (optional, at compile time)
    • better colorization of console messages, stack trace now appears before error message
    • backtrace more readable
    • IOHandler checks that timestamps are unique and in increasing order
  • Build system
    • deleting static and dynamic libs when "make clean"
    • simple CMakeLists for the examples
    • improved tests (better output, more details when failing)
    • tests clean up and reorganization
    • new test for statistical methods
    • changed search order of FindMeteoIO to search first in the ../../ directory (for compiling the examples) and then in the home directory
    • fixed wrong license file
    • fixed LibXML++ detection that was not working on more recent systems
    • fixed static-only compilation
    • better detection of GribApi
    • simplification of the CMakeLists, now requiring cmake > 2.8.0
    • removed dependency of binary packages to libproj
  • Documentation
    • grid_reading example
    • better documentation
    • better diagrams in the documentation (data flow diagram)
    • METEO_TIMESERIES and STATION_TIMESERIES renamed for clarity
  • Specific bug fixes
    • estimation of average sampling rate much improved: it now handles multiple stations and partially filled buffers. Units have been fixed
    • bugfix in libinterpol1D
    • better propagation of throw/nothrow in Config, throw/nothrow options now in IOUtils
    • fixed a bug when handling nodata in Atmosphere::Unsworth
    • fixed a potential bug in Hamon undercatch filter
    • slope_algo selection was not kept through BufferedIOHandler, this has been fixed
    • fixed a double projection of potential radiation when projecting to horizontal
    • fixed bugs with the derivative of a vector of data
    • fixed the clear buffer method
    • made median computations work with newer STL implementations
  • Dates and timers
    • full ISO timestamp read/write (ie with time zone information) in Date
    • fixed rounding bug in Date, performance improvements for rounding
    • Dates can be rounded to a day
    • julian day number was numerically instable, this has been fixed
    • timer up to 1us or 1ns resolution, depending on platform
    • implemented more accurate timers for POSIX systems
  • Data Generators
    • DataGenerators introduced
    • CST data generator
    • ILWR data generator using last cloudiness during the night implemented
    • POT_RADIATION generator
    • SIN data generator
  • New algorithms implemented
    • rewrote Corripio algorithm to be cell-centered
    • Thomas algorithm for tridiagonal matrix
    • implemented a 2 poles Butterworth filter for low pass filtering
    • noisy linear regression now based on distance to the regression line instead of corelation coefficient
    • resampling algorithm for handling daily sums of solar radiation, checked on Weissflujoch data
    • the precipitation algorithm that simulates sow redistribution now pushes snow downhill in a more physically meaningful way
    • fast cubic root optimization (~3 times faster)
  • Various
    • renammed "special points" as "Point Of Interest (POI)"as this should be more familiar to the users
    • debug output moved to object.toString()
    • cross platform path expansion added (supporting relative paths)
    • generic objects serialization
    • added the == and != operators to the arays
    • default ilwr model is now Unsworth in Atmosphere
    • changed default snow albedo to 0.85 for all models relying on it