1# Copyright 2005-2018 ECMWF. 2# 3# This software is licensed under the terms of the Apache Licence Version 2.0 4# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. 5# 6# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by 7# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. 8# 9 10unsigned [2] N2 : dump; 11unsigned [2] codedNumberOfGroups : no_copy ; 12unsigned [2] numberOfSecondOrderPackedValues : dump; 13 14# used to extend 15unsigned [1] extraValues=0 : hidden, edition_specific; 16 17meta numberOfGroups evaluate(codedNumberOfGroups + 65536 * extraValues); 18 19unsigned [1] widthOfWidths : dump; 20unsigned [1] widthOfLengths : dump; 21unsigned [2] NL : dump; 22 23if (orderOfSPD) { 24 unsigned[1] widthOfSPD ; 25 meta SPD spd(widthOfSPD,orderOfSPD) : read_only; 26} 27 28 29meta groupWidths unsigned_bits(widthOfWidths,numberOfGroups) : read_only; 30meta groupLengths unsigned_bits(widthOfLengths,numberOfGroups) : read_only; 31meta firstOrderValues unsigned_bits(widthOfFirstOrderValues,numberOfGroups) : read_only; 32meta countOfGroupLengths sum(groupLengths); 33 34transient numberOfCodedValues=countOfGroupLengths+orderOfSPD; 35#transient numberOfCodedValues=countOfGroupLengths; 36meta bitsPerValue second_order_bits_per_value(codedValues,binaryScaleFactor,decimalScaleFactor); 37 38 39position offsetBeforeData; 40if(bitmapPresent) { 41 meta codedValues data_g1second_order_general_extended_packing( 42 #simple_packing args 43 section4Length, 44 offsetBeforeData, 45 offsetSection4, 46 unitsFactor, 47 unitsBias, 48 changingPrecision, 49 numberOfCodedValues, 50 bitsPerValue, 51 referenceValue, 52 binaryScaleFactor, 53 decimalScaleFactor, 54 #g1second_order_row_by_row args 55 halfByte, 56 packingType, 57 grid_ieee, 58 precision, 59 widthOfFirstOrderValues, 60 firstOrderValues, 61 N1, 62 N2, 63 numberOfGroups, 64 codedNumberOfGroups, 65 numberOfSecondOrderPackedValues, 66 extraValues, 67 groupWidths, 68 widthOfWidths, 69 groupLengths, 70 widthOfLengths, 71 NL, 72 SPD, 73 widthOfSPD, 74 orderOfSPD, 75 numberOfPoints 76 77 ): read_only; 78 alias data.packedValues = codedValues; 79 80 if (boustrophedonicOrdering) 81 { 82 if (GRIBEX_boustrophedonic) 83 { 84 meta preBitmapValues data_apply_boustrophedonic_bitmap(codedValues,bitmap,missingValue,binaryScaleFactor,numberOfRows,numberOfColumns,numberOfPoints): read_only; 85 } 86 else 87 { 88 meta preBitmapValues data_apply_bitmap(codedValues,bitmap,missingValue,binaryScaleFactor) : read_only; 89 } 90 meta values data_apply_boustrophedonic(preBitmapValues,numberOfRows,numberOfColumns,numberOfPoints,pl) : dump; 91 } 92 else 93 { 94 meta values data_apply_bitmap(codedValues,bitmap,missingValue,binaryScaleFactor) : dump; 95 } 96} else { 97 if (boustrophedonicOrdering) { 98 99 meta codedValues data_g1second_order_general_extended_packing( 100 #simple_packing args 101 section4Length, 102 offsetBeforeData, 103 offsetSection4, 104 unitsFactor, 105 unitsBias, 106 changingPrecision, 107 numberOfCodedValues, 108 bitsPerValue, 109 referenceValue, 110 binaryScaleFactor, 111 decimalScaleFactor, 112 #g1second_order_row_by_row args 113 halfByte, 114 packingType, 115 grid_ieee, 116 precision, 117 widthOfFirstOrderValues, 118 firstOrderValues, 119 N1, 120 N2, 121 numberOfGroups, 122 codedNumberOfGroups, 123 numberOfSecondOrderPackedValues, 124 extraValues, 125 groupWidths, 126 widthOfWidths, 127 groupLengths, 128 widthOfLengths, 129 NL, 130 SPD, 131 widthOfSPD, 132 orderOfSPD, 133 numberOfPoints 134 135 ) : read_only; 136 meta values data_apply_boustrophedonic(codedValues,numberOfRows,numberOfColumns,numberOfPoints,pl) : dump; 137 } else { 138 meta values data_g1second_order_general_extended_packing( 139 #simple_packing args 140 section4Length, 141 offsetBeforeData, 142 offsetSection4, 143 unitsFactor, 144 unitsBias, 145 changingPrecision, 146 numberOfCodedValues, 147 bitsPerValue, 148 referenceValue, 149 binaryScaleFactor, 150 decimalScaleFactor, 151 #g1second_order_row_by_row args 152 halfByte, 153 packingType, 154 grid_ieee, 155 precision, 156 widthOfFirstOrderValues, 157 firstOrderValues, 158 N1, 159 N2, 160 numberOfGroups, 161 codedNumberOfGroups, 162 numberOfSecondOrderPackedValues, 163 extraValues, 164 groupWidths, 165 widthOfWidths, 166 groupLengths, 167 widthOfLengths, 168 NL, 169 SPD, 170 widthOfSPD, 171 orderOfSPD, 172 numberOfPoints 173 174 ) : dump; 175 alias codedValues=values; 176 } 177 alias data.packedValues = values; 178} 179 180meta packingError simple_packing_error(bitsPerValue,binaryScaleFactor,decimalScaleFactor,referenceValue,ibm) : no_copy; 181 182template statistics "common/statistics_grid.def"; 183