Changelog2 3 0

This is the changelog for MeteoIO release 2.3.0

  • Build system:

    • Fixed a bug preventing compilation on Cygwin -> it now compiles on Cygwin!
    • compiles properly in release and debug for Android
    • better CMake FindMeteoIO macro. Ability to find a non-installed MeteoIO (user program working copy side by side with meteoio)
    • POPC++ support from CMake. Turned some warnings off (coming from POPC's code)
    • removed autotools
    • improved windows packaging
    • GSN turned off by default
    • extra warnings (variables shadowing, Weffc++, missing casting, optimizations when constructing various objects) turned on in debug mode, all warnings fixed (suppression of unnecessary variables, renaming to avoid shadowing)
    • the external includes do not generate warnings anymore
  • Automatic testing system:

    • ctest infrastructure setup with Valgrind support. Ease of deployment for running with cdash
    • test for Sun, Matrix, arrays (1d, 2d, 3d), Coords, 2d interpolations, dem reading, meteo reading (with and without temporal interpolations)
    • Multiple options in test to enhance code coverage
  • Documentation, error messages:

    • applications not printing the text of the exception: no possible fix. Each application must try/catch and print e.what()
    • better error messages, improved debug error messages in grids
    • general improvements for the end user
    • documentation improvements to GRIBIO, FilterStdDev
    • improved consistency of error messages
    • better documentation in the sun classes, references to the Meeus algorithm
  • Code cleanup, optimizations:

    • fixing warnings (osX, code::blocks), casting
    • code cleanup (constification, relying on std library methods, inlining for arrays/grids)
    • Fixed variable shadowing, alignement issues
    • New optimization for pow() with at least 6% percent accuracy, 3.3 times faster
    • Moved initializations done in constructors to initialization lists. Implemented missing copy constructors. Code is safer
    • some object visibility tagging
  • Coordinates conversion:

    • the == operator now also checks the altitude
    • support for Universal Polar Stereographic coordinates
    • Removed pointers in Coords -> performance increase (~6% for reading one year of data for one station)
    • Fixed a lat/lon parsing bug (when parsing negative coordinates expressed in deg, min, sec)
  • Arrays, grids(1d, 2d, 3d):

    • speed improvements (relying on std library methods, inlining)
    • fixed bugs: uninitialized variables in some cases, not clearing some memory (ie leaving some old values in a resized array)
    • Array renamed in Array1D for consistency
    • arrays constructors to fill a grid with a constant value
    • checkEpsilonEquality specialized method for arrays (1d, 2d, 3d) of doubles
    • cubic B-spline 2D resampling implemented
  • SunTrajectory, Sun:

    • optimization when calling the object several times with the same date (ie not recomputing if not necessary)
    • sunrise, sunset and sunlight duration where not properly handled for the poles
    • foolproof method to compute radiation splitting.
    • new method: projection from horizontal to slope (for taking into account externaly made corrections, cf Snowpack)
    • threshold solar elevation in static and non-static projection methods for consistency
    • add missing default value
    • Suntrajectory now throws IOExceptions
  • Others:

    • Date::getJulianDate() renamed in Date::getJulian()
    • the pluguins are not distributed as separately loadable libraries, therefore there is no need for PLUGINPATH anymore
    • SMETIO: all params converted to uppercase before matching. Updated specs
    • IMISIO: improved USE_IMIS_HNW
    • the file indexing (to quickly jump to the proper position when reading new data from a file) has been fully redone, because it was mostly not working, and is provided in a generic way to be used by multiple plugins (currently SNIO and SMETIO)
    • SNIO was actually extremely slow when dealing with large files. This has been fixed and in some test cases has been shown to be 150x faster. It is now as fast as SMET
    • MeteoData == compares with epsilon. Merge of MeteoData and vectors of MeteoData (to merge the output of several IOManagers)
    • Undercatch correction: wind threshold for Tretyakov
    • New Hamon 1973 undercathc filter (the previous one has been renamed as Undercatch_WMO)
    • ILWR models can now use a user provided cloudiness
    • the timers only had seconds resolution on Windows, this has been fixed