WSL/SLF GitLab Repository

  1. 13 Mar, 2013 1 commit
    • Mathias Bavay's avatar
      A rounding bug has been found in the Date class: when using a Date object in a... · 2ddc7feb
      Mathias Bavay authored
      A rounding bug has been found in the Date class: when using a Date object in a loop where it gets incremented, it accumulates errors and after ~70000 iterations, the error would get bigger than one second, making date comparisons with a fixed date impossible. This has been solved by always rounding the internal gmt Julian date to the closest second, after each assignment (from the constructors, the setDate() calls or any arithmetic operation). Moreover, the rounding methods have been re-written to be more efficient as well as other roundings (specially when computing the date decomposition from Julian). 
      
      The seek() call performing a binary search has also been simplified, in order to remove unnecessary tests, put some similar tests together and make the code clearer. 
      
      Some constification and better vector usage took place in ResamplingAlgorithms and Meteo1DInterpolator.
      2ddc7feb
  2. 14 Feb, 2013 1 commit
    • Mathias Bavay's avatar
      In order to try to be closer to the spirit of the STL, now the empty... · 3f45c394
      Mathias Bavay authored
      In order to try to be closer to the spirit of the STL, now the empty strings/vectors/lists are tested with .empty(), the first/last elements of vectors accessed with front()/back(), the empty strings are not contructed with string("") but with string(), etc This makes a benchmark based on meteo_reading ~4% faster and this makes the code suprisingly easier to read. 
      
      Some extra constification took place as well as some minor code cleanup (optimizing the comparison between two vectors in order to perform less tests, etc).
      
      The Date class can now properly generate and parse full ISO timestamps, including time zone information. The full specification is now supported by convertString() with a helper method in the Date class. Ouputing an ISO string with its time zone is done by requesting the ISO_TZ format.
      
      
      3f45c394
  3. 24 Jan, 2013 1 commit
  4. 05 Dec, 2012 1 commit
  5. 26 Nov, 2012 1 commit
  6. 02 Nov, 2012 1 commit
  7. 31 Oct, 2012 1 commit
  8. 30 Oct, 2012 1 commit
    • Mathias Bavay's avatar
      The automatic tests have shown that the code was getting slower following the... · 5bf0f221
      Mathias Bavay authored
      The automatic tests have shown that the code was getting slower following the latest commits. After investigations (thanks valgrind!), it has been found that the newly added copy constructor of Coords was used a lot as well as setFunctionPointers(). Therefore the function pointers have been removed and replaced by a simple list of if(coordsy=="") etc. The run time is now back to normal (and actually up to 6% faster on some tests).
      
      Cosmetic touch up on Date.
      5bf0f221
  9. 28 Oct, 2012 1 commit
  10. 25 Oct, 2012 1 commit
  11. 20 Jun, 2012 1 commit
    • Mathias Bavay's avatar
      The MeteoData == operator now compares with an epsilon. The... · 8e49698d
      Mathias Bavay authored
      The MeteoData == operator now compares with an epsilon. The chekEpsilonEquality function has been rewritten, according to best practise and inlined. The powN functions have been moved to MathOptim and inlined. This makes the benchmarks 2% faster, that's such a victory...
      8e49698d
  12. 19 Jun, 2012 1 commit
  13. 31 May, 2012 1 commit
  14. 30 May, 2012 1 commit
    • Mathias Bavay's avatar
      A few "consts" have been added. The dates are now considered to be positive... · b79a85a4
      Mathias Bavay authored
      A few "consts" have been added. The dates are now considered to be positive which allows comparison operators to be optimized: converting 1 year of hourly data with data_converter got almost 30% faster. Moreover, when looking for resampling window, two extra checks have been added to quickly see if the start and end point are even in the input vector. This reduces data read miss (because we start by reading vecM[0]) and skips browsing through the whole vector if we are in a large data gap. On the same 1 year data set with one large gap for one parameter, the gain is of almost 20%. Overall, these two optimizations lead to almost a doubling of the speed with data_converter... Soon we'll be so fast that we will get the data before it is even measured!
      b79a85a4
  15. 24 May, 2012 1 commit
  16. 19 Sep, 2011 1 commit
    • Thomas Egger's avatar
      Performance boost: Redesign of class MeteoData. The individual public double... · 8d46d04d
      Thomas Egger authored
      Performance boost: Redesign of class MeteoData. The individual public double members like tss, ta, rh have been removed and instead of the rather complicated internal representation with the help of std::map and pointers, the MeteoData object now holds all its important information in one double vector (meteo data) and one string vector (parameter names). Thus the overloaded copy constructor could be slashed radically. This leads to huge performance gains, especially when dealing with huge vectors of MeteoData (which are needed for filtering, resampling, etc).
      
      Furthermore the access to the meteo parameters has been simpleified by overloading the operator(), replacing the old .param(size_t index) and .param(string paramname) functions:
      
      MeteoData md;
      double ta = md(MeteoData::TA);
      
      OR
      
      double ta = md("TA");
      
      These changes were propagated into all of MeteoIO.
      8d46d04d
  17. 31 Aug, 2011 1 commit
  18. 23 Aug, 2011 1 commit
  19. 16 Aug, 2011 1 commit
  20. 27 Jul, 2011 1 commit
    • Mathias Bavay's avatar
      A (more) intelligent handling of buffered grids has been implemented: the... · 9f230fd9
      Mathias Bavay authored
      A (more) intelligent handling of buffered grids has been implemented: the grids are stored in the equivalent of a circular buffer of a given size (user defined, or 10 by default). This prevents running out of memory when processing large numbers of grids!
      
      A method for computing quantiles has been implemented in libinterpol1D. A vector of data has to be provided as well as a vector of the desired quantiles (ex: 0.25, 0.5, 0.75) and a vector of values for these quantiles will be returned. So far, the algorithm that is used produces the same results as R in default operations. The possibility of choosing which quantiles algorithms might be added in the future.
      
      The getJulianDayNumber method was just totally wrong... This has been fixed. One can also force a GMT day of year with a flag.
      
      Finally, some documentation has been written/updated.
      9f230fd9
  21. 16 Jun, 2011 2 commits
    • Mathias Bavay's avatar
      Some POPC adjustments · 9e92bae3
      Mathias Bavay authored
      9e92bae3
    • Mathias Bavay's avatar
      The nodata handling strategy was not thoroughly implemented: aritmetic... · c479ae5f
      Mathias Bavay authored
      The nodata handling strategy was not thoroughly implemented: aritmetic operators were not compliant. In order to fix it, a property now records how to handle nodata for each object. A setter method is available. All operations now properly handle it.
      
      The Grid2D and Grid3D objects now have a (x,y) and (x,y,z) method for direct access to their gridded values. This should make it easier to switch a Grid object with an Array in a piece of code.
      
      With the latest changes in CMakeLists, the examples could not be built anymore. This has been fixed in the examples Makefile (but the io.ini plugin path stil has to be fixed).
      c479ae5f
  22. 04 May, 2011 1 commit
    • Mathias Bavay's avatar
      The POPC version has been heavily transformed. Since we would need IOManager... · 0394dcf3
      Mathias Bavay authored
      The POPC version has been heavily transformed. Since we would need IOManager has a popc object and this is quite hard (we need a backreference in Meteo2DInterpolator), all parclasses have been removed. Instead, the user will have the responsability to packaged IOManager in his own parclass if needed. This makes the code simpler and skips difficult issues...
      
      A new fill method has been added to the Array2D and Array3D templates that does the reverse of subset (ie: reassemble arrays).
      
      Better error messages have been put in SNIO.
      
      A new Date setter that takes a Date object has been created.
      
      This version does NOT correctly compile with the autotools (it leads to a segfault when running code using MeteoIO), but the cmake compiled library works fine.
      0394dcf3
  23. 29 Mar, 2011 1 commit
    • Mathias Bavay's avatar
      The infamous 24:00 hour bug was not fully dead. Rounding errors (I experienced... · 3579fe60
      Mathias Bavay authored
      The infamous 24:00 hour bug was not fully dead. Rounding errors (I experienced a 3.5/100 seconds rounding error) made hour=24 possible. Before computing values (day, hour, etc) the julian date is now rounded to the closest minute (but such rounding is NOT saved, so it there is no loss of precision for potential upcoming calculations). Therefore, all should now be perfect in MeteoIOland.
      3579fe60
  24. 21 Mar, 2011 1 commit
  25. 16 Mar, 2011 1 commit
    • Mathias Bavay's avatar
      This is the fix for issue 140. When setting a Date with setDate(y,m,d,H,M, TZ)... · 55fbf756
      Mathias Bavay authored
      This is the fix for issue 140. When setting a Date with setDate(y,m,d,H,M, TZ) if TZ==0 no recalculation of the date elements (year, month, etc) would be performed, thus keeping a potential 24 for hours. If calling afterward getDate(gmt), it would return these internal values without any further calculation, thus returning hour=24.
      55fbf756
  26. 11 Mar, 2011 1 commit
  27. 10 Mar, 2011 3 commits
  28. 09 Mar, 2011 1 commit
    • Mathias Bavay's avatar
      In SNIO, the METAFILE can now be optional (which means that the metadata... · e9063b21
      Mathias Bavay authored
      In SNIO, the METAFILE can now be optional (which means that the metadata remain nodata, the user has therefore to fill them himself). This is used by Snowpack.
      
      After the Visual C++ compilation log from Raphael, some changes have been implemented: lots of warnigs about signed/unsigned fixed, some unreachable code removed, and some methods reimplemented for Windows. We are not there yet, but moving closer...
      e9063b21
  29. 08 Mar, 2011 1 commit
  30. 04 Mar, 2011 1 commit
  31. 18 Feb, 2011 1 commit
  32. 15 Feb, 2011 1 commit
  33. 10 Feb, 2011 2 commits
  34. 09 Feb, 2011 1 commit
  35. 08 Feb, 2011 2 commits
    • Mathias Bavay's avatar
      Another commit related to timezones... The Unix date always being in UTC, this... · 3fdc84f5
      Mathias Bavay authored
      Another commit related to timezones... The Unix date always being in UTC, this has been fixed. The resampling was not using dates in a proper way, this has been fixed. The GSN plugin has also been fixed, it now rounds time to the closest minute (in order to be consistent with our advertised "1 minute time resolution"). A rounding method has been implemented for dates.
      
      The timezone parameter in io.ini is now named TIME_ZONE instead of TZ for clarity. 
      
      Undefined dates should now be fully handled (ie: also in arithmetic).
      3fdc84f5
    • Fierz's avatar
      - Date.*: allow to handle undefined Dates (== 0. for now), add new members... · 8c40e39c
      Fierz authored
      - Date.*: allow to handle undefined Dates (== 0. for now), add new members undef, setUndef(), isUndef(), and rndJulianDate()
      - IOUtils.*: replaced TZ with time_zone and TIME_ZONE
      - ImisIO.*: correct typo seperateDrift to separateDrift
      8c40e39c