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