CDI NEWS -------- Version 2.5.1 (05 Mar 2025): Changes: * NetCDF4: improved calculation of output chunk size * NetCDF4: improved calculation of input chunk cache size for numStep>1 and zSize>1 Version 2.5.0 (28 Nov 2024): Changes: * NetCDF: improved HealPIX support * reset chunktype if z and t are chunked * lock access to NCZARR in CDI_Threadsafe mode Version 2.4.4 (19 Sep 2024): Fixed bugs: * absolute timeaxis failed with timeunits seconds [Bug #11916] Version 2.4.2 (21 Jun 2024): Changes: * NetCDF4: improved calculation of input chunk cache size * NetCDF4: switched off output chunk cache Fixed bugs: * cdiInqContents: missing lock of non thread-safe netCDF4/HDF5 calls (bug fix) Version 2.4.1 (21 May 2024): Changes: * Removed interface function vlistCopy(), use vlistDuplicate() * calc_chunk_cache_size: improved for 4D chunked data Fixed bugs: * gribapi_get_timeunits: check unitsOfTime (bug fix) [report: Chris Barnard] Version 2.4.0 (22 February 2024): New features: * Add experimental interface to FDB5 * Add global option CDI_Threadsafe to lock non thread-safe netCDF4/HDF5 calls Fixed bugs: * improve support for time units second [Bug #11740] * calc_chunk_cache_size: wrong result for 3D data (bug fix) * netCDF: write of y-coordinates failed for Gaussian reduced grids (bug fix) Version 2.3.0 (18 October 2023): New features: * Add GRIB2 HEALPix support (available with eccodes-2.32.0) * Add support for NetCDF attribute type NC_INT64 * Add interface function streamInqNumSteps() to inquire number of time steps * gribapi decode: add support for single precision float interface (available since ecCodes-2.30.0) * grib2: add read only support for alternativeRowScanning * grib2: add support for earth radius specified by data producer Fixed bugs: * HIRLAM_EXTENSIONS: set default CDI_KEY_SCANNINGMODE to 64 [Bug #11367] * gribapiDefGridLCC: store DxInMetres/DyInMetres as double * NetCDF4: use chunkSize only if it is less than gridsize * cdfDefineAttributes: check filetype for unsigned int attributes * time information missing if the stream contains fields constant in time only Version 2.2.0 (23 February 2023): New features: * Improve read performance of temporal chunked NetCDF4 data * Support for NetCDF4/HDF5 filter * async_worker: remove syncronization at end of timesteps New interface function * streamOpenReadQuery() Fixed bugs: * cdf_def_mapping: add support for datatype NC_STRING * grid module: remove initialization of CDI_KEY_SCANNINGMODE * cdf_read_xcoord: skip char coordinates only if ndims=1 * NetCDF: reading of lower time bounds is wrong since 2.0.6 Version 2.1.0 (6 October 2022): New features: * Added support for NCZarr * Set number of significant bits used for NetCDF 4.9.0 bit-roundung: vlistDefVarNSB()/vlistInqVarNSB() * Added support for milli seconds * Changed DateType back to int * Made CDI compatible to revision 1.8.3 used in ICON Fixed bugs: * recalculate optimal chunk_size if gridsize is > chunk_size_lim * ecCodes encode: fix problem with startStep for step type MIN/MAX * GRIB read: recalculate start date/time for every record and timestep * changed chunk_size_lim from 1073741823 to 16777216 * compareXYvals failed for unstructured grids (segmentation fault) [Bug #10632] * cdf_read_coordinates: check that grid cell bounds have only 2 dimensions [Bug #10575] Version 2.0.0 (11 October 2021): New features: * Changed to 3-clause BSD license * Changed type of gridsize for size_t to SizeType * Changed type of date from int64_t to DateType * Added FDB5 support (experimental) * Added environment variables CDI_GRIB1_TEMPLATE and CDI_GRIB2_TEMPLATE Changes: * gridDefParamsLCC()/gridInqParamsLCC(): changed interface * gridDefParamsSTERE()/gridInqParamsSTERE(): changed interface * Replaced zaxisDefDatatype()/zaxisInqDatatype() by cdiDefKeyInt()/cdiInqKeyInt() with CDI_KEY_DATATYPE * Replaced gridDefDatatype()/gridInqDatatype() by cdiDefKeyInt()/cdiInqKeyInt() with CDI_KEY_DATATYPE Fixed bugs: * Allow UUID starting with zero * cgribexDefGridLambert(): recalculate xinc/yinc in meter Version 1.9.6 (07 February 2019): New features: * Added support for polar stereographic projection * grib2: Added support for variables with different perturbationNumber * Added check for unsupported NetCDF4/HDF5 library combination (NetCDF <= 4.4.0 with libhdf5 >= 1.10.0) * NetCDF: added support for single scalar variable Fixed bugs: * ecCodes: deleteLocalDefinition for GRIB1.tmpl * taxisCopyTimestep: don't copy rdate/rtime (bug fix) * scanning of attribute associate* failed (bug fix) * grib1/ecCodes: set maxStep to 65000 (bug fix) * cdf_read: removed limitation of nmiss_ to INT_MAX [Bug #8691] * cgribex: make section2 length dynamic (bug fix for large Gaussian reduced grids) * GRIB2: correct longitudeOfFirstGridPoint if necessary (bug fix) * CDI_reduce_dim: wrong result when reduce time dimension (bug fix) Version 1.8.0 (14 February 2017): New features: * Refactor horizontal and vertical grid module * netCDF4: added support for attribute type NC_BYTE, NC_UBYTE, NC_USHORT and NC_UINT Fixed bugs: * iegWriteVarSliceDP: does not work (bug fix) * streamOpenAppend: call to gribContainersNew() missing (bug fix) [Bug #6944] Version 1.7.0 (27 October 2015): New features: * added support for netCDF Scalar Coordinate Variables * added support for hybrid sigma pressure coordinates following the CF convention * merge changes from branches/cdi-tiles [from Florian Prill] Fixed bugs: * GRIB rotated grids: invert angle of rotation (north to south pole) (bug fix) * bug fix for scanning the WRF time axis * cdiStreamSetupVlist: added call to vlist_unlock(vlistID) (bug fix) Version 1.6.8 (26 March 2015): Fixed bugs: * cdfCopyRecord: incorrect checksum for freed object [Bug #5461] * scan netcdf time units attribute * fixed rounding error for negativ timevalue * time unit second rounding error Version 1.6.7 (5 December 2014): Fixed bugs: * GRIB2 output does not work Version 1.6.6 (27 November 2014): New features: * IEG: added support for coordinate scale factor Fixed bugs: * table::decodeForm1: missing longname results in Abort trap * transpose2dArrayXX: wrong result * cgribexScanTimestep1: set flag to 0 in call to cgribexVarCompare() * netCDF: call set_validrangeDP() in cdfReadVar() * netCDF: call cdfDoInputDataTransformation() if have missvals Version 1.6.5 (23 October 2014): New features: * NetCDF: single precision input * netCDF4: added support for xtype NC_STRING * added CDI function gribapiLibraryVersion(major_version, minor_version, revision_version) [Feature #5043] * gribapiEncode: update additional keys defined with vlistDefVarXXXKey() [Feature #4720] * added vlistDefVarProductDefinitionTemplate() to define GRIB2 Product Definition Template Number [Feature #4694] * streamWriteVarF, streamWriteVarSliceF: added support for GRIB1 (cgribex) * grib2: activate jpeg support in combination with masks (missing values) Fixed bugs: * listDestroy(): set resHListSize=0 [Bug #5058] * NetCDF: Reading uuidOfVGrid [Bug #5046] Version 1.6.4 (26 June 2014): New features: * Added support for SPECS forecast time axis * Added support for GRIB_API key cfName Fixed bugs: * netCDF4 classic: existing files are converted to netCDF4 - classic flag is lost * netCDF: added support for opendap files by https: * gribapiDefDateTimeRel: set vdate to rdate for time invariant fields [Bug #4641] * Loss of coordinates attribute when merging files [Bug #4880] Version 1.6.3 (14 February 2014): New features: * streamInqGinfo: added support for GRIB files > 2GB Fixed bugs: * streamOpenA, streamOpen: parameter recordBufIsToBeCreated missing in call to cdiStreamOpenDefaultDelegate() * streamOpenA: removed line "streamptr->record = record"; record is allocated in cdiStreamOpenDefaultDelegate() Version 1.6.2 (12 November 2013): New features: * Added support for netCDF CF time attribute: climatology [Feature #4092] * Added CDI function zaxisDefNlevRef() and zaxisInqNlevRef() [Feature #4117] * Made gridtype GRID_REFERENCE part of GRID_UNSTRUCTED * GRIB2: added support for level type Lake Bottom (grib level type 162) * GRIB2: added support for level type Bottom Of Sediment Layer (grib level type 163) * GRIB2: added support for level type Bottom Of Thermally Active Sediment Layer (grib level type 164) * GRIB2: added support for level type Bottom Of Sediment Layer Penetrated By Thermal Wave (grib level type 165) * GRIB2: added support for level type Mixing Layer (grib level type 166) Fixed bugs: * netCDF: wrong result if type of data and type of attribute valid_range differ [Bug #3727] Version 1.6.1 (18 June 2013): New features: * GRIB2: added support for snow level (level type 114) * GRIB2: added support for layers with zaxis type ZAXIS_PRESSURE New functions: * cdiHaveFiletype(): Check whether a filetype is available Fixed bugs: * stream_gribapi: replaced function getLevelFactor() [Bug #3446] * gridXXXUUID: use cdi fortran datatype CBUF (char *) for the last argument (bug fix) [Bug #3424] * institutInq: check contents of name and longname (bug fix) [Bug #3419] * netCDF: missing_value attribute removed [Bug #3592] Version 1.6.0 (14 March 2013): New features: * Added support for level type CLOUD_BASE, CLOUD_TOP and ISOTHERM_ZERO [Feature #3247] * Read arbitrary GRIB keys [Feature #3267] New functions: * vlistDefVarIntKey(): Set an arbitrary keyword/integer value pair for GRIB API * vlistDefVarDblKey(): Set an arbitrary keyword/double value pair for GRIB API Fixed bugs: * GRIB: added support for time step unit: seconds [Bug #3352] * stream_gribapi: added support for local table shortName.def [Bug #3343] * stream_gribapi: changed units for level type GRIB2_LTYPE_LANDDEPTH to m (internally mm) [Bug #3287] * netCDF: ignore the attribute valid_range, if the data type is inconsistent * global netCDF attribute "source" missing * cgribexGetTsteptype: changed default to TSTEP_INSTANT [Bug #3211] Version 1.5.9 (17 December 2012): New features: * file.c::file_initialize: added support for env GRIB_API_IO_BUFFER_SIZE New functions: * vlistDefVarChunktype(): set chunktype to CHUNK_AUTO, CHUNK_GRID, CHUNK_LINES * vlistInqVarChunktype(): returns the chunktype Fixed bugs: * vlistCopyFlag: added support for level bounds * netCDF: added support for time axis name and long_name * cgribexGetGrid: bug fix for xinc/yinc recomputation * stream_cdf::define_all_vars: added txt attributes to vlistDefAttTxt() without trailing 0 [Bug #3004] Version 1.5.8 (30 October 2012): New features: * grib2: added stepType support for absolute time axis * netCDF: set 1D arrays to coordinate variables if axis attribute is available Fixed bugs: * grib2: changed packingType from grid_jpeg to grid_simple if nmiss > 0 Version 1.5.7 (27 August 2012): New features: * Merge of branch cdo-pio into trunk cdi Version 1.5.6 (27 July 2012): New features: * netCDF: added support for environment variable NC_CHUNKSIZEHINT * GRIB2: added support for level type HYBRID_HALF * GRIB2: added support for grib_api key stepType with TSTEP_<type> in vlistDefVar() Fixed bugs: * wrong netCDF output for unscaled uint8, int8, int16, int32 variables (bug introduced in 1.5.5) Version 1.5.5 (15 May 2012): New features: * Added single precision support: streamWriteVarF, streamWriteVarSliceF * Added support for ZAXIS_DEPTH_BELOW_LAND units "mm", "cm", "dm" and "m" Version 1.5.4 (30 January 2012): New features: * Added support for GRIB2 packing type grid_ieee * Added support for GRIB2 level type 150 Version 1.5.3 (17 October 2011): New features: * Added support for level type ZAXIS_TOA, ZAXIS_SEA_BOTTOM, ZAXIS_ATMOSPHERE Fixed bugs: * deflate compression with netCDF4 doesn't work Version 1.5.2 (22 August 2011): New features: * Added flexible XYZ dimension ordering for netCDF * Added support for grid type GRID_FOURIER (fourier coefficients) * Added interface function zaxisInqVct to read the VCT Version 1.5.1 (12 July 2011): New features: * Added support for FILETYPE_NC4C (netcdf4 classic) Version 1.5.0 (15 March 2011): New features: * GRIB2 support via ECMWF GRIB_API * Added support for netCDF level bounds Version 1.4.7 (3 January 2011): New features: * improved support for netCDF output from WRF model Version 1.4.6 (17 September 2010): New features: * GRIB1: use packing only for non constant fields * Added support for attribute type int16 and float32 * use libtool 2.2.10 for compiling + linking Version 1.4.5.1 (5 July 2010): New features: * Added support for grid mask * GRIB1 decode: Correct ZeroShiftError of simple packed spherical harmonics Version 1.4.5 (6 June 2010): Fixed bugs: * stream_history: added NC4 support * gridGenYvals: bug fix for nlat > 4096 Version 1.4.4 (29 April 2010): New features: * MAX_STREAMS: changed fixed size of 4096 to dynamic range of 1024 - 65536 * added support for GRIB1 time units 3hours and 6hours * added support for non integer time units MONTH * vlistMerge: added support to merge levels Fixed bugs: * gauaw: bug fix for allocation of zfnlat for odd number of nlat * cgribexDefTime: bug fix for GRIB1 time range 3 and 10