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