mirror of https://github.com/ecmwf/eccodes.git
70 lines
2.2 KiB
Modula-2
70 lines
2.2 KiB
Modula-2
# (C) Copyright 2005- ECMWF.
|
|
|
|
# TEMPLATE 5.1, Matrix values at grid point - simple packing
|
|
# Preliminary note:
|
|
# This template was not validated at the time of publication and should be used with caution
|
|
|
|
include "grib2/template.5.packing.def";
|
|
|
|
unsigned[1] matrixBitmapsPresent;
|
|
# same as in edition 1
|
|
alias secondaryBitmapPresent=matrixBitmapsPresent;
|
|
|
|
# Number of data values encoded in Section 7
|
|
unsigned[4] numberOfCodedValues;
|
|
|
|
# NR - first dimension (rows)
|
|
unsigned[2] firstDimension;
|
|
|
|
alias NR = firstDimension;
|
|
# NC - second dimension (columns)
|
|
unsigned[2] secondDimension;
|
|
|
|
alias NC = secondDimension;
|
|
# First dimension coordinate value definition (Code Table 5.2)
|
|
unsigned[1] firstDimensionCoordinateValueDefinition;
|
|
|
|
# NC1 - number of coefficients or values used to specify first dimension coordinate function
|
|
unsigned[1] NC1 : dump ;
|
|
alias numberOfCoefficientsOrValuesUsedToSpecifyFirstDimensionCoordinateFunction=NC1;
|
|
|
|
# Second dimension coordinate value definition (Code Table 5.2)
|
|
unsigned[1] secondDimensionCoordinateValueDefinition ;
|
|
|
|
# NC2 - number of coefficients or values used to specify second dimension coordinate function
|
|
unsigned[1] NC2 : dump ;
|
|
alias numberOfCoefficientsOrValuesUsedToSpecifySecondDimensionCoordinateFunction = NC2;
|
|
|
|
# First dimension physical significance (Code Table 5.3)
|
|
unsigned[1] firstDimensionPhysicalSignificance ;
|
|
|
|
# Second dimension physical significance (Code Table 5.3)
|
|
unsigned[1] secondDimensionPhysicalSignificance ;
|
|
|
|
ieeefloat coefsFirst[NC1]; # TODO: find proper names
|
|
ieeefloat coefsSecond[NC2]; # TODO: find proper names
|
|
|
|
alias data.coefsFirst = coefsFirst;
|
|
alias data.coefsSecond=coefsSecond;
|
|
|
|
if(matrixBitmapsPresent == 1) {
|
|
constant datumSize = NC*NR;
|
|
constant secondaryBitmapsCount = numberOfValues + 0;
|
|
constant secondaryBitmapsSize = secondaryBitmapsCount/8;
|
|
|
|
transient numberOfDataMatrices = numberOfDataPoints/datumSize;
|
|
|
|
position offsetBBitmap;
|
|
meta secondaryBitmaps g2bitmap(
|
|
dummy,
|
|
missingValue,
|
|
offsetBSection5,
|
|
section5Length,
|
|
numberOfCodedValues ,
|
|
dummy) : read_only;
|
|
|
|
meta bitmap data_g2secondary_bitmap(primaryBitmap,
|
|
secondaryBitmaps,
|
|
missingValue,datumSize,numberOfDataPoints) : read_only;
|
|
}
|