File: ChangeLog

package info (click to toggle)
grib-api 1.9.0-1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 28,008 kB
  • ctags: 10,015
  • sloc: ansic: 63,157; sh: 9,355; f90: 2,545; makefile: 2,496; yacc: 519; perl: 240; lex: 217
file content (291 lines) | stat: -rw-r--r-- 17,665 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
07-05-2010   Enrico Fucile <enrico.fucile@ecmwf.int>
-- released version 1.9.0
	* Setting paramId or converting from one edition to the other when a parameter is not
	  defined in the paramId.def file will result in a failure.
	* Improved performance in reading/cloning a message.
	* Changed the indexing system and provided new functions to write the index on a file
	  grib_index_write and read it grib_index_read
	* Provided a new tool to build an index from a set of files: grib_index_build.
	* The tool grib_compare is able to compare two index files, going through the grib messages 
	  indexed in the first and searching for them in the second.
	* definition files and library have been updated to be used in operational status in the
	  IFS cycle 36R2
	* grib_ls has slightly changed format.
	* A -j option is provided in grib_ls (-l only) to have the output in json format.
	* BUFR messages are read, but only very basic decoding is provided.
	* Parameters have been updated.
	* Native type of paramId has been changed from string to integer.
	* Several small bug fixes.

23-07-2009   Enrico Fucile <enrico.fucile@ecmwf.int>
-- released version 1.8.0
	* Improved conversion from edition 1 to 2. Set edition=2 will do the conversion
	  from edition 1 to 2 also of the parameter information.
	* shortName, paramId and units are defined for all the official WMO parameters
	  and for local parameters used at ECMWF and NCEP
	* grib_compare has been modified to compare grib 1 and 2 (option -e). 
	  Other important chages have been done on grib_compare to have a more powerful tool to compare headers and 
	  values. New options are provided to choose the tolerance and new namespaces are available to 
	  compare only the relevant part of information. The new namespaces are.
	  parameter,geography,vertical,time,local,data.
	* For some ECMWF local definitions the conversion rules have been included in grib_api.
	* A new key cfName is provided for the netcdf CF name. It is at the moment defined
	  only for some parameters.
	* The parameter information is generated from a parameter database maintained at ECMWF
	  and accessible from a new section in the grib_api web pages.
	* A new key typeOfLevel valid for grib edition 1 and 2, with the following values has been introduced
	  'surface', 'cloudBase', 'cloudTop', 'isothermZero', 'adiabaticCondensation', 'maxWind',
	  'tropopause', 'nominalTop', 'seaBottom', 'isobaricInhPa', 'isobaricInPa', 'isobaricLayer',
	  'meanSea', 'isobaricLayerHighPrecision', 'isobaricLayerMixedPrecision', 'heightAboveSea',
	  'heightAboveSeaLayer', 'heightAboveGroundHighPrecision', 'heightAboveGround', 'heightAboveGroundLayer'
	  'sigma', 'sigmaLayer', 'sigmaLayerHighPrecision', 'hybrid', 'hybridLayer', 'depthBelowLand',
	  'depthBelowLandLayer', 'theta', 'thetaLayer', 'pressureFromGround', 'pressureFromGroundLayer',
	  'potentialVorticity', 'depthBelowSea', 'entireAtmosphere', 'entireOcean', 'oceanWave', 'oceanMixedLayer'
	* The open source library OpenJpeg can be used in place of Jasper for the jpeg 2000 coding.	
	  --with-openjpeg options in the configure.
	* decimalPrecision can be used also with grid_jpeg packing.
	* parameterName,parameterUnits are provided from the code tables.
	* packingError is also available for spherical harmonics packing. It provieds the error due to simple packing.
	* option -l added in grib_get
	* option -F added in grib_get and grib_ls to control the format of floating point keys.
	* grib_ls output has been changed due to the introduction of the new typeOfLevel key
	* Subroutine grib_is_missing added in the Fortran interface to check if a header value is missing.
	* Changed step behaviour. If the step is "instant" and the value doesn't fit into one byte (in grib 1)
	* an appropriate value of timeRangeIndicator is found to code the value in two bytes instead of 1.
	* In grib_filter the function "append" has been added to append a message to a file as opposed to "write" which is 
	  writing from the beginning of the file.
	* A new grib_count function is available to count (very fate) the number of messages in a list of files.
	* The value of the key level is zero in both edition when it is not relevant for the message and it is 
	  missing in grib edition 2.
	* The indexing routines have been improved to process string keys.

