mirror of https://github.com/ecmwf/eccodes.git
ECC-924: GRIB2: Add support for encoding AROME and ALADIN fields
This commit is contained in:
commit
e96037eeb8
|
@ -22,6 +22,6 @@
|
|||
20 20 Version implemented on 8 November 2017
|
||||
21 21 Version implemented on 2 May 2018
|
||||
22 22 Version implemented on 7 November 2018
|
||||
23 23 Pre-operational to be implemented by next amendment
|
||||
23 23 Version implemented on 15 May 2019
|
||||
# 24-254 Future versions
|
||||
255 255 Master tables not used. Local table entries and local templates may use the entire range of the table, not just those sections marked Reserved for local used.
|
||||
|
|
|
@ -12,20 +12,20 @@ codetable[1] biFourierTruncationType ('3.25.table',masterDir,localDir) : dump;
|
|||
|
||||
# Lx - Full domain length in X-direction. Size in metres of the domain along x-axis
|
||||
unsigned[8] Lx;
|
||||
meta geography.LxInMetres scale(Lx,one,thousand) : dump;
|
||||
alias geography.LxInMetres = Lx;
|
||||
# Lux - Useful domain length in X-direction. Size in metres of model forecast subdomain along x-axis
|
||||
unsigned[8] Lux;
|
||||
meta geography.LuxInMetres scale(Lux,one,thousand) : dump;
|
||||
# Lcx - Coupling domain width in X-direction
|
||||
alias geography.LuxInMetres=Lux;
|
||||
# Lcx - Coupling domain width in X-direction. Width in metres of coupling area within forecast domain along x-axis
|
||||
unsigned[8] Lcx;
|
||||
meta geography.LcxInMetres scale(Lcx,one,thousand) : dump;
|
||||
alias geography.LcxInMetres=Lcx;
|
||||
|
||||
# Ly - Full domain length in Y-direction
|
||||
unsigned[8] Ly;
|
||||
meta geography.LyInMetres scale(Ly,one,thousand) : dump;
|
||||
alias geography.LyInMetres=Ly;
|
||||
# Luy - Useful domain length in Y-direction
|
||||
unsigned[8] Luy;
|
||||
meta geography.LuyInMetres scale(Luy,one,thousand) : dump;
|
||||
alias geography.LuyInMetres=Luy;
|
||||
# Lcy - Coupling domain width in Y-direction
|
||||
unsigned[8] Lcy;
|
||||
meta geography.LcyInMetres scale(Lcy,one,thousand) : dump;
|
||||
alias geography.LcyInMetres=Lcy;
|
||||
|
|
|
@ -18,16 +18,14 @@ codetable[1] biFourierPackingModeForAxes ('5.26.table',masterDir,localDir) = 0 :
|
|||
# biFourierDoNotPackAxes
|
||||
|
||||
constant laplacianScalingFactorUnset = -2147483647;
|
||||
signed[4] laplacianScalingFactor : edition_specific ;
|
||||
signed[4] laplacianScalingFactor : edition_specific ; # units of 10^-6
|
||||
|
||||
meta data.laplacianOperator scale(laplacianScalingFactor,one,million,truncateLaplacian) ;
|
||||
meta laplacianOperatorIsSet evaluate(laplacianScalingFactor != laplacianScalingFactorUnset && !computeLaplacianOperator);
|
||||
|
||||
unsigned[2] biFourierResolutionSubSetParameterN ;
|
||||
unsigned[2] biFourierResolutionSubSetParameterM ;
|
||||
|
||||
# TODO. Need to fix up the sample file samples/lambert_bf_grib2.tmpl
|
||||
#unsigned[4] totalNumberOfValuesInUnpackedSubset = 0 : dump;
|
||||
unsigned[2] biFourierResolutionSubSetParameterN : dump ; # NS
|
||||
unsigned[2] biFourierResolutionSubSetParameterM : dump ; # MS
|
||||
unsigned[4] totalNumberOfValuesInUnpackedSubset = 0 : dump; # TS
|
||||
|
||||
# This is read_only until we support other values
|
||||
codetable[1] unpackedSubsetPrecision ('5.7.table',masterDir,localDir) = 1 : dump;
|
||||
|
|
|
@ -41,6 +41,7 @@ meta codedValues data_g2bifourier_packing(
|
|||
biFourierSubTruncationType,
|
||||
biFourierPackingModeForAxes,
|
||||
biFourierMakeTemplate,
|
||||
totalNumberOfValuesInUnpackedSubset,
|
||||
|
||||
numberOfValues
|
||||
): read_only;
|
||||
|
|
Binary file not shown.
|
@ -41,6 +41,7 @@
|
|||
MEMBERS= const char* biFourierSubTruncationType
|
||||
MEMBERS= const char* biFourierDoNotPackAxes
|
||||
MEMBERS= const char* biFourierMakeTemplate
|
||||
MEMBERS= const char* totalNumberOfValuesInUnpackedSubset
|
||||
MEMBERS=const char* numberOfValues
|
||||
END_CLASS_DEF
|
||||
|
||||
|
@ -94,6 +95,7 @@ typedef struct grib_accessor_data_g2bifourier_packing {
|
|||
const char* biFourierSubTruncationType;
|
||||
const char* biFourierDoNotPackAxes;
|
||||
const char* biFourierMakeTemplate;
|
||||
const char* totalNumberOfValuesInUnpackedSubset;
|
||||
const char* numberOfValues;
|
||||
} grib_accessor_data_g2bifourier_packing;
|
||||
|
||||
|
@ -191,6 +193,7 @@ static void init(grib_accessor* a,const long v, grib_arguments* args)
|
|||
self->biFourierSubTruncationType = grib_arguments_get_name(gh,args,self->carg++);
|
||||
self->biFourierDoNotPackAxes = grib_arguments_get_name(gh,args,self->carg++);
|
||||
self->biFourierMakeTemplate = grib_arguments_get_name(gh,args,self->carg++);
|
||||
self->totalNumberOfValuesInUnpackedSubset = grib_arguments_get_name(gh,args,self->carg++);
|
||||
/*self->numberOfValues = grib_arguments_get_name(gh,args,self->carg++);*/
|
||||
|
||||
a->flags |= GRIB_ACCESSOR_FLAG_DATA;
|
||||
|
@ -931,6 +934,9 @@ static int pack_double(grib_accessor* a, const double* val, size_t *len)
|
|||
|
||||
grib_buffer_replace (a, buf, buflen, 1, 1);
|
||||
|
||||
if ((ret = grib_set_long_internal (gh, self->totalNumberOfValuesInUnpackedSubset, bt->n_vals_sub)) != GRIB_SUCCESS)
|
||||
goto cleanup;
|
||||
|
||||
if ((ret = grib_set_long_internal (gh, self->number_of_values, bt->n_vals_bif)) != GRIB_SUCCESS)
|
||||
goto cleanup;
|
||||
|
||||
|
|
1622
tests/lam_bf.c
1622
tests/lam_bf.c
File diff suppressed because it is too large
Load Diff
1910
tests/lam_gp.c
1910
tests/lam_gp.c
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue