NEWS 36.2 KB
Newer Older
Uwe Schulzweida's avatar
Uwe Schulzweida committed
1 2
CDO NEWS
--------
3

Uwe Schulzweida's avatar
Uwe Schulzweida committed
4 5
Version 1.9.1 (27 September 2017):

Uwe Schulzweida's avatar
Uwe Schulzweida committed
6 7
   Changes operators:
     * eof, eof3d: set default of environment variable CDO_WEIGHT_MODE to off
Uwe Schulzweida's avatar
Uwe Schulzweida committed
8 9 10
   Fixed bugs:
     * eof3d: weight array was allocated for only one level (bug fix)

Uwe Schulzweida's avatar
Uwe Schulzweida committed
11
Version 1.9.0 (27 July 2017):
12 13

   New features:
Uwe Schulzweida's avatar
Uwe Schulzweida committed
14
     * Code changed from ANSI C99 to ISO C++11
Uwe Schulzweida's avatar
Uwe Schulzweida committed
15
     * Added configure option for ecCodes --with-eccodes=<yes|no|directory>
16
     * Added range operator to all statistic modules (e.g. yearrange, zonrange)
17 18 19
   Fixed bugs:
     * expr: improve ternary operator, no brackets needed anymore.
     * expr: added support for clev in ternary operator.