06-03-2009   Enrico Fucile <enrico.fucile@ecmwf.int>
-- released version 1.7.0
	* New indexing routines. 
	  Example: index.f90 
	  (http://www.ecmwf.int/publications/manuals/grib_api/grib_examples.html) 
	* New keys stepType,stepUnits,stepRange,startStep,endStep. 
	* New keys swapScanningX, swapScanningY, swapScanningLat, swapScanningLon. To
	  swap the field respect one axis. They swap data and fix the header accordingly.
	* "Improved" error messages.
	* write multi fields. Previous versions of grib_api were able only to read multi
	  fields, now you can also write multi fields. We don't suggest to you this
	  feature, it is included only to be compliant with FM-92 spec. 
	  Examples: multi.f90, multi_write.f90
	  (http://www.ecmwf.int/publications/manuals/grib_api/grib_examples.html) 
	* function grib_new_from_template is deprecated and it will be replaced with
	  grib_new_from_samples. Also the environment variable GRIB_TEMPLATES_PATH is
	  replaced by GRIB_SAMPLES_PATH. Please replace "template" with "samples" in all
	  the C functions also. The behavior is the same. I made a new example showing the
	  best practice to use samples. The technique of cloning is strongly recommended.
	  Example: samples.f90
	  (http://www.ecmwf.int/publications/manuals/grib_api/grib_examples.html) 
	* New key decimalPrecision provided. Used in the previous example. Regarding
	  decimalPrecision and bitsPerValue the following problem was found in the
	  previous version. If after loading from file or from sample (template) or
	  cloning a constant field you set some non constant values the library doesn't
	  know the bitsPerValue or the decimalPrecision you want to code (those are zero
	  in the constant field). The result could have been a field coded with a poor
	  precision. Starting with the new 1.7.0 version in these ambiguous cases grib_api
	  is using 24 bits to pack the field (safe value). We always suggest to set
	  explicitly the bitsPerValue or decimalPrecision or to clone non constant fields
	  with those values properly set.
	* grib_copy, grib_set. A key name in square brackets can be used in the output
	  file name. The key will be replaced with its value in the processed grib
	  message. This will provide an easy way for splitting fields as the file name
	  will be dependent on some key values. Example:
	     grib_copy input.grib "output_[shortName]_[date]_[step].grib"
	  Please remember to quote the file name otherwise you can get strange behaviors
	  due to the shell.
	* New key packingError. The error introduced by the packing algorithm is
	  returned with this key. It is available only for some packing algorithms. All
	  the packed values are affected by this error in the sense that
	     original value before packing = unpacked value ± packingError
	  packingError is different for different fields (also for different steps of the
	  same parameter/level/run).
	* all the nearest functions are returning the distance from the grid point in
	  Km, using the radius coded in the message.
	* key bitmapPresent now available also in grib 2. Example: bitmap.f90
	  (http://www.ecmwf.int/publications/manuals/grib_api/grib_examples.html) 

30-09-2008   Enrico Fucile <enrico.fucile@ecmwf.int>
-- released version 1.6.4
	* Fields containing a bitmap with all missing values can be coded in grib1 and grib2
	* Multifields grib2 messages can be loaded from memory.
	* local definition 31 added
	* Better use of memory
	* minor bug fixes

16-07-2008   Enrico Fucile <enrico.fucile@ecmwf.int>
-- released version 1.6.1
	* More efficient use of memory and improvement of performance.
	* Thread safe version available through the --enable-pthread configure option.
	* New computation of kindOfInt, kindOfLong, kindOfDouble, kindOfFloat, kindOfSize 
	  to allow safe arguments handing between Fortran 90 and C.
	* A new key bitmap is provided to get the full bitmap as a string with the grib_filter
	  instruction:  print "[bitmap]";
	* all the tools are failing on error and can be forced to proceed execution with
	  the option -f . The only exception is grib_ls because we already have an identical
	  tool failing (grib_get).
	* new error messages from the Fortran 90 interface will give you some more chance to debug
	  your code.
	* New function grib_count_in_file available from Fortran and C to count the messages in a file.
	  See example: examples/F90/count_messages.f90
	* In the Fortran 90 interface any valid grib id passed to a grib_new_from_file or grib_new_from_message
	  will be released before being assigned to a new grib message. 
	  Example
		 call grib_new_from_file(ifile,igrib, iret)
	     do while (iret /= GRIB_END_OF_FILE)
		   ... do something with the message pointed by igrib
		   ... igrib will have the same value, but 
		   ... it will point to a different message each cycle
		   ... the message from the previous cycle will be released
		   ... no need for grib_release(igrib)
		   call grib_new_from_file(ifile,igrib, iret)
		 enddo
	  If you want to keep the grib message in memory remember to pass a negative grib id.
	  Example
	     call grib_count_in_file(ifile,n)
		 allocate (igrib(n))
		 do i=1,n
		   call grib_new_from_file(ifile,igrib(i), iret)
		   ...
		 enddo
		 ... remember to release the grib ids to free memory
		 do i=1,n
		   call grib_release(igrib(i))
		 enddo
	* grib_filter is now able to print with a format, number of colums and a separator for array keys.
	  The format is expressed with a % followed by a C like (printf) format declarator.
	  The number of columns is started with !
	  The separator string is delimited by ' '
	  Examples 
	   print "[values!6%.5f',']"       values with 5 digits precision in 6 columns separated by ,
	   print "[latitudes%.3f!1]"       latitudes with 3 digits precision in a column
	   print "pl={[pl!7', ']}"         pl (number of point for each latitude) in 7 columns separated by ', '
	* New keys:
        julianDay
        latLonValues    array containing latitude(1),longitude(1),value(1), latitude(2),longitude(2),value(2),...,
                        latitude(N),longitude(N),value(N)   (N=number of points in the grid)
        latitudes       latitude(1),latitude(2),...,latitude(N) (N=number of points in the grid)
        longitudes      longitude(1),longitude(2),...,longitude(N) (N=number of points in the grid)
        distinctLatitudes    list of distinct latitudes
        distinctLongitudes   list of distinct longitudes
	* minor bug fixes

03-06-2008   Enrico Fucile <enrico.fucile@ecmwf.int>
-- released version 1.5.0
	* Review of packing algorithms. Improvement of performance mainly on big endian
	  platforms.
	* Modified the internal retrieval of keys, improving performance in getting and setting
	  keys.
	* Implemented memory management. An efficient tecnique to reuse memory is implemented.
	  --disable-memory-management configure option available to disable the memory managemet 
	  and use system malloc/free.
	* Some experimental multithreaded packing is available for big endian machines.
	  A configure option --enable-omp-packing is provided to enable the openMP instructions
	  contained in the new packing. The environment variable OMP_NUM_THREADS sets the number
	  of threads used in the packing algorithm.
	* grib_filter improvement:
	  * it is now possible to set array keys like values or pl as follows:
	    values = { 0.1, 3.2, 7.5 };
	  * it is now possible to print array keys like values or pl as follows:
	    print "values=[values]";
		it is also possible to print on a file ("test.out") doing:
		print("test.out") "values=[values]";
	  * better error messages are printed
	  * it does not fail if an undefined key is used in a write or print statement   
	* New keys or changed keys:
	  * a scale factor and an offset can be applied to the data values through the keys
	    "scaleValuesBy" and "offsetValuesBy". 
	  * setBitsPerValue is the new key to be used to change the number of bits per value.
	    It also executes the repacking.
	  * The keys periodOfTime is now working also when indicatorOfUnitOfTimeRange=0 (time units is
	    minutes)
	* Concepts can be defined by the user. Concepts are a way to link the value of a key to
	  a combination of values of other keys. They are used to define the short_name and the
	  name.
	* minor bug fixes

07-02-2008   Enrico Fucile <enrico.fucile@ecmwf.int>
-- released version 1.4.0
	* New Fortan 90 interface. Main featues:
	  * unique grib_get/grib_set subroutines to get/set any variable type.
	  * status code is an optional argument in all the subroutines (when omitted 
	    the program will exit in case of error)
	  * new subroutine grib_get_data to get the latitude/longitude/values arrays.
	  * new subroutine grib_get_element to get one or several elements of an array key 
	    through their index.
	  * new subroutine grib_nearest function to get the nearest grid point of a given lat/lon.  
	    It accepts in input also arrays of latitude/longitudes to find the nearest points in one
		single call. A land sea mask mode is also available to get the nearest land point.  
	* New Fortran 90 examples and documentation.
	* New grib_keys tool to obtain the list of keys available for a specified type of grib.
	* Modified the -l option in grib_ls (see documentation or type grib_ls without arguments)
	* fixed a bug in the grib_filter and added the -o option for the output file.
	* minor bug fixes.

12-11-2007   Enrico Fucile <enrico.fucile@ecmwf.int>
-- released version 1.3.0
	* grib_ls -l lat/lon/mode to retrieve values in the nearest grid points of a given
	  latitude longitude point
	* grib_ls -B"order by" to order the output using some keys
	* grib_ls -i index. To extract the value in the index grid point.
	* new grib_dump exposing a minimum set of keys which are the ones suggested for the
	  standard use. Some options added to the grib_dump. The output of this new
	  grib_dump is ready to be coupled to the new grib_gen which will be released in the
	  next version.
	* grib_copy -r to repack data fixing problems in the original file
	* improved keys search for faster tools
	* grib_get_data and grib_iterator working with all scanning mode
	* new experimental functions introduced, not available in the fortran
	  interface: grib_fieldset_new,grib_fieldset_apply_order_by,grib_fieldset_next_handle
	  grib_nearest_new,grib_nearest_find,grib_nearest_delete
	* some examples on the grib_fieldset and grib_nearest are added.
	* The management of the missing data in grib_get_data is changed. Please refer to the help
	  obtained executing grib_get_data without arguments.
	* Added the key stepRange which is native type string. It can represent start and end of a
	  cumulation or a max of min interval. Example stepRange=24-36 for a precipitation means that it
	  is cumulated between 24 and 36. It also addresses the problems with the big steps which don't
	  fit in the grib1 P1 and P2. 
	* Added key numberOfCodedValues. It is different from numberOfValues only if a bitmap is present and
	  the difference between the two should be numberOfMissingValues.
	* Added the option -g to grib_copy, grib_set, grib_convert, grib_filter to preserve GTS headers 
	  wrapping the grib message
	* fixed some bugs in the fortran interface
	* fixed a bug in reading the signed floats with the grib_convert.

01-09-2007   Enrico Fucile <enrico.fucile@ecmwf.int>
-- released version 1.2.0
	* changed license. Now grib_api is distributed under LGPL see LICENSE file in distribution.
	* changed io functions and configure.ac to support files larger than 2GB  
	* as a consequence to the large file support the key offset has native type double
	* added support for predefined grids
	* modified grib_handle_new_from_file to read messages with wrong message length.
	  In this case an error will be raised.
	* A new -M option is provided for all the tools to turn off the multi-field grib
	  support.
	* Changed behaviour of grib_copy. Default is quiet and option -v (verbose) is available.

09-07-2007   Enrico Fucile <enrico.fucile@ecmwf.int>
-- released version 1.1.0
	* fixed a bug affecting constant fields.
	* rewritten the ibm floating point encoding/decoding routines gaining a factor of 7 in performance
	* fixed a problem in the configure affecting compilation of fortran programs on AIX platforms
	* Added some new keys:
		* max,min,average (maximum, minimum and average respectively of the data )
		* numberOfDataPoints(alias numberOfPoints) computed from the grid description
		* numberOfValues is the same as the numberOfPoints if a bitmap is not present 
		  otherwise it takes into account the bitmap
		* numberOfMissing (alias numberOfMissingValues) number of missing values in the field
		It's easy to check if a field is constant by simply comparing max,min,average
		and some information about bitmap and missing values can be found comparing numberOfValues
		numberOfPoints, numberOfMissing.
	* added some new tests
	* added a new example on how to print all the data when the iterator is not available.
	* grib_tools are now failing with an error when the input file does not contain any 
	  valid grib message
	* added management of reduced gaussian non global fields.

17-04-2007   Enrico Fucile <enrico.fucile@ecmwf.int>
	* grib_api version 1.0 released