1CDO NEWS
2--------
3
4Improvement
5
6Version 2.0.0 (29 October 2021):
7
8   New features:
9     * Changed to C++14
10     * Changed to 3-clause BSD license
11     * sp2gp/gp2sp: OpenMP parallelized
12     * Expr: Add function cdeltaz(x)
13     * Select: Add parameter levrange (level range)
14     * seltimestep: Add support for negative values in range of integer parameter
15     * outputtab: Add key x and y to print coordinates of the original grid
16   New operators:
17     * setgridcell: Set the value of a grid cell
18     * selcircle: Select cells inside a circle
19     * fldint: Field integral
20     * bottomvalue: Select valid values at the bottom level
21     * topvalue: Select valid values at the top level
22     * median - ensmedian, fldmedian, mermedian, zonmedian, gridboxmedian
23     * skewness - ensskew, fldskew, merskew, zonskew, gridboxskew
24     * kurtosis - enskurt, fldkurt, merkurt, zonkurt, gridboxkurt
25   Fixed bugs:
26     * splitsel: Output sequence number starts at 0
27     * import_binary: Wrong result for swap 2 byte binary data
28     * import_binary: Set NetCDF reference time
29     * genlaf: Gives the result of gencon
30     * namelist: Add large file support
31
32Version 1.9.10 (25 January 2021):
33
34   New features:
35     * Added option --ignore_time_bounds to ignore time bounds for time range statistics
36   Fixed bugs:
37     * EOF: fix wrong result with multiple OpenMP threads (data race)
38     * timselmean: failed with variables on different grids [Bug #9978]
39     * Ymonarith: failed with variables on different grids
40     * Detrend: wrong result with parameter equal=false [Bug #9961]
41     * Fldstat: optional parameter weights failed
42     * Wind: check that numLPE is > 0
43
44Version 1.9.9 (29 October 2020):
45
46   New features:
47     * New environment variable CDO_DOWNLOAD_PATH: Path where CDO stores downloads
48     * New environment variable CDO_ICON_GRIDS: Root directory of the ICON grids (e.g. /pool/data/ICON)
49     * splitsel: added support for negative skip values [Feature #9798]
50     * showattribute: added wildcard support
51     * Diff: added option maxcount=<num>: Stop after num different fields
52     * Select: added parameter dom (day of month, e.g. 29feb)
53     * Ymonstat: added support for option timestat_date
54   New operators:
55     * Yearly arithmetic: yearadd, yearsub, yearmul, yeardiv
56     * apply: Apply an operator on each input file
57     * gh2hl: Interpolate 3D geometric height to height levels
58     * pack: Pack data (NetCDF attribute add_offset/scale_factor)
59     * verifygrid: Verify grid coordinates
60     * addtrend: Add trend
61     * isosurface: Extract isosurface
62   Changed operators:
63     * intlevel3d: changed interface
64   Fixed bugs:
65     * Selbox: wrong result of grid cell area (if present) on curvilinear grids
66     * sellonlatbox,-180,180,-90,90 "breaks" lon_bnds [Bug #9801]
67     * Ensval: does not work
68     * intyear: doesn't work; segmentation fault
69     * intlevel3d: wrong result since v1.9.4 [Bug #9468]
70     * dv2uv, uv2dv: wrong result works only on first level since v1.9.8 [Bug #9441]
71     * Vertintap: process only 3D variables on hybrid sigma height coordinates with correct number of levels
72     * Arith: Inconsistent missing value handling in v1.9.8 [Bug #9396]
73
74Version 1.9.8 (29 October 2019):
75
76   New features:
77     * Proj 4 to 6 API Migration
78     * smooth/smooth9: Added support for gridtype PROJECTION [Feature #9202]
79     * Expr: Added function rand(x) and isMissval(x)
80     * Remap: Added support for Gaussian reduced grids
81     * trend, detrend: Added parameter equal=false for unequal timesteps
82     * Option --no_remap_weights: Switch off generation of remap weights
83   New operators:
84     * deltat: Difference between timesteps
85   Fixed bugs:
86     * ensavg: Wrong result if data contains missing values (same result as ensmean)
87     * Ydrunstat: Fix seg. fault
88
89Version 1.9.7 (7 June 2019):
90
91   New features:
92     * added option --worker <num>: Number of worker to decode/decompress GRIB records
93     * added option --pedantic: Warnings count as errors
94     * Yhourstat: added time bounds support
95     * expr: added support for ctimestep() in ternary conditional
96   New operators:
97     * yearmaxidx: Yearly maximum indices
98     * yearminidx: Yearly minimum indices
99   Changed operators:
100     * for: renamed to seq
101   Fixed bugs:
102     * Build failed with GCC 9 (OpenMP data sharing) [Bug #9038]
103     * compile error: EXIT_FAILURE not declared in cdoDebugOutput.h [Bug #8899]
104     * eca_gsl: the 2nd input file was not closed [Bug #9033]
105     * ensrkhisttime/ensrkhistspace: don't work
106     * detrend: seg. fault if time series containts time constant fields
107     * inttime, intntime: handling of missing values is incorrect
108     * select: combination of some parameter (var, grid, zaxis) doesn't work
109     * expr:zonSTAT: wrong result
110     * expr::vertmean: fix wrong warning message about layer bounds
111     * mergetime: SKIP_SAME_TIME doesn't work in release 1.9.6
112
113Version 1.9.6 (7 February 2019):
114
115   New features:
116     * Added support for polar stereographic projection
117     * Download ICON grids if necessary (http://icon-downloads.mpimet.mpg.de)
118     * Added global option --eccodes:  Use ecCodes to decode/encode GRIB1 messages
119     * Operator chname: Added support to change coordinate names [Feature #8746]
120     * Operator diff: set exit status to 1 if inputs differ
121     * Renamed remapcon/gencon to remapscon/genscon
122     * Replaced remapcon/gencon by remapycon/genycon
123   New operators:
124     * vars<stat> - Statistical values over all variables
125     * minc - Minimum of a field and a constant
126     * maxc - Maximum of a field and a constant
127   Fixed bugs:
128     * Gradsdes.test fails [Bug #8614]
129     * Option --reduce_dim gives wrong result on time dimension [Bug #8615]
130     * Module Selbox: added support for grid cell area
131     * Operator setgridtype,regular: set nx=4*N+16 for octahedral reduced Gaussian grids
132     * Operator distgrid: seg. fault if last segment is larger than first segment
133     * Operator sellonlatbox: abort if grid coordinates missing
134     * Operator masklonlatbox: wrong result if lon1 > first lon || lon2 < last lon (bug introduce in 1.9.4) [Bug #8695]
135     * Operator maskindexbox: wrong result if idx1 > 1 || idx2 < nlon (bug introduce in 1.9.4) [Bug #8695]
136     * Absolute time axis (-a) returns wrong units in operator chain for NetCDF [Bug #8777]
137     * Relative time axis (-r) returns wrong first timestep in operator chain for NetCDF
138     * Wrong result with fldmean on zonal mean data (bug introduce in 1.9.5) [Bug #8834]
139     * OPeNDAP support was broken in 1.9.5 [Bug #9761]
140
141Version 1.9.5 (9 August 2018):
142
143   New features:
144     * Changed type of date from 32 to 64-bit integer to support years > 214748
145     * remapycon: optimized by changing cell search method
146     * expr: added support for zon<STAT> functions
147     * expr: added function sellevelrange() and sellevidxrange()
148     * expr: added support for constants
149     * gridfile: added extension ":N" to select grid number N from data file
150   New operators:
151     * dhour<stat> - Multi-day hourly statistics
152   Fixed bugs:
153     * seldate: segmentation fault (bug introduce in 1.9.4) [Bug #8499]
154     * select: wrong timestamp when combining select with selyear (bug introduce in 1.8.1) [Bug #8576]
155     * gradsdes: bug fix for rotated lon/lat grids
156     * silent option produces newlines [Bug #8538]
157     * remapnn/remapdis: wrong result with regular 2D source grids if nlat > nlon  [Bug #8498]
158
159Version 1.9.4 (9 May 2018):
160
161   New features:
162     * Large data support: changed type of gridsize from 32 to 64-bit integer
163     * remapbil, remapbic, remapnn, remapdis: optimized by changing point search method
164     * Fldstat, Vertstat: added option weight=false to disable weighting
165   Fixed bugs:
166     * option -r doesn't work [Bug #8334]
167     * enspctl: changed parameter type from int to float [Bug #8386]
168     * segfault with chained operators on timeseries data [Bug #8230]
169     * setattribute: added support for \n in text attributes
170     * expr: removed character [LlDd] from definition of float constants
171
172Version 1.9.3 (29 January 2018):
173
174   New features:
175     * expr: added time coordinate function cdate(), ctime(), cdeltat(), ctimestep() ...
176   New operators:
177     * not - logical NOT (1, if x equal 0; else 0)
178   Fixed bugs:
179     * uvDestag: target grid undefined in output
180     * runpctl: fails since release 1.8.0
181     * read of reduced Gaussian grid description file failed [Bug #8146]
182     * read error on grid description file [Bug #8099]
183
184Version 1.9.2 (23 November 2017):
185
186   Fixed bugs:
187     * sign of grid size increment changes [Bug #7974]
188     * compilation fails on OpenBSD [Bug #7961]
189     * expr: nesting of ternary operator lost in cdo-1.9.1 [Bug #7992]
190     * rotuvb changed behavior in different versions [Bug #8084]
191     * select with start=end range aborts with 'Invalid character' [Bug #7976]
192
193Version 1.9.1 (27 September 2017):
194
195   New features:
196     * Added support for NC_FORMAT_CDF5
197     * Extend option --reduce_dim to all dimension for all operators
198   New operators:
199     * tee - Duplicate a data stream
200   Changes operators:
201     * eof, eof3d: set default value of environment variable CDO_WEIGHT_MODE to off
202     * sinfo: Added time type
203     * ap2pl: added support for input data on half levels
204   Fixed bugs:
205     * selindexbox: breaks uvRelativeToGrid flag [Bug #7901]
206     * expr: AND fall through OR
207     * --cmor option doesn't work for lon/lat bounds (introduced in 1.9.0)
208     * eof3d: weight array was allocated for only one level
209
210Version 1.9.0 (27 July 2017):
211
212   New features:
213     * Code changed from ANSI C99 to ISO C++11
214     * Added configure option for ecCodes --with-eccodes=<yes|no|directory>
215     * Added range operator to all statistic modules (e.g. yearrange, zonrange)
216   Fixed bugs:
217     * expr: improve ternary operator, no brackets needed anymore.
218     * expr: added support for clev in ternary operator.
219     * remapcon/remapycon produces wrong results for some grid combinations (introduced in 1.8.0) [Bug #7821]
220     * mergetime: wrong time information if first input file does not contain the first time step (bug introduced in 1.8.1) [Bug #7760]
221     * percentile: fix wrong result with method numpy (linear interpolation) and nist [Bug #7798]
222
223Version 1.8.2 (15 May 2017):
224
225   Fixed bugs:
226     * setpartab: variable name does not change [Bug #7681]
227     * cmorlite: skipped empty key values [Bug #7681]
228     * setcalendar, settaxis memory error (bug introduce in 1.8.1) [Bug #7691]
229
230Version 1.8.1 (6 April 2017):
231
232   New features:
233     * selindexbox: added support for LCC grid
234   New operators:
235     * selgridcell - Select grid cells
236     * delgridcell - Delete grid cells
237   New operators (KMNI contribution):
238     * selmulti - Select multiple fields
239     * delmulti - Delete multiple fields
240     * changemulti - Change identication of multiple fields
241     * samplegrid - Resample grid
242     * uvDestag - Destaggering of wind components
243     * rotuvNorth - Rotate u/v wind to North pole
244     * projuvLatLon - Cylindrical Equidistant projection
245   Fixed bugs:
246     * collgrid: combination of nx and names does not work
247     * Remapping bug for non global grids [Bug #7625]
248     * remapdis and remapcon produces wrong results for some grid combinations [Bug #7626] (introduced in last revision)
249
250Version 1.8.0 (26 October 2016):
251
252   New features:
253     * NetCDF: Improved support for horizontal and vertical grids
254     * Changed default of option -f nc to netCDF2
255     * masklonlatbox: added support for unstructured grids
256     * setpartabn: added support for user defined attributes
257     * Reverse: adjust date/time by -1 second (introduced in last revision)
258   New operators:
259     * setattribute: Set attributes
260     * cmorlite: Apply variable_entry of cmor tables
261     * timcumsum: Cumulative sum over time.
262     * shiftx/shifty: Shift fields on rectilinear/curvilinear grids in x/y direction
263   Fixed bugs:
264     * Cond: bug fix for ntsteps1 == 1 && ntsteps2 != 1
265     * ml2pl: interpolation failed for data on hybrid half levels [Bug #7225]
266
267Version 1.7.2 (28 June 2016):
268
269   New features:
270     * Adjust date/time by -1 second if the varification time is 00:00:00 and
271       the verification date is equal to upper time bound
272   New operators:
273     * smooth: Smooth grid points
274     * ap2hl: Air pressure to height level interpolation
275     * ngrids: Show number of grids
276     * ngridpoints: Show number of gridpoints per variable
277     * reducegrid: Select gridpoints wrt. given mask
278     * settbounds: Set time bounds
279   Changed operators:
280     * input: added optional zaxis parameter
281     * setpartab: renamed to setcodetab
282     * pardes: renamed to codetab
283   Fixed bugs:
284     * Error reading Gaussian reduced GRIB files [Bug #6780 #6819]
285     * Installation error with OpenMP [Bug #6523]
286     * mul: wrong result for missval*0 (bug was introduced in 1.7.1)
287     * nint: wrong result (replaced round() by lround())
288     * shaded, contour, grfill: set NAN missvals to -9e33 [Bug: #6677]
289     * expr: fix problem with missing values in time constant mask and a timeseries
290
291Version 1.7.1 (25 February 2016):
292
293   New features:
294     * select: added search key steptype, gridnum, gridname, zaxisnum, zaxisname
295     * expr, exprf, aexpr, aexprf: added support for function clon(x), clat(x), clev(x),
296       remove(x), ngp(x), nlev(x), size(x), missval(x), sellevel(x,k), sellevidx(x,k),
297       fldmin(x), fldmax(x), fldsum(x), fldmean(x), fldavg(x), fldstd(x), fldstd1(x), fldvar(x), fldvar1(x),
298       vertmin(x), vertmax(x), vertsum(x), vertmean(x), vertavg(x), vertstd(x), vertstd1(x), vertvar(x), vertvar1(x)
299   New operators:
300     * contour: Contour plot
301     * shaded: Shaded contour plot
302     * grfill: Shaded gridfill plot
303     * vector: Lat/Lon vector plot
304     * graph: Line graph plot
305     * gmtxyz: Output GMT xyz format to create contour plots with the GMT module pscontour.
306     * gmtcells: Output GMT multiple segment format to create shaded gridfill plots with psxy.
307   Fixed bugs:
308     * cdo -t table_file does not read variable name from table file [Bug #6312]
309     * One day shift backwards when converting to relative time axis with -r [Bug #6496]
310     * ydaypctl: check of verification date failed (bug fix)
311     * cat, copy, mergetime, select: remove time constant input fields for nfile>1 [Bug #6552]
312
313Version 1.7.0 (28 October 2015):
314
315   New features:
316     * added support for netCDF Scalar Coordinate Variables
317     * added support for hybrid sigma pressure coordinates following the CF convention
318     * added option --percentile to select different percentile methods
319       Available methods: nrank, nist, numpy, numpy_lower, numpy_higher, numpy_nearest
320     * distgrid: added support for curvilinear grids
321     * collgrid: added support for curvilinear grids
322   New operators:
323     * remapycon: First order conservative remapping (new implementation of remapcon)
324     * genycon: Generate 1st order conservative remap weights (new implementation of gencon)
325     * setmisstonn: Set missing value to nearest neightbor
326     * setmisstodis: Set missing value to the distance-weighted average of the nearest neighbors
327     * ap2pl: Interpolate 3D variables on hybrid sigma height coordinates to pressure levels
328     * gheight: Geopotential height
329     * vertstd1: Vertical standard deviation [Divisor is (n-1)]
330     * vertvar1: Vertical variance [Divisor is (n-1)]
331     * seasvar1: Seasonal variance [Divisor is (n-1)]
332     * seasstd1: Seasonal standard deviation [Divisor is (n-1)]
333     * yseasvar1: Multi-year seasonally variance [Divisor is (n-1)]
334     * yseasstd1: Multi-year seasonally standard deviation [Divisor is (n-1)]
335   Changed operators:
336     * remapnn, remapdis: replaced scrip search by kdtree (optimization)
337     * vertvar, vertstd: changed to weighted var/std if layer bounds are available
338   Fixed bugs:
339     * cdo -t table_file does not complain if table_file is a directory [Bug #5891]
340     * expr: operators return 0 for arithmetics on constants [Bug #5875]
341     * env. CDO_TIMESTAT_DATE does not work [Bug #5758]
342     * splityear*: support for constant fields is missing [Bug #5759]
343     * yseaspctl: check of verification date failed [Bug #5810]
344     * Converting rotated lat-lon netcdf to/from grib: flip sign of the angle of rotation [Bug #5870]
345
346Version 1.6.9 (28 April 2015):
347
348   New features:
349     * select: added parameter date, startdate, enddate
350     * expr: added support for operator ?:,&&,||
351     * option --reduce_dim: reduce dimension (Timstat, Fldstat)
352   New operators:
353     * after: ECHAM standard post processor
354     * aexpr: Evaluate expressions and append results
355     * aexprf: Evaluate expression script and append results
356     * selzaxisname: Select z-axes by name
357     * genlevelbounds: Generate level bounds
358   Fixed bugs:
359     * ydrunpctl: does not work in combination with ydrunmin/ydrunmax
360     * Ensstat: added support for different missing values
361     * seltimestep: abort if none of the selected timesteps are found
362
363Version 1.6.8 (26 March 2015):
364
365   New features:
366     * select, delete: added wildcard support for parameter name
367     * expr: added support for logical operators <, >, <=, >=, !=, ==, <=>
368   New operators:
369     * splityearmon: Split in years and months
370     * yseasadd: Add multi-year seasonal time series
371     * yseassub: Subtract multi-year seasonal time series
372     * yseasmul: Multiply multi-year seasonal time series
373     * yseasdiv: Divide multi-year seasonal time series
374   Changed operators:
375     * vertmean, vertavg: changed to weighted means if layer bounds are available
376     * setpartabp, setpartabn: added optional parameter convert to convert the units.
377       Units are not converted anymore if this parameter is not set!
378     * TimSTAT, Timpctl, TimselSTAT, Timselpctl, SeasSTAT, Seaspctl:
379       The output time stamp of all operators from the above modules
380       are changed from the last to the middle contributing timestep.
381       Use the environment variable CDO_TIMESTAT_DATE=last to set
382       the output time stamp to the last contributing timestep.
383     * eof, eof3d: use area weights instead of no weights
384       Use the environment variable CDO_WEIGHT_MODE=off to switch back to
385       the non weighted version
386   Fixed bugs:
387     * gradsdes: grib index file is empty (introduced in 1.6.7)
388     * grib2 output: segfaults when writing grib2 files [Bug #5351]
389     * remapnn: Segmentation fault for extrapolation of regular 2D source grids [Bug #5448]
390
391Version 1.6.7 (12 December 2014):
392
393   Fixed bugs:
394     * intlevel3d: does not work
395     * GRIB_API: segfaults when writing grib2 files [Bug #5351]
396
397Version 1.6.6 (27 November 2014):
398
399   New operators:
400     * outputtab: table output
401   Fixed bugs:
402     * option -t table: segmentation fault if parameter table entry longname is missing
403     * merge: check number of timesteps [Bug #5338]
404     * seasmean: sets all time_bnds to the same values [Bug #5329]
405     * histcount: doesn't recognize missing values
406     * filesdes: doesn't work for GRIB2 files [Bug #5307]
407
408Version 1.6.5 (23 October 2014):
409
410   New operators:
411     * distgrid: distribute horizonal grid
412     * collgrid: collect horizontal grid
413   Changed operators:
414     * cat: added support for option -O (overwrite existing output file)
415     * remaplaf: changed calculation of weights from SCRIP to YAC
416   Fixed bugs:
417     * gridarea: added support for concave grid cells
418     * gradsdes: added support for option 365_day_calendar
419     * import_binary: option 365_day_calendar does not work
420     * select: wrong result when select only one timestep
421
422Version 1.6.4 (26 June 2014):
423
424   New features:
425     * Option --history: Do not append to netCDF "history" global attribute
426     * Option --netcdf_hdr_pad <nbr>: Pad netCDF output header with nbr bytes
427   New operators:
428     * setpartabn: set parameter table by name
429     * setpartabp: set parameter table by parameter ID
430     * sealevelpressure: sea level pressure
431   Changed operators:
432     * Sinfo: changed format of grid and zaxis section
433     * Filter: disable zero-padding
434     * diff: print number of different values
435     * Ymonstat: sorts output by month of year
436   Fixed bugs:
437     * eof3d: set sum of weights to 1
438     * eofcoeff: remove scaling with grid cell area weights
439     * eofcoeff3d: remove scaling with grid cell area weights
440
441Version 1.6.3 (18 February 2014):
442
443   New features:
444     * remapbil, remapbic, remapdis, remapnn: performance optimization for regular 2D source grids
445     * gradsdes: added support for GRIB files >2GB
446     * eca_csu: added number of csu periods with more than 5days per time period
447     * eca_cfd: added number of cfd periods with more than 5days per time period
448     * expr: select variables by name
449   Changed operators:
450     * gradsdes: added parameter map_version and removed specific operators gradsdes1 and gradsdes2
451   Fixed bugs:
452     * gradsdes: changed LCC to LCCR in PDEF definition [Bug #4344]
453     * cat: "Segmentation fault" if the output file already exist [Bug #4291]
454     * delete: parameter level does not work [Bug #4216]
455
456Version 1.6.2 (12 November 2013):
457
458   New features:
459     * select: added support for key >timestep_of_year<
460     * mastrfu: added missing value support
461     * splitmon: added optional parameter to set the format string for the month
462   Fixed bugs:
463     * selyear: wrong result for negative years [Bug #3836]
464     * eca_gsl: start date of growing season is wrong if the length of growing season is zero
465
466Version 1.6.1 (27 June 2013):
467
468   New features:
469     * support of blanks in filenames and parameter
470   Changed operators:
471     * gradsdes: added support for netCDF files
472     * Info: add chunking information of netcdf files (only with verbose output) [Feature #3489]
473     * select: added support for key >hour<
474   Fixed bugs:
475     * fldcor: check missing value of 2. input file
476     * enscrps: wrong result since CDO version 1.5.6 [Bug #3403]
477     * selmon: month not found for negative years [Bug #3439]
478     * shifttime: wrong result for negative hours and days [Bug #3440]
479     * inttime: removes last time step [Bug #3611]
480
481Version 1.6.0 (14 March 2013):
482
483   New operators:
484     * select: Select fields from an unlimited number of input files
485     * mergegrid: Merge horizontal grids
486     * yearmonmean: yearly mean from monthly data
487     * duplicate: Duplicates a dataset
488     * adisit: Potential temperature to in-situ temperature
489     * rhopot: Calculates potential density
490   Changed operators:
491     * setcalendar: changed CDO calendar names to CF calendar names (Feature #3123)
492                    (standard, proleptic_gregorian, 360_day, 365_day, 366_day)
493     * masklonlatbox: added support for curvilinear grids
494     * diff: print only records that differ
495   Fixed bugs:
496     * sellonlatbox: wrong result with overlapped lonlatbox on curvilinear grids
497     * ensrkhisttime: fixed memory fault
498     * expr: wrong result for operation var1/var2 where var2 = 0
499     * Runstat: added support for time bounds (Bug #3127)
500     * merge: uses size of the first input file for the output buffer
501
502Version 1.5.9 (17 December 2012):
503
504   New features:
505     * cdo option -z zip: added optional compression level -z zip[_1-9]
506     * cdo: added option -k <chunktype> to set the chunk type to auto, grid or lines
507     * Added workaround to combine CDO operators with the result of mergetime, merge, copy, cat, ens<STAT>
508       - use one input parameter with wildcards in single quotes, e.g.: 'ifile?_*'
509   Changed operators:
510     * enlarge: added missing value support
511   Fixed bugs:
512     * gradsdes: failed
513     * sellevel: loosing level bounds
514     * wrong result for user defined lonlat grids with xfirst < 0
515       (This bug was introduced in CDO version 1.5.8)
516
517Version 1.5.8 (30 October 2012):
518
519   New features:
520     * Added support for netCDF4(HDF5) formatted SCRIP grid description files
521     * added CDO option -L to lock all I/O calls. This option is neccessary if external I/O libraries like
522       netCDF4 (HDF5) were installed without thread-safe support.
523   New operators:
524     * setunit: Set variable unit
525     * chunit:  Change variable unit
526   Changed operators:
527     * Info:  changed output format
528     * Sinfo: changed output format
529     * Diff:  changed output format
530   Fixed bugs:
531     * remaplaf: fixed bug in binary_search_int()
532     * eca_rr1: result has wrong long name attribute
533
534Version 1.5.6.1 (26 July 2012):
535
536   Fixed bugs:
537     * Wrong results with the following statistical functions:
538         *mean, *avg, *sum, *var, *std
539       only if all of the following conditions are complied:
540         - x86_64 machine (tornado, squall, thunder, lizard)
541         - dataset has no missing values
542         - the horizontal grid size is > 1 and not multiple of 8
543       This bug was introduced in CDO version 1.5.6.
544
545Version 1.5.6 (23 July 2012):
546
547   New features:
548     * Runstat: OpenMP parallelization over parameter nts
549     * import_binary: added support for 64-bit floats via extra OPTION keyword flt64
550   New operators:
551     * showunit: show unit of a parameter
552   Changed operators:
553     * Arith: added support for 3D masks
554     * mastrfu: use grid coordinates from input file
555   Fixed bugs:
556     * ymonsub: added support for time bounds
557     * Wrong netCDF output for unscaled uint8, int8, int16, int32 variables [Bug #2516]
558
559Version 1.5.5 (15 May 2012):
560
561   New operators:
562     * yhouradd, yhoursub, yhourmul, yhourdiv: Multi-year hourly arithmetic
563   Fixed bugs:
564     * ECA operators: wrong result if missing value is not the default missing value (-9e33)
565     * ml2pl: added support for GRIB2 parameter names
566     * replace: removed debug output
567
568Version 1.5.4 (30 January 2012):
569
570   New features:
571     * setgridtype: added parameter lonlat to convert curvilinear to regular lon/lat grids
572     * remapcon: added env REMAP_AREA_MIN, to set the minimum area fraction
573   New operators:
574     * timcovar: covariance over time
575     * fldcovar: covariance in grid space
576   Fixed bugs:
577     * splitsel: added support for constant fields [Bug #1701]
578     * combination of selection commands (e.g. selmon -selyear) do not terminate, if no result found [Bug #1640]
579
580Version 1.5.3 (20 October 2011):
581
582   New features:
583     * Variable input parameter for ECA operators: eca_cdd, eca_cwd, eca_rr1, eca_sdii
584   Fixed bugs:
585     * deflate compression with netCDF4 doesn't work (option: -z zip)
586     * sellonlatbox: correct lon bounds if necessary
587     * ifthen, ifthenelse: uses only the first time step of the first input file
588     * module Monarith (monadd, monsub, monmul, mondiv): wrong result for 3D variables
589
590Version 1.5.2 (22 August 2011):
591
592   New features:
593     * replace: added support to replace single levels
594   Changed operators:
595     * remapeta: Changed minimum pressure level for condensation from 1000Pa to 0Pa.
596                 Use the environment variable REMAPETA_PTOP to set the minimum pressure level for condensation.
597                 Above this level the humidity is set to the constant 1.E-6.
598   Fixed bugs:
599     * invertlat: bug fix for CURVILINEAR grids
600     * ymon<stat>: preserve time axis attributes (type and calendar)
601     * import_binary: added support for OPTION ZREV
602     * expr/exprf: wrong result for expression 'constant-field' and 'constant/field' (e.g. 1-field)
603                   This bug was introduced in CDO version 1.5.1.
604     * eof, eoftime, eofspatial, eof3d - Empirical Orthogonal Functions:
605            There was a bug in the calculation of the Frobenius norm, which has only been triggered in some cases
606            when using a low precision. The normalization has been changed thus that the eigenvectors are not weighted
607            and their absolute is 1. The default settings for convergence have been changed to be more conservative:
608            CDO_SVD_MODE=jacobi    MAX_JACOBI_ITER=12   FNORM_PRECISION=1.e-12
609
610Version 1.5.1 (12 July 2011):
611
612   New features:
613     * Added support for netCDF4 classic format; option -f nc4c
614     * import_binary: Added support for 1 and 2 byte integer
615   New operators:
616     * intlevel3d: vertical interpolation to/from 3d vertical coordinates
617     * ensrkhistspace: Ranked Histogram averaged over time
618     * ensrkhisttime:  Ranked Histogram averaged over space
619     * ensroc:  Ensemble Receiver Operating characteristics
620     * enscrps: Ensemble CRPS and decomposition
621     * ensbrs:  Ensemble Brier score
622   Fixed bugs:
623     * Exprf: wrong result for missing values != (double) -9.e33
624     * detrend: added support for time bounds
625     * Filter: added support for time bounds
626     * eofspatial: integer overflow; wrong result for grid size > 46340
627     * eca_*: use the input calendar for the output streams
628
629Version 1.5.0 (15 March 2011):
630
631   New features:
632     * GRIB2 support via ECMWF GRIB_API
633     * Added support for netCDF level bounds
634     * Added option -O to overwrite existing output file (only for ens<STAT>, merge, mergetime)
635   New operators:
636     * selparam: Select parameters by identifier
637     * delparam: Delete parameters by identifier
638     * splitparam: Split parameter identifiers
639     * chparam: Change parameter identifier
640   Changed operators:
641     * expr: added functions abs(), int(), nint(), sqr()
642     * sinfo: changed output of table and code number to parameter identifier
643     * info:  changed output of code number to parameter identifier
644     * diff:  changed output of code number to parameter identifier
645   Fixed bugs:
646     * sellonlatbox: does not work as expected when selecting all longitudes
647     * sellonlatbox: initialization missing for unstructured grids
648     * ml2pl and ml2hl: wrong result if input file contains full *and* half level data
649     * trend and detrend: integer overflow; wrong result for ntimesteps > 46340
650     * spcut: only correct results with continuous wave numbers starting at 1
651     * remaplib: fixed data race in calculation of bin_addr (OpenMP)
652
653Version 1.4.7 (06 January 2011):
654
655   New features:
656     * improved support for netCDF output from WRF model (import time and grid variables)
657   New operators:
658     * ydayadd, ydaysub, ydaymul, ydaydiv: Multi-year daily arithmetic
659     * eca_pd: Precipitation days index per time period
660     * dv2ps: Divergence and vorticity to velocity potential and stream function
661   Changed operators:
662     * import_cmsaf: added time information also for time constant fields
663   Fixed bugs:
664     * eof: fix memory access violation
665     * eofcoeff: fix memory access violation
666     * fldmean: gives wrong result for grid units [radian]
667     * Yseasstat: bug fix for datasets with time constant fields
668     * sellevel: fix problem with hybrid model levels and netCDF output
669     * sellonlatbox: fix rounding error of the last lon index
670     * Settime: bug fix for time independent variables in combination with other operators (pipes)
671
672Version 1.4.6 (17 September 2010):
673
674   New features:
675     * Using libtool for linking (rpath)
676     * Changed predefined gaussian grid names from t<RES>grid to n<N>
677       Use n80 instead of t106grid to define a Gaussian N80 grid
678     * Changed percentile parameter type from integer to float
679   New operators:
680     * bandpass: Bandpass filtering
681     * lowpass:  Lowpass filtering
682     * highpass: Highpass filtering
683   Changed operators:
684     * eca_gsl: adjust implementation to fit definition by ECA
685     * expr, exprf: added missing values support
686   Fixed bugs:
687     * sellevel: copy zaxis meta data name and units
688     * seldate: open output file only when time steps found
689     * sellonlatbox: fix rounding error of the last lon index
690
691Version 1.4.5.1 (05 July 2010):
692
693   New features:
694     * GRIB1 decode: Correct ZeroShiftError of simple packed spherical harmonics
695   Fixed bugs:
696     * wrong result of SZIP compressed GRIB1 records with 24 bit packing and a compression ratio < 1.05
697
698Version 1.4.5 (28 June 2010):
699
700   New operators:
701     * eof: Calculate EOFs in spatial or time space
702     * eoftime: Calculate EOFs in time space
703     * eofspatial: Calculate EOFs in spatial space
704     * eofcoeff: Principal coefficients of EOFs
705     * consecsum: Consecutive Sum
706     * consects: Consecutive Timesteps
707     * setvals: Set list of old values to new values
708
709Version 1.4.4 (29 April 2010):
710
711   New operators:
712
713     * fldcor: correlation in grid space
714     * timcor: correlation over time
715     * gridbox<stat>: computes statistical values over surrounding grid boxes
716
717   Changed operators:
718
719     * import_binary: added support for variables with different number of levels
720     * random: added optional parameter 'seed'
721
722   Fixed bugs:
723
724     * standard deviation: changed the result from missval to zero, if variance is zero
725     * fldsum: change result from 0 to missval, if only missing values found
726     * intyear: set the interpolation result always to missval, if missing values found
727     * Added support for netCDF time bounds
728     * sellonlatbox: parameter lon2 was not inclusiv
729     * expr: added support for calculations of const/var
730     * setday: writes sometimes wrong date information with GRIB result from afterburner
731     * inputsrv: added level information
732     * merge: added support to merge levels with datasets in netCDF format
733
734Version 1.4.3 (22 February 2010):
735
736   * New features:
737      o using CDI library version 1.4.3
738        improved GRIB1 support and performance
739      o changed GRIB1 default packing type of spherical harmonics to complex
740
741Version 1.4.2 (8 February 2010):
742
743   * Changed operators:
744      o remapcon, remaplaf: speed up by fast store of links
745      o replace: added support for time constant fields
746      o module Genweights: use netCDF2 (64bit) for large remap weights files
747      o module Zonstat, Merstat: added support for generic grids
748      o module Ensstat: don't overwrite existing files
749      o import_cmsaf: added more corrections for wrong projection parameter
750
751Version 1.4.1 (15 December 2009):
752
753   * New features:
754      o using CDI library version 1.4.1
755        improved GRIB and netCDF support and performance
756   * New operators:
757      o splittabnum - Split parameter table numbers
758      o sethalo - Set the left and right bounds of a field
759   * Changed operators:
760      o merge, mergetime: don't overwrite existing files
761      o showtime: removed output of date, only print time string hh:mm:ss
762   * Fixed bugs:
763      o remap: bug fix for weights from gennn (set remap_extrapolate = TRUE)
764
765Version 1.4.0.1 (21 October 2009):
766
767   * Fixed bugs:
768      o seltime: bug fix for scanning of input parameter
769      o IEG format: bug fix for identification of lonlat grids
770      o GRIB format: bug fix for decoding of missing values (scalar version only)
771
772Version 1.4.0 (5 October 2009):
773
774   * New features:
775      o added support of time units 'seconds' to all operators
776   * New operators:
777      o Import binary data sets (via a GrADS data descriptor file) - import_binary
778      o Set valid range - setvrange
779   * Changed operators:
780      o gridarea: added support for hexagonal GME grid and tripolar MPIOM grid
781      o remapnn: added support for unstructured grids without bounds (full grid search)
782      o Seasstat: added env. CDO_SEASON_START to set the start month of seasons
783      o ieg format: added support for Gaussian grids
784   * Fixed bugs:
785      o shifttime: bug fix for negative time increments
786      o import_cmsaf: read native float datatype
787
788Version 1.3.2 (15 June 2009):
789
790   * New features:
791      o Changed compiler to ANSI C99
792      o Added option -Q to sort netCDF variable names
793   * Changed operators:
794      o splitsel: changed the number of output digits from 3 to 6
795      o remapeta: correct humidity up to highest level *nctop* where condensation is allowed
796      o remapcon: change max_subseg from 1000 to 100000
797   * Fixed bugs:
798      o settaxis: bug fix for time increment 'months'
799      o remaplaf: fixed buffer overflow
800      o remapdis, remapnn: set num_srch_bins to 1 if REMAP_EXTRAPOLATE=OFF
801
802Version 1.3.1 (16 April 2009):
803
804   * New features:
805      o The default calendar is now set to "proleptic gregorian".
806        To use a standard calendar set the environment variable CDI_CALENDAR=standard.
807      o Added support for Lambert Conformal Conic projections
808      o Added support for missval = NaN
809   * Changed operators:
810      o ml2pl: added support for Geopotential Height
811      o Settime: added "seconds" support to operator "settunits", "settaxis" and "shifttime"
812      o percentile: change default number of bins from 100 to 101
813   * Fixed bugs:
814      o import_cmsaf: bug fix for datasets with gain/offset and more than 1 timestep
815      o remaplaf: bug fix for fields with missing values
816      o remapnn: bug fix for distance equal zero
817      o mermean: bug fix for weights from 'zonmean' (cdo mermean -zonmean)
818      o chlevel: fixed bug that happens when the list of oldlev,newlev
819                 contains the same level more than once
820
821Version 1.3.0 (15 January 2009):
822
823   * New features:
824      o add support for Sinusoidal and Lambert Azimuthal Equal Area projections
825   * New operators:
826      o Second order conservative remapping - remapcon2
827      o Nearest neighbor remapping - remapnn
828      o Largest area fraction remapping - remaplaf
829      o Reciprocal value - reci
830   * Changed operators:
831      o import_cmsaf: add support for monthly mean diurnal cycle
832      o remap: set num_srch_bins to nlat/2 (speedup)
833   * Fixed bugs:
834      o setzaxis: changed datatype from float to double
835      o sellonlatbox: bug fix for curvilinear grids
836      o merge: bug fix for usage in CDO pipes
837      o gridarea, gridweights: bug fix for gridboxes with delta lon >= 180 degree
838      o intlevel: bug fix for datasets with missing values
839      o yseasstd, yseasvar: fixed wrong array index
840
841Version 1.2.1 (13 November 2008):
842
843   * New features:
844      o Option '-u' to determinate whether to overwrite existing files
845   * New operators:
846      o Import CM-SAF files - import_cmsaf
847      o Mathematical function 'power' - pow
848   * Changed operators:
849      o sellonlatbox: add support for grid type 'CELL' and units 'radians'
850      o remapdis: add support for grid type 'CELL' without bounds (full grid search)
851      o Timstat: use time axis with bounds from input
852      o copy, cat: concatenate time constant fields
853   * Fixed bugs:
854      o zonvar: activation was missing
855      o ifthen:  bug fix for datasets with different missing values
856      o runmean: bug fix for datasets with missing values
857
858Version 1.2.0 (13 August 2008):
859
860   * New features:
861      o add support for netCDF4 classic with deflate (option -z zip)
862   * New operators:
863      o Linear level interpolation - intlevel
864      o Invert levels - invertlev
865      o Select levels by index - sellevidx
866      o Import AMSR binary files - import_amsr
867   * Changed operators:
868      o remapeta: add missing value support
869   * Fixed bugs:
870      o Operator yseasmean, yhourmean and ydaymean: bug fix for datasets with missing values
871      o Module Ninfo and Showinfo: bug fix for datasets with time constant parameter only
872        Affected operators: ndate, nmon, nyear, showdate, showtime, showmon, showyear
873
874Version 1.1.1 (8 April 2008):
875
876   * New features:
877      o Module Vertint: add support for GME data
878
879   * New operators:
880      o Regression - regres
881      o Grid cell area/weights - gridarea, gridweights
882      o Z-axis description - zaxisdes
883
884   * Fixed bugs:
885      o Module Exprf: using MT safe version of bison and flex
886      o Module Vertint: bug fix for input with time constant fields
887      o Module Arithc: recalculate number of missing values
888      o Operator splitsel: bug fix for multilevel/multivar datasets
889
890Version 1.1.0 (25 January 2008):
891
892   * New features:
893      o Support for Lambert conformal grids in GRIB format
894      o Improved support for netCDF attributes
895
896   * New operators:
897      o Monthly arithmetic - monadd, monsub, monmul, mondiv
898
899   * Fixed bugs:
900      o Operator setlevel and chlevel: bug fix for usage in pipes
901      o Operator cat: bug fix for large existing output files (>2GB) on 32-bit machines
902      o Operator gradsdes: bug fix for monthly mean data with start day > 28
903      o Operator expr: change exponent precedence from left to right
904
905Version 1.0.9 (22 October 2007):
906
907   * New operators:
908      o Multi-year hourly statistical values
909         - yhourmin, yhourmax, yhoursum, yhourmean, yhouravg, yhourstd, yhourvar
910   * Changed operators:
911      o ymonstat: write original order of timesteps
912      o gradsdes: add GRIB level type to VARS
913   * Fixed bugs:
914      o Operator ifthen: bug fix for masks that varies not with time
915
916
917Version 1.0.8 (27 June 2007):
918
919   * New operators:
920      o Remap vertical hybrid level - remapeta
921      o 9 point smoothing - smooth9
922      o Mask region - maskregion
923      o Split selected time steps - splitsel
924      o Set range to constant - setrtoc, setrtoc2
925      o Histogram - histcount, histsum, histmean, histfreq
926      o Show GRIB level types - showltype
927      o Select GRIB level types - selltype
928      o Set GRIB level type - setltype
929   * Changed operators:
930      o Renamed chvar, selvar, delvar, showvar, setvar and splitvar
931             to chname, selname, delname, showname, setname and splitname
932      o Renamed selmin, selmax, selsum, selmean, selavg, selvar, selstd
933             to timselmin, timselmax, timselsum, timselmean, timselavg, timselvar, timselstd
934      o Renamed selpctl to timselpctl
935      o Renamed nvar to npar and vardes to pardes
936   * Fixed bugs:
937      o Module Ymonstat gave wrong results with missing values
938        Affected operators: ymonmean, ymonstd, ymonvar
939      o Library ieglib has had a memory leak for IEG output
940
941Version 1.0.7 (8 March 2007):
942
943   * New operators:
944      o Divergence and vorticity to U and V wind (linear) - dv2uvl
945      o U and V wind to divergence and vorticity (linear) - uv2dvl
946      o Select single month - selsmon
947   * Changed operators:
948      o tchill is renamed to wct
949      o eca_strwind is split into eca_strwin, eca_strbre, eca_strgal and eca_hurr
950   * Fixed bugs:
951      o fldmax has had wrong results if the field has
952        missing values and all other values are less than zero.
953
954Version 1.0.6 (12 December 2006):
955
956   * New operators:
957      o Variance for all statistic modules
958         - vertvar, timvar, yearvar, monvar, dayvar, hourvar,
959           runvar, seasvar, selvar, ydayvar, ydrunvar, ymonvar, yseasvar
960
961Developer version 1.0.5 (30 November 2006):
962
963  * New operators:
964      o Show file format - showformat
965      o Windchill temperature - tchill
966      o Humidity index - hi
967      o ECA Indices of Daily Temperature and Precipitation Extremes
968        - eca_* (37 different indices!)
969
970Developer version 1.0.4 (7 November 2006):
971
972  * New operators:
973      o Multi-year daily running statistical values
974         - ydrunmin, ydrunmax, ydrunsum, ydrunmean, ydrunavg, ydrunstd
975      o Percentile values for different time ranges
976         - timpctl, hourpctl, daypctl, monpctl, yearpctl, selpctl, runpctl, seaspctl
977      o Multi-year percentile values
978         - ydaypctl, ymonpctl, yseaspctl, ydrunpctl
979      o Ensemble and field percentiles
980         - enspctl, fldpctl, zonpctl, merpctl
981
982Developer version 1.0.3 (3 November 2006):
983
984  * New operators:
985      o Time interpolation - intntime
986      o Backward transformation of velocity components U and V from MPIOM - mrotuvb
987
988Version 1.0.2 (18 September 2006):
989
990  * Rename operator gradsdes to gradsdes1 and set the alias gradsdes to gradsdes2
991  * Remapping of rotated lonlat grids with remapbi* and genbi* has been changed at the bounds.
992    Generated interpolation weights with older CDO versions can't be used anymore and must
993    be recalculated with genbi*.
994  * New operators:
995      o ydaysum - Multi-year daily sum
996      o ymonsum - Multi-year monthly sum
997      o yseassum - Multi-year seasonally sum
998      o int - Convert to integer value
999      o nint - Convert to nearest integer value
1000
1001Version 1.0.1 (1 August 2006):
1002
1003  * New CDO option '-b' to set the number of bits for the output precision
1004  * New operators:
1005      o selstdname - Select standard names
1006      o showstdname - Show standard names
1007      o setclonlatbox - Set a longitude/latitude box to constant [Etienne Tourigny]
1008      o setcindexbox - Set an index box to constant
1009
1010Version 1.0.0 (15 June 2006):
1011
1012  * New operators:
1013      o dv2ps - Divergence and vorticity to velocity potential and stream function
1014
1015Version 0.9.13 (4 May 2006):
1016
1017  * New operators:
1018      o mergetime - Merge datasets sorted by date and time
1019      o input, inputext, inputsrv - ASCII input
1020      o abs - Absolute value
1021      o atan2 - Arc tangent of two fields
1022
1023Version 0.9.12 (6 March 2006):
1024
1025  * New operators:
1026      o uv2dv, dv2uv - Wind transformation
1027
1028Version 0.9.11 (1 Februar 2006):
1029
1030  * Support of GME grids
1031  * New operators:
1032      o selmin, selmax, selsum, selmean, selavg, selstd - Time range statistic
1033      o sp2gpl, gp2spl - Spectral transformation of TL-Model data (e.g. ERA40)
1034      o replace - Replace variables
1035
1036Version 0.9.10 (19 December 2005):
1037
1038  * Support of REMO IEG format
1039  * New operators:
1040      o ifthenelse - IF ifile1 THEN ifile2 ELSE ifile3
1041
1042Version 0.9.9 (19 October 2005):
1043
1044  * New operators:
1045      o ensmin, ensmax, enssum, ensmean, ensavg, ensstd, ensvar - Ensemble statistic
1046      o gradsdes2 - Creates a GrADS data descriptor file with a portable GrADS map
1047      o enlarge - Enlarge all fields to a user given grid
1048      o gencon - Generate conservative interpolation weights
1049      o remap - Remapping with the interpolation weights from a netCDF file
1050
1051Version 0.9.8 (19 July 2005):
1052
1053  * New operators:
1054      o setlevel - Set level
1055      o chlevel - Change level
1056      o chlevelc - Change level of one code
1057      o chlevelv - Change level of one variable
1058
1059Version 0.9.7 (26 May 2005):
1060
1061  * New operators:
1062      o setcalendar - Set calendar
1063      o masklonlatbox - Mask lon/lat box
1064      o maskindexbox - Mask index box
1065      o muldpm - Multiply with days per month
1066      o divdpm - Divide with days per month
1067
1068
1069Version 0.9.6 (4 April 2005):
1070
1071  * Support of rotated regular grids.
1072  * New operator:
1073      o detrend - Linear detrending of time series.
1074
1075Version 0.9.4 (3 Jan 2005):
1076
1077  * Support of PINGO grid description files.
1078  * New operator:
1079      o gradsdes - Creates a GrADS data descriptor file.
1080                   Supported file formats are GRIB, SERVICE and EXTRA.
1081