Uwe Schulzweida's avatar
Uwe Schulzweida committed
20 21
     * remapcon/remapycon produces wrong results for some grid combinations (introduced in 1.8.0) [Bug #7821]
     * mergetime: wrong time information if first input file does not contain the first time step (bug introduced in 1.8.1) [Bug #7760]
22
     * percentile: fix wrong result with method numpy (linear interpolation) and nist [Bug #7798]
23

Uwe Schulzweida's avatar
Uwe Schulzweida committed
24 25 26 27 28 29 30
Version 1.8.2 (15 May 2017):

   Fixed bugs:
     * setpartab: variable name does not change [Bug #7681]
     * cmorlite: skipped empty key values [Bug #7681]
     * setcalendar, settaxis memory error (bug introduce in 1.8.1) [Bug #7691]

31
Version 1.8.1 (6 April 2017):
Uwe Schulzweida's avatar
Uwe Schulzweida committed
32

Uwe Schulzweida's avatar
Uwe Schulzweida committed
33 34
   New features:
     * selindexbox: added support for LCC grid
Uwe Schulzweida's avatar
Uwe Schulzweida committed
35 36 37
   New operators:
     * selgridcell - Select grid cells
     * delgridcell - Delete grid cells
38 39 40 41 42
   New operators (KMNI contribution):
     * selmulti - Select multiple fields
     * delmulti - Delete multiple fields
     * changemulti - Change identication of multiple fields
     * samplegrid - Resample grid
Uwe Schulzweida's avatar
Uwe Schulzweida committed
43 44 45
     * uvDestag - Destaggering of wind components
     * rotuvNorth - Rotate u/v wind to North pole
     * projuvLatLon - Cylindrical Equidistant projection
Uwe Schulzweida's avatar
Uwe Schulzweida committed
46
   Fixed bugs:
Uwe Schulzweida's avatar
Uwe Schulzweida committed
47
     * collgrid: combination of nx and names does not work
Uwe Schulzweida's avatar
Uwe Schulzweida committed
48 49
     * Remapping bug for non global grids [Bug #7625]
     * remapdis and remapcon produces wrong results for some grid combinations [Bug #7626] (introduced in last revision)
Uwe Schulzweida's avatar
Uwe Schulzweida committed
50

Uwe Schulzweida's avatar
Uwe Schulzweida committed
51 52 53 54 55 56
Version 1.8.0 (26 October 2016):

   New features:
     * NetCDF: Improved support for horizontal and vertical grids 
     * Changed default of option -f nc to netCDF2
     * masklonlatbox: added support for unstructured grids
Uwe Schulzweida's avatar
Uwe Schulzweida committed
57
     * setpartabn: added support for user defined attributes
58
     * Reverse: adjust date/time by -1 second (introduced in last revision)
Uwe Schulzweida's avatar
Uwe Schulzweida committed
59
   New operators:
Uwe Schulzweida's avatar
Uwe Schulzweida committed
60
     * setattribute: Set attributes
Uwe Schulzweida's avatar
Uwe Schulzweida committed
61
     * cmorlite: Apply variable_entry of cmor tables
Uwe Schulzweida's avatar
Uwe Schulzweida committed
62
     * timcumsum: Cumulative sum over time.
Uwe Schulzweida's avatar
Uwe Schulzweida committed
63
     * shiftx/shifty: Shift fields on rectilinear/curvilinear grids in x/y direction
Uwe Schulzweida's avatar
Uwe Schulzweida committed
64
   Fixed bugs:
Uwe Schulzweida's avatar
Uwe Schulzweida committed
65
     * Cond: bug fix for ntsteps1 == 1 && ntsteps2 != 1
Uwe Schulzweida's avatar
Uwe Schulzweida committed
66 67
     * ml2pl: interpolation failed for data on hybrid half levels [Bug #7225]

Uwe Schulzweida's avatar
Uwe Schulzweida committed
68
Version 1.7.2 (28 June 2016):
Uwe Schulzweida's avatar
Uwe Schulzweida committed
69

70 71 72
   New features:
     * Adjust date/time by -1 second if the varification time is 00:00:00 and
       the verification date is equal to upper time bound
Uwe Schulzweida's avatar
Uwe Schulzweida committed
73 74 75 76 77 78 79
   New operators:
     * smooth: Smooth grid points
     * ap2hl: Air pressure to height level interpolation
     * ngrids: Show number of grids
     * ngridpoints: Show number of gridpoints per variable
     * reducegrid: Select gridpoints wrt. given mask
     * settbounds: Set time bounds
80 81
   Changed operators:
     * input: added optional zaxis parameter
Uwe Schulzweida's avatar
Uwe Schulzweida committed
82 83
     * setpartab: renamed to setcodetab
     * pardes: renamed to codetab
Uwe Schulzweida's avatar
Uwe Schulzweida committed
84
   Fixed bugs:
Uwe Schulzweida's avatar
Uwe Schulzweida committed
85
     * Error reading Gaussian reduced GRIB files [Bug #6780 #6819]
Uwe Schulzweida's avatar
Uwe Schulzweida committed
86
     * Installation error with OpenMP [Bug #6523]
Uwe Schulzweida's avatar
Uwe Schulzweida committed
87
     * mul: wrong result for missval*0 (bug was introduced in 1.7.1)
88
     * nint: wrong result (replaced round() by lround())
Uwe Schulzweida's avatar
Uwe Schulzweida committed
89
     * shaded, contour, grfill: set NAN missvals to -9e33 [Bug: #6677]
Uwe Schulzweida's avatar
Uwe Schulzweida committed
90
     * expr: fix problem with missing values in time constant mask and a timeseries
Uwe Schulzweida's avatar
Uwe Schulzweida committed
91

92
Version 1.7.1 (25 February 2016):
Uwe Schulzweida's avatar
Uwe Schulzweida committed
93

94
   New features:
Uwe Schulzweida's avatar
Uwe Schulzweida committed
95
     * select: added search key steptype, gridnum, gridname, zaxisnum, zaxisname
96 97 98 99
     * expr, exprf, aexpr, aexprf: added support for function clon(x), clat(x), clev(x),
       remove(x), ngp(x), nlev(x), size(x), missval(x), sellevel(x,k), sellevidx(x,k),
       fldmin(x), fldmax(x), fldsum(x), fldmean(x), fldavg(x), fldstd(x), fldstd1(x), fldvar(x), fldvar1(x),
       vertmin(x), vertmax(x), vertsum(x), vertmean(x), vertavg(x), vertstd(x), vertstd1(x), vertvar(x), vertvar1(x)
100
   New operators:
Uwe Schulzweida's avatar
Uwe Schulzweida committed
101 102 103
     * contour: Contour plot
     * shaded: Shaded contour plot
     * grfill: Shaded gridfill plot
104 105
     * vector: Lat/Lon vector plot
     * graph: Line graph plot
106 107
     * gmtxyz: Output GMT xyz format to create contour plots with the GMT module pscontour.
     * gmtcells: Output GMT multiple segment format to create shaded gridfill plots with psxy.
Uwe Schulzweida's avatar
Uwe Schulzweida committed
108 109
   Fixed bugs:
     * cdo -t table_file does not read variable name from table file [Bug #6312]
110
     * One day shift backwards when converting to relative time axis with -r [Bug #6496]
Uwe Schulzweida's avatar
Uwe Schulzweida committed
111
     * ydaypctl: check of verification date failed (bug fix)
Uwe Schulzweida's avatar
Uwe Schulzweida committed
112
     * cat, copy, mergetime, select: remove time constant input fields for nfile>1 [Bug #6552]
Uwe Schulzweida's avatar
Uwe Schulzweida committed
113

114 115
Version 1.7.0 (28 October 2015):

116
   New features:
Uwe Schulzweida's avatar
Uwe Schulzweida committed
117
     * added support for netCDF Scalar Coordinate Variables
Uwe Schulzweida's avatar
Uwe Schulzweida committed
118
     * added support for hybrid sigma pressure coordinates following the CF convention
Uwe Schulzweida's avatar
Uwe Schulzweida committed
119 120
     * added option --percentile to select different percentile methods
       Available methods: nrank, nist, numpy, numpy_lower, numpy_higher, numpy_nearest
121
     * distgrid: added support for curvilinear grids
122
     * collgrid: added support for curvilinear grids
123
   New operators:
Uwe Schulzweida's avatar
Uwe Schulzweida committed
124 125
     * remapycon: First order conservative remapping (new implementation of remapcon)
     * genycon: Generate 1st order conservative remap weights (new implementation of gencon)
Uwe Schulzweida's avatar
Uwe Schulzweida committed
126
     * setmisstonn: Set missing value to nearest neightbor
127
     * setmisstodis: Set missing value to the distance-weighted average of the nearest neighbors
Uwe Schulzweida's avatar
Uwe Schulzweida committed
128
     * ap2pl: Interpolate 3D variables on hybrid sigma height coordinates to pressure levels
129 130
     * vertstd1: Vertical standard deviation [Divisor is (n-1)]
     * vertvar1: Vertical variance [Divisor is (n-1)]
131 132
     * seasvar1: Seasonal variance [Divisor is (n-1)]
     * seasstd1: Seasonal standard deviation [Divisor is (n-1)]
133 134
     * yseasvar1: Multi-year seasonally variance [Divisor is (n-1)]
     * yseasstd1: Multi-year seasonally standard deviation [Divisor is (n-1)]
135
   Changed operators:
Uwe Schulzweida's avatar
Uwe Schulzweida committed
136
     * remapnn, remapdis: replaced scrip search by kdtree (optimization)
137
     * vertvar, vertstd: changed to weighted var/std if layer bounds are available
138
   Fixed bugs:
139
     * cdo -t table_file does not complain if table_file is a directory [Bug #5891]
140
     * expr: operators return 0 for arithmetics on constants [Bug #5875]
141
     * env. CDO_TIMESTAT_DATE does not work [Bug #5758]
142
     * splityear*: support for constant fields is missing [Bug #5759]
143
     * yseaspctl: check of verification date failed [Bug #5810]
144
     * Converting rotated lat-lon netcdf to/from grib: flip sign of the angle of rotation [Bug #5870]
145

146
Version 1.6.9 (28 April 2015):
147 148

   New features:
Uwe Schulzweida's avatar
Uwe Schulzweida committed
149
     * select: added parameter date, startdate, enddate 
150
     * expr: added support for operator ?:,&&,||
151
     * option --reduce_dim: reduce dimension (Timstat, Fldstat)
Uwe Schulzweida's avatar
Uwe Schulzweida committed
152 153
   New operators:
     * after: ECHAM standard post processor
Uwe Schulzweida's avatar
Uwe Schulzweida committed
154 155 156
     * aexpr: Evaluate expressions and append results
     * aexprf: Evaluate expression script and append results
     * selzaxisname: Select z-axes by name
157
     * genlevelbounds: Generate level bounds
Uwe Schulzweida's avatar
Uwe Schulzweida committed
158
   Fixed bugs:
159
     * ydrunpctl: does not work in combination with ydrunmin/ydrunmax
160
     * Ensstat: added support for different missing values
Uwe Schulzweida's avatar
Uwe Schulzweida committed
161
     * seltimestep: abort if none of the selected timesteps are found
162

163
Version 1.6.8 (26 March 2015):
Uwe Schulzweida's avatar
Uwe Schulzweida committed
164

Uwe Schulzweida's avatar
Uwe Schulzweida committed
165
   New features:
166
     * select, delete: added wildcard support for parameter name
167
     * expr: added support for logical operators <, >, <=, >=, !=, ==, <=>
168
   New operators:
Uwe Schulzweida's avatar
Uwe Schulzweida committed
169
     * splityearmon: Split in years and months
170 171 172 173
     * yseasadd: Add multi-year seasonal time series
     * yseassub: Subtract multi-year seasonal time series
     * yseasmul: Multiply multi-year seasonal time series
     * yseasdiv: Divide multi-year seasonal time series
174
   Changed operators:
175
     * vertmean, vertavg: changed to weighted means if layer bounds are available
176 177
     * setpartabp, setpartabn: added optional parameter convert to convert the units.
       Units are not converted anymore if this parameter is not set!
Uwe Schulzweida's avatar
Uwe Schulzweida committed
178 179
     * TimSTAT, Timpctl, TimselSTAT, Timselpctl, SeasSTAT, Seaspctl:
       The output time stamp of all operators from the above modules
Uwe Schulzweida's avatar
Uwe Schulzweida committed
180
       are changed from the last to the middle contributing timestep.
181
       Use the environment variable CDO_TIMESTAT_DATE=last to set
Uwe Schulzweida's avatar
Uwe Schulzweida committed
182
       the output time stamp to the last contributing timestep.
183 184 185
     * eof, eof3d: use area weights instead of no weights
       Use the environment variable CDO_WEIGHT_MODE=off to switch back to
       the non weighted version
186
   Fixed bugs:
187
     * gradsdes: grib index file is empty (introduced in 1.6.7)
Uwe Schulzweida's avatar
Uwe Schulzweida committed
188
     * grib2 output: segfaults when writing grib2 files [Bug #5351]
189
     * remapnn: Segmentation fault for extrapolation of regular 2D source grids [Bug #5448]
190

191
Version 1.6.7 (12 December 2014):
Uwe Schulzweida's avatar
Uwe Schulzweida committed
192 193

   Fixed bugs:
194
     * intlevel3d: does not work
Uwe Schulzweida's avatar
Uwe Schulzweida committed
195 196
     * GRIB_API: segfaults when writing grib2 files [Bug #5351]

Uwe Schulzweida's avatar
Uwe Schulzweida committed
197
Version 1.6.6 (27 November 2014):
198

Uwe Schulzweida's avatar
Uwe Schulzweida committed
199 200
   New operators:
     * outputtab: table output
201
   Fixed bugs:
202 203
     * option -t table: segmentation fault if parameter table entry longname is missing
     * merge: check number of timesteps [Bug #5338]
204
     * seasmean: sets all time_bnds to the same values [Bug #5329]
205 206 207
     * histcount: doesn't recognize missing values
     * filesdes: doesn't work for GRIB2 files [Bug #5307]

208
Version 1.6.5 (23 October 2014):
209

210 211 212
   New operators:
     * distgrid: distribute horizonal grid
     * collgrid: collect horizontal grid
213
   Changed operators:
214
     * cat: added support for option -O (overwrite existing output file)
215
     * remaplaf: changed calculation of weights from SCRIP to YAC
216 217
   Fixed bugs:
     * gridarea: added support for concave grid cells
218
     * gradsdes: added support for option 365_day_calendar
219
     * import_binary: option 365_day_calendar does not work
220 221
     * select: wrong result when select only one timestep

Uwe Schulzweida's avatar
Uwe Schulzweida committed
222
Version 1.6.4 (26 June 2014):
223 224

   New features:
225 226
     * Option --history: Do not append to netCDF "history" global attribute
     * Option --netcdf_hdr_pad <nbr>: Pad netCDF output header with nbr bytes
227
   New operators:
Uwe Schulzweida's avatar
Uwe Schulzweida committed
228 229
     * setpartabn: set parameter table by name
     * setpartabp: set parameter table by parameter ID
230 231
     * sealevelpressure: sea level pressure
   Changed operators:
Uwe Schulzweida's avatar
Uwe Schulzweida committed
232
     * Sinfo: changed format of grid and zaxis section
Uwe Schulzweida's avatar
Uwe Schulzweida committed
233
     * Filter: disable zero-padding
234
     * diff: print number of different values
235
     * Ymonstat: sorts output by month of year
Uwe Schulzweida's avatar
Uwe Schulzweida committed
236
   Fixed bugs:
237
     * eof3d: set sum of weights to 1
Uwe Schulzweida's avatar
Uwe Schulzweida committed
238 239
     * eofcoeff: remove scaling with grid cell area weights
     * eofcoeff3d: remove scaling with grid cell area weights
240

241
Version 1.6.3 (18 February 2014):
242

243
   New features:
244
     * remapbil, remapbic, remapdis, remapnn: performance optimization for regular 2D source grids
245
     * gradsdes: added support for GRIB files >2GB
246 247
     * eca_csu: added number of csu periods with more than 5days per time period
     * eca_cfd: added number of cfd periods with more than 5days per time period
248
     * expr: select variables by name
249 250
   Changed operators:
     * gradsdes: added parameter map_version and removed specific operators gradsdes1 and gradsdes2
251
   Fixed bugs:
252
     * gradsdes: changed LCC to LCCR in PDEF definition [Bug #4344]
253
     * cat: "Segmentation fault" if the output file already exist [Bug #4291]
254 255
     * delete: parameter level does not work [Bug #4216]

Uwe Schulzweida's avatar
Uwe Schulzweida committed
256
Version 1.6.2 (12 November 2013):
257

258 259 260
   New features:
     * select: added support for key >timestep_of_year<
     * mastrfu: added missing value support
261
     * splitmon: added optional parameter to set the format string for the month
262 263
   Fixed bugs:
     * selyear: wrong result for negative years [Bug #3836]
264
     * eca_gsl: start date of growing season is wrong if the length of growing season is zero
265

266
Version 1.6.1 (27 June 2013):
267

268 269
   New features:
     * support of blanks in filenames and parameter
270
   Changed operators:
271
     * gradsdes: added support for netCDF files
272
     * Info: add chunking information of netcdf files (only with verbose output) [Feature #3489]
273
     * select: added support for key >hour<
274 275
   Fixed bugs:
     * fldcor: check missing value of 2. input file
276
     * enscrps: wrong result since CDO version 1.5.6 [Bug #3403]
277
     * selmon: month not found for negative years [Bug #3439]
278
     * shifttime: wrong result for negative hours and days [Bug #3440]
279
     * inttime: removes last time step [Bug #3611]
280

Uwe Schulzweida's avatar
Uwe Schulzweida committed
281
Version 1.6.0 (14 March 2013):
282 283

   New operators:
284
     * select: Select fields from an unlimited number of input files
Uwe Schulzweida's avatar
Uwe Schulzweida committed
285
     * mergegrid: Merge horizontal grids
Uwe Schulzweida's avatar
Uwe Schulzweida committed
286
     * yearmonmean: yearly mean from monthly data
Uwe Schulzweida's avatar
Uwe Schulzweida committed
287
     * duplicate: Duplicates a dataset
Uwe Schulzweida's avatar
Uwe Schulzweida committed
288 289
     * adisit: Potential temperature to in-situ temperature
     * rhopot: Calculates potential density
290
   Changed operators:
Uwe Schulzweida's avatar
Uwe Schulzweida committed
291 292 293
     * setcalendar: changed CDO calendar names to CF calendar names (Feature #3123)
                    (standard, proleptic_gregorian, 360_day, 365_day, 366_day)
     * masklonlatbox: added support for curvilinear grids
294
     * diff: print only records that differ
295
   Fixed bugs:
296
     * sellonlatbox: wrong result with overlapped lonlatbox on curvilinear grids
Uwe Schulzweida's avatar
Uwe Schulzweida committed
297
     * ensrkhisttime: fixed memory fault
298
     * expr: wrong result for operation var1/var2 where var2 = 0
299
     * Runstat: added support for time bounds (Bug #3127)
300
     * merge: uses size of the first input file for the output buffer
301

Uwe Schulzweida's avatar
Uwe Schulzweida committed
302
Version 1.5.9 (17 December 2012):
303 304 305

   New features:
     * cdo option -z zip: added optional compression level -z zip[_1-9]
Uwe Schulzweida's avatar
Uwe Schulzweida committed
306
     * cdo: added option -k <chunktype> to set the chunk type to auto, grid or lines
307
     * Added workaround to combine CDO operators with the result of mergetime, merge, copy, cat, ens<STAT>
Uwe Schulzweida's avatar
Uwe Schulzweida committed
308
       - use one input parameter with wildcards in single quotes, e.g.: 'ifile?_*' 
309 310
   Changed operators:
     * enlarge: added missing value support
311
   Fixed bugs:
312
     * gradsdes: failed
313
     * sellevel: loosing level bounds
314 315 316
     * wrong result for user defined lonlat grids with xfirst < 0
       (This bug was introduced in CDO version 1.5.8)

317
Version 1.5.8 (30 October 2012):
Uwe Schulzweida's avatar
Uwe Schulzweida committed
318

319
   New features:
320
     * Added support for netCDF4(HDF5) formatted SCRIP grid description files
321 322
     * added CDO option -L to lock all I/O calls. This option is neccessary if external I/O libraries like 
       netCDF4 (HDF5) were installed without thread-safe support.
323 324 325
   New operators:
     * setunit: Set variable unit
     * chunit:  Change variable unit
Uwe Schulzweida's avatar
Uwe Schulzweida committed
326
   Changed operators:
Uwe Schulzweida's avatar
Uwe Schulzweida committed
327
     * Info:  changed output format
Uwe Schulzweida's avatar
Uwe Schulzweida committed
328
     * Sinfo: changed output format
Uwe Schulzweida's avatar
Uwe Schulzweida committed
329
     * Diff:  changed output format
330
   Fixed bugs:
331
     * remaplaf: fixed bug in binary_search_int()
332
     * eca_rr1: result has wrong long name attribute
Uwe Schulzweida's avatar
Uwe Schulzweida committed
333

334 335 336
Version 1.5.6.1 (26 July 2012):

   Fixed bugs:
337 338 339 340 341 342 343
     * Wrong results with the following statistical functions:
         *mean, *avg, *sum, *var, *std
       only if all of the following conditions are complied:
         - x86_64 machine (tornado, squall, thunder, lizard)
         - dataset has no missing values
         - the horizontal grid size is > 1 and not multiple of 8
       This bug was introduced in CDO version 1.5.6.
344

345
Version 1.5.6 (23 July 2012):
346

347 348 349 350 351
   New features:
     * Runstat: OpenMP parallelization over parameter nts
     * import_binary: added support for 64-bit floats via extra OPTION keyword flt64 
   New operators:
     * showunit: show unit of a parameter
352
   Changed operators:
353
     * Arith: added support for 3D masks
354 355
     * mastrfu: use grid coordinates from input file
   Fixed bugs:
356
     * ymonsub: added support for time bounds
357
     * Wrong netCDF output for unscaled uint8, int8, int16, int32 variables [Bug #2516]
Uwe Schulzweida's avatar
Uwe Schulzweida committed
358

Uwe Schulzweida's avatar
Uwe Schulzweida committed
359
Version 1.5.5 (15 May 2012):
Uwe Schulzweida's avatar
Uwe Schulzweida committed
360 361 362

   New operators:
     * yhouradd, yhoursub, yhourmul, yhourdiv: Multi-year hourly arithmetic
363 364
   Fixed bugs:
     * ECA operators: wrong result if missing value is not the default missing value (-9e33)
365
     * ml2pl: added support for GRIB2 parameter names
366
     * replace: removed debug output 
Uwe Schulzweida's avatar
Uwe Schulzweida committed
367

Uwe Schulzweida's avatar
Uwe Schulzweida committed
368
Version 1.5.4 (30 January 2012):
369

370 371
   New features:
     * setgridtype: added parameter lonlat to convert curvilinear to regular lon/lat grids
372
     * remapcon: added env REMAP_AREA_MIN, to set the minimum area fraction
373 374
   New operators:
     * timcovar: covariance over time
375
     * fldcovar: covariance in grid space
376
   Fixed bugs:
377
     * splitsel: added support for constant fields [Bug #1701]
378
     * combination of selection commands (e.g. selmon -selyear) do not terminate, if no result found [Bug #1640]
379

380
Version 1.5.3 (20 October 2011):
381

382
   New features:
383
     * Variable input parameter for ECA operators: eca_cdd, eca_cwd, eca_rr1, eca_sdii
384
   Fixed bugs:
385
     * deflate compression with netCDF4 doesn't work (option: -z zip)
386
     * sellonlatbox: correct lon bounds if necessary
Uwe Schulzweida's avatar
Uwe Schulzweida committed
387
     * ifthen, ifthenelse: uses only the first time step of the first input file
388
     * module Monarith (monadd, monsub, monmul, mondiv): wrong result for 3D variables
389

Uwe Schulzweida's avatar
Uwe Schulzweida committed
390
Version 1.5.2 (22 August 2011):
391 392 393

   New features:
     * replace: added support to replace single levels
394 395 396 397
   Changed operators:
     * remapeta: Changed minimum pressure level for condensation from 1000Pa to 0Pa.
                 Use the environment variable REMAPETA_PTOP to set the minimum pressure level for condensation. 
                 Above this level the humidity is set to the constant 1.E-6.
398
   Fixed bugs:
399
     * invertlat: bug fix for CURVILINEAR grids
400
     * ymon<stat>: preserve time axis attributes (type and calendar)
401
     * import_binary: added support for OPTION ZREV
402 403
     * expr/exprf: wrong result for expression 'constant-field' and 'constant/field' (e.g. 1-field)
                   This bug was introduced in CDO version 1.5.1.
404 405 406 407 408
     * eof, eoftime, eofspatial, eof3d - Empirical Orthogonal Functions: 
            There was a bug in the calculation of the Frobenius norm, which has only been triggered in some cases
            when using a low precision. The normalization has been changed thus that the eigenvectors are not weighted 
            and their absolute is 1. The default settings for convergence have been changed to be more conservative:
            CDO_SVD_MODE=jacobi    MAX_JACOBI_ITER=12   FNORM_PRECISION=1.e-12
409

Uwe Schulzweida's avatar
Uwe Schulzweida committed
410
Version 1.5.1 (12 July 2011):
411

412 413
   New features:
     * Added support for netCDF4 classic format; option -f nc4c
414
     * import_binary: Added support for 1 and 2 byte integer
415
   New operators:
Uwe Schulzweida's avatar
Uwe Schulzweida committed
416
     * intlevel3d: vertical interpolation to/from 3d vertical coordinates
417 418 419 420 421
     * ensrkhistspace: Ranked Histogram averaged over time
     * ensrkhisttime:  Ranked Histogram averaged over space
     * ensroc:  Ensemble Receiver Operating characteristics
     * enscrps: Ensemble CRPS and decomposition
     * ensbrs:  Ensemble Brier score
422
   Fixed bugs:
423
     * Exprf: wrong result for missing values != (double) -9.e33
424
     * detrend: added support for time bounds
425
     * Filter: added support for time bounds
426
     * eofspatial: integer overflow; wrong result for grid size > 46340
427
     * eca_*: use the input calendar for the output streams
428

Uwe Schulzweida's avatar
Uwe Schulzweida committed
429
Version 1.5.0 (15 March 2011):
Uwe Schulzweida's avatar
Uwe Schulzweida committed
430

Uwe Schulzweida's avatar
Uwe Schulzweida committed
431
   New features:
Uwe Schulzweida's avatar
Uwe Schulzweida committed
432
     * GRIB2 support via ECMWF GRIB_API
Uwe Schulzweida's avatar
Uwe Schulzweida committed
433
     * Added support for netCDF level bounds
434
     * Added option -O to overwrite existing output file (only for ens<STAT>, merge, mergetime)
435 436 437
   New operators:
     * selparam: Select parameters by identifier
     * delparam: Delete parameters by identifier
438
     * splitparam: Split parameter identifiers
439
     * chparam: Change parameter identifier
440 441
   Changed operators:
     * expr: added functions abs(), int(), nint(), sqr()
442 443 444
     * sinfo: changed output of table and code number to parameter identifier
     * info:  changed output of code number to parameter identifier
     * diff:  changed output of code number to parameter identifier
Uwe Schulzweida's avatar
Uwe Schulzweida committed
445
   Fixed bugs:
446
     * sellonlatbox: does not work as expected when selecting all longitudes
447
     * sellonlatbox: initialization missing for unstructured grids
448
     * ml2pl and ml2hl: wrong result if input file contains full *and* half level data
449
     * trend and detrend: integer overflow; wrong result for ntimesteps > 46340
450
     * spcut: only correct results with continuous wave numbers starting at 1
451
     * remaplib: fixed data race in calculation of bin_addr (OpenMP)
Uwe Schulzweida's avatar
Uwe Schulzweida committed
452

453
Version 1.4.7 (06 January 2011):
454

455 456
   New features:
     * improved support for netCDF output from WRF model (import time and grid variables)
457 458
   New operators:
     * ydayadd, ydaysub, ydaymul, ydaydiv: Multi-year daily arithmetic
459
     * eca_pd: Precipitation days index per time period
460
     * dv2ps: Divergence and vorticity to velocity potential and stream function
461 462
   Changed operators:
     * import_cmsaf: added time information also for time constant fields
463
   Fixed bugs:
464 465
     * eof: fix memory access violation
     * eofcoeff: fix memory access violation
466
     * fldmean: gives wrong result for grid units [radian]
467
     * Yseasstat: bug fix for datasets with time constant fields
468 469
     * sellevel: fix problem with hybrid model levels and netCDF output
     * sellonlatbox: fix rounding error of the last lon index
470
     * Settime: bug fix for time independent variables in combination with other operators (pipes)
471

Uwe Schulzweida's avatar
Uwe Schulzweida committed
472
Version 1.4.6 (17 September 2010):
Uwe Schulzweida's avatar
Uwe Schulzweida committed
473

474
   New features:
Uwe Schulzweida's avatar
Uwe Schulzweida committed
475
     * Using libtool for linking (rpath)
476
     * Changed predefined gaussian grid names from t<RES>grid to n<N>
477
       Use n80 instead of t106grid to define a Gaussian N80 grid
478
     * Changed percentile parameter type from integer to float
Uwe Schulzweida's avatar
Uwe Schulzweida committed
479 480 481 482
   New operators:
     * bandpass: Bandpass filtering
     * lowpass:  Lowpass filtering
     * highpass: Highpass filtering
483
   Changed operators:
Uwe Schulzweida's avatar
Uwe Schulzweida committed
484
     * eca_gsl: adjust implementation to fit definition by ECA
485
     * expr, exprf: added missing values support
486
   Fixed bugs:
Uwe Schulzweida's avatar
Uwe Schulzweida committed
487
     * sellevel: copy zaxis meta data name and units
488
     * seldate: open output file only when time steps found
489
     * sellonlatbox: fix rounding error of the last lon index
Uwe Schulzweida's avatar
Uwe Schulzweida committed
490 491

Version 1.4.5.1 (05 July 2010):
492

Uwe Schulzweida's avatar
Uwe Schulzweida committed
493 494
   New features:
     * GRIB1 decode: Correct ZeroShiftError of simple packed spherical harmonics
495
   Fixed bugs:
Uwe Schulzweida's avatar
Uwe Schulzweida committed
496
     * wrong result of SZIP compressed GRIB1 records with 24 bit packing and a compression ratio < 1.05 
497

Uwe Schulzweida's avatar
Uwe Schulzweida committed
498
Version 1.4.5 (28 June 2010):
Uwe Schulzweida's avatar
Uwe Schulzweida committed
499 500 501 502 503

   New operators:
     * eof: Calculate EOFs in spatial or time space
     * eoftime: Calculate EOFs in time space
     * eofspatial: Calculate EOFs in spatial space
Uwe Schulzweida's avatar
Uwe Schulzweida committed
504
     * eofcoeff: Principal coefficients of EOFs
Uwe Schulzweida's avatar
Uwe Schulzweida committed
505 506
     * consecsum: Consecutive Sum
     * consects: Consecutive Timesteps
Uwe Schulzweida's avatar
Uwe Schulzweida committed
507
     * setvals: Set list of old values to new values
Uwe Schulzweida's avatar
Uwe Schulzweida committed
508

Uwe Schulzweida's avatar
Uwe Schulzweida committed
509
Version 1.4.4 (29 April 2010):
Uwe Schulzweida's avatar
Uwe Schulzweida committed
510

Uwe Schulzweida's avatar
Uwe Schulzweida committed
511 512 513
   New operators:

     * fldcor: correlation in grid space
Uwe Schulzweida's avatar
Uwe Schulzweida committed
514
     * timcor: correlation over time
Uwe Schulzweida's avatar
Uwe Schulzweida committed
515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532
     * gridbox<stat>: computes statistical values over surrounding grid boxes

   Changed operators:

     * import_binary: added support for variables with different number of levels
     * random: added optional parameter 'seed'

   Fixed bugs:

     * standard deviation: changed the result from missval to zero, if variance is zero
     * fldsum: change result from 0 to missval, if only missing values found
     * intyear: set the interpolation result always to missval, if missing values found
     * Added support for netCDF time bounds
     * sellonlatbox: parameter lon2 was not inclusiv
     * expr: added support for calculations of const/var
     * setday: writes sometimes wrong date information with GRIB result from afterburner
     * inputsrv: added level information
     * merge: added support to merge levels with datasets in netCDF format
Uwe Schulzweida's avatar
Uwe Schulzweida committed
533

534 535 536
Version 1.4.3 (22 February 2010):

   * New features:
Uwe Schulzweida's avatar
Uwe Schulzweida committed
537 538
      o using CDI library version 1.4.3
        improved GRIB1 support and performance
539 540
      o changed GRIB1 default packing type of spherical harmonics to complex

Uwe Schulzweida's avatar
Uwe Schulzweida committed
541 542 543 544 545 546 547 548 549 550
Version 1.4.2 (8 February 2010):

   * Changed operators:
      o remapcon, remaplaf: speed up by fast store of links
      o replace: added support for time constant fields
      o module Genweights: use netCDF2 (64bit) for large remap weights files
      o module Zonstat, Merstat: added support for generic grids
      o module Ensstat: don't overwrite existing files
      o import_cmsaf: added more corrections for wrong projection parameter

Uwe Schulzweida's avatar
Uwe Schulzweida committed
551 552 553
Version 1.4.1 (15 December 2009):

   * New features:
Uwe Schulzweida's avatar
Uwe Schulzweida committed
554 555
      o using CDI library version 1.4.1
        improved GRIB and netCDF support and performance
Uwe Schulzweida's avatar
Uwe Schulzweida committed
556 557 558 559 560 561 562 563 564
   * New operators:
      o splittabnum - Split parameter table numbers
      o sethalo - Set the left and right bounds of a field
   * Changed operators:
      o merge, mergetime: don't overwrite existing files
      o showtime: removed output of date, only print time string hh:mm:ss
   * Fixed bugs:
      o remap: bug fix for weights from gennn (set remap_extrapolate = TRUE)

Uwe Schulzweida's avatar
Uwe Schulzweida committed
565
Version 1.4.0.1 (21 October 2009):
566 567

   * Fixed bugs:
Uwe Schulzweida's avatar
Uwe Schulzweida committed
568
      o seltime: bug fix for scanning of input parameter
569 570 571
      o IEG format: bug fix for identification of lonlat grids
      o GRIB format: bug fix for decoding of missing values (scalar version only)

Uwe Schulzweida's avatar
Uwe Schulzweida committed
572 573 574 575 576 577 578 579 580 581 582 583 584 585
Version 1.4.0 (5 October 2009):

   * New features:
      o added support of time units 'seconds' to all operators
   * New operators:
      o Import binary data sets (via a GrADS data descriptor file) - import_binary
      o Set valid range - setvrange
   * Changed operators:
      o gridarea: added support for hexagonal GME grid and tripolar MPIOM grid
      o remapnn: added support for unstructured grids without bounds (full grid search)
      o Seasstat: added env. CDO_SEASON_START to set the start month of seasons
      o ieg format: added support for Gaussian grids
   * Fixed bugs:
      o shifttime: bug fix for negative time increments
Uwe Schulzweida's avatar
Uwe Schulzweida committed
586
      o import_cmsaf: read native float datatype
Uwe Schulzweida's avatar
Uwe Schulzweida committed
587

Uwe Schulzweida's avatar
Uwe Schulzweida committed
588 589 590 591 592 593 594 595 596 597 598 599 600 601
Version 1.3.2 (15 June 2009):

   * New features:
      o Changed compiler to ANSI C99
      o Added option -Q to sort netCDF variable names
   * Changed operators:
      o splitsel: changed the number of output digits from 3 to 6
      o remapeta: correct humidity up to highest level *nctop* where condensation is allowed
      o remapcon: change max_subseg from 1000 to 100000
   * Fixed bugs:
      o settaxis: bug fix for time increment 'months'
      o remaplaf: fixed buffer overflow
      o remapdis, remapnn: set num_srch_bins to 1 if REMAP_EXTRAPOLATE=OFF

Uwe Schulzweida's avatar
Uwe Schulzweida committed
602
Version 1.3.1 (16 April 2009):
603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620

   * New features:
      o The default calendar is now set to "proleptic gregorian".
        To use a standard calendar set the environment variable CDI_CALENDAR=standard.
      o Added support for Lambert Conformal Conic projections
      o Added support for missval = NaN
   * Changed operators:
      o ml2pl: added support for Geopotential Height
      o Settime: added "seconds" support to operator "settunits", "settaxis" and "shifttime"
      o percentile: change default number of bins from 100 to 101
   * Fixed bugs:
      o import_cmsaf: bug fix for datasets with gain/offset and more than 1 timestep
      o remaplaf: bug fix for fields with missing values
      o remapnn: bug fix for distance equal zero
      o mermean: bug fix for weights from 'zonmean' (cdo mermean -zonmean)
      o chlevel: fixed bug that happens when the list of oldlev,newlev 
                 contains the same level more than once

621
Version 1.3.0 (15 January 2009):
Uwe Schulzweida's avatar
Uwe Schulzweida committed
622 623 624 625 626 627 628

   * New features:
      o add support for Sinusoidal and Lambert Azimuthal Equal Area projections
   * New operators:
      o Second order conservative remapping - remapcon2
      o Nearest neighbor remapping - remapnn
      o Largest area fraction remapping - remaplaf
629
      o Reciprocal value - reci
Uwe Schulzweida's avatar
Uwe Schulzweida committed
630 631 632 633
   * Changed operators:
      o import_cmsaf: add support for monthly mean diurnal cycle
      o remap: set num_srch_bins to nlat/2 (speedup)
   * Fixed bugs:
Uwe Schulzweida's avatar
Uwe Schulzweida committed
634
      o setzaxis: changed datatype from float to double
Uwe Schulzweida's avatar
Uwe Schulzweida committed
635 636 637 638
      o sellonlatbox: bug fix for curvilinear grids
      o merge: bug fix for usage in CDO pipes
      o gridarea, gridweights: bug fix for gridboxes with delta lon >= 180 degree
      o intlevel: bug fix for datasets with missing values
639
      o yseasstd, yseasvar: fixed wrong array index
Uwe Schulzweida's avatar
Uwe Schulzweida committed
640

Uwe Schulzweida's avatar
Uwe Schulzweida committed
641
Version 1.2.1 (13 November 2008):
642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658

   * New features:
      o Option '-u' to determinate whether to overwrite existing files
   * New operators:
      o Import CM-SAF files - import_cmsaf
      o Mathematical function 'power' - pow
   * Changed operators:
      o sellonlatbox: add support for grid type 'CELL' and units 'radians'
      o remapdis: add support for grid type 'CELL' without bounds (full grid search)
      o Timstat: use time axis with bounds from input
      o copy, cat: concatenate time constant fields
   * Fixed bugs:
      o zonvar: activation was missing
      o ifthen:  bug fix for datasets with different missing values
      o runmean: bug fix for datasets with missing values

Version 1.2.0 (13 August 2008):
Uwe Schulzweida's avatar
Uwe Schulzweida committed
659 660 661 662 663 664 665 666 667 668 669 670 671 672 673

   * New features:
      o add support for netCDF4 classic with deflate (option -z zip)
   * New operators:
      o Linear level interpolation - intlevel
      o Invert levels - invertlev
      o Select levels by index - sellevidx
      o Import AMSR binary files - import_amsr
   * Changed operators:
      o remapeta: add missing value support
   * Fixed bugs:
      o Operator yseasmean, yhourmean and ydaymean: bug fix for datasets with missing values
      o Module Ninfo and Showinfo: bug fix for datasets with time constant parameter only
        Affected operators: ndate, nmon, nyear, showdate, showtime, showmon, showyear

Uwe Schulzweida's avatar
Uwe Schulzweida committed
674
Version 1.1.1 (8 April 2008):
Uwe Schulzweida's avatar
Uwe Schulzweida committed
675

Uwe Schulzweida's avatar
Uwe Schulzweida committed
676
   * New features:
Uwe Schulzweida's avatar
Uwe Schulzweida committed
677
      o Module Vertint: add support for GME data
Uwe Schulzweida's avatar
Uwe Schulzweida committed
678 679

   * New operators:
680
      o Regression - regres
681
      o Grid cell area/weights - gridarea, gridweights
Uwe Schulzweida's avatar
Uwe Schulzweida committed
682 683 684 685 686
      o Z-axis description - zaxisdes

   * Fixed bugs:
      o Module Exprf: using MT safe version of bison and flex
      o Module Vertint: bug fix for input with time constant fields
Uwe Schulzweida's avatar
Uwe Schulzweida committed
687
      o Module Arithc: recalculate number of missing values
Uwe Schulzweida's avatar
Uwe Schulzweida committed
688 689
      o Operator splitsel: bug fix for multilevel/multivar datasets

Uwe Schulzweida's avatar
Uwe Schulzweida committed
690 691
Version 1.1.0 (25 January 2008):

Uwe Schulzweida's avatar
Uwe Schulzweida committed
692
   * New features:
Uwe Schulzweida's avatar
Uwe Schulzweida committed
693 694
      o Support for Lambert conformal grids in GRIB format
      o Improved support for netCDF attributes
695 696 697 698

   * New operators:
      o Monthly arithmetic - monadd, monsub, monmul, mondiv

Uwe Schulzweida's avatar
Uwe Schulzweida committed
699 700 701 702 703 704
   * Fixed bugs:
      o Operator setlevel and chlevel: bug fix for usage in pipes
      o Operator cat: bug fix for large existing output files (>2GB) on 32-bit machines
      o Operator gradsdes: bug fix for monthly mean data with start day > 28
      o Operator expr: change exponent precedence from left to right

Uwe Schulzweida's avatar
Uwe Schulzweida committed
705
Version 1.0.9 (22 October 2007):
706 707 708 709

   * New operators:
      o Multi-year hourly statistical values
         - yhourmin, yhourmax, yhoursum, yhourmean, yhouravg, yhourstd, yhourvar
Uwe Schulzweida's avatar
Uwe Schulzweida committed
710 711 712
   * Changed operators:
      o ymonstat: write original order of timesteps
      o gradsdes: add GRIB level type to VARS
713 714 715 716
   * Fixed bugs:
      o Operator ifthen: bug fix for masks that varies not with time


Uwe Schulzweida's avatar
Uwe Schulzweida committed
717
Version 1.0.8 (27 June 2007):
Uwe Schulzweida's avatar
Uwe Schulzweida committed
718 719

   * New operators:
720
      o Remap vertical hybrid level - remapeta
Uwe Schulzweida's avatar
Uwe Schulzweida committed
721
      o 9 point smoothing - smooth9
Uwe Schulzweida's avatar
Uwe Schulzweida committed
722
      o Mask region - maskregion
Uwe Schulzweida's avatar
Uwe Schulzweida committed
723 724 725
      o Split selected time steps - splitsel
      o Set range to constant - setrtoc, setrtoc2
      o Histogram - histcount, histsum, histmean, histfreq
Uwe Schulzweida's avatar
Uwe Schulzweida committed
726 727
      o Show GRIB level types - showltype
      o Select GRIB level types - selltype
Uwe Schulzweida's avatar
Uwe Schulzweida committed
728
      o Set GRIB level type - setltype
Uwe Schulzweida's avatar
Uwe Schulzweida committed
729 730 731
   * Changed operators:
      o Renamed chvar, selvar, delvar, showvar, setvar and splitvar
             to chname, selname, delname, showname, setname and splitname
732 733 734
      o Renamed selmin, selmax, selsum, selmean, selavg, selvar, selstd
             to timselmin, timselmax, timselsum, timselmean, timselavg, timselvar, timselstd
      o Renamed selpctl to timselpctl
Uwe Schulzweida's avatar
Uwe Schulzweida committed
735
      o Renamed nvar to npar and vardes to pardes
736 737 738
   * Fixed bugs:
      o Module Ymonstat gave wrong results with missing values
        Affected operators: ymonmean, ymonstd, ymonvar
Uwe Schulzweida's avatar
Uwe Schulzweida committed
739
      o Library ieglib has had a memory leak for IEG output
Uwe Schulzweida's avatar
Uwe Schulzweida committed
740

Uwe Schulzweida's avatar
Uwe Schulzweida committed
741
Version 1.0.7 (8 March 2007):
Uwe Schulzweida's avatar
Uwe Schulzweida committed
742 743

   * New operators:
Uwe Schulzweida's avatar
Uwe Schulzweida committed
744 745
      o Divergence and vorticity to U and V wind (linear) - dv2uvl
      o U and V wind to divergence and vorticity (linear) - uv2dvl
Uwe Schulzweida's avatar
Uwe Schulzweida committed
746
      o Select single month - selsmon
Uwe Schulzweida's avatar
Uwe Schulzweida committed
747 748 749 750 751 752
   * Changed operators:
      o tchill is renamed to wct
      o eca_strwind is split into eca_strwin, eca_strbre, eca_strgal and eca_hurr
   * Fixed bugs:
      o fldmax has had wrong results if the field has
        missing values and all other values are less than zero.
Uwe Schulzweida's avatar
Uwe Schulzweida committed
753

Uwe Schulzweida's avatar
Uwe Schulzweida committed
754 755 756 757 758 759 760 761
Version 1.0.6 (12 December 2006):

   * New operators:
      o Variance for all statistic modules
         - vertvar, timvar, yearvar, monvar, dayvar, hourvar,
           runvar, seasvar, selvar, ydayvar, ydrunvar, ymonvar, yseasvar

Developer version 1.0.5 (30 November 2006):
Uwe Schulzweida's avatar
Uwe Schulzweida committed
762 763

  * New operators:
Uwe Schulzweida's avatar
Uwe Schulzweida committed
764 765 766 767 768
      o Show file format - showformat 
      o Windchill temperature - tchill
      o Humidity index - hi
      o ECA Indices of Daily Temperature and Precipitation Extremes
        - eca_* (37 different indices!)
Uwe Schulzweida's avatar
Uwe Schulzweida committed
769

Uwe Schulzweida's avatar
Uwe Schulzweida committed
770
Developer version 1.0.4 (7 November 2006):
Uwe Schulzweida's avatar
Uwe Schulzweida committed
771 772

  * New operators:
Uwe Schulzweida's avatar
Uwe Schulzweida committed
773 774 775 776 777 778 779 780
      o Multi-year daily running statistical values
         - ydrunmin, ydrunmax, ydrunsum, ydrunmean, ydrunavg, ydrunstd
      o Percentile values for different time ranges
         - timpctl, hourpctl, daypctl, monpctl, yearpctl, selpctl, runpctl, seaspctl
      o Multi-year percentile values
         - ydaypctl, ymonpctl, yseaspctl, ydrunpctl
      o Ensemble and field percentiles
         - enspctl, fldpctl, zonpctl, merpctl
Uwe Schulzweida's avatar
Uwe Schulzweida committed
781

Uwe Schulzweida's avatar
Uwe Schulzweida committed
782
Developer version 1.0.3 (3 November 2006):
783 784

  * New operators:
Uwe Schulzweida's avatar
Uwe Schulzweida committed
785 786
      o Time interpolation - intntime 
      o Backward transformation of velocity components U and V from MPIOM - mrotuvb
787

788 789 790 791 792 793 794
Version 1.0.2 (18 September 2006):

  * Rename operator gradsdes to gradsdes1 and set the alias gradsdes to gradsdes2
  * Remapping of rotated lonlat grids with remapbi* and genbi* has been changed at the bounds.
    Generated interpolation weights with older CDO versions can't be used anymore and must
    be recalculated with genbi*.
  * New operators:
Uwe Schulzweida's avatar
Uwe Schulzweida committed
795 796 797
      o ydaysum - Multi-year daily sum
      o ymonsum - Multi-year monthly sum
      o yseassum - Multi-year seasonally sum
798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866