mirror of https://github.com/ecmwf/eccodes.git
Merge branch 'develop' into convert-to-cpp
This commit is contained in:
commit
0d0bb0be56
|
@ -15,6 +15,8 @@ configure
|
|||
grib_api.spec
|
||||
grib_api.pc
|
||||
grib_api_f90.pc
|
||||
*.analyzerinfo
|
||||
*.snalyzerinfo
|
||||
|
||||
# compiled source #
|
||||
###################
|
||||
|
|
|
@ -8,7 +8,7 @@ ecmf 3 pt K Potential temperature
|
|||
ecmf 60 pv K m**2 kg**-1 s**-1 Potential vorticity
|
||||
ecmf 235 skt K Skin temperature
|
||||
ecmf 228141 sd kg m**-2 Snow depth water equivalent
|
||||
ecmf 228144 sf kg m**-2 Snow Fall water equivalent
|
||||
ecmf 228144 sf kg m**-2 Snowfall water equivalent
|
||||
ecmf 228039 sm kg m**-3 Soil moisture
|
||||
ecmf 228139 st K Soil temperature
|
||||
ecmf 133 q kg kg**-1 Specific humidity
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
set -eu
|
||||
|
||||
# Usage:
|
||||
# create_legacy_def.sh $paramId $paramId...
|
||||
# $0 $paramId $paramId...
|
||||
#
|
||||
# This script will insert the local ECMWF GRIB2 representation
|
||||
# for each paramId into the files:
|
||||
|
@ -31,7 +31,7 @@ fi
|
|||
pids="$@"
|
||||
|
||||
sample2=samples/GRIB2.tmpl
|
||||
temp=$TMPDIR/temp.create_legacy_def.grib
|
||||
temp=$TMPDIR/temp.create_legacy_ecmf_def.grib
|
||||
defs=definitions/grib2/localConcepts/ecmf
|
||||
|
||||
output_def()
|
|
@ -0,0 +1,84 @@
|
|||
:
|
||||
set -eu
|
||||
|
||||
# Usage:
|
||||
# create_legacy_def.sh $paramId $paramId...
|
||||
#
|
||||
# This script will insert the WMO GRIB2 representation
|
||||
# for each given paramId into the files:
|
||||
# definitions/grib2/paramId.legacy.def
|
||||
# definitions/grib2/shortName.legacy.def
|
||||
# etc.
|
||||
# This is run for those GRIB2 parameters which had
|
||||
# a WMO representation which later became deprecated.
|
||||
#
|
||||
# Assumptions:
|
||||
# The ecCodes tools grib_set and grib_get are available
|
||||
# TMPDIR is defined and points to a temporary directory
|
||||
#
|
||||
|
||||
if [ $# -eq 0 ]; then
|
||||
echo "Usage: $0 pid1 pid2 ..." 2>&1
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Input list of paramId values
|
||||
pids="$@"
|
||||
|
||||
sample2=samples/GRIB2.tmpl
|
||||
temp=$TMPDIR/temp.create_legacy_def.grib
|
||||
defs=definitions/grib2
|
||||
|
||||
create_legacy_def()
|
||||
{
|
||||
_name=$1
|
||||
_dir=$2
|
||||
_file=$3
|
||||
|
||||
_legacy=$(echo $_file | sed -e 's/\.def/.legacy.def/')
|
||||
#echo "Doing |$dir| f=|$file| l=|$legacy|"
|
||||
# First check the given name exists in the file
|
||||
grep -q "^#$_name$" $_dir/$_file
|
||||
if [ $? -eq 0 ]; then
|
||||
_name="#$_name"
|
||||
found=1
|
||||
# Copy the parameter definition from the file to its legacy version
|
||||
echo "$_name" >> $_dir/$_legacy
|
||||
sed -e "1,/^$_name$/d" -e '/#/,$d' $_dir/$_file | tr -d '\t' >> $_dir/$_legacy
|
||||
fi
|
||||
}
|
||||
|
||||
create_legacy_defs()
|
||||
{
|
||||
name="$1"
|
||||
create_legacy_def "$name" $defs paramId.def
|
||||
create_legacy_def "$name" $defs shortName.def
|
||||
create_legacy_def "$name" $defs name.def
|
||||
create_legacy_def "$name" $defs units.def
|
||||
create_legacy_def "$name" $defs cfVarName.def
|
||||
}
|
||||
|
||||
# For each paramId, get its full name
|
||||
count=0
|
||||
for pid in $pids; do
|
||||
echo "Doing paramId=$pid ..."
|
||||
set +e
|
||||
grib_set -s paramId=$pid $sample2 $temp 2>/dev/null
|
||||
status=$?
|
||||
set -e
|
||||
if [ $status -ne 0 ]; then
|
||||
grib_set -s stepType=accum,paramId=$pid $sample2 $temp
|
||||
fi
|
||||
name=$(grib_get -p name $temp)
|
||||
count=$((count+1))
|
||||
rm -f $temp
|
||||
|
||||
create_legacy_defs "$name"
|
||||
done
|
||||
|
||||
|
||||
echo "Number of legacy parameters added: $count"
|
||||
if [ $count -gt 0 ]; then
|
||||
echo "Files updated. Check directory $defs"
|
||||
fi
|
||||
rm -f $temp
|
|
@ -162,8 +162,8 @@
|
|||
table2Version = 3 ;
|
||||
indicatorOfParameter = 10 ;
|
||||
}
|
||||
#large scale precipitation
|
||||
'p3062' = {
|
||||
#Large-scale precipitation
|
||||
'lsp' = {
|
||||
table2Version = 3 ;
|
||||
indicatorOfParameter = 62 ;
|
||||
}
|
||||
|
@ -532,8 +532,8 @@
|
|||
table2Version = 3 ;
|
||||
indicatorOfParameter = 98 ;
|
||||
}
|
||||
#Snow melt
|
||||
'p3099' = {
|
||||
#Snowmelt
|
||||
'snom' = {
|
||||
table2Version = 3 ;
|
||||
indicatorOfParameter = 99 ;
|
||||
}
|
||||
|
@ -678,7 +678,7 @@
|
|||
table2Version = 3 ;
|
||||
indicatorOfParameter = 85 ;
|
||||
}
|
||||
#Snow Fall water equivalent
|
||||
#Snowfall water equivalent
|
||||
'sf' = {
|
||||
table2Version = 3 ;
|
||||
indicatorOfParameter = 65 ;
|
||||
|
@ -858,8 +858,8 @@
|
|||
table2Version = 2 ;
|
||||
indicatorOfParameter = 10 ;
|
||||
}
|
||||
#large scale precipitation
|
||||
'p3062' = {
|
||||
#Large-scale precipitation
|
||||
'lsp' = {
|
||||
table2Version = 2 ;
|
||||
indicatorOfParameter = 62 ;
|
||||
}
|
||||
|
@ -1213,8 +1213,8 @@
|
|||
table2Version = 2 ;
|
||||
indicatorOfParameter = 98 ;
|
||||
}
|
||||
#Snow melt
|
||||
'p3099' = {
|
||||
#Snowmelt
|
||||
'snom' = {
|
||||
table2Version = 2 ;
|
||||
indicatorOfParameter = 99 ;
|
||||
}
|
||||
|
@ -1359,7 +1359,7 @@
|
|||
table2Version = 2 ;
|
||||
indicatorOfParameter = 85 ;
|
||||
}
|
||||
#Snow Fall water equivalent
|
||||
#Snowfall water equivalent
|
||||
'sf' = {
|
||||
table2Version = 2 ;
|
||||
indicatorOfParameter = 65 ;
|
||||
|
@ -1539,8 +1539,8 @@
|
|||
table2Version = 1 ;
|
||||
indicatorOfParameter = 10 ;
|
||||
}
|
||||
#large scale precipitation
|
||||
'p3062' = {
|
||||
#Large-scale precipitation
|
||||
'lsp' = {
|
||||
table2Version = 1 ;
|
||||
indicatorOfParameter = 62 ;
|
||||
}
|
||||
|
@ -1894,8 +1894,8 @@
|
|||
table2Version = 1 ;
|
||||
indicatorOfParameter = 98 ;
|
||||
}
|
||||
#Snow melt
|
||||
'p3099' = {
|
||||
#Snowmelt
|
||||
'snom' = {
|
||||
table2Version = 1 ;
|
||||
indicatorOfParameter = 99 ;
|
||||
}
|
||||
|
@ -2040,7 +2040,7 @@
|
|||
table2Version = 1 ;
|
||||
indicatorOfParameter = 85 ;
|
||||
}
|
||||
#Snow Fall water equivalent
|
||||
#Snowfall water equivalent
|
||||
'sf' = {
|
||||
table2Version = 1 ;
|
||||
indicatorOfParameter = 65 ;
|
||||
|
|
|
@ -17614,7 +17614,7 @@
|
|||
table2Version = 228 ;
|
||||
indicatorOfParameter = 141 ;
|
||||
}
|
||||
#Snow Fall water equivalent
|
||||
#Snowfall water equivalent
|
||||
'sf' = {
|
||||
table2Version = 228 ;
|
||||
indicatorOfParameter = 144 ;
|
||||
|
|
|
@ -4054,33 +4054,33 @@
|
|||
table2Version = 210 ;
|
||||
indicatorOfParameter = 191 ;
|
||||
}
|
||||
#UV visible albedo for diffuse radiation, isotropic component
|
||||
'UV visible albedo for diffuse radiation, isotropic component ' = {
|
||||
#UV visible albedo for diffuse radiation, isotropic component
|
||||
'UV visible albedo for diffuse radiation, isotropic component' = {
|
||||
table2Version = 210 ;
|
||||
indicatorOfParameter = 192 ;
|
||||
}
|
||||
#UV visible albedo for diffuse radiation, volumetric component
|
||||
'UV visible albedo for diffuse radiation, volumetric component ' = {
|
||||
#UV visible albedo for diffuse radiation, volumetric component
|
||||
'UV visible albedo for diffuse radiation, volumetric component' = {
|
||||
table2Version = 210 ;
|
||||
indicatorOfParameter = 193 ;
|
||||
}
|
||||
#UV visible albedo for diffuse radiation, geometric component
|
||||
'UV visible albedo for diffuse radiation, geometric component ' = {
|
||||
#UV visible albedo for diffuse radiation, geometric component
|
||||
'UV visible albedo for diffuse radiation, geometric component' = {
|
||||
table2Version = 210 ;
|
||||
indicatorOfParameter = 194 ;
|
||||
}
|
||||
#Near IR albedo for diffuse radiation, isotropic component
|
||||
'Near IR albedo for diffuse radiation, isotropic component ' = {
|
||||
#Near IR albedo for diffuse radiation, isotropic component
|
||||
'Near IR albedo for diffuse radiation, isotropic component' = {
|
||||
table2Version = 210 ;
|
||||
indicatorOfParameter = 195 ;
|
||||
}
|
||||
#Near IR albedo for diffuse radiation, volumetric component
|
||||
'Near IR albedo for diffuse radiation, volumetric component ' = {
|
||||
#Near IR albedo for diffuse radiation, volumetric component
|
||||
'Near IR albedo for diffuse radiation, volumetric component' = {
|
||||
table2Version = 210 ;
|
||||
indicatorOfParameter = 196 ;
|
||||
}
|
||||
#Near IR albedo for diffuse radiation, geometric component
|
||||
'Near IR albedo for diffuse radiation, geometric component ' = {
|
||||
#Near IR albedo for diffuse radiation, geometric component
|
||||
'Near IR albedo for diffuse radiation, geometric component' = {
|
||||
table2Version = 210 ;
|
||||
indicatorOfParameter = 197 ;
|
||||
}
|
||||
|
@ -17614,8 +17614,8 @@
|
|||
table2Version = 228 ;
|
||||
indicatorOfParameter = 141 ;
|
||||
}
|
||||
#Snow Fall water equivalent
|
||||
'Snow Fall water equivalent' = {
|
||||
#Snowfall water equivalent
|
||||
'Snowfall water equivalent' = {
|
||||
table2Version = 228 ;
|
||||
indicatorOfParameter = 144 ;
|
||||
}
|
||||
|
|
|
@ -4054,32 +4054,32 @@
|
|||
table2Version = 210 ;
|
||||
indicatorOfParameter = 191 ;
|
||||
}
|
||||
#UV visible albedo for diffuse radiation, isotropic component
|
||||
#UV visible albedo for diffuse radiation, isotropic component
|
||||
'210192' = {
|
||||
table2Version = 210 ;
|
||||
indicatorOfParameter = 192 ;
|
||||
}
|
||||
#UV visible albedo for diffuse radiation, volumetric component
|
||||
#UV visible albedo for diffuse radiation, volumetric component
|
||||
'210193' = {
|
||||
table2Version = 210 ;
|
||||
indicatorOfParameter = 193 ;
|
||||
}
|
||||
#UV visible albedo for diffuse radiation, geometric component
|
||||
#UV visible albedo for diffuse radiation, geometric component
|
||||
'210194' = {
|
||||
table2Version = 210 ;
|
||||
indicatorOfParameter = 194 ;
|
||||
}
|
||||
#Near IR albedo for diffuse radiation, isotropic component
|
||||
#Near IR albedo for diffuse radiation, isotropic component
|
||||
'210195' = {
|
||||
table2Version = 210 ;
|
||||
indicatorOfParameter = 195 ;
|
||||
}
|
||||
#Near IR albedo for diffuse radiation, volumetric component
|
||||
#Near IR albedo for diffuse radiation, volumetric component
|
||||
'210196' = {
|
||||
table2Version = 210 ;
|
||||
indicatorOfParameter = 196 ;
|
||||
}
|
||||
#Near IR albedo for diffuse radiation, geometric component
|
||||
#Near IR albedo for diffuse radiation, geometric component
|
||||
'210197' = {
|
||||
table2Version = 210 ;
|
||||
indicatorOfParameter = 197 ;
|
||||
|
@ -17614,7 +17614,7 @@
|
|||
table2Version = 228 ;
|
||||
indicatorOfParameter = 141 ;
|
||||
}
|
||||
#Snow Fall water equivalent
|
||||
#Snowfall water equivalent
|
||||
'228144' = {
|
||||
table2Version = 228 ;
|
||||
indicatorOfParameter = 144 ;
|
||||
|
|
|
@ -4054,32 +4054,32 @@
|
|||
table2Version = 210 ;
|
||||
indicatorOfParameter = 191 ;
|
||||
}
|
||||
#UV visible albedo for diffuse radiation, isotropic component
|
||||
#UV visible albedo for diffuse radiation, isotropic component
|
||||
'aluvdi' = {
|
||||
table2Version = 210 ;
|
||||
indicatorOfParameter = 192 ;
|
||||
}
|
||||
#UV visible albedo for diffuse radiation, volumetric component
|
||||
#UV visible albedo for diffuse radiation, volumetric component
|
||||
'aluvdv' = {
|
||||
table2Version = 210 ;
|
||||
indicatorOfParameter = 193 ;
|
||||
}
|
||||
#UV visible albedo for diffuse radiation, geometric component
|
||||
#UV visible albedo for diffuse radiation, geometric component
|
||||
'aluvdg' = {
|
||||
table2Version = 210 ;
|
||||
indicatorOfParameter = 194 ;
|
||||
}
|
||||
#Near IR albedo for diffuse radiation, isotropic component
|
||||
#Near IR albedo for diffuse radiation, isotropic component
|
||||
'alnidi' = {
|
||||
table2Version = 210 ;
|
||||
indicatorOfParameter = 195 ;
|
||||
}
|
||||
#Near IR albedo for diffuse radiation, volumetric component
|
||||
#Near IR albedo for diffuse radiation, volumetric component
|
||||
'alnidv' = {
|
||||
table2Version = 210 ;
|
||||
indicatorOfParameter = 196 ;
|
||||
}
|
||||
#Near IR albedo for diffuse radiation, geometric component
|
||||
#Near IR albedo for diffuse radiation, geometric component
|
||||
'alnidg' = {
|
||||
table2Version = 210 ;
|
||||
indicatorOfParameter = 197 ;
|
||||
|
@ -17614,7 +17614,7 @@
|
|||
table2Version = 228 ;
|
||||
indicatorOfParameter = 141 ;
|
||||
}
|
||||
#Snow Fall water equivalent
|
||||
#Snowfall water equivalent
|
||||
'sf' = {
|
||||
table2Version = 228 ;
|
||||
indicatorOfParameter = 144 ;
|
||||
|
|
|
@ -4054,32 +4054,32 @@
|
|||
table2Version = 210 ;
|
||||
indicatorOfParameter = 191 ;
|
||||
}
|
||||
#UV visible albedo for diffuse radiation, isotropic component
|
||||
#UV visible albedo for diffuse radiation, isotropic component
|
||||
'(0 - 1)' = {
|
||||
table2Version = 210 ;
|
||||
indicatorOfParameter = 192 ;
|
||||
}
|
||||
#UV visible albedo for diffuse radiation, volumetric component
|
||||
#UV visible albedo for diffuse radiation, volumetric component
|
||||
'(0 - 1)' = {
|
||||
table2Version = 210 ;
|
||||
indicatorOfParameter = 193 ;
|
||||
}
|
||||
#UV visible albedo for diffuse radiation, geometric component
|
||||
#UV visible albedo for diffuse radiation, geometric component
|
||||
'(0 - 1)' = {
|
||||
table2Version = 210 ;
|
||||
indicatorOfParameter = 194 ;
|
||||
}
|
||||
#Near IR albedo for diffuse radiation, isotropic component
|
||||
#Near IR albedo for diffuse radiation, isotropic component
|
||||
'(0 - 1)' = {
|
||||
table2Version = 210 ;
|
||||
indicatorOfParameter = 195 ;
|
||||
}
|
||||
#Near IR albedo for diffuse radiation, volumetric component
|
||||
#Near IR albedo for diffuse radiation, volumetric component
|
||||
'(0 - 1)' = {
|
||||
table2Version = 210 ;
|
||||
indicatorOfParameter = 196 ;
|
||||
}
|
||||
#Near IR albedo for diffuse radiation, geometric component
|
||||
#Near IR albedo for diffuse radiation, geometric component
|
||||
'(0 - 1)' = {
|
||||
table2Version = 210 ;
|
||||
indicatorOfParameter = 197 ;
|
||||
|
@ -17614,7 +17614,7 @@
|
|||
table2Version = 228 ;
|
||||
indicatorOfParameter = 141 ;
|
||||
}
|
||||
#Snow Fall water equivalent
|
||||
#Snowfall water equivalent
|
||||
'kg m**-2' = {
|
||||
table2Version = 228 ;
|
||||
indicatorOfParameter = 144 ;
|
||||
|
|
|
@ -785,7 +785,7 @@
|
|||
table2Version = 200 ;
|
||||
indicatorOfParameter = 98 ;
|
||||
}
|
||||
#Snow melt
|
||||
#Snowmelt
|
||||
'snom' = {
|
||||
table2Version = 200 ;
|
||||
indicatorOfParameter = 99 ;
|
||||
|
|
|
@ -665,13 +665,13 @@
|
|||
table2Version = 200 ;
|
||||
indicatorOfParameter = 48 ;
|
||||
}
|
||||
#U-component of current
|
||||
'U-component of current ' = {
|
||||
#U-component of current
|
||||
'U-component of current' = {
|
||||
table2Version = 200 ;
|
||||
indicatorOfParameter = 49 ;
|
||||
}
|
||||
#V-component of current
|
||||
'V-component of current ' = {
|
||||
#V-component of current
|
||||
'V-component of current' = {
|
||||
table2Version = 200 ;
|
||||
indicatorOfParameter = 50 ;
|
||||
}
|
||||
|
@ -785,8 +785,8 @@
|
|||
table2Version = 200 ;
|
||||
indicatorOfParameter = 98 ;
|
||||
}
|
||||
#Snow melt
|
||||
'Snow melt' = {
|
||||
#Snowmelt
|
||||
'Snowmelt' = {
|
||||
table2Version = 200 ;
|
||||
indicatorOfParameter = 99 ;
|
||||
}
|
||||
|
|
|
@ -665,12 +665,12 @@
|
|||
table2Version = 200 ;
|
||||
indicatorOfParameter = 48 ;
|
||||
}
|
||||
#U-component of current
|
||||
#U-component of current
|
||||
'3049' = {
|
||||
table2Version = 200 ;
|
||||
indicatorOfParameter = 49 ;
|
||||
}
|
||||
#V-component of current
|
||||
#V-component of current
|
||||
'3050' = {
|
||||
table2Version = 200 ;
|
||||
indicatorOfParameter = 50 ;
|
||||
|
@ -785,7 +785,7 @@
|
|||
table2Version = 200 ;
|
||||
indicatorOfParameter = 98 ;
|
||||
}
|
||||
#Snow melt
|
||||
#Snowmelt
|
||||
'3099' = {
|
||||
table2Version = 200 ;
|
||||
indicatorOfParameter = 99 ;
|
||||
|
|
|
@ -665,12 +665,12 @@
|
|||
table2Version = 200 ;
|
||||
indicatorOfParameter = 48 ;
|
||||
}
|
||||
#U-component of current
|
||||
#U-component of current
|
||||
'ucurr' = {
|
||||
table2Version = 200 ;
|
||||
indicatorOfParameter = 49 ;
|
||||
}
|
||||
#V-component of current
|
||||
#V-component of current
|
||||
'vcurr' = {
|
||||
table2Version = 200 ;
|
||||
indicatorOfParameter = 50 ;
|
||||
|
@ -785,7 +785,7 @@
|
|||
table2Version = 200 ;
|
||||
indicatorOfParameter = 98 ;
|
||||
}
|
||||
#Snow melt
|
||||
#Snowmelt
|
||||
'snom' = {
|
||||
table2Version = 200 ;
|
||||
indicatorOfParameter = 99 ;
|
||||
|
|
|
@ -665,12 +665,12 @@
|
|||
table2Version = 200 ;
|
||||
indicatorOfParameter = 48 ;
|
||||
}
|
||||
#U-component of current
|
||||
#U-component of current
|
||||
'm s**-1' = {
|
||||
table2Version = 200 ;
|
||||
indicatorOfParameter = 49 ;
|
||||
}
|
||||
#V-component of current
|
||||
#V-component of current
|
||||
'm s**-1' = {
|
||||
table2Version = 200 ;
|
||||
indicatorOfParameter = 50 ;
|
||||
|
@ -785,7 +785,7 @@
|
|||
table2Version = 200 ;
|
||||
indicatorOfParameter = 98 ;
|
||||
}
|
||||
#Snow melt
|
||||
#Snowmelt
|
||||
'kg m**-2' = {
|
||||
table2Version = 200 ;
|
||||
indicatorOfParameter = 99 ;
|
||||
|
|
|
@ -162,8 +162,8 @@
|
|||
table2Version = 3 ;
|
||||
indicatorOfParameter = 10 ;
|
||||
}
|
||||
#large scale precipitation
|
||||
'large scale precipitation' = {
|
||||
#Large-scale precipitation
|
||||
'Large-scale precipitation' = {
|
||||
table2Version = 3 ;
|
||||
indicatorOfParameter = 62 ;
|
||||
}
|
||||
|
@ -392,13 +392,13 @@
|
|||
table2Version = 3 ;
|
||||
indicatorOfParameter = 48 ;
|
||||
}
|
||||
#U-component of current
|
||||
'U-component of current ' = {
|
||||
#U-component of current
|
||||
'U-component of current' = {
|
||||
table2Version = 3 ;
|
||||
indicatorOfParameter = 49 ;
|
||||
}
|
||||
#V-component of current
|
||||
'V-component of current ' = {
|
||||
#V-component of current
|
||||
'V-component of current' = {
|
||||
table2Version = 3 ;
|
||||
indicatorOfParameter = 50 ;
|
||||
}
|
||||
|
@ -532,8 +532,8 @@
|
|||
table2Version = 3 ;
|
||||
indicatorOfParameter = 98 ;
|
||||
}
|
||||
#Snow melt
|
||||
'Snow melt' = {
|
||||
#Snowmelt
|
||||
'Snowmelt' = {
|
||||
table2Version = 3 ;
|
||||
indicatorOfParameter = 99 ;
|
||||
}
|
||||
|
@ -678,8 +678,8 @@
|
|||
table2Version = 3 ;
|
||||
indicatorOfParameter = 85 ;
|
||||
}
|
||||
#Snow Fall water equivalent
|
||||
'Snow Fall water equivalent' = {
|
||||
#Snowfall water equivalent
|
||||
'Snowfall water equivalent' = {
|
||||
table2Version = 3 ;
|
||||
indicatorOfParameter = 65 ;
|
||||
}
|
||||
|
@ -858,8 +858,8 @@
|
|||
table2Version = 2 ;
|
||||
indicatorOfParameter = 10 ;
|
||||
}
|
||||
#large scale precipitation
|
||||
'large scale precipitation' = {
|
||||
#Large-scale precipitation
|
||||
'Large-scale precipitation' = {
|
||||
table2Version = 2 ;
|
||||
indicatorOfParameter = 62 ;
|
||||
}
|
||||
|
@ -1073,13 +1073,13 @@
|
|||
table2Version = 2 ;
|
||||
indicatorOfParameter = 48 ;
|
||||
}
|
||||
#U-component of current
|
||||
'U-component of current ' = {
|
||||
#U-component of current
|
||||
'U-component of current' = {
|
||||
table2Version = 2 ;
|
||||
indicatorOfParameter = 49 ;
|
||||
}
|
||||
#V-component of current
|
||||
'V-component of current ' = {
|
||||
#V-component of current
|
||||
'V-component of current' = {
|
||||
table2Version = 2 ;
|
||||
indicatorOfParameter = 50 ;
|
||||
}
|
||||
|
@ -1213,8 +1213,8 @@
|
|||
table2Version = 2 ;
|
||||
indicatorOfParameter = 98 ;
|
||||
}
|
||||
#Snow melt
|
||||
'Snow melt' = {
|
||||
#Snowmelt
|
||||
'Snowmelt' = {
|
||||
table2Version = 2 ;
|
||||
indicatorOfParameter = 99 ;
|
||||
}
|
||||
|
@ -1359,8 +1359,8 @@
|
|||
table2Version = 2 ;
|
||||
indicatorOfParameter = 85 ;
|
||||
}
|
||||
#Snow Fall water equivalent
|
||||
'Snow Fall water equivalent' = {
|
||||
#Snowfall water equivalent
|
||||
'Snowfall water equivalent' = {
|
||||
table2Version = 2 ;
|
||||
indicatorOfParameter = 65 ;
|
||||
}
|
||||
|
@ -1539,8 +1539,8 @@
|
|||
table2Version = 1 ;
|
||||
indicatorOfParameter = 10 ;
|
||||
}
|
||||
#large scale precipitation
|
||||
'large scale precipitation' = {
|
||||
#Large-scale precipitation
|
||||
'Large-scale precipitation' = {
|
||||
table2Version = 1 ;
|
||||
indicatorOfParameter = 62 ;
|
||||
}
|
||||
|
@ -1754,13 +1754,13 @@
|
|||
table2Version = 1 ;
|
||||
indicatorOfParameter = 48 ;
|
||||
}
|
||||
#U-component of current
|
||||
'U-component of current ' = {
|
||||
#U-component of current
|
||||
'U-component of current' = {
|
||||
table2Version = 1 ;
|
||||
indicatorOfParameter = 49 ;
|
||||
}
|
||||
#V-component of current
|
||||
'V-component of current ' = {
|
||||
#V-component of current
|
||||
'V-component of current' = {
|
||||
table2Version = 1 ;
|
||||
indicatorOfParameter = 50 ;
|
||||
}
|
||||
|
@ -1894,8 +1894,8 @@
|
|||
table2Version = 1 ;
|
||||
indicatorOfParameter = 98 ;
|
||||
}
|
||||
#Snow melt
|
||||
'Snow melt' = {
|
||||
#Snowmelt
|
||||
'Snowmelt' = {
|
||||
table2Version = 1 ;
|
||||
indicatorOfParameter = 99 ;
|
||||
}
|
||||
|
@ -2040,8 +2040,8 @@
|
|||
table2Version = 1 ;
|
||||
indicatorOfParameter = 85 ;
|
||||
}
|
||||
#Snow Fall water equivalent
|
||||
'Snow Fall water equivalent' = {
|
||||
#Snowfall water equivalent
|
||||
'Snowfall water equivalent' = {
|
||||
table2Version = 1 ;
|
||||
indicatorOfParameter = 65 ;
|
||||
}
|
||||
|
|
|
@ -162,7 +162,7 @@
|
|||
table2Version = 3 ;
|
||||
indicatorOfParameter = 10 ;
|
||||
}
|
||||
#large scale precipitation
|
||||
#Large-scale precipitation
|
||||
'3062' = {
|
||||
table2Version = 3 ;
|
||||
indicatorOfParameter = 62 ;
|
||||
|
@ -392,12 +392,12 @@
|
|||
table2Version = 3 ;
|
||||
indicatorOfParameter = 48 ;
|
||||
}
|
||||
#U-component of current
|
||||
#U-component of current
|
||||
'3049' = {
|
||||
table2Version = 3 ;
|
||||
indicatorOfParameter = 49 ;
|
||||
}
|
||||
#V-component of current
|
||||
#V-component of current
|
||||
'3050' = {
|
||||
table2Version = 3 ;
|
||||
indicatorOfParameter = 50 ;
|
||||
|
@ -532,7 +532,7 @@
|
|||
table2Version = 3 ;
|
||||
indicatorOfParameter = 98 ;
|
||||
}
|
||||
#Snow melt
|
||||
#Snowmelt
|
||||
'3099' = {
|
||||
table2Version = 3 ;
|
||||
indicatorOfParameter = 99 ;
|
||||
|
@ -678,7 +678,7 @@
|
|||
table2Version = 3 ;
|
||||
indicatorOfParameter = 85 ;
|
||||
}
|
||||
#Snow Fall water equivalent
|
||||
#Snowfall water equivalent
|
||||
'228144' = {
|
||||
table2Version = 3 ;
|
||||
indicatorOfParameter = 65 ;
|
||||
|
@ -858,7 +858,7 @@
|
|||
table2Version = 2 ;
|
||||
indicatorOfParameter = 10 ;
|
||||
}
|
||||
#large scale precipitation
|
||||
#Large-scale precipitation
|
||||
'3062' = {
|
||||
table2Version = 2 ;
|
||||
indicatorOfParameter = 62 ;
|
||||
|
@ -1073,12 +1073,12 @@
|
|||
table2Version = 2 ;
|
||||
indicatorOfParameter = 48 ;
|
||||
}
|
||||
#U-component of current
|
||||
#U-component of current
|
||||
'3049' = {
|
||||
table2Version = 2 ;
|
||||
indicatorOfParameter = 49 ;
|
||||
}
|
||||
#V-component of current
|
||||
#V-component of current
|
||||
'3050' = {
|
||||
table2Version = 2 ;
|
||||
indicatorOfParameter = 50 ;
|
||||
|
@ -1213,7 +1213,7 @@
|
|||
table2Version = 2 ;
|
||||
indicatorOfParameter = 98 ;
|
||||
}
|
||||
#Snow melt
|
||||
#Snowmelt
|
||||
'3099' = {
|
||||
table2Version = 2 ;
|
||||
indicatorOfParameter = 99 ;
|
||||
|
@ -1359,7 +1359,7 @@
|
|||
table2Version = 2 ;
|
||||
indicatorOfParameter = 85 ;
|
||||
}
|
||||
#Snow Fall water equivalent
|
||||
#Snowfall water equivalent
|
||||
'228144' = {
|
||||
table2Version = 2 ;
|
||||
indicatorOfParameter = 65 ;
|
||||
|
@ -1539,7 +1539,7 @@
|
|||
table2Version = 1 ;
|
||||
indicatorOfParameter = 10 ;
|
||||
}
|
||||
#large scale precipitation
|
||||
#Large-scale precipitation
|
||||
'3062' = {
|
||||
table2Version = 1 ;
|
||||
indicatorOfParameter = 62 ;
|
||||
|
@ -1754,12 +1754,12 @@
|
|||
table2Version = 1 ;
|
||||
indicatorOfParameter = 48 ;
|
||||
}
|
||||
#U-component of current
|
||||
#U-component of current
|
||||
'3049' = {
|
||||
table2Version = 1 ;
|
||||
indicatorOfParameter = 49 ;
|
||||
}
|
||||
#V-component of current
|
||||
#V-component of current
|
||||
'3050' = {
|
||||
table2Version = 1 ;
|
||||
indicatorOfParameter = 50 ;
|
||||
|
@ -1894,7 +1894,7 @@
|
|||
table2Version = 1 ;
|
||||
indicatorOfParameter = 98 ;
|
||||
}
|
||||
#Snow melt
|
||||
#Snowmelt
|
||||
'3099' = {
|
||||
table2Version = 1 ;
|
||||
indicatorOfParameter = 99 ;
|
||||
|
@ -2040,7 +2040,7 @@
|
|||
table2Version = 1 ;
|
||||
indicatorOfParameter = 85 ;
|
||||
}
|
||||
#Snow Fall water equivalent
|
||||
#Snowfall water equivalent
|
||||
'228144' = {
|
||||
table2Version = 1 ;
|
||||
indicatorOfParameter = 65 ;
|
||||
|
|
|
@ -162,7 +162,7 @@
|
|||
table2Version = 3 ;
|
||||
indicatorOfParameter = 10 ;
|
||||
}
|
||||
#large scale precipitation
|
||||
#Large-scale precipitation
|
||||
'lsp' = {
|
||||
table2Version = 3 ;
|
||||
indicatorOfParameter = 62 ;
|
||||
|
@ -392,12 +392,12 @@
|
|||
table2Version = 3 ;
|
||||
indicatorOfParameter = 48 ;
|
||||
}
|
||||
#U-component of current
|
||||
#U-component of current
|
||||
'ucurr' = {
|
||||
table2Version = 3 ;
|
||||
indicatorOfParameter = 49 ;
|
||||
}
|
||||
#V-component of current
|
||||
#V-component of current
|
||||
'vcurr' = {
|
||||
table2Version = 3 ;
|
||||
indicatorOfParameter = 50 ;
|
||||
|
@ -532,7 +532,7 @@
|
|||
table2Version = 3 ;
|
||||
indicatorOfParameter = 98 ;
|
||||
}
|
||||
#Snow melt
|
||||
#Snowmelt
|
||||
'snom' = {
|
||||
table2Version = 3 ;
|
||||
indicatorOfParameter = 99 ;
|
||||
|
@ -678,7 +678,7 @@
|
|||
table2Version = 3 ;
|
||||
indicatorOfParameter = 85 ;
|
||||
}
|
||||
#Snow Fall water equivalent
|
||||
#Snowfall water equivalent
|
||||
'sf' = {
|
||||
table2Version = 3 ;
|
||||
indicatorOfParameter = 65 ;
|
||||
|
@ -858,7 +858,7 @@
|
|||
table2Version = 2 ;
|
||||
indicatorOfParameter = 10 ;
|
||||
}
|
||||
#large scale precipitation
|
||||
#Large-scale precipitation
|
||||
'lsp' = {
|
||||
table2Version = 2 ;
|
||||
indicatorOfParameter = 62 ;
|
||||
|
@ -1073,12 +1073,12 @@
|
|||
table2Version = 2 ;
|
||||
indicatorOfParameter = 48 ;
|
||||
}
|
||||
#U-component of current
|
||||
#U-component of current
|
||||
'ucurr' = {
|
||||
table2Version = 2 ;
|
||||
indicatorOfParameter = 49 ;
|
||||
}
|
||||
#V-component of current
|
||||
#V-component of current
|
||||
'vcurr' = {
|
||||
table2Version = 2 ;
|
||||
indicatorOfParameter = 50 ;
|
||||
|
@ -1213,7 +1213,7 @@
|
|||
table2Version = 2 ;
|
||||
indicatorOfParameter = 98 ;
|
||||
}
|
||||
#Snow melt
|
||||
#Snowmelt
|
||||
'snom' = {
|
||||
table2Version = 2 ;
|
||||
indicatorOfParameter = 99 ;
|
||||
|
@ -1359,7 +1359,7 @@
|
|||
table2Version = 2 ;
|
||||
indicatorOfParameter = 85 ;
|
||||
}
|
||||
#Snow Fall water equivalent
|
||||
#Snowfall water equivalent
|
||||
'sf' = {
|
||||
table2Version = 2 ;
|
||||
indicatorOfParameter = 65 ;
|
||||
|
@ -1539,7 +1539,7 @@
|
|||
table2Version = 1 ;
|
||||
indicatorOfParameter = 10 ;
|
||||
}
|
||||
#large scale precipitation
|
||||
#Large-scale precipitation
|
||||
'lsp' = {
|
||||
table2Version = 1 ;
|
||||
indicatorOfParameter = 62 ;
|
||||
|
@ -1754,12 +1754,12 @@
|
|||
table2Version = 1 ;
|
||||
indicatorOfParameter = 48 ;
|
||||
}
|
||||
#U-component of current
|
||||
#U-component of current
|
||||
'ucurr' = {
|
||||
table2Version = 1 ;
|
||||
indicatorOfParameter = 49 ;
|
||||
}
|
||||
#V-component of current
|
||||
#V-component of current
|
||||
'vcurr' = {
|
||||
table2Version = 1 ;
|
||||
indicatorOfParameter = 50 ;
|
||||
|
@ -1894,7 +1894,7 @@
|
|||
table2Version = 1 ;
|
||||
indicatorOfParameter = 98 ;
|
||||
}
|
||||
#Snow melt
|
||||
#Snowmelt
|
||||
'snom' = {
|
||||
table2Version = 1 ;
|
||||
indicatorOfParameter = 99 ;
|
||||
|
@ -2040,7 +2040,7 @@
|
|||
table2Version = 1 ;
|
||||
indicatorOfParameter = 85 ;
|
||||
}
|
||||
#Snow Fall water equivalent
|
||||
#Snowfall water equivalent
|
||||
'sf' = {
|
||||
table2Version = 1 ;
|
||||
indicatorOfParameter = 65 ;
|
||||
|
|
|
@ -162,7 +162,7 @@
|
|||
table2Version = 3 ;
|
||||
indicatorOfParameter = 10 ;
|
||||
}
|
||||
#large scale precipitation
|
||||
#Large-scale precipitation
|
||||
'kg m**-2' = {
|
||||
table2Version = 3 ;
|
||||
indicatorOfParameter = 62 ;
|
||||
|
@ -392,12 +392,12 @@
|
|||
table2Version = 3 ;
|
||||
indicatorOfParameter = 48 ;
|
||||
}
|
||||
#U-component of current
|
||||
#U-component of current
|
||||
'm s**-1' = {
|
||||
table2Version = 3 ;
|
||||
indicatorOfParameter = 49 ;
|
||||
}
|
||||
#V-component of current
|
||||
#V-component of current
|
||||
'm s**-1' = {
|
||||
table2Version = 3 ;
|
||||
indicatorOfParameter = 50 ;
|
||||
|
@ -532,7 +532,7 @@
|
|||
table2Version = 3 ;
|
||||
indicatorOfParameter = 98 ;
|
||||
}
|
||||
#Snow melt
|
||||
#Snowmelt
|
||||
'kg m**-2' = {
|
||||
table2Version = 3 ;
|
||||
indicatorOfParameter = 99 ;
|
||||
|
@ -678,7 +678,7 @@
|
|||
table2Version = 3 ;
|
||||
indicatorOfParameter = 85 ;
|
||||
}
|
||||
#Snow Fall water equivalent
|
||||
#Snowfall water equivalent
|
||||
'kg m**-2' = {
|
||||
table2Version = 3 ;
|
||||
indicatorOfParameter = 65 ;
|
||||
|
@ -858,7 +858,7 @@
|
|||
table2Version = 2 ;
|
||||
indicatorOfParameter = 10 ;
|
||||
}
|
||||
#large scale precipitation
|
||||
#Large-scale precipitation
|
||||
'kg m**-2' = {
|
||||
table2Version = 2 ;
|
||||
indicatorOfParameter = 62 ;
|
||||
|
@ -1073,12 +1073,12 @@
|
|||
table2Version = 2 ;
|
||||
indicatorOfParameter = 48 ;
|
||||
}
|
||||
#U-component of current
|
||||
#U-component of current
|
||||
'm s**-1' = {
|
||||
table2Version = 2 ;
|
||||
indicatorOfParameter = 49 ;
|
||||
}
|
||||
#V-component of current
|
||||
#V-component of current
|
||||
'm s**-1' = {
|
||||
table2Version = 2 ;
|
||||
indicatorOfParameter = 50 ;
|
||||
|
@ -1213,7 +1213,7 @@
|
|||
table2Version = 2 ;
|
||||
indicatorOfParameter = 98 ;
|
||||
}
|
||||
#Snow melt
|
||||
#Snowmelt
|
||||
'kg m**-2' = {
|
||||
table2Version = 2 ;
|
||||
indicatorOfParameter = 99 ;
|
||||
|
@ -1359,7 +1359,7 @@
|
|||
table2Version = 2 ;
|
||||
indicatorOfParameter = 85 ;
|
||||
}
|
||||
#Snow Fall water equivalent
|
||||
#Snowfall water equivalent
|
||||
'kg m**-2' = {
|
||||
table2Version = 2 ;
|
||||
indicatorOfParameter = 65 ;
|
||||
|
@ -1539,7 +1539,7 @@
|
|||
table2Version = 1 ;
|
||||
indicatorOfParameter = 10 ;
|
||||
}
|
||||
#large scale precipitation
|
||||
#Large-scale precipitation
|
||||
'kg m**-2' = {
|
||||
table2Version = 1 ;
|
||||
indicatorOfParameter = 62 ;
|
||||
|
@ -1754,12 +1754,12 @@
|
|||
table2Version = 1 ;
|
||||
indicatorOfParameter = 48 ;
|
||||
}
|
||||
#U-component of current
|
||||
#U-component of current
|
||||
'm s**-1' = {
|
||||
table2Version = 1 ;
|
||||
indicatorOfParameter = 49 ;
|
||||
}
|
||||
#V-component of current
|
||||
#V-component of current
|
||||
'm s**-1' = {
|
||||
table2Version = 1 ;
|
||||
indicatorOfParameter = 50 ;
|
||||
|
@ -1894,7 +1894,7 @@
|
|||
table2Version = 1 ;
|
||||
indicatorOfParameter = 98 ;
|
||||
}
|
||||
#Snow melt
|
||||
#Snowmelt
|
||||
'kg m**-2' = {
|
||||
table2Version = 1 ;
|
||||
indicatorOfParameter = 99 ;
|
||||
|
@ -2040,7 +2040,7 @@
|
|||
table2Version = 1 ;
|
||||
indicatorOfParameter = 85 ;
|
||||
}
|
||||
#Snow Fall water equivalent
|
||||
#Snowfall water equivalent
|
||||
'kg m**-2' = {
|
||||
table2Version = 1 ;
|
||||
indicatorOfParameter = 65 ;
|
||||
|
|
|
@ -508,7 +508,7 @@
|
|||
parameterCategory = 6 ;
|
||||
parameterNumber = 32 ;
|
||||
}
|
||||
#large scale precipitation
|
||||
#Large-scale precipitation
|
||||
'lsp' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
|
@ -6538,7 +6538,7 @@
|
|||
parameterCategory = 2 ;
|
||||
parameterNumber = 0 ;
|
||||
}
|
||||
#Snow melt
|
||||
#Snowmelt
|
||||
'snom' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 0 ;
|
||||
|
@ -8210,12 +8210,6 @@
|
|||
parameterCategory = 0 ;
|
||||
parameterNumber = 8 ;
|
||||
}
|
||||
#Volumetric soil moisture content
|
||||
'soilw' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 9 ;
|
||||
}
|
||||
#Ground heat flux
|
||||
'gflux' = {
|
||||
discipline = 2 ;
|
||||
|
@ -8306,60 +8300,12 @@
|
|||
parameterCategory = 0 ;
|
||||
parameterNumber = 27 ;
|
||||
}
|
||||
#Upper layer soil temperature
|
||||
'uplst' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 1 ;
|
||||
}
|
||||
#Upper layer soil moisture
|
||||
'uplsm' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 2 ;
|
||||
}
|
||||
#Lower layer soil moisture
|
||||
'lowlsm' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 3 ;
|
||||
}
|
||||
#Bottom layer soil temperature
|
||||
'botlst' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 4 ;
|
||||
}
|
||||
#Liquid volumetric soil moisture (non-frozen)
|
||||
'soill' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 5 ;
|
||||
}
|
||||
#Number of soil layers in root zone
|
||||
'rlyrs' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 6 ;
|
||||
}
|
||||
#Transpiration stress-onset (soil moisture)
|
||||
'smref' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 7 ;
|
||||
}
|
||||
#Direct evaporation cease (soil moisture)
|
||||
'smdry' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 8 ;
|
||||
}
|
||||
#Soil porosity
|
||||
'poros' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 9 ;
|
||||
}
|
||||
#Liquid volumetric soil moisture (non-frozen)
|
||||
'liqvsm' = {
|
||||
discipline = 2 ;
|
||||
|
@ -8913,7 +8859,7 @@
|
|||
parameterCategory = 1 ;
|
||||
parameterNumber = 60 ;
|
||||
}
|
||||
#Snow Fall water equivalent
|
||||
#Snowfall water equivalent
|
||||
'sf' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
|
|
|
@ -0,0 +1,54 @@
|
|||
#Volumetric soil moisture content
|
||||
'soilw' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 9 ;
|
||||
}
|
||||
#Upper layer soil temperature
|
||||
'uplst' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 1 ;
|
||||
}
|
||||
#Upper layer soil moisture
|
||||
'uplsm' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 2 ;
|
||||
}
|
||||
#Lower layer soil moisture
|
||||
'lowlsm' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 3 ;
|
||||
}
|
||||
#Bottom layer soil temperature
|
||||
'botlst' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 4 ;
|
||||
}
|
||||
#Liquid volumetric soil moisture (non-frozen)
|
||||
'soill' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 5 ;
|
||||
}
|
||||
#Transpiration stress-onset (soil moisture)
|
||||
'smref' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 7 ;
|
||||
}
|
||||
#Direct evaporation cease (soil moisture)
|
||||
'smdry' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 8 ;
|
||||
}
|
||||
#Soil porosity
|
||||
'poros' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 9 ;
|
||||
}
|
|
@ -2804,38 +2804,38 @@
|
|||
parameterNumber = 194 ;
|
||||
typeOfGeneratingProcess = 9 ;
|
||||
}
|
||||
#UV visible albedo for diffuse radiation, isotropic component
|
||||
'UV visible albedo for diffuse radiation, isotropic component ' = {
|
||||
#UV visible albedo for diffuse radiation, isotropic component
|
||||
'UV visible albedo for diffuse radiation, isotropic component' = {
|
||||
discipline = 192 ;
|
||||
parameterCategory = 210 ;
|
||||
parameterNumber = 192 ;
|
||||
}
|
||||
#UV visible albedo for diffuse radiation, volumetric component
|
||||
'UV visible albedo for diffuse radiation, volumetric component ' = {
|
||||
#UV visible albedo for diffuse radiation, volumetric component
|
||||
'UV visible albedo for diffuse radiation, volumetric component' = {
|
||||
discipline = 192 ;
|
||||
parameterCategory = 210 ;
|
||||
parameterNumber = 193 ;
|
||||
}
|
||||
#UV visible albedo for diffuse radiation, geometric component
|
||||
'UV visible albedo for diffuse radiation, geometric component ' = {
|
||||
#UV visible albedo for diffuse radiation, geometric component
|
||||
'UV visible albedo for diffuse radiation, geometric component' = {
|
||||
discipline = 192 ;
|
||||
parameterCategory = 210 ;
|
||||
parameterNumber = 194 ;
|
||||
}
|
||||
#Near IR albedo for diffuse radiation, isotropic component
|
||||
'Near IR albedo for diffuse radiation, isotropic component ' = {
|
||||
#Near IR albedo for diffuse radiation, isotropic component
|
||||
'Near IR albedo for diffuse radiation, isotropic component' = {
|
||||
discipline = 192 ;
|
||||
parameterCategory = 210 ;
|
||||
parameterNumber = 195 ;
|
||||
}
|
||||
#Near IR albedo for diffuse radiation, volumetric component
|
||||
'Near IR albedo for diffuse radiation, volumetric component ' = {
|
||||
#Near IR albedo for diffuse radiation, volumetric component
|
||||
'Near IR albedo for diffuse radiation, volumetric component' = {
|
||||
discipline = 192 ;
|
||||
parameterCategory = 210 ;
|
||||
parameterNumber = 196 ;
|
||||
}
|
||||
#Near IR albedo for diffuse radiation, geometric component
|
||||
'Near IR albedo for diffuse radiation, geometric component ' = {
|
||||
#Near IR albedo for diffuse radiation, geometric component
|
||||
'Near IR albedo for diffuse radiation, geometric component' = {
|
||||
discipline = 192 ;
|
||||
parameterCategory = 210 ;
|
||||
parameterNumber = 197 ;
|
||||
|
@ -10996,8 +10996,8 @@
|
|||
parameterCategory = 218 ;
|
||||
parameterNumber = 206 ;
|
||||
}
|
||||
#Column integrated mass density of Anthropogenic volatile organic compounds
|
||||
'Column integrated mass density of Anthropogenic volatile organic compounds ' = {
|
||||
#Column integrated mass density of Anthropogenic volatile organic compounds
|
||||
'Column integrated mass density of Anthropogenic volatile organic compounds' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -11005,8 +11005,8 @@
|
|||
constituentType = 65532 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Column integrated mass density of Biomass burning volatile organic compounds
|
||||
'Column integrated mass density of Biomass burning volatile organic compounds ' = {
|
||||
#Column integrated mass density of Biomass burning volatile organic compounds
|
||||
'Column integrated mass density of Biomass burning volatile organic compounds' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -12334,8 +12334,8 @@
|
|||
parameterCategory = 219 ;
|
||||
parameterNumber = 220 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Anthropogenic volatile organic compounds
|
||||
'Atmosphere emission mass flux of Anthropogenic volatile organic compounds ' = {
|
||||
#Atmosphere emission mass flux of Anthropogenic volatile organic compounds
|
||||
'Atmosphere emission mass flux of Anthropogenic volatile organic compounds' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -12343,8 +12343,8 @@
|
|||
constituentType = 65532 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Biomass burning volatile organic compounds
|
||||
'Atmosphere emission mass flux of Biomass burning volatile organic compounds ' = {
|
||||
#Atmosphere emission mass flux of Biomass burning volatile organic compounds
|
||||
'Atmosphere emission mass flux of Biomass burning volatile organic compounds' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -13588,8 +13588,8 @@
|
|||
parameterCategory = 221 ;
|
||||
parameterNumber = 206 ;
|
||||
}
|
||||
#Dry deposition velocity of Anthropogenic volatile organic compounds
|
||||
'Dry deposition velocity of Anthropogenic volatile organic compounds ' = {
|
||||
#Dry deposition velocity of Anthropogenic volatile organic compounds
|
||||
'Dry deposition velocity of Anthropogenic volatile organic compounds' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -13597,8 +13597,8 @@
|
|||
constituentType = 65532 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Dry deposition velocity of Biomass burning volatile organic compounds
|
||||
'Dry deposition velocity of Biomass burning volatile organic compounds ' = {
|
||||
#Dry deposition velocity of Biomass burning volatile organic compounds
|
||||
'Dry deposition velocity of Biomass burning volatile organic compounds' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -13656,8 +13656,8 @@
|
|||
typeOfStatisticalProcessing = 1 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Time-integrated wet deposition mass flux of Condensable gas type 1
|
||||
'Time-integrated wet deposition mass flux of Condensable gas type 1 ' = {
|
||||
#Time-integrated wet deposition mass flux of Condensable gas type 1
|
||||
'Time-integrated wet deposition mass flux of Condensable gas type 1' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -13666,8 +13666,8 @@
|
|||
typeOfStatisticalProcessing = 1 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Time-integrated wet deposition mass flux of Condensable gas type 2a
|
||||
'Time-integrated wet deposition mass flux of Condensable gas type 2a ' = {
|
||||
#Time-integrated wet deposition mass flux of Condensable gas type 2a
|
||||
'Time-integrated wet deposition mass flux of Condensable gas type 2a' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -13676,8 +13676,8 @@
|
|||
typeOfStatisticalProcessing = 1 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Time-integrated wet deposition mass flux of Condensable gas type 2b
|
||||
'Time-integrated wet deposition mass flux of Condensable gas type 2b ' = {
|
||||
#Time-integrated wet deposition mass flux of Condensable gas type 2b
|
||||
'Time-integrated wet deposition mass flux of Condensable gas type 2b' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
|
|
@ -2804,37 +2804,37 @@
|
|||
parameterNumber = 194 ;
|
||||
typeOfGeneratingProcess = 9 ;
|
||||
}
|
||||
#UV visible albedo for diffuse radiation, isotropic component
|
||||
#UV visible albedo for diffuse radiation, isotropic component
|
||||
'210192' = {
|
||||
discipline = 192 ;
|
||||
parameterCategory = 210 ;
|
||||
parameterNumber = 192 ;
|
||||
}
|
||||
#UV visible albedo for diffuse radiation, volumetric component
|
||||
#UV visible albedo for diffuse radiation, volumetric component
|
||||
'210193' = {
|
||||
discipline = 192 ;
|
||||
parameterCategory = 210 ;
|
||||
parameterNumber = 193 ;
|
||||
}
|
||||
#UV visible albedo for diffuse radiation, geometric component
|
||||
#UV visible albedo for diffuse radiation, geometric component
|
||||
'210194' = {
|
||||
discipline = 192 ;
|
||||
parameterCategory = 210 ;
|
||||
parameterNumber = 194 ;
|
||||
}
|
||||
#Near IR albedo for diffuse radiation, isotropic component
|
||||
#Near IR albedo for diffuse radiation, isotropic component
|
||||
'210195' = {
|
||||
discipline = 192 ;
|
||||
parameterCategory = 210 ;
|
||||
parameterNumber = 195 ;
|
||||
}
|
||||
#Near IR albedo for diffuse radiation, volumetric component
|
||||
#Near IR albedo for diffuse radiation, volumetric component
|
||||
'210196' = {
|
||||
discipline = 192 ;
|
||||
parameterCategory = 210 ;
|
||||
parameterNumber = 196 ;
|
||||
}
|
||||
#Near IR albedo for diffuse radiation, geometric component
|
||||
#Near IR albedo for diffuse radiation, geometric component
|
||||
'210197' = {
|
||||
discipline = 192 ;
|
||||
parameterCategory = 210 ;
|
||||
|
@ -10996,7 +10996,7 @@
|
|||
parameterCategory = 218 ;
|
||||
parameterNumber = 206 ;
|
||||
}
|
||||
#Column integrated mass density of Anthropogenic volatile organic compounds
|
||||
#Column integrated mass density of Anthropogenic volatile organic compounds
|
||||
'218231' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
|
@ -11005,7 +11005,7 @@
|
|||
constituentType = 65532 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Column integrated mass density of Biomass burning volatile organic compounds
|
||||
#Column integrated mass density of Biomass burning volatile organic compounds
|
||||
'218232' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
|
@ -12334,7 +12334,7 @@
|
|||
parameterCategory = 219 ;
|
||||
parameterNumber = 220 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Anthropogenic volatile organic compounds
|
||||
#Atmosphere emission mass flux of Anthropogenic volatile organic compounds
|
||||
'219231' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
|
@ -12343,7 +12343,7 @@
|
|||
constituentType = 65532 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Biomass burning volatile organic compounds
|
||||
#Atmosphere emission mass flux of Biomass burning volatile organic compounds
|
||||
'219232' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
|
@ -13588,7 +13588,7 @@
|
|||
parameterCategory = 221 ;
|
||||
parameterNumber = 206 ;
|
||||
}
|
||||
#Dry deposition velocity of Anthropogenic volatile organic compounds
|
||||
#Dry deposition velocity of Anthropogenic volatile organic compounds
|
||||
'221231' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
|
@ -13597,7 +13597,7 @@
|
|||
constituentType = 65532 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Dry deposition velocity of Biomass burning volatile organic compounds
|
||||
#Dry deposition velocity of Biomass burning volatile organic compounds
|
||||
'221232' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
|
@ -13656,7 +13656,7 @@
|
|||
typeOfStatisticalProcessing = 1 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Time-integrated wet deposition mass flux of Condensable gas type 1
|
||||
#Time-integrated wet deposition mass flux of Condensable gas type 1
|
||||
'223186' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
|
@ -13666,7 +13666,7 @@
|
|||
typeOfStatisticalProcessing = 1 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Time-integrated wet deposition mass flux of Condensable gas type 2a
|
||||
#Time-integrated wet deposition mass flux of Condensable gas type 2a
|
||||
'223187' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
|
@ -13676,7 +13676,7 @@
|
|||
typeOfStatisticalProcessing = 1 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Time-integrated wet deposition mass flux of Condensable gas type 2b
|
||||
#Time-integrated wet deposition mass flux of Condensable gas type 2b
|
||||
'223188' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
|
|
|
@ -2804,37 +2804,37 @@
|
|||
parameterNumber = 194 ;
|
||||
typeOfGeneratingProcess = 9 ;
|
||||
}
|
||||
#UV visible albedo for diffuse radiation, isotropic component
|
||||
#UV visible albedo for diffuse radiation, isotropic component
|
||||
'aluvdi' = {
|
||||
discipline = 192 ;
|
||||
parameterCategory = 210 ;
|
||||
parameterNumber = 192 ;
|
||||
}
|
||||
#UV visible albedo for diffuse radiation, volumetric component
|
||||
#UV visible albedo for diffuse radiation, volumetric component
|
||||
'aluvdv' = {
|
||||
discipline = 192 ;
|
||||
parameterCategory = 210 ;
|
||||
parameterNumber = 193 ;
|
||||
}
|
||||
#UV visible albedo for diffuse radiation, geometric component
|
||||
#UV visible albedo for diffuse radiation, geometric component
|
||||
'aluvdg' = {
|
||||
discipline = 192 ;
|
||||
parameterCategory = 210 ;
|
||||
parameterNumber = 194 ;
|
||||
}
|
||||
#Near IR albedo for diffuse radiation, isotropic component
|
||||
#Near IR albedo for diffuse radiation, isotropic component
|
||||
'alnidi' = {
|
||||
discipline = 192 ;
|
||||
parameterCategory = 210 ;
|
||||
parameterNumber = 195 ;
|
||||
}
|
||||
#Near IR albedo for diffuse radiation, volumetric component
|
||||
#Near IR albedo for diffuse radiation, volumetric component
|
||||
'alnidv' = {
|
||||
discipline = 192 ;
|
||||
parameterCategory = 210 ;
|
||||
parameterNumber = 196 ;
|
||||
}
|
||||
#Near IR albedo for diffuse radiation, geometric component
|
||||
#Near IR albedo for diffuse radiation, geometric component
|
||||
'alnidg' = {
|
||||
discipline = 192 ;
|
||||
parameterCategory = 210 ;
|
||||
|
@ -10996,7 +10996,7 @@
|
|||
parameterCategory = 218 ;
|
||||
parameterNumber = 206 ;
|
||||
}
|
||||
#Column integrated mass density of Anthropogenic volatile organic compounds
|
||||
#Column integrated mass density of Anthropogenic volatile organic compounds
|
||||
'tc_VOCA' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
|
@ -11005,7 +11005,7 @@
|
|||
constituentType = 65532 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Column integrated mass density of Biomass burning volatile organic compounds
|
||||
#Column integrated mass density of Biomass burning volatile organic compounds
|
||||
'tc_VOCBB' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
|
@ -12334,7 +12334,7 @@
|
|||
parameterCategory = 219 ;
|
||||
parameterNumber = 220 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Anthropogenic volatile organic compounds
|
||||
#Atmosphere emission mass flux of Anthropogenic volatile organic compounds
|
||||
'e_VOCA' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
|
@ -12343,7 +12343,7 @@
|
|||
constituentType = 65532 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Biomass burning volatile organic compounds
|
||||
#Atmosphere emission mass flux of Biomass burning volatile organic compounds
|
||||
'e_VOCBB' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
|
@ -13588,7 +13588,7 @@
|
|||
parameterCategory = 221 ;
|
||||
parameterNumber = 206 ;
|
||||
}
|
||||
#Dry deposition velocity of Anthropogenic volatile organic compounds
|
||||
#Dry deposition velocity of Anthropogenic volatile organic compounds
|
||||
'dv_VOCA' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
|
@ -13597,7 +13597,7 @@
|
|||
constituentType = 65532 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Dry deposition velocity of Biomass burning volatile organic compounds
|
||||
#Dry deposition velocity of Biomass burning volatile organic compounds
|
||||
'dv_VOCBB' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
|
@ -13656,7 +13656,7 @@
|
|||
typeOfStatisticalProcessing = 1 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Time-integrated wet deposition mass flux of Condensable gas type 1
|
||||
#Time-integrated wet deposition mass flux of Condensable gas type 1
|
||||
'acc_wet_depm_SOG1' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
|
@ -13666,7 +13666,7 @@
|
|||
typeOfStatisticalProcessing = 1 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Time-integrated wet deposition mass flux of Condensable gas type 2a
|
||||
#Time-integrated wet deposition mass flux of Condensable gas type 2a
|
||||
'acc_wet_depm_SOG2A' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
|
@ -13676,7 +13676,7 @@
|
|||
typeOfStatisticalProcessing = 1 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Time-integrated wet deposition mass flux of Condensable gas type 2b
|
||||
#Time-integrated wet deposition mass flux of Condensable gas type 2b
|
||||
'acc_wet_depm_SOG2B' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
|
|
|
@ -2804,37 +2804,37 @@
|
|||
parameterNumber = 194 ;
|
||||
typeOfGeneratingProcess = 9 ;
|
||||
}
|
||||
#UV visible albedo for diffuse radiation, isotropic component
|
||||
#UV visible albedo for diffuse radiation, isotropic component
|
||||
'(0 - 1)' = {
|
||||
discipline = 192 ;
|
||||
parameterCategory = 210 ;
|
||||
parameterNumber = 192 ;
|
||||
}
|
||||
#UV visible albedo for diffuse radiation, volumetric component
|
||||
#UV visible albedo for diffuse radiation, volumetric component
|
||||
'(0 - 1)' = {
|
||||
discipline = 192 ;
|
||||
parameterCategory = 210 ;
|
||||
parameterNumber = 193 ;
|
||||
}
|
||||
#UV visible albedo for diffuse radiation, geometric component
|
||||
#UV visible albedo for diffuse radiation, geometric component
|
||||
'(0 - 1)' = {
|
||||
discipline = 192 ;
|
||||
parameterCategory = 210 ;
|
||||
parameterNumber = 194 ;
|
||||
}
|
||||
#Near IR albedo for diffuse radiation, isotropic component
|
||||
#Near IR albedo for diffuse radiation, isotropic component
|
||||
'(0 - 1)' = {
|
||||
discipline = 192 ;
|
||||
parameterCategory = 210 ;
|
||||
parameterNumber = 195 ;
|
||||
}
|
||||
#Near IR albedo for diffuse radiation, volumetric component
|
||||
#Near IR albedo for diffuse radiation, volumetric component
|
||||
'(0 - 1)' = {
|
||||
discipline = 192 ;
|
||||
parameterCategory = 210 ;
|
||||
parameterNumber = 196 ;
|
||||
}
|
||||
#Near IR albedo for diffuse radiation, geometric component
|
||||
#Near IR albedo for diffuse radiation, geometric component
|
||||
'(0 - 1)' = {
|
||||
discipline = 192 ;
|
||||
parameterCategory = 210 ;
|
||||
|
@ -10996,7 +10996,7 @@
|
|||
parameterCategory = 218 ;
|
||||
parameterNumber = 206 ;
|
||||
}
|
||||
#Column integrated mass density of Anthropogenic volatile organic compounds
|
||||
#Column integrated mass density of Anthropogenic volatile organic compounds
|
||||
'kg m**-2' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
|
@ -11005,7 +11005,7 @@
|
|||
constituentType = 65532 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Column integrated mass density of Biomass burning volatile organic compounds
|
||||
#Column integrated mass density of Biomass burning volatile organic compounds
|
||||
'kg m**-2' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
|
@ -12334,7 +12334,7 @@
|
|||
parameterCategory = 219 ;
|
||||
parameterNumber = 220 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Anthropogenic volatile organic compounds
|
||||
#Atmosphere emission mass flux of Anthropogenic volatile organic compounds
|
||||
'kg m**-2 s**-1' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
|
@ -12343,7 +12343,7 @@
|
|||
constituentType = 65532 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Biomass burning volatile organic compounds
|
||||
#Atmosphere emission mass flux of Biomass burning volatile organic compounds
|
||||
'kg m**-2 s**-1' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
|
@ -13588,7 +13588,7 @@
|
|||
parameterCategory = 221 ;
|
||||
parameterNumber = 206 ;
|
||||
}
|
||||
#Dry deposition velocity of Anthropogenic volatile organic compounds
|
||||
#Dry deposition velocity of Anthropogenic volatile organic compounds
|
||||
'm s**-1' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
|
@ -13597,7 +13597,7 @@
|
|||
constituentType = 65532 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Dry deposition velocity of Biomass burning volatile organic compounds
|
||||
#Dry deposition velocity of Biomass burning volatile organic compounds
|
||||
'm s**-1' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
|
@ -13656,7 +13656,7 @@
|
|||
typeOfStatisticalProcessing = 1 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Time-integrated wet deposition mass flux of Condensable gas type 1
|
||||
#Time-integrated wet deposition mass flux of Condensable gas type 1
|
||||
'kg m**-2' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
|
@ -13666,7 +13666,7 @@
|
|||
typeOfStatisticalProcessing = 1 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Time-integrated wet deposition mass flux of Condensable gas type 2a
|
||||
#Time-integrated wet deposition mass flux of Condensable gas type 2a
|
||||
'kg m**-2' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
|
@ -13676,7 +13676,7 @@
|
|||
typeOfStatisticalProcessing = 1 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Time-integrated wet deposition mass flux of Condensable gas type 2b
|
||||
#Time-integrated wet deposition mass flux of Condensable gas type 2b
|
||||
'kg m**-2' = {
|
||||
localTablesVersion = 1 ;
|
||||
discipline = 0 ;
|
||||
|
|
|
@ -173,8 +173,8 @@
|
|||
parameterCategory = 4 ;
|
||||
parameterNumber = 193 ;
|
||||
}
|
||||
#UV index
|
||||
'UV index ' = {
|
||||
#UV index
|
||||
'UV index' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 7 ;
|
||||
parameterNumber = 196 ;
|
||||
|
|
|
@ -173,7 +173,7 @@
|
|||
parameterCategory = 4 ;
|
||||
parameterNumber = 193 ;
|
||||
}
|
||||
#UV index
|
||||
#UV index
|
||||
'260094' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 7 ;
|
||||
|
|
|
@ -173,7 +173,7 @@
|
|||
parameterCategory = 4 ;
|
||||
parameterNumber = 193 ;
|
||||
}
|
||||
#UV index
|
||||
#UV index
|
||||
'uvi' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 7 ;
|
||||
|
|
|
@ -173,7 +173,7 @@
|
|||
parameterCategory = 4 ;
|
||||
parameterNumber = 193 ;
|
||||
}
|
||||
#UV index
|
||||
#UV index
|
||||
'Numeric' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 7 ;
|
||||
|
|
|
@ -201,7 +201,7 @@
|
|||
scaledValueOfSecondFixedSurface = missing() ;
|
||||
scaleFactorOfSecondFixedSurface = missing() ;
|
||||
}
|
||||
#Snow melt
|
||||
#Snowmelt
|
||||
'snom' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
|
|
|
@ -201,8 +201,8 @@
|
|||
scaledValueOfSecondFixedSurface = missing() ;
|
||||
scaleFactorOfSecondFixedSurface = missing() ;
|
||||
}
|
||||
#Snow melt
|
||||
'Snow melt' = {
|
||||
#Snowmelt
|
||||
'Snowmelt' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 16 ;
|
||||
|
|
|
@ -201,7 +201,7 @@
|
|||
scaledValueOfSecondFixedSurface = missing() ;
|
||||
scaleFactorOfSecondFixedSurface = missing() ;
|
||||
}
|
||||
#Snow melt
|
||||
#Snowmelt
|
||||
'3099' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
|
|
|
@ -201,7 +201,7 @@
|
|||
scaledValueOfSecondFixedSurface = missing() ;
|
||||
scaleFactorOfSecondFixedSurface = missing() ;
|
||||
}
|
||||
#Snow melt
|
||||
#Snowmelt
|
||||
'snom' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
|
|
|
@ -201,7 +201,7 @@
|
|||
scaledValueOfSecondFixedSurface = missing() ;
|
||||
scaleFactorOfSecondFixedSurface = missing() ;
|
||||
}
|
||||
#Snow melt
|
||||
#Snowmelt
|
||||
'kg m**-2' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
|
|
|
@ -508,8 +508,8 @@
|
|||
parameterCategory = 6 ;
|
||||
parameterNumber = 32 ;
|
||||
}
|
||||
#large scale precipitation
|
||||
'large scale precipitation' = {
|
||||
#Large-scale precipitation
|
||||
'Large-scale precipitation' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 54 ;
|
||||
|
@ -1178,8 +1178,8 @@
|
|||
constituentType = 60057 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Column integrated mass density of Volcanic sulfur dioxide
|
||||
'Column integrated mass density of Volcanic sulfur dioxide ' = {
|
||||
#Column integrated mass density of Volcanic sulfur dioxide
|
||||
'Column integrated mass density of Volcanic sulfur dioxide' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 1 ;
|
||||
|
@ -1187,80 +1187,80 @@
|
|||
is_chemical_srcsink = 1 ;
|
||||
sourceSinkChemicalPhysicalProcess = 7 ;
|
||||
}
|
||||
#Column integrated mass density of Aromatic peroxy radical
|
||||
'Column integrated mass density of Aromatic peroxy radical ' = {
|
||||
#Column integrated mass density of Aromatic peroxy radical
|
||||
'Column integrated mass density of Aromatic peroxy radical' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 1 ;
|
||||
constituentType = 60029 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Column integrated mass density of Ethyne
|
||||
'Column integrated mass density of Ethyne ' = {
|
||||
#Column integrated mass density of Ethyne
|
||||
'Column integrated mass density of Ethyne' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 1 ;
|
||||
constituentType = 10010 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Column integrated mass density of Acetonitrile
|
||||
'Column integrated mass density of Acetonitrile ' = {
|
||||
#Column integrated mass density of Acetonitrile
|
||||
'Column integrated mass density of Acetonitrile' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 1 ;
|
||||
constituentType = 10007 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Column integrated mass density of Methyl peroxy nitrate
|
||||
'Column integrated mass density of Methyl peroxy nitrate ' = {
|
||||
#Column integrated mass density of Methyl peroxy nitrate
|
||||
'Column integrated mass density of Methyl peroxy nitrate' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 1 ;
|
||||
constituentType = 10055 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Column integrated mass density of Hydrogen cyanide
|
||||
'Column integrated mass density of Hydrogen cyanide ' = {
|
||||
#Column integrated mass density of Hydrogen cyanide
|
||||
'Column integrated mass density of Hydrogen cyanide' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 1 ;
|
||||
constituentType = 10006 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Column integrated mass density of Hydroperoxy aldehydes type 1
|
||||
'Column integrated mass density of Hydroperoxy aldehydes type 1 ' = {
|
||||
#Column integrated mass density of Hydroperoxy aldehydes type 1
|
||||
'Column integrated mass density of Hydroperoxy aldehydes type 1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 1 ;
|
||||
constituentType = 60058 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Column integrated mass density of Hydroperoxy aldehydes type 2
|
||||
'Column integrated mass density of Hydroperoxy aldehydes type 2 ' = {
|
||||
#Column integrated mass density of Hydroperoxy aldehydes type 2
|
||||
'Column integrated mass density of Hydroperoxy aldehydes type 2' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 1 ;
|
||||
constituentType = 60059 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Column integrated mass density of Isoprene peroxy type B
|
||||
'Column integrated mass density of Isoprene peroxy type B ' = {
|
||||
#Column integrated mass density of Isoprene peroxy type B
|
||||
'Column integrated mass density of Isoprene peroxy type B' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 1 ;
|
||||
constituentType = 60056 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Column integrated mass density of Isoprene peroxy type D
|
||||
'Column integrated mass density of Isoprene peroxy type D ' = {
|
||||
#Column integrated mass density of Isoprene peroxy type D
|
||||
'Column integrated mass density of Isoprene peroxy type D' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 1 ;
|
||||
constituentType = 60057 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Volcanic sulfur dioxide
|
||||
'Atmosphere emission mass flux of Volcanic sulfur dioxide ' = {
|
||||
#Atmosphere emission mass flux of Volcanic sulfur dioxide
|
||||
'Atmosphere emission mass flux of Volcanic sulfur dioxide' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 3 ;
|
||||
|
@ -1268,80 +1268,80 @@
|
|||
is_chemical_srcsink = 1 ;
|
||||
sourceSinkChemicalPhysicalProcess = 7 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Aromatic peroxy radical
|
||||
'Atmosphere emission mass flux of Aromatic peroxy radical ' = {
|
||||
#Atmosphere emission mass flux of Aromatic peroxy radical
|
||||
'Atmosphere emission mass flux of Aromatic peroxy radical' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 3 ;
|
||||
constituentType = 60029 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Ethyne
|
||||
'Atmosphere emission mass flux of Ethyne ' = {
|
||||
#Atmosphere emission mass flux of Ethyne
|
||||
'Atmosphere emission mass flux of Ethyne' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 3 ;
|
||||
constituentType = 10010 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Acetonitrile
|
||||
'Atmosphere emission mass flux of Acetonitrile ' = {
|
||||
#Atmosphere emission mass flux of Acetonitrile
|
||||
'Atmosphere emission mass flux of Acetonitrile' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 3 ;
|
||||
constituentType = 10007 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Methyl peroxy nitrate
|
||||
'Atmosphere emission mass flux of Methyl peroxy nitrate ' = {
|
||||
#Atmosphere emission mass flux of Methyl peroxy nitrate
|
||||
'Atmosphere emission mass flux of Methyl peroxy nitrate' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 3 ;
|
||||
constituentType = 10055 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Hydrogen cyanide
|
||||
'Atmosphere emission mass flux of Hydrogen cyanide ' = {
|
||||
#Atmosphere emission mass flux of Hydrogen cyanide
|
||||
'Atmosphere emission mass flux of Hydrogen cyanide' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 3 ;
|
||||
constituentType = 10006 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Hydroperoxy aldehydes type 1
|
||||
'Atmosphere emission mass flux of Hydroperoxy aldehydes type 1 ' = {
|
||||
#Atmosphere emission mass flux of Hydroperoxy aldehydes type 1
|
||||
'Atmosphere emission mass flux of Hydroperoxy aldehydes type 1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 3 ;
|
||||
constituentType = 60058 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Hydroperoxy aldehydes type 2
|
||||
'Atmosphere emission mass flux of Hydroperoxy aldehydes type 2 ' = {
|
||||
#Atmosphere emission mass flux of Hydroperoxy aldehydes type 2
|
||||
'Atmosphere emission mass flux of Hydroperoxy aldehydes type 2' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 3 ;
|
||||
constituentType = 60059 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Isoprene peroxy type B
|
||||
'Atmosphere emission mass flux of Isoprene peroxy type B ' = {
|
||||
#Atmosphere emission mass flux of Isoprene peroxy type B
|
||||
'Atmosphere emission mass flux of Isoprene peroxy type B' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 3 ;
|
||||
constituentType = 60056 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Isoprene peroxy type D
|
||||
'Atmosphere emission mass flux of Isoprene peroxy type D ' = {
|
||||
#Atmosphere emission mass flux of Isoprene peroxy type D
|
||||
'Atmosphere emission mass flux of Isoprene peroxy type D' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 3 ;
|
||||
constituentType = 60057 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Dry deposition velocity of Volcanic sulfur dioxide
|
||||
'Dry deposition velocity of Volcanic sulfur dioxide ' = {
|
||||
#Dry deposition velocity of Volcanic sulfur dioxide
|
||||
'Dry deposition velocity of Volcanic sulfur dioxide' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 15 ;
|
||||
|
@ -1349,72 +1349,72 @@
|
|||
is_chemical_srcsink = 1 ;
|
||||
sourceSinkChemicalPhysicalProcess = 7 ;
|
||||
}
|
||||
#Dry deposition velocity of Aromatic peroxy radical
|
||||
'Dry deposition velocity of Aromatic peroxy radical ' = {
|
||||
#Dry deposition velocity of Aromatic peroxy radical
|
||||
'Dry deposition velocity of Aromatic peroxy radical' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 15 ;
|
||||
constituentType = 60029 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Dry deposition velocity of Ethyne
|
||||
'Dry deposition velocity of Ethyne ' = {
|
||||
#Dry deposition velocity of Ethyne
|
||||
'Dry deposition velocity of Ethyne' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 15 ;
|
||||
constituentType = 10010 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Dry deposition velocity of Acetonitrile
|
||||
'Dry deposition velocity of Acetonitrile ' = {
|
||||
#Dry deposition velocity of Acetonitrile
|
||||
'Dry deposition velocity of Acetonitrile' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 15 ;
|
||||
constituentType = 10007 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Dry deposition velocity of Methyl peroxy nitrate
|
||||
'Dry deposition velocity of Methyl peroxy nitrate ' = {
|
||||
#Dry deposition velocity of Methyl peroxy nitrate
|
||||
'Dry deposition velocity of Methyl peroxy nitrate' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 15 ;
|
||||
constituentType = 10055 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Dry deposition velocity of Hydrogen cyanide
|
||||
'Dry deposition velocity of Hydrogen cyanide ' = {
|
||||
#Dry deposition velocity of Hydrogen cyanide
|
||||
'Dry deposition velocity of Hydrogen cyanide' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 15 ;
|
||||
constituentType = 10006 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Dry deposition velocity of Hydroperoxy aldehydes type 1
|
||||
'Dry deposition velocity of Hydroperoxy aldehydes type 1 ' = {
|
||||
#Dry deposition velocity of Hydroperoxy aldehydes type 1
|
||||
'Dry deposition velocity of Hydroperoxy aldehydes type 1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 15 ;
|
||||
constituentType = 60058 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Dry deposition velocity of Hydroperoxy aldehydes type 2
|
||||
'Dry deposition velocity of Hydroperoxy aldehydes type 2 ' = {
|
||||
#Dry deposition velocity of Hydroperoxy aldehydes type 2
|
||||
'Dry deposition velocity of Hydroperoxy aldehydes type 2' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 15 ;
|
||||
constituentType = 60059 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Dry deposition velocity of Isoprene peroxy type B
|
||||
'Dry deposition velocity of Isoprene peroxy type B ' = {
|
||||
#Dry deposition velocity of Isoprene peroxy type B
|
||||
'Dry deposition velocity of Isoprene peroxy type B' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 15 ;
|
||||
constituentType = 60056 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Dry deposition velocity of Isoprene peroxy type D
|
||||
'Dry deposition velocity of Isoprene peroxy type D ' = {
|
||||
#Dry deposition velocity of Isoprene peroxy type D
|
||||
'Dry deposition velocity of Isoprene peroxy type D' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
parameterNumber = 15 ;
|
||||
|
@ -6538,8 +6538,8 @@
|
|||
parameterCategory = 2 ;
|
||||
parameterNumber = 0 ;
|
||||
}
|
||||
#Snow melt
|
||||
'Snow melt' = {
|
||||
#Snowmelt
|
||||
'Snowmelt' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 41 ;
|
||||
|
@ -7676,8 +7676,8 @@
|
|||
parameterCategory = 4 ;
|
||||
parameterNumber = 50 ;
|
||||
}
|
||||
#UV index
|
||||
'UV index ' = {
|
||||
#UV index
|
||||
'UV index' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 4 ;
|
||||
parameterNumber = 51 ;
|
||||
|
@ -8210,12 +8210,6 @@
|
|||
parameterCategory = 0 ;
|
||||
parameterNumber = 8 ;
|
||||
}
|
||||
#Volumetric soil moisture content
|
||||
'Volumetric soil moisture content' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 9 ;
|
||||
}
|
||||
#Ground heat flux
|
||||
'Ground heat flux' = {
|
||||
discipline = 2 ;
|
||||
|
@ -8306,60 +8300,12 @@
|
|||
parameterCategory = 0 ;
|
||||
parameterNumber = 27 ;
|
||||
}
|
||||
#Upper layer soil temperature
|
||||
'Upper layer soil temperature' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 1 ;
|
||||
}
|
||||
#Upper layer soil moisture
|
||||
'Upper layer soil moisture' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 2 ;
|
||||
}
|
||||
#Lower layer soil moisture
|
||||
'Lower layer soil moisture' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 3 ;
|
||||
}
|
||||
#Bottom layer soil temperature
|
||||
'Bottom layer soil temperature' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 4 ;
|
||||
}
|
||||
#Liquid volumetric soil moisture (non-frozen)
|
||||
'Liquid volumetric soil moisture (non-frozen)' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 5 ;
|
||||
}
|
||||
#Number of soil layers in root zone
|
||||
'Number of soil layers in root zone' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 6 ;
|
||||
}
|
||||
#Transpiration stress-onset (soil moisture)
|
||||
'Transpiration stress-onset (soil moisture)' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 7 ;
|
||||
}
|
||||
#Direct evaporation cease (soil moisture)
|
||||
'Direct evaporation cease (soil moisture)' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 8 ;
|
||||
}
|
||||
#Soil porosity
|
||||
'Soil porosity' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 9 ;
|
||||
}
|
||||
#Liquid volumetric soil moisture (non-frozen)
|
||||
'Liquid volumetric soil moisture (non-frozen)' = {
|
||||
discipline = 2 ;
|
||||
|
@ -8432,8 +8378,8 @@
|
|||
parameterCategory = 1 ;
|
||||
parameterNumber = 3 ;
|
||||
}
|
||||
#Estimated u component of wind
|
||||
'Estimated u component of wind ' = {
|
||||
#Estimated u component of wind
|
||||
'Estimated u component of wind' = {
|
||||
discipline = 3 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 4 ;
|
||||
|
@ -8696,14 +8642,14 @@
|
|||
parameterCategory = 2 ;
|
||||
parameterNumber = 16 ;
|
||||
}
|
||||
#U-component of current
|
||||
'U-component of current ' = {
|
||||
#U-component of current
|
||||
'U-component of current' = {
|
||||
discipline = 10 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 2 ;
|
||||
}
|
||||
#V-component of current
|
||||
'V-component of current ' = {
|
||||
#V-component of current
|
||||
'V-component of current' = {
|
||||
discipline = 10 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 3 ;
|
||||
|
@ -8913,8 +8859,8 @@
|
|||
parameterCategory = 1 ;
|
||||
parameterNumber = 60 ;
|
||||
}
|
||||
#Snow Fall water equivalent
|
||||
'Snow Fall water equivalent' = {
|
||||
#Snowfall water equivalent
|
||||
'Snowfall water equivalent' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 53 ;
|
||||
|
|
|
@ -0,0 +1,54 @@
|
|||
#Volumetric soil moisture content
|
||||
'Volumetric soil moisture content' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 9 ;
|
||||
}
|
||||
#Upper layer soil temperature
|
||||
'Upper layer soil temperature' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 1 ;
|
||||
}
|
||||
#Upper layer soil moisture
|
||||
'Upper layer soil moisture' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 2 ;
|
||||
}
|
||||
#Lower layer soil moisture
|
||||
'Lower layer soil moisture' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 3 ;
|
||||
}
|
||||
#Bottom layer soil temperature
|
||||
'Bottom layer soil temperature' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 4 ;
|
||||
}
|
||||
#Liquid volumetric soil moisture (non-frozen)
|
||||
'Liquid volumetric soil moisture (non-frozen)' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 5 ;
|
||||
}
|
||||
#Transpiration stress-onset (soil moisture)
|
||||
'Transpiration stress-onset (soil moisture)' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 7 ;
|
||||
}
|
||||
#Direct evaporation cease (soil moisture)
|
||||
'Direct evaporation cease (soil moisture)' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 8 ;
|
||||
}
|
||||
#Soil porosity
|
||||
'Soil porosity' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 9 ;
|
||||
}
|
|
@ -508,7 +508,7 @@
|
|||
parameterCategory = 6 ;
|
||||
parameterNumber = 32 ;
|
||||
}
|
||||
#large scale precipitation
|
||||
#Large-scale precipitation
|
||||
'3062' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
|
@ -1178,7 +1178,7 @@
|
|||
constituentType = 60057 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Column integrated mass density of Volcanic sulfur dioxide
|
||||
#Column integrated mass density of Volcanic sulfur dioxide
|
||||
'218221' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1187,7 +1187,7 @@
|
|||
is_chemical_srcsink = 1 ;
|
||||
sourceSinkChemicalPhysicalProcess = 7 ;
|
||||
}
|
||||
#Column integrated mass density of Aromatic peroxy radical
|
||||
#Column integrated mass density of Aromatic peroxy radical
|
||||
'218222' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1195,7 +1195,7 @@
|
|||
constituentType = 60029 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Column integrated mass density of Ethyne
|
||||
#Column integrated mass density of Ethyne
|
||||
'218223' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1203,7 +1203,7 @@
|
|||
constituentType = 10010 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Column integrated mass density of Acetonitrile
|
||||
#Column integrated mass density of Acetonitrile
|
||||
'218224' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1211,7 +1211,7 @@
|
|||
constituentType = 10007 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Column integrated mass density of Methyl peroxy nitrate
|
||||
#Column integrated mass density of Methyl peroxy nitrate
|
||||
'218225' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1219,7 +1219,7 @@
|
|||
constituentType = 10055 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Column integrated mass density of Hydrogen cyanide
|
||||
#Column integrated mass density of Hydrogen cyanide
|
||||
'218226' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1227,7 +1227,7 @@
|
|||
constituentType = 10006 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Column integrated mass density of Hydroperoxy aldehydes type 1
|
||||
#Column integrated mass density of Hydroperoxy aldehydes type 1
|
||||
'218227' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1235,7 +1235,7 @@
|
|||
constituentType = 60058 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Column integrated mass density of Hydroperoxy aldehydes type 2
|
||||
#Column integrated mass density of Hydroperoxy aldehydes type 2
|
||||
'218228' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1243,7 +1243,7 @@
|
|||
constituentType = 60059 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Column integrated mass density of Isoprene peroxy type B
|
||||
#Column integrated mass density of Isoprene peroxy type B
|
||||
'218229' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1251,7 +1251,7 @@
|
|||
constituentType = 60056 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Column integrated mass density of Isoprene peroxy type D
|
||||
#Column integrated mass density of Isoprene peroxy type D
|
||||
'218230' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1259,7 +1259,7 @@
|
|||
constituentType = 60057 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Volcanic sulfur dioxide
|
||||
#Atmosphere emission mass flux of Volcanic sulfur dioxide
|
||||
'219221' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1268,7 +1268,7 @@
|
|||
is_chemical_srcsink = 1 ;
|
||||
sourceSinkChemicalPhysicalProcess = 7 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Aromatic peroxy radical
|
||||
#Atmosphere emission mass flux of Aromatic peroxy radical
|
||||
'219222' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1276,7 +1276,7 @@
|
|||
constituentType = 60029 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Ethyne
|
||||
#Atmosphere emission mass flux of Ethyne
|
||||
'219223' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1284,7 +1284,7 @@
|
|||
constituentType = 10010 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Acetonitrile
|
||||
#Atmosphere emission mass flux of Acetonitrile
|
||||
'219224' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1292,7 +1292,7 @@
|
|||
constituentType = 10007 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Methyl peroxy nitrate
|
||||
#Atmosphere emission mass flux of Methyl peroxy nitrate
|
||||
'219225' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1300,7 +1300,7 @@
|
|||
constituentType = 10055 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Hydrogen cyanide
|
||||
#Atmosphere emission mass flux of Hydrogen cyanide
|
||||
'219226' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1308,7 +1308,7 @@
|
|||
constituentType = 10006 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Hydroperoxy aldehydes type 1
|
||||
#Atmosphere emission mass flux of Hydroperoxy aldehydes type 1
|
||||
'219227' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1316,7 +1316,7 @@
|
|||
constituentType = 60058 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Hydroperoxy aldehydes type 2
|
||||
#Atmosphere emission mass flux of Hydroperoxy aldehydes type 2
|
||||
'219228' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1324,7 +1324,7 @@
|
|||
constituentType = 60059 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Isoprene peroxy type B
|
||||
#Atmosphere emission mass flux of Isoprene peroxy type B
|
||||
'219229' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1332,7 +1332,7 @@
|
|||
constituentType = 60056 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Isoprene peroxy type D
|
||||
#Atmosphere emission mass flux of Isoprene peroxy type D
|
||||
'219230' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1340,7 +1340,7 @@
|
|||
constituentType = 60057 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Dry deposition velocity of Volcanic sulfur dioxide
|
||||
#Dry deposition velocity of Volcanic sulfur dioxide
|
||||
'221221' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1349,7 +1349,7 @@
|
|||
is_chemical_srcsink = 1 ;
|
||||
sourceSinkChemicalPhysicalProcess = 7 ;
|
||||
}
|
||||
#Dry deposition velocity of Aromatic peroxy radical
|
||||
#Dry deposition velocity of Aromatic peroxy radical
|
||||
'221222' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1357,7 +1357,7 @@
|
|||
constituentType = 60029 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Dry deposition velocity of Ethyne
|
||||
#Dry deposition velocity of Ethyne
|
||||
'221223' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1365,7 +1365,7 @@
|
|||
constituentType = 10010 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Dry deposition velocity of Acetonitrile
|
||||
#Dry deposition velocity of Acetonitrile
|
||||
'221224' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1373,7 +1373,7 @@
|
|||
constituentType = 10007 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Dry deposition velocity of Methyl peroxy nitrate
|
||||
#Dry deposition velocity of Methyl peroxy nitrate
|
||||
'221225' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1381,7 +1381,7 @@
|
|||
constituentType = 10055 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Dry deposition velocity of Hydrogen cyanide
|
||||
#Dry deposition velocity of Hydrogen cyanide
|
||||
'221226' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1389,7 +1389,7 @@
|
|||
constituentType = 10006 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Dry deposition velocity of Hydroperoxy aldehydes type 1
|
||||
#Dry deposition velocity of Hydroperoxy aldehydes type 1
|
||||
'221227' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1397,7 +1397,7 @@
|
|||
constituentType = 60058 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Dry deposition velocity of Hydroperoxy aldehydes type 2
|
||||
#Dry deposition velocity of Hydroperoxy aldehydes type 2
|
||||
'221228' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1405,7 +1405,7 @@
|
|||
constituentType = 60059 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Dry deposition velocity of Isoprene peroxy type B
|
||||
#Dry deposition velocity of Isoprene peroxy type B
|
||||
'221229' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1413,7 +1413,7 @@
|
|||
constituentType = 60056 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Dry deposition velocity of Isoprene peroxy type D
|
||||
#Dry deposition velocity of Isoprene peroxy type D
|
||||
'221230' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -6538,7 +6538,7 @@
|
|||
parameterCategory = 2 ;
|
||||
parameterNumber = 0 ;
|
||||
}
|
||||
#Snow melt
|
||||
#Snowmelt
|
||||
'3099' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 0 ;
|
||||
|
@ -7676,7 +7676,7 @@
|
|||
parameterCategory = 4 ;
|
||||
parameterNumber = 50 ;
|
||||
}
|
||||
#UV index
|
||||
#UV index
|
||||
'260094' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 4 ;
|
||||
|
@ -8210,12 +8210,6 @@
|
|||
parameterCategory = 0 ;
|
||||
parameterNumber = 8 ;
|
||||
}
|
||||
#Volumetric soil moisture content
|
||||
'260185' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 9 ;
|
||||
}
|
||||
#Ground heat flux
|
||||
'260186' = {
|
||||
discipline = 2 ;
|
||||
|
@ -8306,60 +8300,12 @@
|
|||
parameterCategory = 0 ;
|
||||
parameterNumber = 27 ;
|
||||
}
|
||||
#Upper layer soil temperature
|
||||
'260201' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 1 ;
|
||||
}
|
||||
#Upper layer soil moisture
|
||||
'260202' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 2 ;
|
||||
}
|
||||
#Lower layer soil moisture
|
||||
'260203' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 3 ;
|
||||
}
|
||||
#Bottom layer soil temperature
|
||||
'260204' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 4 ;
|
||||
}
|
||||
#Liquid volumetric soil moisture (non-frozen)
|
||||
'260205' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 5 ;
|
||||
}
|
||||
#Number of soil layers in root zone
|
||||
'260206' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 6 ;
|
||||
}
|
||||
#Transpiration stress-onset (soil moisture)
|
||||
'260207' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 7 ;
|
||||
}
|
||||
#Direct evaporation cease (soil moisture)
|
||||
'260208' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 8 ;
|
||||
}
|
||||
#Soil porosity
|
||||
'260209' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 9 ;
|
||||
}
|
||||
#Liquid volumetric soil moisture (non-frozen)
|
||||
'260210' = {
|
||||
discipline = 2 ;
|
||||
|
@ -8432,7 +8378,7 @@
|
|||
parameterCategory = 1 ;
|
||||
parameterNumber = 3 ;
|
||||
}
|
||||
#Estimated u component of wind
|
||||
#Estimated u component of wind
|
||||
'260222' = {
|
||||
discipline = 3 ;
|
||||
parameterCategory = 1 ;
|
||||
|
@ -8696,13 +8642,13 @@
|
|||
parameterCategory = 2 ;
|
||||
parameterNumber = 16 ;
|
||||
}
|
||||
#U-component of current
|
||||
#U-component of current
|
||||
'3049' = {
|
||||
discipline = 10 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 2 ;
|
||||
}
|
||||
#V-component of current
|
||||
#V-component of current
|
||||
'3050' = {
|
||||
discipline = 10 ;
|
||||
parameterCategory = 1 ;
|
||||
|
@ -8913,7 +8859,7 @@
|
|||
parameterCategory = 1 ;
|
||||
parameterNumber = 60 ;
|
||||
}
|
||||
#Snow Fall water equivalent
|
||||
#Snowfall water equivalent
|
||||
'228144' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
|
|
|
@ -0,0 +1,54 @@
|
|||
#Volumetric soil moisture content
|
||||
'260185' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 9 ;
|
||||
}
|
||||
#Upper layer soil temperature
|
||||
'260201' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 1 ;
|
||||
}
|
||||
#Upper layer soil moisture
|
||||
'260202' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 2 ;
|
||||
}
|
||||
#Lower layer soil moisture
|
||||
'260203' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 3 ;
|
||||
}
|
||||
#Bottom layer soil temperature
|
||||
'260204' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 4 ;
|
||||
}
|
||||
#Liquid volumetric soil moisture (non-frozen)
|
||||
'260205' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 5 ;
|
||||
}
|
||||
#Transpiration stress-onset (soil moisture)
|
||||
'260207' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 7 ;
|
||||
}
|
||||
#Direct evaporation cease (soil moisture)
|
||||
'260208' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 8 ;
|
||||
}
|
||||
#Soil porosity
|
||||
'260209' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 9 ;
|
||||
}
|
|
@ -508,7 +508,7 @@
|
|||
parameterCategory = 6 ;
|
||||
parameterNumber = 32 ;
|
||||
}
|
||||
#large scale precipitation
|
||||
#Large-scale precipitation
|
||||
'lsp' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
|
@ -1178,7 +1178,7 @@
|
|||
constituentType = 60057 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Column integrated mass density of Volcanic sulfur dioxide
|
||||
#Column integrated mass density of Volcanic sulfur dioxide
|
||||
'tc_VSO2' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1187,7 +1187,7 @@
|
|||
is_chemical_srcsink = 1 ;
|
||||
sourceSinkChemicalPhysicalProcess = 7 ;
|
||||
}
|
||||
#Column integrated mass density of Aromatic peroxy radical
|
||||
#Column integrated mass density of Aromatic peroxy radical
|
||||
'tc_AROO2' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1195,7 +1195,7 @@
|
|||
constituentType = 60029 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Column integrated mass density of Ethyne
|
||||
#Column integrated mass density of Ethyne
|
||||
'tc_C2H2' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1203,7 +1203,7 @@
|
|||
constituentType = 10010 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Column integrated mass density of Acetonitrile
|
||||
#Column integrated mass density of Acetonitrile
|
||||
'tc_CH3CN' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1211,7 +1211,7 @@
|
|||
constituentType = 10007 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Column integrated mass density of Methyl peroxy nitrate
|
||||
#Column integrated mass density of Methyl peroxy nitrate
|
||||
'tc_CH3O2NO2' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1219,7 +1219,7 @@
|
|||
constituentType = 10055 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Column integrated mass density of Hydrogen cyanide
|
||||
#Column integrated mass density of Hydrogen cyanide
|
||||
'tc_HCN' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1227,7 +1227,7 @@
|
|||
constituentType = 10006 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Column integrated mass density of Hydroperoxy aldehydes type 1
|
||||
#Column integrated mass density of Hydroperoxy aldehydes type 1
|
||||
'tc_HPALD1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1235,7 +1235,7 @@
|
|||
constituentType = 60058 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Column integrated mass density of Hydroperoxy aldehydes type 2
|
||||
#Column integrated mass density of Hydroperoxy aldehydes type 2
|
||||
'tc_HPALD2' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1243,7 +1243,7 @@
|
|||
constituentType = 60059 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Column integrated mass density of Isoprene peroxy type B
|
||||
#Column integrated mass density of Isoprene peroxy type B
|
||||
'tc_ISOPBO2' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1251,7 +1251,7 @@
|
|||
constituentType = 60056 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Column integrated mass density of Isoprene peroxy type D
|
||||
#Column integrated mass density of Isoprene peroxy type D
|
||||
'tc_ISOPDO2' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1259,7 +1259,7 @@
|
|||
constituentType = 60057 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Volcanic sulfur dioxide
|
||||
#Atmosphere emission mass flux of Volcanic sulfur dioxide
|
||||
'e_VSO2' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1268,7 +1268,7 @@
|
|||
is_chemical_srcsink = 1 ;
|
||||
sourceSinkChemicalPhysicalProcess = 7 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Aromatic peroxy radical
|
||||
#Atmosphere emission mass flux of Aromatic peroxy radical
|
||||
'e_AROO2' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1276,7 +1276,7 @@
|
|||
constituentType = 60029 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Ethyne
|
||||
#Atmosphere emission mass flux of Ethyne
|
||||
'e_C2H2' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1284,7 +1284,7 @@
|
|||
constituentType = 10010 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Acetonitrile
|
||||
#Atmosphere emission mass flux of Acetonitrile
|
||||
'e_CH3CN' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1292,7 +1292,7 @@
|
|||
constituentType = 10007 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Methyl peroxy nitrate
|
||||
#Atmosphere emission mass flux of Methyl peroxy nitrate
|
||||
'e_CH3O2NO2' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1300,7 +1300,7 @@
|
|||
constituentType = 10055 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Hydrogen cyanide
|
||||
#Atmosphere emission mass flux of Hydrogen cyanide
|
||||
'e_HCN' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1308,7 +1308,7 @@
|
|||
constituentType = 10006 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Hydroperoxy aldehydes type 1
|
||||
#Atmosphere emission mass flux of Hydroperoxy aldehydes type 1
|
||||
'e_HPALD1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1316,7 +1316,7 @@
|
|||
constituentType = 60058 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Hydroperoxy aldehydes type 2
|
||||
#Atmosphere emission mass flux of Hydroperoxy aldehydes type 2
|
||||
'e_HPALD2' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1324,7 +1324,7 @@
|
|||
constituentType = 60059 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Isoprene peroxy type B
|
||||
#Atmosphere emission mass flux of Isoprene peroxy type B
|
||||
'e_ISOPBO2' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1332,7 +1332,7 @@
|
|||
constituentType = 60056 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Isoprene peroxy type D
|
||||
#Atmosphere emission mass flux of Isoprene peroxy type D
|
||||
'e_ISOPDO2' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1340,7 +1340,7 @@
|
|||
constituentType = 60057 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Dry deposition velocity of Volcanic sulfur dioxide
|
||||
#Dry deposition velocity of Volcanic sulfur dioxide
|
||||
'dv_VSO2' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1349,7 +1349,7 @@
|
|||
is_chemical_srcsink = 1 ;
|
||||
sourceSinkChemicalPhysicalProcess = 7 ;
|
||||
}
|
||||
#Dry deposition velocity of Aromatic peroxy radical
|
||||
#Dry deposition velocity of Aromatic peroxy radical
|
||||
'dv_AROO2' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1357,7 +1357,7 @@
|
|||
constituentType = 60029 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Dry deposition velocity of Ethyne
|
||||
#Dry deposition velocity of Ethyne
|
||||
'dv_C2H2' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1365,7 +1365,7 @@
|
|||
constituentType = 10010 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Dry deposition velocity of Acetonitrile
|
||||
#Dry deposition velocity of Acetonitrile
|
||||
'dv_CH3CN' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1373,7 +1373,7 @@
|
|||
constituentType = 10007 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Dry deposition velocity of Methyl peroxy nitrate
|
||||
#Dry deposition velocity of Methyl peroxy nitrate
|
||||
'dv_CH3O2NO2' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1381,7 +1381,7 @@
|
|||
constituentType = 10055 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Dry deposition velocity of Hydrogen cyanide
|
||||
#Dry deposition velocity of Hydrogen cyanide
|
||||
'dv_HCN' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1389,7 +1389,7 @@
|
|||
constituentType = 10006 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Dry deposition velocity of Hydroperoxy aldehydes type 1
|
||||
#Dry deposition velocity of Hydroperoxy aldehydes type 1
|
||||
'dv_HPALD1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1397,7 +1397,7 @@
|
|||
constituentType = 60058 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Dry deposition velocity of Hydroperoxy aldehydes type 2
|
||||
#Dry deposition velocity of Hydroperoxy aldehydes type 2
|
||||
'dv_HPALD2' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1405,7 +1405,7 @@
|
|||
constituentType = 60059 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Dry deposition velocity of Isoprene peroxy type B
|
||||
#Dry deposition velocity of Isoprene peroxy type B
|
||||
'dv_ISOPBO2' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1413,7 +1413,7 @@
|
|||
constituentType = 60056 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Dry deposition velocity of Isoprene peroxy type D
|
||||
#Dry deposition velocity of Isoprene peroxy type D
|
||||
'dv_ISOPDO2' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -6538,7 +6538,7 @@
|
|||
parameterCategory = 2 ;
|
||||
parameterNumber = 0 ;
|
||||
}
|
||||
#Snow melt
|
||||
#Snowmelt
|
||||
'snom' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 0 ;
|
||||
|
@ -7676,7 +7676,7 @@
|
|||
parameterCategory = 4 ;
|
||||
parameterNumber = 50 ;
|
||||
}
|
||||
#UV index
|
||||
#UV index
|
||||
'uvi' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 4 ;
|
||||
|
@ -8210,12 +8210,6 @@
|
|||
parameterCategory = 0 ;
|
||||
parameterNumber = 8 ;
|
||||
}
|
||||
#Volumetric soil moisture content
|
||||
'soilw' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 9 ;
|
||||
}
|
||||
#Ground heat flux
|
||||
'gflux' = {
|
||||
discipline = 2 ;
|
||||
|
@ -8306,60 +8300,12 @@
|
|||
parameterCategory = 0 ;
|
||||
parameterNumber = 27 ;
|
||||
}
|
||||
#Upper layer soil temperature
|
||||
'uplst' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 1 ;
|
||||
}
|
||||
#Upper layer soil moisture
|
||||
'uplsm' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 2 ;
|
||||
}
|
||||
#Lower layer soil moisture
|
||||
'lowlsm' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 3 ;
|
||||
}
|
||||
#Bottom layer soil temperature
|
||||
'botlst' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 4 ;
|
||||
}
|
||||
#Liquid volumetric soil moisture (non-frozen)
|
||||
'soill' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 5 ;
|
||||
}
|
||||
#Number of soil layers in root zone
|
||||
'rlyrs' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 6 ;
|
||||
}
|
||||
#Transpiration stress-onset (soil moisture)
|
||||
'smref' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 7 ;
|
||||
}
|
||||
#Direct evaporation cease (soil moisture)
|
||||
'smdry' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 8 ;
|
||||
}
|
||||
#Soil porosity
|
||||
'poros' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 9 ;
|
||||
}
|
||||
#Liquid volumetric soil moisture (non-frozen)
|
||||
'liqvsm' = {
|
||||
discipline = 2 ;
|
||||
|
@ -8432,7 +8378,7 @@
|
|||
parameterCategory = 1 ;
|
||||
parameterNumber = 3 ;
|
||||
}
|
||||
#Estimated u component of wind
|
||||
#Estimated u component of wind
|
||||
'estu' = {
|
||||
discipline = 3 ;
|
||||
parameterCategory = 1 ;
|
||||
|
@ -8696,13 +8642,13 @@
|
|||
parameterCategory = 2 ;
|
||||
parameterNumber = 16 ;
|
||||
}
|
||||
#U-component of current
|
||||
#U-component of current
|
||||
'ucurr' = {
|
||||
discipline = 10 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 2 ;
|
||||
}
|
||||
#V-component of current
|
||||
#V-component of current
|
||||
'vcurr' = {
|
||||
discipline = 10 ;
|
||||
parameterCategory = 1 ;
|
||||
|
@ -8913,7 +8859,7 @@
|
|||
parameterCategory = 1 ;
|
||||
parameterNumber = 60 ;
|
||||
}
|
||||
#Snow Fall water equivalent
|
||||
#Snowfall water equivalent
|
||||
'sf' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
|
|
|
@ -0,0 +1,54 @@
|
|||
#Volumetric soil moisture content
|
||||
'soilw' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 9 ;
|
||||
}
|
||||
#Upper layer soil temperature
|
||||
'uplst' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 1 ;
|
||||
}
|
||||
#Upper layer soil moisture
|
||||
'uplsm' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 2 ;
|
||||
}
|
||||
#Lower layer soil moisture
|
||||
'lowlsm' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 3 ;
|
||||
}
|
||||
#Bottom layer soil temperature
|
||||
'botlst' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 4 ;
|
||||
}
|
||||
#Liquid volumetric soil moisture (non-frozen)
|
||||
'soill' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 5 ;
|
||||
}
|
||||
#Transpiration stress-onset (soil moisture)
|
||||
'smref' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 7 ;
|
||||
}
|
||||
#Direct evaporation cease (soil moisture)
|
||||
'smdry' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 8 ;
|
||||
}
|
||||
#Soil porosity
|
||||
'poros' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 9 ;
|
||||
}
|
|
@ -508,7 +508,7 @@
|
|||
parameterCategory = 6 ;
|
||||
parameterNumber = 32 ;
|
||||
}
|
||||
#large scale precipitation
|
||||
#Large-scale precipitation
|
||||
'kg m**-2' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
|
@ -1178,7 +1178,7 @@
|
|||
constituentType = 60057 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Column integrated mass density of Volcanic sulfur dioxide
|
||||
#Column integrated mass density of Volcanic sulfur dioxide
|
||||
'kg m**-2' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1187,7 +1187,7 @@
|
|||
is_chemical_srcsink = 1 ;
|
||||
sourceSinkChemicalPhysicalProcess = 7 ;
|
||||
}
|
||||
#Column integrated mass density of Aromatic peroxy radical
|
||||
#Column integrated mass density of Aromatic peroxy radical
|
||||
'kg m**-2' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1195,7 +1195,7 @@
|
|||
constituentType = 60029 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Column integrated mass density of Ethyne
|
||||
#Column integrated mass density of Ethyne
|
||||
'kg m**-2' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1203,7 +1203,7 @@
|
|||
constituentType = 10010 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Column integrated mass density of Acetonitrile
|
||||
#Column integrated mass density of Acetonitrile
|
||||
'kg m**-2' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1211,7 +1211,7 @@
|
|||
constituentType = 10007 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Column integrated mass density of Methyl peroxy nitrate
|
||||
#Column integrated mass density of Methyl peroxy nitrate
|
||||
'kg m**-2' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1219,7 +1219,7 @@
|
|||
constituentType = 10055 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Column integrated mass density of Hydrogen cyanide
|
||||
#Column integrated mass density of Hydrogen cyanide
|
||||
'kg m**-2' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1227,7 +1227,7 @@
|
|||
constituentType = 10006 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Column integrated mass density of Hydroperoxy aldehydes type 1
|
||||
#Column integrated mass density of Hydroperoxy aldehydes type 1
|
||||
'kg m**-2' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1235,7 +1235,7 @@
|
|||
constituentType = 60058 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Column integrated mass density of Hydroperoxy aldehydes type 2
|
||||
#Column integrated mass density of Hydroperoxy aldehydes type 2
|
||||
'kg m**-2' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1243,7 +1243,7 @@
|
|||
constituentType = 60059 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Column integrated mass density of Isoprene peroxy type B
|
||||
#Column integrated mass density of Isoprene peroxy type B
|
||||
'kg m**-2' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1251,7 +1251,7 @@
|
|||
constituentType = 60056 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Column integrated mass density of Isoprene peroxy type D
|
||||
#Column integrated mass density of Isoprene peroxy type D
|
||||
'kg m**-2' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1259,7 +1259,7 @@
|
|||
constituentType = 60057 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Volcanic sulfur dioxide
|
||||
#Atmosphere emission mass flux of Volcanic sulfur dioxide
|
||||
'kg m**-2 s**-1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1268,7 +1268,7 @@
|
|||
is_chemical_srcsink = 1 ;
|
||||
sourceSinkChemicalPhysicalProcess = 7 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Aromatic peroxy radical
|
||||
#Atmosphere emission mass flux of Aromatic peroxy radical
|
||||
'kg m**-2 s**-1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1276,7 +1276,7 @@
|
|||
constituentType = 60029 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Ethyne
|
||||
#Atmosphere emission mass flux of Ethyne
|
||||
'kg m**-2 s**-1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1284,7 +1284,7 @@
|
|||
constituentType = 10010 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Acetonitrile
|
||||
#Atmosphere emission mass flux of Acetonitrile
|
||||
'kg m**-2 s**-1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1292,7 +1292,7 @@
|
|||
constituentType = 10007 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Methyl peroxy nitrate
|
||||
#Atmosphere emission mass flux of Methyl peroxy nitrate
|
||||
'kg m**-2 s**-1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1300,7 +1300,7 @@
|
|||
constituentType = 10055 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Hydrogen cyanide
|
||||
#Atmosphere emission mass flux of Hydrogen cyanide
|
||||
'kg m**-2 s**-1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1308,7 +1308,7 @@
|
|||
constituentType = 10006 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Hydroperoxy aldehydes type 1
|
||||
#Atmosphere emission mass flux of Hydroperoxy aldehydes type 1
|
||||
'kg m**-2 s**-1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1316,7 +1316,7 @@
|
|||
constituentType = 60058 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Hydroperoxy aldehydes type 2
|
||||
#Atmosphere emission mass flux of Hydroperoxy aldehydes type 2
|
||||
'kg m**-2 s**-1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1324,7 +1324,7 @@
|
|||
constituentType = 60059 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Isoprene peroxy type B
|
||||
#Atmosphere emission mass flux of Isoprene peroxy type B
|
||||
'kg m**-2 s**-1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1332,7 +1332,7 @@
|
|||
constituentType = 60056 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Atmosphere emission mass flux of Isoprene peroxy type D
|
||||
#Atmosphere emission mass flux of Isoprene peroxy type D
|
||||
'kg m**-2 s**-1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1340,7 +1340,7 @@
|
|||
constituentType = 60057 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Dry deposition velocity of Volcanic sulfur dioxide
|
||||
#Dry deposition velocity of Volcanic sulfur dioxide
|
||||
'm s**-1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1349,7 +1349,7 @@
|
|||
is_chemical_srcsink = 1 ;
|
||||
sourceSinkChemicalPhysicalProcess = 7 ;
|
||||
}
|
||||
#Dry deposition velocity of Aromatic peroxy radical
|
||||
#Dry deposition velocity of Aromatic peroxy radical
|
||||
'm s**-1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1357,7 +1357,7 @@
|
|||
constituentType = 60029 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Dry deposition velocity of Ethyne
|
||||
#Dry deposition velocity of Ethyne
|
||||
'm s**-1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1365,7 +1365,7 @@
|
|||
constituentType = 10010 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Dry deposition velocity of Acetonitrile
|
||||
#Dry deposition velocity of Acetonitrile
|
||||
'm s**-1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1373,7 +1373,7 @@
|
|||
constituentType = 10007 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Dry deposition velocity of Methyl peroxy nitrate
|
||||
#Dry deposition velocity of Methyl peroxy nitrate
|
||||
'm s**-1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1381,7 +1381,7 @@
|
|||
constituentType = 10055 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Dry deposition velocity of Hydrogen cyanide
|
||||
#Dry deposition velocity of Hydrogen cyanide
|
||||
'm s**-1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1389,7 +1389,7 @@
|
|||
constituentType = 10006 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Dry deposition velocity of Hydroperoxy aldehydes type 1
|
||||
#Dry deposition velocity of Hydroperoxy aldehydes type 1
|
||||
'm s**-1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1397,7 +1397,7 @@
|
|||
constituentType = 60058 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Dry deposition velocity of Hydroperoxy aldehydes type 2
|
||||
#Dry deposition velocity of Hydroperoxy aldehydes type 2
|
||||
'm s**-1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1405,7 +1405,7 @@
|
|||
constituentType = 60059 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Dry deposition velocity of Isoprene peroxy type B
|
||||
#Dry deposition velocity of Isoprene peroxy type B
|
||||
'm s**-1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -1413,7 +1413,7 @@
|
|||
constituentType = 60056 ;
|
||||
is_chemical = 1 ;
|
||||
}
|
||||
#Dry deposition velocity of Isoprene peroxy type D
|
||||
#Dry deposition velocity of Isoprene peroxy type D
|
||||
'm s**-1' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 20 ;
|
||||
|
@ -6538,7 +6538,7 @@
|
|||
parameterCategory = 2 ;
|
||||
parameterNumber = 0 ;
|
||||
}
|
||||
#Snow melt
|
||||
#Snowmelt
|
||||
'kg m**-2' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 0 ;
|
||||
|
@ -7676,7 +7676,7 @@
|
|||
parameterCategory = 4 ;
|
||||
parameterNumber = 50 ;
|
||||
}
|
||||
#UV index
|
||||
#UV index
|
||||
'Numeric' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 4 ;
|
||||
|
@ -8210,12 +8210,6 @@
|
|||
parameterCategory = 0 ;
|
||||
parameterNumber = 8 ;
|
||||
}
|
||||
#Volumetric soil moisture content
|
||||
'Proportion' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 9 ;
|
||||
}
|
||||
#Ground heat flux
|
||||
'W m**-2' = {
|
||||
discipline = 2 ;
|
||||
|
@ -8306,60 +8300,12 @@
|
|||
parameterCategory = 0 ;
|
||||
parameterNumber = 27 ;
|
||||
}
|
||||
#Upper layer soil temperature
|
||||
'K' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 1 ;
|
||||
}
|
||||
#Upper layer soil moisture
|
||||
'kg m**-3' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 2 ;
|
||||
}
|
||||
#Lower layer soil moisture
|
||||
'kg m**-3' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 3 ;
|
||||
}
|
||||
#Bottom layer soil temperature
|
||||
'K' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 4 ;
|
||||
}
|
||||
#Liquid volumetric soil moisture (non-frozen)
|
||||
'Proportion' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 5 ;
|
||||
}
|
||||
#Number of soil layers in root zone
|
||||
'Numeric' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 6 ;
|
||||
}
|
||||
#Transpiration stress-onset (soil moisture)
|
||||
'Proportion' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 7 ;
|
||||
}
|
||||
#Direct evaporation cease (soil moisture)
|
||||
'Proportion' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 8 ;
|
||||
}
|
||||
#Soil porosity
|
||||
'Proportion' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 9 ;
|
||||
}
|
||||
#Liquid volumetric soil moisture (non-frozen)
|
||||
'm**3 m**-3' = {
|
||||
discipline = 2 ;
|
||||
|
@ -8432,7 +8378,7 @@
|
|||
parameterCategory = 1 ;
|
||||
parameterNumber = 3 ;
|
||||
}
|
||||
#Estimated u component of wind
|
||||
#Estimated u component of wind
|
||||
'm s**-1' = {
|
||||
discipline = 3 ;
|
||||
parameterCategory = 1 ;
|
||||
|
@ -8696,13 +8642,13 @@
|
|||
parameterCategory = 2 ;
|
||||
parameterNumber = 16 ;
|
||||
}
|
||||
#U-component of current
|
||||
#U-component of current
|
||||
'm s**-1' = {
|
||||
discipline = 10 ;
|
||||
parameterCategory = 1 ;
|
||||
parameterNumber = 2 ;
|
||||
}
|
||||
#V-component of current
|
||||
#V-component of current
|
||||
'm s**-1' = {
|
||||
discipline = 10 ;
|
||||
parameterCategory = 1 ;
|
||||
|
@ -8913,7 +8859,7 @@
|
|||
parameterCategory = 1 ;
|
||||
parameterNumber = 60 ;
|
||||
}
|
||||
#Snow Fall water equivalent
|
||||
#Snowfall water equivalent
|
||||
'kg m**-2' = {
|
||||
discipline = 0 ;
|
||||
parameterCategory = 1 ;
|
||||
|
|
|
@ -0,0 +1,54 @@
|
|||
#Volumetric soil moisture content
|
||||
'Proportion' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 0 ;
|
||||
parameterNumber = 9 ;
|
||||
}
|
||||
#Upper layer soil temperature
|
||||
'K' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 1 ;
|
||||
}
|
||||
#Upper layer soil moisture
|
||||
'kg m**-3' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 2 ;
|
||||
}
|
||||
#Lower layer soil moisture
|
||||
'kg m**-3' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 3 ;
|
||||
}
|
||||
#Bottom layer soil temperature
|
||||
'K' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 4 ;
|
||||
}
|
||||
#Liquid volumetric soil moisture (non-frozen)
|
||||
'Proportion' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 5 ;
|
||||
}
|
||||
#Transpiration stress-onset (soil moisture)
|
||||
'Proportion' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 7 ;
|
||||
}
|
||||
#Direct evaporation cease (soil moisture)
|
||||
'Proportion' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 8 ;
|
||||
}
|
||||
#Soil porosity
|
||||
'Proportion' = {
|
||||
discipline = 2 ;
|
||||
parameterCategory = 3 ;
|
||||
parameterNumber = 9 ;
|
||||
}
|
|
@ -15,7 +15,6 @@
|
|||
*/
|
||||
|
||||
#include "eccodes.h"
|
||||
#include <assert.h>
|
||||
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
|
|
|
@ -2781,43 +2781,50 @@ int grib_f_get_real4(int* gid, char* key, float* val, int len){
|
|||
return grib_f_get_real4_( gid, key, val, len);
|
||||
}
|
||||
|
||||
int grib_f_get_real4_array_(int* gid, char* key, float *val, int* size, int len)
|
||||
int grib_f_get_real4_array_(int* gid, char* key, float* val, int* size, int len)
|
||||
{
|
||||
/* See ECC-1579:
|
||||
* Ideally we should be calling:
|
||||
* Ideally we should ALWAYS be calling:
|
||||
* err = grib_get_float_array(h, cast_char(buf,key,len), val, &lsize);
|
||||
*
|
||||
*/
|
||||
*/
|
||||
|
||||
grib_handle *h = get_handle(*gid);
|
||||
int err = GRIB_SUCCESS;
|
||||
grib_handle* h = get_handle(*gid);
|
||||
size_t lsize = *size;
|
||||
char buf[1024];
|
||||
size_t lsize = *size;
|
||||
double* val8 = NULL;
|
||||
size_t i;
|
||||
int err = GRIB_SUCCESS;
|
||||
const int single_precision_mode = (h->context->single_precision != 0);
|
||||
|
||||
if(!h) return GRIB_INVALID_GRIB;
|
||||
if (!h) return GRIB_INVALID_GRIB;
|
||||
|
||||
if(*size)
|
||||
val8 = (double*)grib_context_malloc(h->context,(*size)*(sizeof(double)));
|
||||
else
|
||||
val8 = (double*)grib_context_malloc(h->context,sizeof(double));
|
||||
if (single_precision_mode) {
|
||||
err = grib_get_float_array(h, cast_char(buf, key, len), val, &lsize);
|
||||
}
|
||||
else {
|
||||
double* val8 = NULL;
|
||||
size_t i;
|
||||
|
||||
if(!val8) return GRIB_OUT_OF_MEMORY;
|
||||
if (*size)
|
||||
val8 = (double*)grib_context_malloc(h->context, (*size) * (sizeof(double)));
|
||||
else
|
||||
val8 = (double*)grib_context_malloc(h->context, sizeof(double));
|
||||
|
||||
err = grib_get_double_array(h, cast_char(buf,key,len), val8, &lsize);
|
||||
if (err) {
|
||||
grib_context_free(h->context,val8);
|
||||
return err;
|
||||
if (!val8) return GRIB_OUT_OF_MEMORY;
|
||||
|
||||
err = grib_get_double_array(h, cast_char(buf, key, len), val8, &lsize);
|
||||
if (err) {
|
||||
grib_context_free(h->context, val8);
|
||||
return err;
|
||||
}
|
||||
|
||||
for (i = 0; i < lsize; i++)
|
||||
val[i] = val8[i];
|
||||
|
||||
grib_context_free(h->context, val8);
|
||||
}
|
||||
|
||||
for(i=0;i<lsize;i++)
|
||||
val[i] = val8[i];
|
||||
|
||||
grib_context_free(h->context,val8);
|
||||
|
||||
return err;
|
||||
return err;
|
||||
}
|
||||
|
||||
int grib_f_get_real4_array__(int* gid, char* key, float* val, int* size, int len){
|
||||
return grib_f_get_real4_array_( gid, key, val, size, len);
|
||||
}
|
||||
|
|
|
@ -137,7 +137,6 @@ list( APPEND eccodes_src_files
|
|||
grib_accessor_class_scale.cc
|
||||
grib_accessor_class_from_scale_factor_scaled_value.cc
|
||||
grib_accessor_class_times.cc
|
||||
grib_accessor_class_forward.cc
|
||||
grib_accessor_class_g2bitmap_present.cc
|
||||
grib_accessor_class_ibmfloat.cc
|
||||
grib_accessor_class_ieeefloat.cc
|
||||
|
@ -292,7 +291,6 @@ list( APPEND eccodes_src_files
|
|||
grib_filepool.cc
|
||||
grib_geography.cc
|
||||
grib_handle.cc
|
||||
grib_header_compute.cc
|
||||
grib_hash_keys.cc
|
||||
grib_io.cc
|
||||
grib_trie.cc
|
||||
|
|
|
@ -619,25 +619,25 @@ int codes_bufr_extract_headers_malloc(grib_context* c, const char* filename, cod
|
|||
if (!c)
|
||||
c = grib_context_get_default();
|
||||
if (path_is_directory(filename)) {
|
||||
grib_context_log(c, GRIB_LOG_ERROR, "codes_bufr_extract_headers_malloc: \"%s\" is a directory", filename);
|
||||
grib_context_log(c, GRIB_LOG_ERROR, "%s: \"%s\" is a directory", __func__, filename);
|
||||
return GRIB_IO_PROBLEM;
|
||||
}
|
||||
fp = fopen(filename, "rb");
|
||||
if (!fp) {
|
||||
grib_context_log(c, GRIB_LOG_ERROR, "codes_bufr_extract_headers_malloc: Unable to read file \"%s\"", filename);
|
||||
grib_context_log(c, GRIB_LOG_ERROR, "%s: Unable to read file \"%s\"", __func__, filename);
|
||||
perror(filename);
|
||||
return GRIB_IO_PROBLEM;
|
||||
}
|
||||
err = count_bufr_messages(c, fp, num_messages, strict_mode);
|
||||
if (err) {
|
||||
grib_context_log(c, GRIB_LOG_ERROR, "codes_bufr_extract_headers_malloc: Unable to count BUFR messages in file \"%s\"", filename);
|
||||
grib_context_log(c, GRIB_LOG_ERROR, "%s: Unable to count BUFR messages in file \"%s\"", __func__, filename);
|
||||
fclose(fp);
|
||||
return err;
|
||||
}
|
||||
|
||||
size = *num_messages;
|
||||
if (size == 0) {
|
||||
grib_context_log(c, GRIB_LOG_ERROR, "codes_bufr_extract_headers_malloc: No BUFR messages in file \"%s\"", filename);
|
||||
grib_context_log(c, GRIB_LOG_ERROR, "%s: No BUFR messages in file \"%s\"", __func__, filename);
|
||||
return GRIB_INVALID_MESSAGE;
|
||||
}
|
||||
*result = (codes_bufr_header*)calloc(size, sizeof(codes_bufr_header));
|
||||
|
@ -668,7 +668,7 @@ int codes_bufr_extract_headers_malloc(grib_context* c, const char* filename, cod
|
|||
if (!mesg) {
|
||||
if (err != GRIB_END_OF_FILE && err != GRIB_PREMATURE_END_OF_FILE) {
|
||||
// An error occurred
|
||||
grib_context_log(c, GRIB_LOG_ERROR, "codes_bufr_extract_headers_malloc: Unable to read BUFR message");
|
||||
grib_context_log(c, GRIB_LOG_ERROR, "%s: Unable to read BUFR message", __func__);
|
||||
if (strict_mode) {
|
||||
fclose(fp);
|
||||
return GRIB_DECODING_ERROR;
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
* virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
|
||||
*/
|
||||
|
||||
|
||||
#include "grib_scaling.h"
|
||||
#include "grib_api_internal.h"
|
||||
/*
|
||||
This is used by make_class.pl
|
||||
|
@ -423,7 +423,7 @@ Assert(0);
|
|||
case 7:
|
||||
if (Y) {
|
||||
extraScale = Y;
|
||||
referenceValueFactor = grib_power(Y, 10);
|
||||
referenceValueFactor = grib_power<double>(Y, 10);
|
||||
extraWidth = ((10 * Y) + 2) / 3;
|
||||
}
|
||||
else {
|
||||
|
|
|
@ -0,0 +1,604 @@
|
|||
/* Old implementation. Now superseded. See ECC-441 and ECC-261 */
|
||||
static int pack_double_old(grib_accessor* a, const double* val, size_t *len)
|
||||
{
|
||||
grib_accessor_data_g1second_order_general_extended_packing* self = (grib_accessor_data_g1second_order_general_extended_packing*)a;
|
||||
int ret=0;
|
||||
int grib2=0;
|
||||
long bits_per_value,orderOfSPD,binary_scale_factor;
|
||||
long numberOfValues;
|
||||
double max,min;
|
||||
double decimal,divisor;
|
||||
double reference_value;
|
||||
size_t size,sizebits;
|
||||
long half_byte;
|
||||
long* X;
|
||||
long* Xp;
|
||||
long i;
|
||||
long incrementGroupLengthA,groupWidthA,prevGroupLength,offsetD,remainingValuesB,groupLengthB;
|
||||
long maxB,minB,maxAB,minAB;
|
||||
long offsetBeforeData,offsetSection4;
|
||||
unsigned char* buffer = NULL;
|
||||
long maxWidth,maxLength,widthOfWidths,NL,widthOfLengths,N1,N2,extraValues,codedNumberOfGroups,numberOfSecondOrderPackedValues;
|
||||
long pos;
|
||||
|
||||
long numberOfGroups;
|
||||
long groupLengthC,groupLengthA,remainingValues,count;
|
||||
long maxA=0,minA=0;
|
||||
long maxC,minC,offsetC;
|
||||
long maxAC,minAC;
|
||||
long range,bias=0,maxSPD;
|
||||
long firstOrderValuesMax,offset,groupLength,j,groupWidth,firstOrderValue,lengthOfSecondOrderValues;
|
||||
long *groupLengths,*groupWidths,*firstOrderValues;
|
||||
/* long groupLengths[MAX_NUMBER_OF_GROUPS],groupWidths[MAX_NUMBER_OF_GROUPS],firstOrderValues[MAX_NUMBER_OF_GROUPS]; */
|
||||
|
||||
/* TODO put these parameters in def file */
|
||||
long startGroupLength=15;
|
||||
long incrementGroupLength=3;
|
||||
long minGroupLength=3;
|
||||
long widthOfSPD=0,widthOfBias=0;
|
||||
long *offsets;
|
||||
long widthOfFirstOrderValues;
|
||||
int computeGroupA=1;
|
||||
long dataHeadersLength,widthsLength,lengthsLength,firstOrderValuesLength;
|
||||
long decimal_scale_factor;
|
||||
grib_handle* handle = grib_handle_of_accessor(a);
|
||||
|
||||
self->dirty=1;
|
||||
|
||||
numberOfValues=*len;
|
||||
|
||||
max = val[0];
|
||||
min = max;
|
||||
for(i=1;i< numberOfValues;i++) {
|
||||
if (val[i] > max ) max = val[i];
|
||||
else if (val[i] < min ) min = val[i];
|
||||
}
|
||||
|
||||
/* For constant fields set decimal scale factor to 0 (See GRIB-165) */
|
||||
if (min==max) {
|
||||
grib_set_long_internal(handle,self->decimal_scale_factor, 0);
|
||||
}
|
||||
|
||||
if((ret = grib_get_long_internal(handle,self->decimal_scale_factor, &decimal_scale_factor))
|
||||
!= GRIB_SUCCESS)
|
||||
return ret;
|
||||
decimal = codes_power<double>(decimal_scale_factor,10);
|
||||
|
||||
max*=decimal;
|
||||
min*=decimal;
|
||||
|
||||
if (grib_get_nearest_smaller_value(handle,self->reference_value,min,&reference_value)
|
||||
!=GRIB_SUCCESS) {
|
||||
grib_context_log(a->context,GRIB_LOG_ERROR,
|
||||
"unable to find nearest_smaller_value of %g for %s",min,self->reference_value);
|
||||
return GRIB_INTERNAL_ERROR;
|
||||
}
|
||||
if((ret = grib_set_double_internal(handle,self->reference_value, reference_value)) !=
|
||||
GRIB_SUCCESS)
|
||||
return ret;
|
||||
|
||||
if((ret=grib_get_long_internal(handle,self->bits_per_value,&bits_per_value)) != GRIB_SUCCESS)
|
||||
return ret;
|
||||
|
||||
if((ret=grib_get_long_internal(handle,self->offsetdata,&offsetBeforeData)) != GRIB_SUCCESS)
|
||||
return ret;
|
||||
|
||||
if((ret=grib_get_long_internal(handle,self->offsetsection,&offsetSection4)) != GRIB_SUCCESS)
|
||||
return ret;
|
||||
|
||||
if((ret=grib_get_long_internal(handle,self->orderOfSPD,&orderOfSPD)) != GRIB_SUCCESS)
|
||||
return ret;
|
||||
|
||||
binary_scale_factor = grib_get_binary_scale_fact(max,reference_value,bits_per_value,&ret);
|
||||
if (ret != GRIB_SUCCESS) return ret;
|
||||
|
||||
if((ret = grib_set_long_internal(handle,self->binary_scale_factor, binary_scale_factor)) !=
|
||||
GRIB_SUCCESS)
|
||||
return ret;
|
||||
|
||||
divisor = codes_power<double>(-binary_scale_factor,2);
|
||||
X=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfValues);
|
||||
for(i=0;i< numberOfValues;i++){
|
||||
X[i] = (((val[i]*decimal)-reference_value)*divisor)+0.5;
|
||||
}
|
||||
|
||||
groupLengths=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfValues);
|
||||
groupWidths=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfValues);
|
||||
firstOrderValues=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfValues);
|
||||
|
||||
/* spatial differencing */
|
||||
switch (orderOfSPD) {
|
||||
case 1:
|
||||
for (i=numberOfValues-1;i>0;i--) {
|
||||
X[i]-=X[i-1];
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
for (i=numberOfValues-1;i>1;i--) {
|
||||
X[i]-=2*X[i-1]-X[i-2];
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
for (i=numberOfValues-1;i>2;i--) {
|
||||
X[i]-=3*(X[i-1]-X[i-2])+X[i-3];
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (orderOfSPD) {
|
||||
Assert(orderOfSPD >=0 && orderOfSPD < numberOfValues);
|
||||
bias=X[orderOfSPD];
|
||||
for (i=orderOfSPD+1;i<numberOfValues;i++) {
|
||||
if ( bias > X[i] ) bias=X[i];
|
||||
}
|
||||
for (i=orderOfSPD;i<numberOfValues;i++) {
|
||||
X[i]-=bias;
|
||||
}
|
||||
maxSPD=X[0];
|
||||
for (i=1;i<orderOfSPD;i++) {
|
||||
if ( maxSPD < X[i] ) maxSPD=X[i];
|
||||
}
|
||||
/* widthOfSPD=(long)ceil(log((double)(maxSPD+1))/log(2.0)); */
|
||||
widthOfSPD=number_of_bits(handle, maxSPD);
|
||||
widthOfBias=number_of_bits(handle, labs(bias))+1;
|
||||
|
||||
if ( widthOfSPD < widthOfBias ) widthOfSPD=widthOfBias;
|
||||
|
||||
}
|
||||
/* end of spatial differencing */
|
||||
|
||||
count=orderOfSPD;
|
||||
remainingValues=numberOfValues-count;
|
||||
numberOfGroups=0;
|
||||
incrementGroupLengthA=startGroupLength;
|
||||
|
||||
computeGroupA=1;
|
||||
while (remainingValues) {
|
||||
/* group A created with length=incrementGroupLengthA (if enough values remain)
|
||||
incrementGroupLengthA=startGroupLength always except when coming from an A+C or A+B ok branch
|
||||
*/
|
||||
groupLengthA= incrementGroupLengthA < remainingValues ? incrementGroupLengthA : remainingValues ;
|
||||
if (computeGroupA) {
|
||||
maxA=X[count];
|
||||
minA=X[count];
|
||||
for (i=1;i<groupLengthA;i++) {
|
||||
DebugAssertAccess(X, count+i, numberOfValues);
|
||||
if (maxA<X[count+i]) maxA=X[count+i];
|
||||
if (minA>X[count+i]) minA=X[count+i];
|
||||
}
|
||||
}
|
||||
groupWidthA=number_of_bits(handle, maxA-minA);
|
||||
range=(long)codes_power<double>(groupWidthA,2)-1;
|
||||
|
||||
offsetC=count+groupLengthA;
|
||||
if (offsetC==numberOfValues) {
|
||||
/* no more values close group A and end loop */
|
||||
groupLengths[numberOfGroups]=groupLengthA;
|
||||
groupWidths[numberOfGroups]=groupWidthA;
|
||||
/* firstOrderValues[numberOfGroups]=minA; */
|
||||
/* to optimise the width of first order variable */
|
||||
firstOrderValues[numberOfGroups] = maxA-range > 0 ? maxA-range : 0;
|
||||
numberOfGroups++;
|
||||
break;
|
||||
}
|
||||
|
||||
/* group C created with length=incrementGroupLength (fixed)
|
||||
or remaining values if close to end
|
||||
*/
|
||||
groupLengthC=incrementGroupLength;
|
||||
if ( groupLengthC + offsetC > numberOfValues - startGroupLength/2) {
|
||||
groupLengthC=numberOfValues-offsetC;
|
||||
}
|
||||
maxC=X[offsetC];
|
||||
minC=X[offsetC];
|
||||
for (i=1;i<groupLengthC;i++) {
|
||||
DebugAssertAccess(X, offsetC+i, numberOfValues);
|
||||
if (maxC<X[offsetC+i]) maxC=X[offsetC+i];
|
||||
if (minC>X[offsetC+i]) minC=X[offsetC+i];
|
||||
}
|
||||
|
||||
maxAC= maxA > maxC ? maxA : maxC;
|
||||
minAC= minA < minC ? minA : minC;
|
||||
|
||||
/* check if A+C can be represented with the same width as A*/
|
||||
if (maxAC-minAC > range) {
|
||||
/* A could not be expanded adding C. Check if A could be expanded taking
|
||||
some elements from preceding group. The condition is always that width of
|
||||
A doesn't increase.
|
||||
*/
|
||||
if (numberOfGroups>0 && groupWidths[numberOfGroups-1] > groupWidthA ) {
|
||||
prevGroupLength=groupLengths[numberOfGroups-1]-incrementGroupLength;
|
||||
offsetC=count-incrementGroupLength;
|
||||
/* preceding group length cannot be less than a minimum value */
|
||||
while (prevGroupLength >= minGroupLength) {
|
||||
maxAC=maxA;
|
||||
minAC=minA;
|
||||
for (i=0;i<incrementGroupLength;i++) {
|
||||
if (maxAC<X[offsetC+i]) maxAC=X[offsetC+i];
|
||||
if (minAC>X[offsetC+i]) minAC=X[offsetC+i];
|
||||
}
|
||||
|
||||
/* no more elements can be transfered, exit loop*/
|
||||
if (maxAC-minAC > range) break;
|
||||
|
||||
maxA=maxAC;
|
||||
minA=minAC;
|
||||
groupLengths[numberOfGroups-1]-=incrementGroupLength;
|
||||
groupLengthA+=incrementGroupLength;
|
||||
count-=incrementGroupLength;
|
||||
remainingValues+=incrementGroupLength;
|
||||
|
||||
offsetC-=incrementGroupLength;
|
||||
prevGroupLength-=incrementGroupLength;
|
||||
}
|
||||
}
|
||||
/* close group A*/
|
||||
groupLengths[numberOfGroups]=groupLengthA;
|
||||
groupWidths[numberOfGroups]=groupWidthA;
|
||||
/* firstOrderValues[numberOfGroups]=minA; */
|
||||
/* to optimise the width of first order variable */
|
||||
firstOrderValues[numberOfGroups] = maxA-range > 0 ? maxA-range : 0;
|
||||
count+=groupLengthA;
|
||||
remainingValues-=groupLengthA;
|
||||
numberOfGroups++;
|
||||
/* incrementGroupLengthA is reset to the fixed startGroupLength as it
|
||||
could have been changed after the A+C or A+B ok condition.
|
||||
*/
|
||||
incrementGroupLengthA=startGroupLength;
|
||||
computeGroupA=1;
|
||||
#if 0
|
||||
if (numberOfGroups==MAX_NUMBER_OF_GROUPS) {
|
||||
groupLengthA= remainingValues ;
|
||||
maxA=X[count];
|
||||
minA=X[count];
|
||||
for (i=1;i<groupLengthA;i++) {
|
||||
if (maxA<X[count+i]) maxA=X[count+i];
|
||||
if (minA>X[count+i]) minA=X[count+i];
|
||||
}
|
||||
groupWidthA=number_of_bits(maxA-minA);
|
||||
range=(long)codes_power<double>(groupWidthA,2)-1;
|
||||
groupLengths[numberOfGroups]=groupLengthA;
|
||||
groupWidths[numberOfGroups]=groupWidthA;
|
||||
firstOrderValues[numberOfGroups] = maxA-range > 0 ? maxA-range : 0;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
continue;
|
||||
}
|
||||
|
||||
/* A+C could be coded with the same width as A*/
|
||||
offsetD=offsetC+groupLengthC;
|
||||
if (offsetD==numberOfValues) {
|
||||
groupLengths[numberOfGroups]=groupLengthA+groupLengthC;
|
||||
groupWidths[numberOfGroups]=groupWidthA;
|
||||
|
||||
/* range of AC is the same as A*/
|
||||
/* firstOrderValues[numberOfGroups]=minAC; */
|
||||
/* to optimise the width of first order variable */
|
||||
firstOrderValues[numberOfGroups] = maxAC-range > 0 ? maxAC-range : 0;
|
||||
numberOfGroups++;
|
||||
break;
|
||||
}
|
||||
|
||||
/* group B is created with length startGroupLength, starting at the
|
||||
same offset as C.
|
||||
*/
|
||||
remainingValuesB=numberOfValues-offsetC;
|
||||
groupLengthB= startGroupLength < remainingValuesB ? startGroupLength : remainingValuesB ;
|
||||
maxB=maxC;
|
||||
minB=minC;
|
||||
for (i=groupLengthC;i<groupLengthB;i++) {
|
||||
if (maxB<X[offsetC+i]) maxB=X[offsetC+i];
|
||||
if (minB>X[offsetC+i]) minB=X[offsetC+i];
|
||||
}
|
||||
|
||||
/* check if group B can be coded with a smaller width than A */
|
||||
if (maxB-minB <= range/2 && range>0 ) {
|
||||
|
||||
/* TODO Add code to try if A can be expanded taking some elements
|
||||
from the left (preceding) group.
|
||||
A possible variation is to do this left check (and the previous one)
|
||||
in the final loop when checking that the width of each group.
|
||||
*/
|
||||
|
||||
/* close group A and continue loop*/
|
||||
groupLengths[numberOfGroups]=groupLengthA;
|
||||
groupWidths[numberOfGroups]=groupWidthA;
|
||||
/* firstOrderValues[numberOfGroups]=minA; */
|
||||
/* to optimise the width of first order variable */
|
||||
firstOrderValues[numberOfGroups] = maxA-range > 0 ? maxA-range : 0;
|
||||
count+=groupLengthA;
|
||||
remainingValues-=groupLengthA;
|
||||
numberOfGroups++;
|
||||
#if 0
|
||||
if (numberOfGroups==MAX_NUMBER_OF_GROUPS) {
|
||||
groupLengthA= remainingValues ;
|
||||
maxA=X[count];
|
||||
minA=X[count];
|
||||
for (i=1;i<groupLengthA;i++) {
|
||||
if (maxA<X[count+i]) maxA=X[count+i];
|
||||
if (minA>X[count+i]) minA=X[count+i];
|
||||
}
|
||||
groupWidthA=number_of_bits(maxA-minA);
|
||||
range=(long)codes_power<double>(groupWidthA,2)-1;
|
||||
groupLengths[numberOfGroups]=groupLengthA;
|
||||
groupWidths[numberOfGroups]=groupWidthA;
|
||||
firstOrderValues[numberOfGroups] = maxA-range > 0 ? maxA-range : 0;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
incrementGroupLengthA=startGroupLength;
|
||||
computeGroupA=1;
|
||||
continue;
|
||||
}
|
||||
|
||||
/* check if A+B can be coded with same with as A */
|
||||
maxAB= maxA > maxB ? maxA : maxB;
|
||||
minAB= minA < minB ? minA : minB;
|
||||
if (maxAB-minAB <= range) {
|
||||
/* A+B can be merged. The increment used at the beginning of the loop to
|
||||
build group C is increased to the size of group B
|
||||
*/
|
||||
incrementGroupLengthA+=groupLengthB;
|
||||
maxA=maxAB;
|
||||
minA=minAB;
|
||||
computeGroupA=0;
|
||||
continue;
|
||||
}
|
||||
|
||||
/* A+B cannot be merged, A+C can be merged*/
|
||||
incrementGroupLengthA+=groupLengthC;
|
||||
computeGroupA=1;
|
||||
|
||||
} /* end of the while*/
|
||||
|
||||
/* computing bitsPerValue as the number of bits needed to represent
|
||||
the firstOrderValues.
|
||||
*/
|
||||
max=firstOrderValues[0];
|
||||
min=firstOrderValues[0];
|
||||
for (i=1;i<numberOfGroups;i++) {
|
||||
if (max<firstOrderValues[i]) max=firstOrderValues[i];
|
||||
if (min>firstOrderValues[i]) min=firstOrderValues[i];
|
||||
}
|
||||
widthOfFirstOrderValues=number_of_bits(handle, max-min);
|
||||
firstOrderValuesMax=(long)codes_power<double>(widthOfFirstOrderValues,2)-1;
|
||||
|
||||
if (numberOfGroups>2) {
|
||||
/* loop through all the groups except the last in reverse order to
|
||||
check if each group width is still appropriate for the group.
|
||||
Focus on groups which have been shrank as left groups of an A group taking
|
||||
some of their elements.
|
||||
*/
|
||||
offsets=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfGroups);
|
||||
offsets[0]=orderOfSPD;
|
||||
for (i=1;i<numberOfGroups;i++) offsets[i]=offsets[i-1]+groupLengths[i-1];
|
||||
for (i=numberOfGroups-2;i>=0;i--) {
|
||||
offset=offsets[i];
|
||||
groupLength=groupLengths[i];
|
||||
|
||||
if (groupLength >= startGroupLength) continue;
|
||||
|
||||
max=X[offset];
|
||||
min=X[offset];
|
||||
for (j=1;j<groupLength;j++) {
|
||||
if (max<X[offset+j]) max=X[offset+j];
|
||||
if (min>X[offset+j]) min=X[offset+j];
|
||||
}
|
||||
groupWidth=number_of_bits(handle, max-min);
|
||||
range=(long)codes_power<double>(groupWidth,2)-1;
|
||||
|
||||
/* width of first order values has to be unchanged.*/
|
||||
for (j=groupWidth;j<groupWidths[i];j++) {
|
||||
firstOrderValue= max>range ? max-range : 0;
|
||||
if (firstOrderValue <= firstOrderValuesMax ) {
|
||||
groupWidths[i]=j;
|
||||
firstOrderValues[i]=firstOrderValue;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
offsetC=offset;
|
||||
/* group width of the current group (i) can have been reduced
|
||||
and it is worth to try to expand the group to get some elements
|
||||
from the left group if it has bigger width.
|
||||
*/
|
||||
if (i>0 && (groupWidths[i-1] > groupWidths[i]) ) {
|
||||
prevGroupLength=groupLengths[i-1]-incrementGroupLength;
|
||||
offsetC-=incrementGroupLength;
|
||||
while (prevGroupLength >= minGroupLength) {
|
||||
for (j=0;j<incrementGroupLength;j++) {
|
||||
if (max<X[offsetC+j]) max=X[offsetC+j];
|
||||
if (min>X[offsetC+j]) min=X[offsetC+j];
|
||||
}
|
||||
|
||||
/* width of first order values has to be unchanged*/
|
||||
firstOrderValue=max>range ? max-range : 0;
|
||||
if (max-min > range || firstOrderValue > firstOrderValuesMax ) break;
|
||||
|
||||
groupLengths[i-1]-=incrementGroupLength;
|
||||
groupLengths[i]+=incrementGroupLength;
|
||||
firstOrderValues[i]=firstOrderValue;
|
||||
|
||||
offsetC-=incrementGroupLength;
|
||||
prevGroupLength-=incrementGroupLength;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
grib_context_free(a->context,offsets);
|
||||
}
|
||||
|
||||
maxWidth=groupWidths[0];
|
||||
maxLength=groupLengths[0];
|
||||
for (i=1;i<numberOfGroups;i++) {
|
||||
if (maxWidth<groupWidths[i]) maxWidth=groupWidths[i];
|
||||
if (maxLength<groupLengths[i]) maxLength=groupLengths[i];
|
||||
}
|
||||
|
||||
if (maxWidth < 0 || maxLength < 0) {
|
||||
grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Cannot compute parameters for second order packing.");
|
||||
return GRIB_ENCODING_ERROR;
|
||||
}
|
||||
widthOfWidths=number_of_bits(handle, maxWidth);
|
||||
widthOfLengths=number_of_bits(handle, maxLength);
|
||||
|
||||
lengthOfSecondOrderValues=0;
|
||||
for ( i=0; i<numberOfGroups;i++) {
|
||||
lengthOfSecondOrderValues+=groupLengths[i]*groupWidths[i];
|
||||
}
|
||||
|
||||
if (!a->context->no_big_group_split) {
|
||||
grib_split_long_groups(handle, a->context,&numberOfGroups,&lengthOfSecondOrderValues,
|
||||
groupLengths,&widthOfLengths,groupWidths,widthOfWidths,
|
||||
firstOrderValues,widthOfFirstOrderValues);
|
||||
}
|
||||
|
||||
Xp=X+orderOfSPD;
|
||||
for ( i=0; i<numberOfGroups;i++) {
|
||||
for (j=0; j<groupLengths[i]; j++) {
|
||||
*(Xp++)-=firstOrderValues[i];
|
||||
}
|
||||
}
|
||||
|
||||
/* start writing to message */
|
||||
|
||||
/* writing SPD */
|
||||
if (orderOfSPD) {
|
||||
if((ret = grib_set_long_internal(handle,self->widthOfSPD, widthOfSPD))
|
||||
!= GRIB_SUCCESS)
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* end writing SPD */
|
||||
if((ret = grib_set_long_internal(handle,self->widthOfFirstOrderValues, widthOfFirstOrderValues))
|
||||
!= GRIB_SUCCESS)
|
||||
return ret;
|
||||
|
||||
dataHeadersLength=25;
|
||||
if (orderOfSPD) dataHeadersLength+=1+((orderOfSPD+1)*widthOfSPD+7)/8;
|
||||
widthsLength=(widthOfWidths*numberOfGroups+7)/8;
|
||||
lengthsLength=(widthOfLengths*numberOfGroups+7)/8;
|
||||
firstOrderValuesLength=(widthOfFirstOrderValues*numberOfGroups+7)/8;
|
||||
|
||||
NL=widthsLength+dataHeadersLength+1;
|
||||
N1=NL+lengthsLength;
|
||||
N2=N1+firstOrderValuesLength;
|
||||
|
||||
NL= NL > 65535 ? 65535 : NL;
|
||||
N2= N2 > 65535 ? 65535 : N2;
|
||||
N1= N1 > 65535 ? 65535 : N1;
|
||||
|
||||
grib_set_long(handle,self->NL, NL);
|
||||
grib_set_long(handle,self->N1, N1);
|
||||
grib_set_long(handle,self->N2, N2);
|
||||
|
||||
if (numberOfGroups > 65535 ) {
|
||||
extraValues=numberOfGroups/65536;
|
||||
codedNumberOfGroups=numberOfGroups%65536;
|
||||
} else {
|
||||
extraValues=0;
|
||||
codedNumberOfGroups=numberOfGroups;
|
||||
}
|
||||
|
||||
/* if no extraValues key present it is a GRIB2*/
|
||||
grib2=0;
|
||||
if((ret = grib_set_long(handle,self->extraValues, extraValues)) != GRIB_SUCCESS) {
|
||||
codedNumberOfGroups=numberOfGroups;
|
||||
grib2=1;
|
||||
}
|
||||
|
||||
if((ret = grib_set_long_internal(handle,self->codedNumberOfGroups, codedNumberOfGroups)) != GRIB_SUCCESS)
|
||||
return ret;
|
||||
|
||||
numberOfSecondOrderPackedValues=numberOfValues-orderOfSPD;
|
||||
if (!grib2 && numberOfSecondOrderPackedValues > 65535 )
|
||||
numberOfSecondOrderPackedValues= 65535;
|
||||
|
||||
if((ret = grib_set_long_internal(handle,self->numberOfSecondOrderPackedValues, numberOfSecondOrderPackedValues))
|
||||
!= GRIB_SUCCESS)
|
||||
return ret;
|
||||
|
||||
if (grib2) {
|
||||
if((ret = grib_set_long_internal(handle,self->bits_per_value, bits_per_value)) != GRIB_SUCCESS)
|
||||
return ret;
|
||||
} else {
|
||||
if((ret = grib_set_long_internal(handle,self->bits_per_value, 0)) != GRIB_SUCCESS)
|
||||
return ret;
|
||||
}
|
||||
|
||||
if((ret = grib_set_long_internal(handle,self->widthOfWidths, widthOfWidths)) != GRIB_SUCCESS)
|
||||
return ret;
|
||||
|
||||
if((ret = grib_set_long_internal(handle,self->widthOfLengths, widthOfLengths)) != GRIB_SUCCESS)
|
||||
return ret;
|
||||
|
||||
lengthOfSecondOrderValues=0;
|
||||
for ( i=0; i<numberOfGroups;i++) {
|
||||
lengthOfSecondOrderValues+=groupLengths[i]*groupWidths[i];
|
||||
}
|
||||
|
||||
size=(lengthOfSecondOrderValues+7)/8;
|
||||
sizebits=lengthOfSecondOrderValues;
|
||||
|
||||
/* padding section 4 to an even number of octets*/
|
||||
size = (size+offsetBeforeData-offsetSection4) % 2 ? size+1 : size;
|
||||
half_byte=8*size-sizebits;
|
||||
if((ret = grib_set_long_internal(handle,self->half_byte, half_byte)) != GRIB_SUCCESS)
|
||||
return ret;
|
||||
|
||||
buffer=(unsigned char*)grib_context_malloc_clear(a->context,size);
|
||||
|
||||
pos=0;
|
||||
if (orderOfSPD) {
|
||||
long SPD[4]={0,};
|
||||
size_t nSPD=orderOfSPD+1;
|
||||
Assert(orderOfSPD<=3);
|
||||
for (i=0;i<orderOfSPD;i++) SPD[i]=X[i];
|
||||
SPD[orderOfSPD]=bias;
|
||||
ret=grib_set_long_array_internal(handle,self->SPD,SPD,nSPD);
|
||||
if(ret) return ret;
|
||||
}
|
||||
|
||||
ret=grib_set_long_array_internal(handle,self->groupWidths,groupWidths,(size_t)numberOfGroups);
|
||||
if(ret) return ret;
|
||||
|
||||
ret=grib_set_long_array_internal(handle,self->groupLengths,groupLengths,(size_t)numberOfGroups);
|
||||
if(ret) return ret;
|
||||
|
||||
ret=grib_set_long_array_internal(handle,self->firstOrderValues,firstOrderValues,(size_t)numberOfGroups);
|
||||
if(ret) return ret;
|
||||
|
||||
Xp=X+orderOfSPD;
|
||||
pos=0;
|
||||
count=0;
|
||||
for (i=0;i<numberOfGroups;i++) {
|
||||
if (groupWidths[i]>0) {
|
||||
for (j=0;j<groupLengths[i];j++) {
|
||||
#if EFDEBUG
|
||||
printf("CXXXXX %ld %ld %ld %ld\n",count,*Xp,groupWidths[i],groupLengths[i]);
|
||||
count++;
|
||||
#endif
|
||||
grib_encode_unsigned_longb(buffer,*(Xp++),&pos,groupWidths[i]);
|
||||
}
|
||||
} else {
|
||||
Xp+=groupLengths[i];
|
||||
#if EFDEBUG
|
||||
count+=groupLengths[i];
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
/* ECC-259: Set correct number of values */
|
||||
ret=grib_set_long_internal(a->parent->h,self->number_of_values, *len);
|
||||
if(ret) return ret;
|
||||
|
||||
grib_buffer_replace(a, buffer, size,1,1);
|
||||
|
||||
grib_context_free(a->context,buffer);
|
||||
grib_context_free(a->context,X);
|
||||
grib_context_free(a->context,groupLengths);
|
||||
grib_context_free(a->context,groupWidths);
|
||||
grib_context_free(a->context,firstOrderValues);
|
||||
|
||||
return ret;
|
||||
}
|
|
@ -0,0 +1,73 @@
|
|||
|
||||
static int unpack_long(grib_accessor* a, long* val, size_t *len)
|
||||
{
|
||||
grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a;
|
||||
int err = 0;
|
||||
long start_step;
|
||||
long unit;
|
||||
long coded_unit;
|
||||
long coded_time_range, typeOfTimeIncrement, numberOfTimeRange;
|
||||
long coded_time_range_sec=0;
|
||||
int factor;
|
||||
long u2sf,u2sf_step_unit;
|
||||
int add_time_range = 1; /* whether we add lengthOfTimeRange */
|
||||
|
||||
grib_handle* h=grib_handle_of_accessor(a);
|
||||
|
||||
if((err = grib_get_long_internal(h,self->start_step,&start_step))) return err;
|
||||
|
||||
/*point in time */
|
||||
if (self->year == NULL) {
|
||||
*val=start_step;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if((err = grib_get_long_internal(h,self->unit,&unit))) return err;
|
||||
|
||||
if((err = grib_get_long_internal(h,self->coded_unit,&coded_unit))) return err;
|
||||
if((err = grib_get_long_internal(h,self->coded_time_range, &coded_time_range))) return err;
|
||||
if((err = grib_get_long_internal(h,self->typeOfTimeIncrement, &typeOfTimeIncrement))) return err;
|
||||
if((err = grib_get_long_internal(h,self->numberOfTimeRange, &numberOfTimeRange))) return err;
|
||||
|
||||
Assert(numberOfTimeRange == 1 || numberOfTimeRange == 2);
|
||||
|
||||
err = convert_time_range(h, unit, coded_unit, &coded_time_range);
|
||||
if (err != GRIB_SUCCESS) return err;
|
||||
|
||||
#if 0
|
||||
if (coded_unit!=unit) {
|
||||
coded_time_range_sec=coded_time_range*u2s2[coded_unit];
|
||||
if (coded_time_range_sec<0) {
|
||||
factor=60;
|
||||
if (u2s2[coded_unit] % factor) return GRIB_DECODING_ERROR;
|
||||
if (u2s[unit] % factor) return GRIB_DECODING_ERROR;
|
||||
u2sf=u2s2[coded_unit]/factor;
|
||||
coded_time_range_sec=coded_time_range*u2sf;
|
||||
u2sf_step_unit=u2s[unit]/factor;
|
||||
} else {
|
||||
u2sf_step_unit=u2s[unit];
|
||||
}
|
||||
if (coded_time_range_sec % u2sf_step_unit!=0) {
|
||||
grib_context_log(h->context,GRIB_LOG_ERROR,"unable to convert endStep in stepUnits");
|
||||
return GRIB_WRONG_STEP_UNIT;
|
||||
}
|
||||
coded_time_range = coded_time_range_sec / u2sf_step_unit;
|
||||
}
|
||||
#endif
|
||||
if (typeOfTimeIncrement == 1) {
|
||||
/* See GRIB-488 */
|
||||
/* Note: For this case, lengthOfTimeRange is not related to step and should not be used to calculate step */
|
||||
add_time_range = 0;
|
||||
if (is_special_expver(h)) {
|
||||
add_time_range = 1;
|
||||
}
|
||||
}
|
||||
if (add_time_range) {
|
||||
*val = start_step + coded_time_range;
|
||||
} else {
|
||||
*val = start_step;
|
||||
}
|
||||
|
||||
return GRIB_SUCCESS;
|
||||
}
|
||||
|
|
@ -0,0 +1,67 @@
|
|||
#if 0
|
||||
/*Legacy mode*/
|
||||
static long num_points_reduced_gauss_old(grib_handle* h, long nj, long pl[],
|
||||
long max_pl, double lats[],
|
||||
double angular_precision,
|
||||
double lat_first, double lat_last,
|
||||
double lon_first, double lon_last)
|
||||
{
|
||||
long result=0;
|
||||
int is_global=0;
|
||||
size_t plsize=0;
|
||||
long ilon_first=0,ilon_last=0;
|
||||
double lon_first_row=0,lon_last_row=0;
|
||||
float d = 0;
|
||||
is_global=is_gaussian_global(lat_first,lat_last,lon_first,lon_last,max_pl,lats,angular_precision);
|
||||
d=fabs(lats[0]-lats[1]);
|
||||
if ( !is_global ) {
|
||||
long j = 0;
|
||||
/*sub area*/
|
||||
(void)d;
|
||||
#if EFDEBUG
|
||||
printf("-------- subarea fabs(lat_first-lats[0])=%g d=%g\n",fabs(lat_first-lats[0]),d);
|
||||
printf("-------- subarea fabs(lat_last+lats[0])=%g d=%g\n",fabs(lat_last+lats[0]),d);
|
||||
printf("-------- subarea lon_last=%g order=%ld 360.0-90.0/order=%g\n",
|
||||
lon_last,order,360.0-90.0/order);
|
||||
printf("-------- subarea lon_first=%g fabs(lon_last -( 360.0-90.0/order))=%g 90.0/order=%g\n",
|
||||
lon_first,fabs(lon_last - (360.0-90.0/order)),90.0/order);
|
||||
#endif
|
||||
for (j=0;j<nj;j++) {
|
||||
long row_count=0;
|
||||
#if EFDEBUG
|
||||
printf("-- %d ",j);
|
||||
#endif
|
||||
grib_get_reduced_row(pl[j],lon_first,lon_last,&row_count,&ilon_first,&ilon_last);
|
||||
lon_first_row=((ilon_first)*360.0)/pl[j];
|
||||
lon_last_row=((ilon_last)*360.0)/pl[j];
|
||||
result += row_count;
|
||||
(void)lon_last_row;
|
||||
(void)lon_first_row;
|
||||
#if EFDEBUG
|
||||
printf(" ilon_first=%ld lon_first=%.10e ilon_last=%ld lon_last=%.10e count=%ld row_count=%ld\n",
|
||||
ilon_first,lon_first_row,ilon_last,lon_last_row,result,row_count);
|
||||
#endif
|
||||
}
|
||||
} else {
|
||||
int i = 0;
|
||||
result=0;
|
||||
for (i=0;i<plsize;i++) result += pl[i];
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/* New MIR compatible way */
|
||||
static long num_points_reduced_gauss_new(grib_handle* h, long nj, long pl[], double lon_first, double lon_last)
|
||||
{
|
||||
long result = 0;
|
||||
long j;
|
||||
/* Always assume sub area */
|
||||
for (j=0;j<nj;j++) {
|
||||
long row_count=0;
|
||||
long ilon_first=0,ilon_last=0;
|
||||
grib_get_reduced_row2(pl[j], lon_first, lon_last, &row_count, &ilon_first, &ilon_last);
|
||||
result += row_count;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
#endif
|
|
@ -15,9 +15,9 @@
|
|||
*/
|
||||
|
||||
#include "grib_api_internal.h"
|
||||
#include <math.h>
|
||||
#include <cmath>
|
||||
#include <signal.h>
|
||||
#include <ctype.h>
|
||||
#include <cctype>
|
||||
#include <stdlib.h>
|
||||
|
||||
static grib_math* readpower(grib_context* c, char** form, int* err);
|
||||
|
@ -48,7 +48,7 @@ static long op_neg(long a) {return -a;}
|
|||
|
||||
static double op_neg_d(double a) {return -a;}
|
||||
|
||||
static long op_pow(long a, long b) {return grib_power(a,b);}
|
||||
static long op_pow(long a, long b) {return codes_power<double>(a,b);}
|
||||
static long op_add(long a, long b) {return a+b;}
|
||||
static long op_sub(long a, long b) {return a-b;}
|
||||
static long op_div(long a, long b) {return a/b;}
|
|
@ -0,0 +1,109 @@
|
|||
static int find(grib_nearest* nearest, grib_handle* h,
|
||||
double inlat, double inlon,unsigned long flags,
|
||||
double* outlats,double* outlons,
|
||||
double *values,double *distances,int* indexes, size_t *len) {
|
||||
grib_nearest_regular* self = (grib_nearest_regular*) nearest;
|
||||
int ret=0,kk=0,ii=0,jj=0;
|
||||
size_t nvalues=0;
|
||||
double radiusInKm;
|
||||
|
||||
if ((ret = grib_nearest_get_radius(h, &radiusInKm)) != GRIB_SUCCESS)
|
||||
return ret;
|
||||
|
||||
if (!nearest->h || (flags & GRIB_NEAREST_SAME_DATA)==0 || nearest->h!=h) {
|
||||
grib_iterator* iter=NULL;
|
||||
double lat=0,lon=0;
|
||||
|
||||
if( (ret = grib_get_size(h,self->values_key,&nvalues))!= GRIB_SUCCESS)
|
||||
return ret;
|
||||
nearest->values_count = nvalues;
|
||||
if (nearest->values) grib_context_free(nearest->context,nearest->values);
|
||||
nearest->values = grib_context_malloc(h->context,nvalues*sizeof(double));
|
||||
if (!nearest->values) return GRIB_OUT_OF_MEMORY;
|
||||
|
||||
ret=grib_get_double_array_internal( h,self->values_key,
|
||||
nearest->values,&(nearest->values_count));
|
||||
if (ret!=GRIB_SUCCESS) grib_context_log(nearest->context,GRIB_LOG_ERROR,
|
||||
"nearest: unable to get values array");
|
||||
|
||||
if (!nearest->h || (flags & GRIB_NEAREST_SAME_GRID)==0) {
|
||||
double dummy=0;
|
||||
double olat=1.e10, olon=1.e10;
|
||||
int ilat=0,ilon=0;
|
||||
long n=0;
|
||||
|
||||
if( (ret = grib_get_long(h,self->Ni,&n))!= GRIB_SUCCESS)
|
||||
return ret;
|
||||
self->lons_count=n;
|
||||
|
||||
if( (ret = grib_get_long(h,self->Nj,&n))!= GRIB_SUCCESS)
|
||||
return ret;
|
||||
self->lats_count=n;
|
||||
|
||||
if (self->lats) grib_context_free(nearest->context,self->lats);
|
||||
self->lats=grib_context_malloc( nearest->context,
|
||||
self->lats_count* sizeof(double));
|
||||
if (!self->lats) return GRIB_OUT_OF_MEMORY;
|
||||
|
||||
if (self->lons) grib_context_free(nearest->context,self->lons);
|
||||
self->lons=grib_context_malloc( nearest->context,
|
||||
self->lons_count*sizeof(double));
|
||||
if (!self->lons) return GRIB_OUT_OF_MEMORY;
|
||||
|
||||
iter=grib_iterator_new(h,0,&ret);
|
||||
if (ret) {
|
||||
grib_context_log(nearest->context,GRIB_LOG_ERROR,"unable to create iterator");
|
||||
return ret;
|
||||
}
|
||||
while(grib_iterator_next(iter,&lat,&lon,&dummy)) {
|
||||
if (olat != lat) {
|
||||
self->lats[ilat++]=lat;
|
||||
olat=lat;
|
||||
}
|
||||
if (ilon<self->lons_count && olon != lon) {
|
||||
self->lons[ilon++]=lon;
|
||||
olon=lon;
|
||||
}
|
||||
}
|
||||
grib_iterator_delete(iter);
|
||||
|
||||
}
|
||||
nearest->h=h;
|
||||
}
|
||||
|
||||
if (!self->distances || (flags & GRIB_NEAREST_SAME_POINT)==0
|
||||
|| (flags & GRIB_NEAREST_SAME_GRID)==0) {
|
||||
|
||||
grib_binary_search(self->lats,self->lats_count-1,inlat,
|
||||
&(self->j[0]),&(self->j[1]));
|
||||
grib_binary_search(self->lons,self->lons_count-1,inlon,
|
||||
&(self->i[0]),&(self->i[1]));
|
||||
if (!self->distances)
|
||||
self->distances=(double*)grib_context_malloc( nearest->context,NUM_NEIGHBOURS*sizeof(double));
|
||||
if (!self->k)
|
||||
self->k=(int*)grib_context_malloc( nearest->context,NUM_NEIGHBOURS*sizeof(int));
|
||||
kk=0;
|
||||
for (ii=0;ii<2;ii++) {
|
||||
for (jj=0;jj<2;jj++) {
|
||||
self->k[kk]=self->i[ii]+self->lons_count*self->j[jj]-1;
|
||||
self->distances[kk]=geographic_distance_spherical(radius,inlon,inlat,
|
||||
self->lons[self->i[ii]],self->lats[self->j[jj]]);
|
||||
kk++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
kk=0;
|
||||
for (ii=0;ii<2;ii++) {
|
||||
for (jj=0;jj<2;jj++) {
|
||||
distances[kk]=self->distances[kk];
|
||||
outlats[kk]=self->lats[self->j[jj]];
|
||||
outlons[kk]=self->lons[self->i[ii]];
|
||||
values[kk]=nearest->values[self->k[kk]];
|
||||
indexes[kk]=self->k[kk];
|
||||
kk++;
|
||||
}
|
||||
}
|
||||
|
||||
return GRIB_SUCCESS;
|
||||
}
|
|
@ -267,8 +267,6 @@ grib_viarray* grib_viarray_new(grib_context* c, size_t size, size_t incsize);
|
|||
grib_viarray* grib_viarray_push(grib_context* c, grib_viarray* v, grib_iarray* val);
|
||||
void grib_viarray_delete(grib_context* c, grib_viarray* v);
|
||||
void grib_viarray_delete_content(grib_context* c, grib_viarray* v);
|
||||
grib_iarray** grib_viarray_get_array(grib_context* c, grib_viarray* v);
|
||||
size_t grib_viarray_used_size(grib_viarray* v);
|
||||
|
||||
/* grib_accessor_class_array.cc*/
|
||||
|
||||
|
@ -488,8 +486,6 @@ int grib_g1_step_get_steps(grib_accessor* a, long* start, long* theEnd);
|
|||
|
||||
/* grib_accessor_class_times.cc*/
|
||||
|
||||
/* grib_accessor_class_forward.cc*/
|
||||
|
||||
/* grib_accessor_class_g2bitmap_present.cc*/
|
||||
|
||||
/* grib_accessor_class_ibmfloat.cc*/
|
||||
|
@ -1072,11 +1068,6 @@ int grib_handle_prepare_action(grib_handle* h, grib_action* a);
|
|||
void grib_multi_support_reset_file(grib_context* c, FILE* f);
|
||||
void grib_multi_support_reset(grib_context* c);
|
||||
|
||||
/* grib_header_compute.cc*/
|
||||
void print_math(grib_math* m);
|
||||
void grib_math_delete(grib_context* c, grib_math* m);
|
||||
grib_math* grib_math_new(grib_context* c, const char* formula, int* err);
|
||||
|
||||
/* grib_hash_keys.cc*/
|
||||
const struct grib_keys_hash* grib_keys_hash_get(const char* str, size_t len);
|
||||
grib_itrie* grib_hash_keys_new(grib_context* c, int* count);
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
* virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
|
||||
*/
|
||||
|
||||
#include "grib_scaling.h"
|
||||
#include "grib_api_internal.h"
|
||||
|
||||
long grib_op_eq(long a, long b)
|
||||
|
@ -69,7 +70,7 @@ double grib_op_neg_d(double a)
|
|||
long grib_op_pow(long a, long b)
|
||||
{
|
||||
/* Note: This is actually 'a' to the power 'b' */
|
||||
return grib_power(b, a);
|
||||
return codes_power<double>(b, a);
|
||||
}
|
||||
|
||||
long grib_op_add(long a, long b)
|
||||
|
|
|
@ -162,11 +162,11 @@ grib_accessor* grib_accessor_factory(grib_section* p, grib_action* creator,
|
|||
|
||||
if (p->block->last) {
|
||||
a->offset = grib_get_next_position_offset(p->block->last);
|
||||
#if 0
|
||||
printf("offset: p->block->last %s %s %ld %ld\n",
|
||||
p->block->last->cclass->name,
|
||||
p->block->last->name,(long)p->block->last->offset,(long)p->block->last->length);
|
||||
#endif
|
||||
|
||||
//printf("offset: p->block->last %s %s %ld %ld\n",
|
||||
// p->block->last->cclass->name,
|
||||
// p->block->last->name,(long)p->block->last->offset,(long)p->block->last->length);
|
||||
|
||||
}
|
||||
else {
|
||||
if (p->owner) {
|
||||
|
@ -354,54 +354,41 @@ int grib_get_block_length(grib_section* s, size_t* l)
|
|||
{
|
||||
*l = s->length;
|
||||
return GRIB_SUCCESS;
|
||||
#if 0
|
||||
|
||||
/* TODO: Because grib_pack_long takes a SIGNED value, we may have problems */
|
||||
// TODO: Because grib_pack_long takes a SIGNED value, we may have problems
|
||||
// if(s->aclength) {
|
||||
// size_t len = 1;
|
||||
// long plen = 0;
|
||||
|
||||
if(s->aclength)
|
||||
{
|
||||
size_t len = 1;
|
||||
long plen = 0;
|
||||
// int ret = grib_unpack_long(s->aclength, &plen, &len);
|
||||
// if(ret == GRIB_SUCCESS && plen != 0)
|
||||
// {
|
||||
// *l = plen;
|
||||
// return GRIB_SUCCESS;
|
||||
// }
|
||||
// }
|
||||
|
||||
int ret = grib_unpack_long(s->aclength, &plen, &len);
|
||||
if(ret == GRIB_SUCCESS && plen != 0)
|
||||
{
|
||||
*l = plen;
|
||||
return GRIB_SUCCESS;
|
||||
}
|
||||
}
|
||||
// // empty block
|
||||
// if(s->block->first == NULL) {
|
||||
// *l = 0;
|
||||
// return GRIB_SUCCESS;
|
||||
// }
|
||||
// // no accessor for block length
|
||||
// if(s->owner) *l = grib_get_next_position_offset(s->block->last) - s->owner->offset;
|
||||
// else *l = grib_get_next_position_offset(s->block->last);
|
||||
|
||||
/* empty block */
|
||||
if(s->block->first == NULL)
|
||||
{
|
||||
*l = 0;
|
||||
return GRIB_SUCCESS;
|
||||
}
|
||||
/* no accessor for block length */
|
||||
if(s->owner)
|
||||
*l = grib_get_next_position_offset(s->block->last) - s->owner->offset;
|
||||
else
|
||||
*l = grib_get_next_position_offset(s->block->last);
|
||||
// if(s->aclength) {
|
||||
// size_t len = 1;
|
||||
// long plen = *l;
|
||||
|
||||
|
||||
if(s->aclength)
|
||||
{
|
||||
size_t len = 1;
|
||||
long plen = *l;
|
||||
|
||||
int ret = grib_pack_long(s->aclength, &plen, &len);
|
||||
if(ret != GRIB_SUCCESS)
|
||||
;
|
||||
if(s->h->context->debug)
|
||||
printf("SECTION updating length %ld %s\n",plen,s->owner->name);
|
||||
}
|
||||
|
||||
/*
|
||||
if(s->aclength)
|
||||
Assert(*l == plen);*/
|
||||
|
||||
return GRIB_SUCCESS;
|
||||
#endif
|
||||
// int ret = grib_pack_long(s->aclength, &plen, &len);
|
||||
// if(ret != GRIB_SUCCESS)
|
||||
// ;
|
||||
// if(s->h->context->debug)
|
||||
// printf("SECTION updating length %ld %s\n",plen,s->owner->name);
|
||||
// }
|
||||
// // if(s->aclength) Assert(*l == plen);
|
||||
// return GRIB_SUCCESS;
|
||||
}
|
||||
|
||||
grib_accessor* find_paddings(grib_section* s)
|
||||
|
|
|
@ -74,7 +74,6 @@ extern grib_accessor_class* grib_accessor_class_double;
|
|||
extern grib_accessor_class* grib_accessor_class_element;
|
||||
extern grib_accessor_class* grib_accessor_class_evaluate;
|
||||
extern grib_accessor_class* grib_accessor_class_expanded_descriptors;
|
||||
extern grib_accessor_class* grib_accessor_class_forward;
|
||||
extern grib_accessor_class* grib_accessor_class_from_scale_factor_scaled_value;
|
||||
extern grib_accessor_class* grib_accessor_class_g1_half_byte_codeflag;
|
||||
extern grib_accessor_class* grib_accessor_class_g1_message_length;
|
||||
|
|
|
@ -8,10 +8,6 @@
|
|||
* virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
|
||||
*/
|
||||
|
||||
/******************************************************************
|
||||
* Enrico Fucile
|
||||
******************************************************************/
|
||||
|
||||
#include "grib_api_internal.h"
|
||||
/*
|
||||
This is used by make_class.pl
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
|
||||
* virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
|
||||
*/
|
||||
|
||||
#include "grib_scaling.h"
|
||||
#include "grib_api_internal.h"
|
||||
|
||||
/*
|
||||
|
@ -803,7 +803,7 @@ static int encode_double_array(grib_context* c, grib_buffer* buff, long* pos, bu
|
|||
|
||||
modifiedReference = bd->reference;
|
||||
modifiedFactor = bd->factor;
|
||||
inverseFactor = grib_power(bd->scale, 10);
|
||||
inverseFactor = codes_power<double>(bd->scale, 10);
|
||||
modifiedWidth = bd->width;
|
||||
|
||||
err = descriptor_get_min_max(bd, modifiedWidth, modifiedReference, modifiedFactor, &minAllowed, &maxAllowed);
|
||||
|
@ -945,10 +945,10 @@ static int encode_double_array(grib_context* c, grib_buffer* buff, long* pos, bu
|
|||
localRange = (max - min) * inverseFactor + 1;
|
||||
localWidth = ceil(log(localRange) / log(2.0));
|
||||
lval = round(max * inverseFactor) - reference;
|
||||
allone = grib_power(localWidth, 2) - 1;
|
||||
allone = codes_power<double>(localWidth, 2) - 1;
|
||||
while (allone <= lval) {
|
||||
localWidth++;
|
||||
allone = grib_power(localWidth, 2) - 1;
|
||||
allone = codes_power<double>(localWidth, 2) - 1;
|
||||
}
|
||||
if (localWidth == 1)
|
||||
localWidth++;
|
||||
|
@ -3233,7 +3233,7 @@ static int process_elements(grib_accessor* a, int flag, long onlySubset, long st
|
|||
return err;
|
||||
}
|
||||
bd = grib_bufr_descriptor_clone(self->expanded->v[index]);
|
||||
bd->reference = -grib_power(bd->width, 2);
|
||||
bd->reference = -codes_power<double>(bd->width, 2);
|
||||
bd->width++;
|
||||
|
||||
err = codec_element(c, self, iss, buffer, data, &pos, index, bd, elementIndex, dval, sval);
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
* Enrico Fucile
|
||||
****************************************/
|
||||
|
||||
#include "grib_scaling.h"
|
||||
#include "grib_api_internal.h"
|
||||
|
||||
#if GRIB_PTHREADS
|
||||
|
@ -350,7 +351,7 @@ static int bufr_get_from_table(grib_accessor* a, bufr_descriptor* v)
|
|||
|
||||
/* ECC-985: Scale and reference are often 0 so we can reduce calls to atol */
|
||||
v->scale = atol_fast(list[5]);
|
||||
v->factor = grib_power(-v->scale, 10);
|
||||
v->factor = codes_power<double>(-v->scale, 10);
|
||||
|
||||
v->reference = atol_fast(list[6]);
|
||||
v->width = atol(list[7]);
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
****************************************/
|
||||
|
||||
#include "grib_api_internal.h"
|
||||
#include <ctype.h>
|
||||
#include <cctype>
|
||||
|
||||
#if GRIB_PTHREADS
|
||||
static pthread_once_t once = PTHREAD_ONCE_INIT;
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
* virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
|
||||
*/
|
||||
|
||||
#include "grib_scaling.h"
|
||||
#include "grib_api_internal.h"
|
||||
|
||||
/*
|
||||
|
@ -621,8 +622,8 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len)
|
|||
if (boustrophedonic)
|
||||
reverse_rows(sec_val, n_vals, Ni, bitmap, bitmap_len);
|
||||
|
||||
s = grib_power(binary_scale_factor, 2);
|
||||
d = grib_power(-decimal_scale_factor, 10);
|
||||
s = codes_power<double>(binary_scale_factor, 2);
|
||||
d = codes_power<double>(-decimal_scale_factor, 10);
|
||||
|
||||
for (i = 0; i < n_vals; i++)
|
||||
val[i] = (double)((((double)sec_val[i]) * s) + reference_value) * d;
|
||||
|
@ -764,7 +765,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len)
|
|||
/* calculation of integer array */
|
||||
|
||||
sec_val = (unsigned long*)grib_context_malloc(a->context, (n_vals) * sizeof(long));
|
||||
d = grib_power(decimal_scale_factor, 10);
|
||||
d = codes_power<double>(decimal_scale_factor, 10);
|
||||
max = val[0];
|
||||
min = max;
|
||||
for (i = 0; i < n_vals; i++) {
|
||||
|
@ -786,7 +787,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len)
|
|||
/* the scale factor in Grib 1 is adjusted in gribex, for "normalization purpose" ... ?*/
|
||||
binary_scale_factor = grib_get_binary_scale_fact(max, reference_value, bits_per_value, &err);
|
||||
|
||||
divisor = grib_power(-binary_scale_factor, 2);
|
||||
divisor = codes_power<double>(-binary_scale_factor, 2);
|
||||
|
||||
|
||||
for (i = 0; i < n_vals; i++)
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
* virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
|
||||
*/
|
||||
|
||||
#include "grib_api_internal_cpp.h"
|
||||
#include "grib_value.h"
|
||||
|
||||
/*
|
||||
This is used by make_class.pl
|
||||
|
|
|
@ -271,13 +271,11 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len)
|
|||
return ret;
|
||||
}
|
||||
|
||||
#if 0
|
||||
if(!grib_find_accessor(grib_handle_of_accessor(a),self->bitmap)){
|
||||
grib_context_log(a->context, GRIB_LOG_ERROR,
|
||||
"Accessor %s cannot access bitmap \n", a->name, self->bitmap_present, ret);
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
// if(!grib_find_accessor(grib_handle_of_accessor(a),self->bitmap)){
|
||||
// grib_context_log(a->context, GRIB_LOG_ERROR,
|
||||
// "Accessor %s cannot access bitmap \n", a->name, self->bitmap_present, ret);
|
||||
// return ret;
|
||||
// }
|
||||
|
||||
ret = grib_set_double_array_internal(grib_handle_of_accessor(a), self->coded_values, val, *len);
|
||||
if (ret) {
|
||||
|
|
|
@ -8,8 +8,10 @@
|
|||
* virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
|
||||
*/
|
||||
|
||||
#include "grib_api_internal_cpp.h"
|
||||
#include "grib_bits_any_endian_simple.h"
|
||||
#include "grib_scaling.h"
|
||||
#include <cstdint>
|
||||
#include <type_traits>
|
||||
|
||||
/*
|
||||
This is used by make_class.pl
|
||||
|
@ -315,7 +317,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len)
|
|||
return err;
|
||||
|
||||
if (bits_per_value == 0 || (binary_scale_factor == 0 && decimal_scale_factor != 0)) {
|
||||
d = grib_power(decimal_scale_factor, 10);
|
||||
d = codes_power<double>(decimal_scale_factor, 10);
|
||||
min *= d;
|
||||
max *= d;
|
||||
|
||||
|
@ -345,9 +347,9 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len)
|
|||
range = (max - min);
|
||||
unscaled_min = min;
|
||||
unscaled_max = max;
|
||||
f = (grib_power(bits_per_value, 2) - 1);
|
||||
minrange = grib_power(-last, 2) * f;
|
||||
maxrange = grib_power(last, 2) * f;
|
||||
f = (codes_power<double>(bits_per_value, 2) - 1);
|
||||
minrange = codes_power<double>(-last, 2) * f;
|
||||
maxrange = codes_power<double>(last, 2) * f;
|
||||
|
||||
while (range < minrange) {
|
||||
decimal_scale_factor += 1;
|
||||
|
@ -369,11 +371,11 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len)
|
|||
"%s %s: unable to find nearest_smaller_value of %g for %s", cclass_name, __func__, min, self->reference_value);
|
||||
return GRIB_INTERNAL_ERROR;
|
||||
}
|
||||
d = grib_power(decimal_scale_factor, 10);
|
||||
d = codes_power<double>(decimal_scale_factor, 10);
|
||||
}
|
||||
|
||||
binary_scale_factor = grib_get_binary_scale_fact(max, reference_value, bits_per_value, &err);
|
||||
divisor = grib_power(-binary_scale_factor, 2);
|
||||
divisor = codes_power<double>(-binary_scale_factor, 2);
|
||||
|
||||
size_t nbytes = (bits_per_value + 7) / 8;
|
||||
// ECC-1602: use native a data type (4 bytes for uint32_t) for values that require only 3 bytes
|
||||
|
@ -565,8 +567,8 @@ static int unpack(grib_accessor* a, T* val, size_t* len)
|
|||
return GRIB_SUCCESS;
|
||||
}
|
||||
|
||||
bscale = grib_power(binary_scale_factor, 2);
|
||||
dscale = grib_power(-decimal_scale_factor, 10);
|
||||
bscale = codes_power<T>(binary_scale_factor, 2);
|
||||
dscale = codes_power<T>(-decimal_scale_factor, 10);
|
||||
|
||||
buflen = grib_byte_count(a);
|
||||
buf = (unsigned char*)hand->buffer->data;
|
||||
|
|
|
@ -8,8 +8,9 @@
|
|||
* virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
|
||||
*/
|
||||
|
||||
#include "grib_api_internal_cpp.h"
|
||||
#include <math.h>
|
||||
#include "grib_ieeefloat.h"
|
||||
#include "grib_scaling.h"
|
||||
#include <cmath>
|
||||
#include <algorithm>
|
||||
/*
|
||||
This is used by make_class.pl
|
||||
|
@ -446,7 +447,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len)
|
|||
|
||||
if (pen_j == sub_j) {
|
||||
double* values;
|
||||
d = grib_power(decimal_scale_factor, 10);
|
||||
d = codes_power<double>(decimal_scale_factor, 10);
|
||||
if (d) {
|
||||
values = (double*)grib_context_malloc_clear(a->context, sizeof(double) * n_vals);
|
||||
for (i = 0; i < n_vals; i++)
|
||||
|
@ -546,10 +547,10 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len)
|
|||
"%s: unable to find nearest_smaller_value of %g for %s", cclass_name, min, self->reference_value);
|
||||
return GRIB_INTERNAL_ERROR;
|
||||
}
|
||||
d = grib_power(+decimal_scale_factor, 10);
|
||||
d = codes_power<double>(+decimal_scale_factor, 10);
|
||||
}
|
||||
else {
|
||||
d = grib_power(+decimal_scale_factor, 10);
|
||||
d = codes_power<double>(+decimal_scale_factor, 10);
|
||||
if (grib_get_nearest_smaller_value(gh, self->reference_value, d * min, &reference_value) != GRIB_SUCCESS) {
|
||||
grib_context_log(gh->context, GRIB_LOG_ERROR,
|
||||
"%s: unable to find nearest_smaller_value of %g for %s", cclass_name, d * min, self->reference_value);
|
||||
|
@ -569,7 +570,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len)
|
|||
}
|
||||
}
|
||||
}
|
||||
s = grib_power(-binary_scale_factor, 2);
|
||||
s = codes_power<double>(-binary_scale_factor, 2);
|
||||
|
||||
i = 0;
|
||||
|
||||
|
@ -698,9 +699,9 @@ static int unpack(grib_accessor* a, T* val, size_t* len)
|
|||
T* scals = NULL;
|
||||
T* pscals = NULL, *pval = NULL;
|
||||
|
||||
double s = 0;
|
||||
double d = 0;
|
||||
double laplacianOperator = 0;
|
||||
T s = 0;
|
||||
T d = 0;
|
||||
T laplacianOperator = 0;
|
||||
unsigned char* buf = NULL;
|
||||
unsigned char* hres = NULL;
|
||||
unsigned char* lres = NULL;
|
||||
|
@ -713,7 +714,7 @@ static int unpack(grib_accessor* a, T* val, size_t* len)
|
|||
|
||||
long offsetdata = 0;
|
||||
long bits_per_value = 0;
|
||||
double reference_value = 0;
|
||||
T reference_value = 0;
|
||||
long binary_scale_factor = 0;
|
||||
long decimal_scale_factor = 0;
|
||||
|
||||
|
@ -727,6 +728,7 @@ static int unpack(grib_accessor* a, T* val, size_t* len)
|
|||
T operat = 0;
|
||||
int bytes;
|
||||
int err = 0;
|
||||
double tmp;
|
||||
|
||||
decode_float_proc decode_float = NULL;
|
||||
|
||||
|
@ -743,8 +745,9 @@ static int unpack(grib_accessor* a, T* val, size_t* len)
|
|||
return ret;
|
||||
if ((ret = grib_get_long_internal(gh, self->bits_per_value, &bits_per_value)) != GRIB_SUCCESS)
|
||||
return ret;
|
||||
if ((ret = grib_get_double_internal(gh, self->reference_value, &reference_value)) != GRIB_SUCCESS)
|
||||
if ((ret = grib_get_double_internal(gh, self->reference_value, &tmp)) != GRIB_SUCCESS)
|
||||
return ret;
|
||||
reference_value = tmp;
|
||||
if ((ret = grib_get_long_internal(gh, self->binary_scale_factor, &binary_scale_factor)) != GRIB_SUCCESS)
|
||||
return ret;
|
||||
|
||||
|
@ -758,8 +761,10 @@ static int unpack(grib_accessor* a, T* val, size_t* len)
|
|||
if ((ret = grib_get_long(gh, self->ieee_floats, &ieee_floats)) != GRIB_SUCCESS)
|
||||
return ret;
|
||||
|
||||
if ((ret = grib_get_double_internal(gh, self->laplacianOperator, &laplacianOperator)) != GRIB_SUCCESS)
|
||||
if ((ret = grib_get_double_internal(gh, self->laplacianOperator, &tmp)) != GRIB_SUCCESS)
|
||||
return ret;
|
||||
laplacianOperator = tmp;
|
||||
|
||||
if ((ret = grib_get_long_internal(gh, self->sub_j, &sub_j)) != GRIB_SUCCESS)
|
||||
return ret;
|
||||
if ((ret = grib_get_long_internal(gh, self->sub_k, &sub_k)) != GRIB_SUCCESS)
|
||||
|
@ -807,7 +812,7 @@ static int unpack(grib_accessor* a, T* val, size_t* len)
|
|||
|
||||
if (pen_j == sub_j) {
|
||||
n_vals = (pen_j + 1) * (pen_j + 2);
|
||||
d = grib_power(-decimal_scale_factor, 10);
|
||||
d = codes_power<T>(-decimal_scale_factor, 10);
|
||||
|
||||
grib_ieee_decode_array<T>(a->context, buf, n_vals, bytes, val);
|
||||
if (d) {
|
||||
|
@ -821,8 +826,8 @@ static int unpack(grib_accessor* a, T* val, size_t* len)
|
|||
|
||||
lpos = 8 * (packed_offset - offsetdata);
|
||||
|
||||
s = grib_power(binary_scale_factor, 2);
|
||||
d = grib_power(-decimal_scale_factor, 10);
|
||||
s = codes_power<T>(binary_scale_factor, 2);
|
||||
d = codes_power<T>(-decimal_scale_factor, 10);
|
||||
|
||||
scals = (T*)grib_context_malloc(a->context, maxv * sizeof(T));
|
||||
if (!scals) return GRIB_OUT_OF_MEMORY;
|
||||
|
|
|
@ -173,29 +173,27 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len)
|
|||
if (*len == 0)
|
||||
return GRIB_NO_VALUES;
|
||||
|
||||
#if 0
|
||||
/* TODO: spectral_ieee does not work */
|
||||
if (c->ieee_packing && self->ieee_packing) {
|
||||
grib_handle* h = grib_handle_of_accessor(a);
|
||||
grib_context* c = a->context;
|
||||
char* packingType_s = NULL;
|
||||
char* ieee_packing_s = NULL;
|
||||
long precision = c->ieee_packing == 32 ? 1 : 2;
|
||||
size_t lenstr = strlen(self->ieee_packing);
|
||||
// /* TODO: spectral_ieee does not work */
|
||||
// if (c->ieee_packing && self->ieee_packing) {
|
||||
// grib_handle* h = grib_handle_of_accessor(a);
|
||||
// grib_context* c = a->context;
|
||||
// char* packingType_s = NULL;
|
||||
// char* ieee_packing_s = NULL;
|
||||
// long precision = c->ieee_packing == 32 ? 1 : 2;
|
||||
// size_t lenstr = strlen(self->ieee_packing);
|
||||
|
||||
packingType_s = grib_context_strdup(c, self->packingType);
|
||||
ieee_packing_s = grib_context_strdup(c, self->ieee_packing);
|
||||
precision_s = grib_context_strdup(c, self->precision);
|
||||
// packingType_s = grib_context_strdup(c, self->packingType);
|
||||
// ieee_packing_s = grib_context_strdup(c, self->ieee_packing);
|
||||
// precision_s = grib_context_strdup(c, self->precision);
|
||||
|
||||
grib_set_string(h, packingType_s, ieee_packing_s, &lenstr);
|
||||
grib_set_long(h, precision_s, precision);
|
||||
// grib_set_string(h, packingType_s, ieee_packing_s, &lenstr);
|
||||
// grib_set_long(h, precision_s, precision);
|
||||
|
||||
grib_context_free(c, packingType_s);
|
||||
grib_context_free(c, ieee_packing_s);
|
||||
grib_context_free(c, precision_s);
|
||||
return grib_set_double_array(h, "values", val, *len);
|
||||
}
|
||||
#endif
|
||||
// grib_context_free(c, packingType_s);
|
||||
// grib_context_free(c, ieee_packing_s);
|
||||
// grib_context_free(c, precision_s);
|
||||
// return grib_set_double_array(h, "values", val, *len);
|
||||
// }
|
||||
|
||||
if ((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->sub_j, &sub_j)) != GRIB_SUCCESS)
|
||||
return ret;
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
* virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
|
||||
*/
|
||||
|
||||
#include "grib_scaling.h"
|
||||
#include "grib_api_internal.h"
|
||||
|
||||
/*
|
||||
|
@ -298,8 +299,8 @@ static int unpack_double(grib_accessor* a, double* values, size_t* len)
|
|||
printf("XXXXXXX extrabits=%ld pos=%ld\n",extrabits,pos);
|
||||
}*/
|
||||
|
||||
s = grib_power(binary_scale_factor, 2);
|
||||
d = grib_power(-decimal_scale_factor, 10);
|
||||
s = codes_power<double>(binary_scale_factor, 2);
|
||||
d = codes_power<double>(-decimal_scale_factor, 10);
|
||||
for (i = 0; i < numberOfSecondOrderPackedValues; i++) {
|
||||
values[i] = (double)(((X[i] * s) + reference_value) * d);
|
||||
}
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
* virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
|
||||
*/
|
||||
|
||||
#include "grib_scaling.h"
|
||||
#include "grib_api_internal.h"
|
||||
#include "grib_optimize_decimal_factor.h"
|
||||
|
||||
|
@ -364,7 +365,6 @@ static int unpack(grib_accessor* a, double* dvalues, float* fvalues, size_t* len
|
|||
double reference_value;
|
||||
long binary_scale_factor;
|
||||
long decimal_scale_factor;
|
||||
double s, d;
|
||||
long j, count = 0;
|
||||
long *groupWidths = NULL, *groupLengths = NULL;
|
||||
long orderOfSPD = 0;
|
||||
|
@ -465,17 +465,15 @@ static int unpack(grib_accessor* a, double* dvalues, float* fvalues, size_t* len
|
|||
count++;
|
||||
n++;
|
||||
}
|
||||
#if 0
|
||||
for (j=0;j<groupLengths[i];j++) {
|
||||
X[n]=grib_decode_unsigned_long(buf,&pos,groupWidths[i]);
|
||||
#if EFDEBUG
|
||||
printf("DXXXXX %ld %ld %ld %ld\n",n,X[n],groupWidths[i],groupLengths[i]);
|
||||
#endif
|
||||
X[n]+=firstOrderValues[i];
|
||||
count++;
|
||||
n++;
|
||||
}
|
||||
#endif
|
||||
|
||||
// for (j=0;j<groupLengths[i];j++) {
|
||||
// X[n]=grib_decode_unsigned_long(buf,&pos,groupWidths[i]);
|
||||
// //printf("DXXXXX %ld %ld %ld %ld\n",n,X[n],groupWidths[i],groupLengths[i]);
|
||||
// X[n]+=firstOrderValues[i];
|
||||
// count++;
|
||||
// n++;
|
||||
// }
|
||||
|
||||
}
|
||||
else {
|
||||
for (j = 0; j < groupLengths[i]; j++) {
|
||||
|
@ -532,8 +530,8 @@ static int unpack(grib_accessor* a, double* dvalues, float* fvalues, size_t* len
|
|||
self->dvalues = (double*)grib_context_malloc_clear(a->context, sizeof(double) * numberOfValues);
|
||||
}
|
||||
|
||||
s = grib_power(binary_scale_factor, 2);
|
||||
d = grib_power(-decimal_scale_factor, 10);
|
||||
double s = codes_power<double>(binary_scale_factor, 2);
|
||||
double d = codes_power<double>(-decimal_scale_factor, 10);
|
||||
for (i = 0; i < numberOfValues; i++) {
|
||||
dvalues[i] = (double)(((X[i] * s) + reference_value) * d);
|
||||
self->dvalues[i] = dvalues[i];
|
||||
|
@ -551,8 +549,8 @@ static int unpack(grib_accessor* a, double* dvalues, float* fvalues, size_t* len
|
|||
self->fvalues = (float*)grib_context_malloc_clear(a->context, sizeof(float) * numberOfValues);
|
||||
}
|
||||
|
||||
s = grib_power(binary_scale_factor, 2);
|
||||
d = grib_power(-decimal_scale_factor, 10);
|
||||
float s = codes_power<float>(binary_scale_factor, 2);
|
||||
float d = codes_power<float>(-decimal_scale_factor, 10);
|
||||
for (i = 0; i < numberOfValues; i++) {
|
||||
fvalues[i] = (float)(((X[i] * s) + reference_value) * d);
|
||||
self->fvalues[i] = fvalues[i];
|
||||
|
@ -691,613 +689,6 @@ static void grib_split_long_groups(grib_handle* hand, grib_context* c, long* num
|
|||
grib_context_free(c, localFirstOrderValues);
|
||||
}
|
||||
|
||||
#if 0
|
||||
/* Old implementation. Now superseded. See ECC-441 and ECC-261 */
|
||||
static int pack_double_old(grib_accessor* a, const double* val, size_t *len)
|
||||
{
|
||||
grib_accessor_data_g1second_order_general_extended_packing* self = (grib_accessor_data_g1second_order_general_extended_packing*)a;
|
||||
int ret=0;
|
||||
int grib2=0;
|
||||
long bits_per_value,orderOfSPD,binary_scale_factor;
|
||||
long numberOfValues;
|
||||
double max,min;
|
||||
double decimal,divisor;
|
||||
double reference_value;
|
||||
size_t size,sizebits;
|
||||
long half_byte;
|
||||
long* X;
|
||||
long* Xp;
|
||||
long i;
|
||||
long incrementGroupLengthA,groupWidthA,prevGroupLength,offsetD,remainingValuesB,groupLengthB;
|
||||
long maxB,minB,maxAB,minAB;
|
||||
long offsetBeforeData,offsetSection4;
|
||||
unsigned char* buffer = NULL;
|
||||
long maxWidth,maxLength,widthOfWidths,NL,widthOfLengths,N1,N2,extraValues,codedNumberOfGroups,numberOfSecondOrderPackedValues;
|
||||
long pos;
|
||||
|
||||
long numberOfGroups;
|
||||
long groupLengthC,groupLengthA,remainingValues,count;
|
||||
long maxA=0,minA=0;
|
||||
long maxC,minC,offsetC;
|
||||
long maxAC,minAC;
|
||||
long range,bias=0,maxSPD;
|
||||
long firstOrderValuesMax,offset,groupLength,j,groupWidth,firstOrderValue,lengthOfSecondOrderValues;
|
||||
long *groupLengths,*groupWidths,*firstOrderValues;
|
||||
/* long groupLengths[MAX_NUMBER_OF_GROUPS],groupWidths[MAX_NUMBER_OF_GROUPS],firstOrderValues[MAX_NUMBER_OF_GROUPS]; */
|
||||
|
||||
/* TODO put these parameters in def file */
|
||||
long startGroupLength=15;
|
||||
long incrementGroupLength=3;
|
||||
long minGroupLength=3;
|
||||
long widthOfSPD=0,widthOfBias=0;
|
||||
long *offsets;
|
||||
long widthOfFirstOrderValues;
|
||||
int computeGroupA=1;
|
||||
long dataHeadersLength,widthsLength,lengthsLength,firstOrderValuesLength;
|
||||
long decimal_scale_factor;
|
||||
grib_handle* handle = grib_handle_of_accessor(a);
|
||||
|
||||
self->dirty=1;
|
||||
|
||||
numberOfValues=*len;
|
||||
|
||||
max = val[0];
|
||||
min = max;
|
||||
for(i=1;i< numberOfValues;i++) {
|
||||
if (val[i] > max ) max = val[i];
|
||||
else if (val[i] < min ) min = val[i];
|
||||
}
|
||||
|
||||
/* For constant fields set decimal scale factor to 0 (See GRIB-165) */
|
||||
if (min==max) {
|
||||
grib_set_long_internal(handle,self->decimal_scale_factor, 0);
|
||||
}
|
||||
|
||||
if((ret = grib_get_long_internal(handle,self->decimal_scale_factor, &decimal_scale_factor))
|
||||
!= GRIB_SUCCESS)
|
||||
return ret;
|
||||
decimal = grib_power(decimal_scale_factor,10);
|
||||
|
||||
max*=decimal;
|
||||
min*=decimal;
|
||||
|
||||
if (grib_get_nearest_smaller_value(handle,self->reference_value,min,&reference_value)
|
||||
!=GRIB_SUCCESS) {
|
||||
grib_context_log(a->context,GRIB_LOG_ERROR,
|
||||
"unable to find nearest_smaller_value of %g for %s",min,self->reference_value);
|
||||
return GRIB_INTERNAL_ERROR;
|
||||
}
|
||||
if((ret = grib_set_double_internal(handle,self->reference_value, reference_value)) !=
|
||||
GRIB_SUCCESS)
|
||||
return ret;
|
||||
|
||||
if((ret=grib_get_long_internal(handle,self->bits_per_value,&bits_per_value)) != GRIB_SUCCESS)
|
||||
return ret;
|
||||
|
||||
if((ret=grib_get_long_internal(handle,self->offsetdata,&offsetBeforeData)) != GRIB_SUCCESS)
|
||||
return ret;
|
||||
|
||||
if((ret=grib_get_long_internal(handle,self->offsetsection,&offsetSection4)) != GRIB_SUCCESS)
|
||||
return ret;
|
||||
|
||||
if((ret=grib_get_long_internal(handle,self->orderOfSPD,&orderOfSPD)) != GRIB_SUCCESS)
|
||||
return ret;
|
||||
|
||||
binary_scale_factor = grib_get_binary_scale_fact(max,reference_value,bits_per_value,&ret);
|
||||
if (ret != GRIB_SUCCESS) return ret;
|
||||
|
||||
if((ret = grib_set_long_internal(handle,self->binary_scale_factor, binary_scale_factor)) !=
|
||||
GRIB_SUCCESS)
|
||||
return ret;
|
||||
|
||||
divisor = grib_power(-binary_scale_factor,2);
|
||||
X=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfValues);
|
||||
for(i=0;i< numberOfValues;i++){
|
||||
X[i] = (((val[i]*decimal)-reference_value)*divisor)+0.5;
|
||||
}
|
||||
|
||||
groupLengths=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfValues);
|
||||
groupWidths=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfValues);
|
||||
firstOrderValues=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfValues);
|
||||
|
||||
/* spatial differencing */
|
||||
switch (orderOfSPD) {
|
||||
case 1:
|
||||
for (i=numberOfValues-1;i>0;i--) {
|
||||
X[i]-=X[i-1];
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
for (i=numberOfValues-1;i>1;i--) {
|
||||
X[i]-=2*X[i-1]-X[i-2];
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
for (i=numberOfValues-1;i>2;i--) {
|
||||
X[i]-=3*(X[i-1]-X[i-2])+X[i-3];
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (orderOfSPD) {
|
||||
Assert(orderOfSPD >=0 && orderOfSPD < numberOfValues);
|
||||
bias=X[orderOfSPD];
|
||||
for (i=orderOfSPD+1;i<numberOfValues;i++) {
|
||||
if ( bias > X[i] ) bias=X[i];
|
||||
}
|
||||
for (i=orderOfSPD;i<numberOfValues;i++) {
|
||||
X[i]-=bias;
|
||||
}
|
||||
maxSPD=X[0];
|
||||
for (i=1;i<orderOfSPD;i++) {
|
||||
if ( maxSPD < X[i] ) maxSPD=X[i];
|
||||
}
|
||||
/* widthOfSPD=(long)ceil(log((double)(maxSPD+1))/log(2.0)); */
|
||||
widthOfSPD=number_of_bits(handle, maxSPD);
|
||||
widthOfBias=number_of_bits(handle, labs(bias))+1;
|
||||
|
||||
if ( widthOfSPD < widthOfBias ) widthOfSPD=widthOfBias;
|
||||
|
||||
}
|
||||
/* end of spatial differencing */
|
||||
|
||||
count=orderOfSPD;
|
||||
remainingValues=numberOfValues-count;
|
||||
numberOfGroups=0;
|
||||
incrementGroupLengthA=startGroupLength;
|
||||
|
||||
computeGroupA=1;
|
||||
while (remainingValues) {
|
||||
/* group A created with length=incrementGroupLengthA (if enough values remain)
|
||||
incrementGroupLengthA=startGroupLength always except when coming from an A+C or A+B ok branch
|
||||
*/
|
||||
groupLengthA= incrementGroupLengthA < remainingValues ? incrementGroupLengthA : remainingValues ;
|
||||
if (computeGroupA) {
|
||||
maxA=X[count];
|
||||
minA=X[count];
|
||||
for (i=1;i<groupLengthA;i++) {
|
||||
DebugAssertAccess(X, count+i, numberOfValues);
|
||||
if (maxA<X[count+i]) maxA=X[count+i];
|
||||
if (minA>X[count+i]) minA=X[count+i];
|
||||
}
|
||||
}
|
||||
groupWidthA=number_of_bits(handle, maxA-minA);
|
||||
range=(long)grib_power(groupWidthA,2)-1;
|
||||
|
||||
offsetC=count+groupLengthA;
|
||||
if (offsetC==numberOfValues) {
|
||||
/* no more values close group A and end loop */
|
||||
groupLengths[numberOfGroups]=groupLengthA;
|
||||
groupWidths[numberOfGroups]=groupWidthA;
|
||||
/* firstOrderValues[numberOfGroups]=minA; */
|
||||
/* to optimise the width of first order variable */
|
||||
firstOrderValues[numberOfGroups] = maxA-range > 0 ? maxA-range : 0;
|
||||
numberOfGroups++;
|
||||
break;
|
||||
}
|
||||
|
||||
/* group C created with length=incrementGroupLength (fixed)
|
||||
or remaining values if close to end
|
||||
*/
|
||||
groupLengthC=incrementGroupLength;
|
||||
if ( groupLengthC + offsetC > numberOfValues - startGroupLength/2) {
|
||||
groupLengthC=numberOfValues-offsetC;
|
||||
}
|
||||
maxC=X[offsetC];
|
||||
minC=X[offsetC];
|
||||
for (i=1;i<groupLengthC;i++) {
|
||||
DebugAssertAccess(X, offsetC+i, numberOfValues);
|
||||
if (maxC<X[offsetC+i]) maxC=X[offsetC+i];
|
||||
if (minC>X[offsetC+i]) minC=X[offsetC+i];
|
||||
}
|
||||
|
||||
maxAC= maxA > maxC ? maxA : maxC;
|
||||
minAC= minA < minC ? minA : minC;
|
||||
|
||||
/* check if A+C can be represented with the same width as A*/
|
||||
if (maxAC-minAC > range) {
|
||||
/* A could not be expanded adding C. Check if A could be expanded taking
|
||||
some elements from preceding group. The condition is always that width of
|
||||
A doesn't increase.
|
||||
*/
|
||||
if (numberOfGroups>0 && groupWidths[numberOfGroups-1] > groupWidthA ) {
|
||||
prevGroupLength=groupLengths[numberOfGroups-1]-incrementGroupLength;
|
||||
offsetC=count-incrementGroupLength;
|
||||
/* preceding group length cannot be less than a minimum value */
|
||||
while (prevGroupLength >= minGroupLength) {
|
||||
maxAC=maxA;
|
||||
minAC=minA;
|
||||
for (i=0;i<incrementGroupLength;i++) {
|
||||
if (maxAC<X[offsetC+i]) maxAC=X[offsetC+i];
|
||||
if (minAC>X[offsetC+i]) minAC=X[offsetC+i];
|
||||
}
|
||||
|
||||
/* no more elements can be transfered, exit loop*/
|
||||
if (maxAC-minAC > range) break;
|
||||
|
||||
maxA=maxAC;
|
||||
minA=minAC;
|
||||
groupLengths[numberOfGroups-1]-=incrementGroupLength;
|
||||
groupLengthA+=incrementGroupLength;
|
||||
count-=incrementGroupLength;
|
||||
remainingValues+=incrementGroupLength;
|
||||
|
||||
offsetC-=incrementGroupLength;
|
||||
prevGroupLength-=incrementGroupLength;
|
||||
}
|
||||
}
|
||||
/* close group A*/
|
||||
groupLengths[numberOfGroups]=groupLengthA;
|
||||
groupWidths[numberOfGroups]=groupWidthA;
|
||||
/* firstOrderValues[numberOfGroups]=minA; */
|
||||
/* to optimise the width of first order variable */
|
||||
firstOrderValues[numberOfGroups] = maxA-range > 0 ? maxA-range : 0;
|
||||
count+=groupLengthA;
|
||||
remainingValues-=groupLengthA;
|
||||
numberOfGroups++;
|
||||
/* incrementGroupLengthA is reset to the fixed startGroupLength as it
|
||||
could have been changed after the A+C or A+B ok condition.
|
||||
*/
|
||||
incrementGroupLengthA=startGroupLength;
|
||||
computeGroupA=1;
|
||||
#if 0
|
||||
if (numberOfGroups==MAX_NUMBER_OF_GROUPS) {
|
||||
groupLengthA= remainingValues ;
|
||||
maxA=X[count];
|
||||
minA=X[count];
|
||||
for (i=1;i<groupLengthA;i++) {
|
||||
if (maxA<X[count+i]) maxA=X[count+i];
|
||||
if (minA>X[count+i]) minA=X[count+i];
|
||||
}
|
||||
groupWidthA=number_of_bits(maxA-minA);
|
||||
range=(long)grib_power(groupWidthA,2)-1;
|
||||
groupLengths[numberOfGroups]=groupLengthA;
|
||||
groupWidths[numberOfGroups]=groupWidthA;
|
||||
firstOrderValues[numberOfGroups] = maxA-range > 0 ? maxA-range : 0;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
continue;
|
||||
}
|
||||
|
||||
/* A+C could be coded with the same width as A*/
|
||||
offsetD=offsetC+groupLengthC;
|
||||
if (offsetD==numberOfValues) {
|
||||
groupLengths[numberOfGroups]=groupLengthA+groupLengthC;
|
||||
groupWidths[numberOfGroups]=groupWidthA;
|
||||
|
||||
/* range of AC is the same as A*/
|
||||
/* firstOrderValues[numberOfGroups]=minAC; */
|
||||
/* to optimise the width of first order variable */
|
||||
firstOrderValues[numberOfGroups] = maxAC-range > 0 ? maxAC-range : 0;
|
||||
numberOfGroups++;
|
||||
break;
|
||||
}
|
||||
|
||||
/* group B is created with length startGroupLength, starting at the
|
||||
same offset as C.
|
||||
*/
|
||||
remainingValuesB=numberOfValues-offsetC;
|
||||
groupLengthB= startGroupLength < remainingValuesB ? startGroupLength : remainingValuesB ;
|
||||
maxB=maxC;
|
||||
minB=minC;
|
||||
for (i=groupLengthC;i<groupLengthB;i++) {
|
||||
if (maxB<X[offsetC+i]) maxB=X[offsetC+i];
|
||||
if (minB>X[offsetC+i]) minB=X[offsetC+i];
|
||||
}
|
||||
|
||||
/* check if group B can be coded with a smaller width than A */
|
||||
if (maxB-minB <= range/2 && range>0 ) {
|
||||
|
||||
/* TODO Add code to try if A can be expanded taking some elements
|
||||
from the left (preceding) group.
|
||||
A possible variation is to do this left check (and the previous one)
|
||||
in the final loop when checking that the width of each group.
|
||||
*/
|
||||
|
||||
/* close group A and continue loop*/
|
||||
groupLengths[numberOfGroups]=groupLengthA;
|
||||
groupWidths[numberOfGroups]=groupWidthA;
|
||||
/* firstOrderValues[numberOfGroups]=minA; */
|
||||
/* to optimise the width of first order variable */
|
||||
firstOrderValues[numberOfGroups] = maxA-range > 0 ? maxA-range : 0;
|
||||
count+=groupLengthA;
|
||||
remainingValues-=groupLengthA;
|
||||
numberOfGroups++;
|
||||
#if 0
|
||||
if (numberOfGroups==MAX_NUMBER_OF_GROUPS) {
|
||||
groupLengthA= remainingValues ;
|
||||
maxA=X[count];
|
||||
minA=X[count];
|
||||
for (i=1;i<groupLengthA;i++) {
|
||||
if (maxA<X[count+i]) maxA=X[count+i];
|
||||
if (minA>X[count+i]) minA=X[count+i];
|
||||
}
|
||||
groupWidthA=number_of_bits(maxA-minA);
|
||||
range=(long)grib_power(groupWidthA,2)-1;
|
||||
groupLengths[numberOfGroups]=groupLengthA;
|
||||
groupWidths[numberOfGroups]=groupWidthA;
|
||||
firstOrderValues[numberOfGroups] = maxA-range > 0 ? maxA-range : 0;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
incrementGroupLengthA=startGroupLength;
|
||||
computeGroupA=1;
|
||||
continue;
|
||||
}
|
||||
|
||||
/* check if A+B can be coded with same with as A */
|
||||
maxAB= maxA > maxB ? maxA : maxB;
|
||||
minAB= minA < minB ? minA : minB;
|
||||
if (maxAB-minAB <= range) {
|
||||
/* A+B can be merged. The increment used at the beginning of the loop to
|
||||
build group C is increased to the size of group B
|
||||
*/
|
||||
incrementGroupLengthA+=groupLengthB;
|
||||
maxA=maxAB;
|
||||
minA=minAB;
|
||||
computeGroupA=0;
|
||||
continue;
|
||||
}
|
||||
|
||||
/* A+B cannot be merged, A+C can be merged*/
|
||||
incrementGroupLengthA+=groupLengthC;
|
||||
computeGroupA=1;
|
||||
|
||||
} /* end of the while*/
|
||||
|
||||
/* computing bitsPerValue as the number of bits needed to represent
|
||||
the firstOrderValues.
|
||||
*/
|
||||
max=firstOrderValues[0];
|
||||
min=firstOrderValues[0];
|
||||
for (i=1;i<numberOfGroups;i++) {
|
||||
if (max<firstOrderValues[i]) max=firstOrderValues[i];
|
||||
if (min>firstOrderValues[i]) min=firstOrderValues[i];
|
||||
}
|
||||
widthOfFirstOrderValues=number_of_bits(handle, max-min);
|
||||
firstOrderValuesMax=(long)grib_power(widthOfFirstOrderValues,2)-1;
|
||||
|
||||
if (numberOfGroups>2) {
|
||||
/* loop through all the groups except the last in reverse order to
|
||||
check if each group width is still appropriate for the group.
|
||||
Focus on groups which have been shrank as left groups of an A group taking
|
||||
some of their elements.
|
||||
*/
|
||||
offsets=(long*)grib_context_malloc_clear(a->context,sizeof(long)*numberOfGroups);
|
||||
offsets[0]=orderOfSPD;
|
||||
for (i=1;i<numberOfGroups;i++) offsets[i]=offsets[i-1]+groupLengths[i-1];
|
||||
for (i=numberOfGroups-2;i>=0;i--) {
|
||||
offset=offsets[i];
|
||||
groupLength=groupLengths[i];
|
||||
|
||||
if (groupLength >= startGroupLength) continue;
|
||||
|
||||
max=X[offset];
|
||||
min=X[offset];
|
||||
for (j=1;j<groupLength;j++) {
|
||||
if (max<X[offset+j]) max=X[offset+j];
|
||||
if (min>X[offset+j]) min=X[offset+j];
|
||||
}
|
||||
groupWidth=number_of_bits(handle, max-min);
|
||||
range=(long)grib_power(groupWidth,2)-1;
|
||||
|
||||
/* width of first order values has to be unchanged.*/
|
||||
for (j=groupWidth;j<groupWidths[i];j++) {
|
||||
firstOrderValue= max>range ? max-range : 0;
|
||||
if (firstOrderValue <= firstOrderValuesMax ) {
|
||||
groupWidths[i]=j;
|
||||
firstOrderValues[i]=firstOrderValue;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
offsetC=offset;
|
||||
/* group width of the current group (i) can have been reduced
|
||||
and it is worth to try to expand the group to get some elements
|
||||
from the left group if it has bigger width.
|
||||
*/
|
||||
if (i>0 && (groupWidths[i-1] > groupWidths[i]) ) {
|
||||
prevGroupLength=groupLengths[i-1]-incrementGroupLength;
|
||||
offsetC-=incrementGroupLength;
|
||||
while (prevGroupLength >= minGroupLength) {
|
||||
for (j=0;j<incrementGroupLength;j++) {
|
||||
if (max<X[offsetC+j]) max=X[offsetC+j];
|
||||
if (min>X[offsetC+j]) min=X[offsetC+j];
|
||||
}
|
||||
|
||||
/* width of first order values has to be unchanged*/
|
||||
firstOrderValue=max>range ? max-range : 0;
|
||||
if (max-min > range || firstOrderValue > firstOrderValuesMax ) break;
|
||||
|
||||
groupLengths[i-1]-=incrementGroupLength;
|
||||
groupLengths[i]+=incrementGroupLength;
|
||||
firstOrderValues[i]=firstOrderValue;
|
||||
|
||||
offsetC-=incrementGroupLength;
|
||||
prevGroupLength-=incrementGroupLength;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
grib_context_free(a->context,offsets);
|
||||
}
|
||||
|
||||
maxWidth=groupWidths[0];
|
||||
maxLength=groupLengths[0];
|
||||
for (i=1;i<numberOfGroups;i++) {
|
||||
if (maxWidth<groupWidths[i]) maxWidth=groupWidths[i];
|
||||
if (maxLength<groupLengths[i]) maxLength=groupLengths[i];
|
||||
}
|
||||
|
||||
if (maxWidth < 0 || maxLength < 0) {
|
||||
grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Cannot compute parameters for second order packing.");
|
||||
return GRIB_ENCODING_ERROR;
|
||||
}
|
||||
widthOfWidths=number_of_bits(handle, maxWidth);
|
||||
widthOfLengths=number_of_bits(handle, maxLength);
|
||||
|
||||
lengthOfSecondOrderValues=0;
|
||||
for ( i=0; i<numberOfGroups;i++) {
|
||||
lengthOfSecondOrderValues+=groupLengths[i]*groupWidths[i];
|
||||
}
|
||||
|
||||
if (!a->context->no_big_group_split) {
|
||||
grib_split_long_groups(handle, a->context,&numberOfGroups,&lengthOfSecondOrderValues,
|
||||
groupLengths,&widthOfLengths,groupWidths,widthOfWidths,
|
||||
firstOrderValues,widthOfFirstOrderValues);
|
||||
}
|
||||
|
||||
Xp=X+orderOfSPD;
|
||||
for ( i=0; i<numberOfGroups;i++) {
|
||||
for (j=0; j<groupLengths[i]; j++) {
|
||||
*(Xp++)-=firstOrderValues[i];
|
||||
}
|
||||
}
|
||||
|
||||
/* start writing to message */
|
||||
|
||||
/* writing SPD */
|
||||
if (orderOfSPD) {
|
||||
if((ret = grib_set_long_internal(handle,self->widthOfSPD, widthOfSPD))
|
||||
!= GRIB_SUCCESS)
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* end writing SPD */
|
||||
if((ret = grib_set_long_internal(handle,self->widthOfFirstOrderValues, widthOfFirstOrderValues))
|
||||
!= GRIB_SUCCESS)
|
||||
return ret;
|
||||
|
||||
dataHeadersLength=25;
|
||||
if (orderOfSPD) dataHeadersLength+=1+((orderOfSPD+1)*widthOfSPD+7)/8;
|
||||
widthsLength=(widthOfWidths*numberOfGroups+7)/8;
|
||||
lengthsLength=(widthOfLengths*numberOfGroups+7)/8;
|
||||
firstOrderValuesLength=(widthOfFirstOrderValues*numberOfGroups+7)/8;
|
||||
|
||||
NL=widthsLength+dataHeadersLength+1;
|
||||
N1=NL+lengthsLength;
|
||||
N2=N1+firstOrderValuesLength;
|
||||
|
||||
NL= NL > 65535 ? 65535 : NL;
|
||||
N2= N2 > 65535 ? 65535 : N2;
|
||||
N1= N1 > 65535 ? 65535 : N1;
|
||||
|
||||
grib_set_long(handle,self->NL, NL);
|
||||
grib_set_long(handle,self->N1, N1);
|
||||
grib_set_long(handle,self->N2, N2);
|
||||
|
||||
if (numberOfGroups > 65535 ) {
|
||||
extraValues=numberOfGroups/65536;
|
||||
codedNumberOfGroups=numberOfGroups%65536;
|
||||
} else {
|
||||
extraValues=0;
|
||||
codedNumberOfGroups=numberOfGroups;
|
||||
}
|
||||
|
||||
/* if no extraValues key present it is a GRIB2*/
|
||||
grib2=0;
|
||||
if((ret = grib_set_long(handle,self->extraValues, extraValues)) != GRIB_SUCCESS) {
|
||||
codedNumberOfGroups=numberOfGroups;
|
||||
grib2=1;
|
||||
}
|
||||
|
||||
if((ret = grib_set_long_internal(handle,self->codedNumberOfGroups, codedNumberOfGroups)) != GRIB_SUCCESS)
|
||||
return ret;
|
||||
|
||||
numberOfSecondOrderPackedValues=numberOfValues-orderOfSPD;
|
||||
if (!grib2 && numberOfSecondOrderPackedValues > 65535 )
|
||||
numberOfSecondOrderPackedValues= 65535;
|
||||
|
||||
if((ret = grib_set_long_internal(handle,self->numberOfSecondOrderPackedValues, numberOfSecondOrderPackedValues))
|
||||
!= GRIB_SUCCESS)
|
||||
return ret;
|
||||
|
||||
if (grib2) {
|
||||
if((ret = grib_set_long_internal(handle,self->bits_per_value, bits_per_value)) != GRIB_SUCCESS)
|
||||
return ret;
|
||||
} else {
|
||||
if((ret = grib_set_long_internal(handle,self->bits_per_value, 0)) != GRIB_SUCCESS)
|
||||
return ret;
|
||||
}
|
||||
|
||||
if((ret = grib_set_long_internal(handle,self->widthOfWidths, widthOfWidths)) != GRIB_SUCCESS)
|
||||
return ret;
|
||||
|
||||
if((ret = grib_set_long_internal(handle,self->widthOfLengths, widthOfLengths)) != GRIB_SUCCESS)
|
||||
return ret;
|
||||
|
||||
lengthOfSecondOrderValues=0;
|
||||
for ( i=0; i<numberOfGroups;i++) {
|
||||
lengthOfSecondOrderValues+=groupLengths[i]*groupWidths[i];
|
||||
}
|
||||
|
||||
size=(lengthOfSecondOrderValues+7)/8;
|
||||
sizebits=lengthOfSecondOrderValues;
|
||||
|
||||
/* padding section 4 to an even number of octets*/
|
||||
size = (size+offsetBeforeData-offsetSection4) % 2 ? size+1 : size;
|
||||
half_byte=8*size-sizebits;
|
||||
if((ret = grib_set_long_internal(handle,self->half_byte, half_byte)) != GRIB_SUCCESS)
|
||||
return ret;
|
||||
|
||||
buffer=(unsigned char*)grib_context_malloc_clear(a->context,size);
|
||||
|
||||
pos=0;
|
||||
if (orderOfSPD) {
|
||||
long SPD[4]={0,};
|
||||
size_t nSPD=orderOfSPD+1;
|
||||
Assert(orderOfSPD<=3);
|
||||
for (i=0;i<orderOfSPD;i++) SPD[i]=X[i];
|
||||
SPD[orderOfSPD]=bias;
|
||||
ret=grib_set_long_array_internal(handle,self->SPD,SPD,nSPD);
|
||||
if(ret) return ret;
|
||||
}
|
||||
|
||||
ret=grib_set_long_array_internal(handle,self->groupWidths,groupWidths,(size_t)numberOfGroups);
|
||||
if(ret) return ret;
|
||||
|
||||
ret=grib_set_long_array_internal(handle,self->groupLengths,groupLengths,(size_t)numberOfGroups);
|
||||
if(ret) return ret;
|
||||
|
||||
ret=grib_set_long_array_internal(handle,self->firstOrderValues,firstOrderValues,(size_t)numberOfGroups);
|
||||
if(ret) return ret;
|
||||
|
||||
Xp=X+orderOfSPD;
|
||||
pos=0;
|
||||
count=0;
|
||||
for (i=0;i<numberOfGroups;i++) {
|
||||
if (groupWidths[i]>0) {
|
||||
for (j=0;j<groupLengths[i];j++) {
|
||||
#if EFDEBUG
|
||||
printf("CXXXXX %ld %ld %ld %ld\n",count,*Xp,groupWidths[i],groupLengths[i]);
|
||||
count++;
|
||||
#endif
|
||||
grib_encode_unsigned_longb(buffer,*(Xp++),&pos,groupWidths[i]);
|
||||
}
|
||||
} else {
|
||||
Xp+=groupLengths[i];
|
||||
#if EFDEBUG
|
||||
count+=groupLengths[i];
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
/* ECC-259: Set correct number of values */
|
||||
ret=grib_set_long_internal(a->parent->h,self->number_of_values, *len);
|
||||
if(ret) return ret;
|
||||
|
||||
grib_buffer_replace(a, buffer, size,1,1);
|
||||
|
||||
grib_context_free(a->context,buffer);
|
||||
grib_context_free(a->context,X);
|
||||
grib_context_free(a->context,groupLengths);
|
||||
grib_context_free(a->context,groupWidths);
|
||||
grib_context_free(a->context,firstOrderValues);
|
||||
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
||||
static int get_bits_per_value(grib_handle* h, const char* bits_per_value_str, long* bits_per_value)
|
||||
{
|
||||
int err = 0;
|
||||
|
@ -1319,6 +710,9 @@ static int get_bits_per_value(grib_handle* h, const char* bits_per_value_str, lo
|
|||
return err;
|
||||
}
|
||||
|
||||
// For the old implementation of pack_double, see
|
||||
// src/deprecated/grib_accessor_class_data_g1second_order_general_extended_packing.pack_double.cc
|
||||
// See ECC-441 and ECC-261
|
||||
static int pack_double(grib_accessor* a, const double* val, size_t* len)
|
||||
{
|
||||
grib_accessor_data_g1second_order_general_extended_packing* self = (grib_accessor_data_g1second_order_general_extended_packing*)a;
|
||||
|
@ -1392,8 +786,8 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len)
|
|||
&decimal_scale_factor, &binary_scale_factor, &reference_value)) != GRIB_SUCCESS)
|
||||
return ret;
|
||||
|
||||
decimal = grib_power(decimal_scale_factor, 10);
|
||||
divisor = grib_power(-binary_scale_factor, 2);
|
||||
decimal = codes_power<double>(decimal_scale_factor, 10);
|
||||
divisor = codes_power<double>(-binary_scale_factor, 2);
|
||||
/*min = min * decimal;*/
|
||||
/*max = max * decimal;*/
|
||||
|
||||
|
@ -1410,7 +804,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len)
|
|||
if ((ret = grib_get_long_internal(handle, self->decimal_scale_factor, &decimal_scale_factor)) != GRIB_SUCCESS)
|
||||
return ret;
|
||||
|
||||
decimal = grib_power(decimal_scale_factor, 10);
|
||||
decimal = codes_power<double>(decimal_scale_factor, 10);
|
||||
min = min * decimal;
|
||||
max = max * decimal;
|
||||
|
||||
|
@ -1421,7 +815,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len)
|
|||
}
|
||||
binary_scale_factor = grib_get_binary_scale_fact(max, reference_value, bits_per_value, &ret);
|
||||
|
||||
divisor = grib_power(-binary_scale_factor, 2);
|
||||
divisor = codes_power<double>(-binary_scale_factor, 2);
|
||||
}
|
||||
|
||||
if ((ret = grib_set_long_internal(handle, self->binary_scale_factor, binary_scale_factor)) !=
|
||||
|
@ -1515,7 +909,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len)
|
|||
}
|
||||
}
|
||||
groupWidthA = number_of_bits(handle, maxA - minA);
|
||||
range = (long)grib_power(groupWidthA, 2) - 1;
|
||||
range = (long)codes_power<double>(groupWidthA, 2) - 1;
|
||||
|
||||
offsetC = count + groupLengthA;
|
||||
if (offsetC == numberOfValues) {
|
||||
|
@ -1598,23 +992,23 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len)
|
|||
*/
|
||||
incrementGroupLengthA = startGroupLength;
|
||||
computeGroupA = 1;
|
||||
#if 0
|
||||
if (numberOfGroups==MAX_NUMBER_OF_GROUPS) {
|
||||
groupLengthA= remainingValues ;
|
||||
maxA=X[count];
|
||||
minA=X[count];
|
||||
for (i=1;i<groupLengthA;i++) {
|
||||
if (maxA<X[count+i]) maxA=X[count+i];
|
||||
if (minA>X[count+i]) minA=X[count+i];
|
||||
}
|
||||
groupWidthA=number_of_bits(maxA-minA);
|
||||
range=(long)grib_power(groupWidthA,2)-1;
|
||||
groupLengths[numberOfGroups]=groupLengthA;
|
||||
groupWidths[numberOfGroups]=groupWidthA;
|
||||
firstOrderValues[numberOfGroups] = maxA-range > 0 ? maxA-range : 0;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
|
||||
// if (numberOfGroups==MAX_NUMBER_OF_GROUPS) {
|
||||
// groupLengthA= remainingValues ;
|
||||
// maxA=X[count];
|
||||
// minA=X[count];
|
||||
// for (i=1;i<groupLengthA;i++) {
|
||||
// if (maxA<X[count+i]) maxA=X[count+i];
|
||||
// if (minA>X[count+i]) minA=X[count+i];
|
||||
// }
|
||||
// groupWidthA=number_of_bits(maxA-minA);
|
||||
// range=(long)codes_power<double>(groupWidthA,2)-1;
|
||||
// groupLengths[numberOfGroups]=groupLengthA;
|
||||
// groupWidths[numberOfGroups]=groupWidthA;
|
||||
// firstOrderValues[numberOfGroups] = maxA-range > 0 ? maxA-range : 0;
|
||||
// break;
|
||||
// }
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -1663,23 +1057,23 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len)
|
|||
count += groupLengthA;
|
||||
remainingValues -= groupLengthA;
|
||||
numberOfGroups++;
|
||||
#if 0
|
||||
if (numberOfGroups==MAX_NUMBER_OF_GROUPS) {
|
||||
groupLengthA= remainingValues ;
|
||||
maxA=X[count];
|
||||
minA=X[count];
|
||||
for (i=1;i<groupLengthA;i++) {
|
||||
if (maxA<X[count+i]) maxA=X[count+i];
|
||||
if (minA>X[count+i]) minA=X[count+i];
|
||||
}
|
||||
groupWidthA=number_of_bits(maxA-minA);
|
||||
range=(long)grib_power(groupWidthA,2)-1;
|
||||
groupLengths[numberOfGroups]=groupLengthA;
|
||||
groupWidths[numberOfGroups]=groupWidthA;
|
||||
firstOrderValues[numberOfGroups] = maxA-range > 0 ? maxA-range : 0;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
|
||||
// if (numberOfGroups==MAX_NUMBER_OF_GROUPS) {
|
||||
// groupLengthA= remainingValues ;
|
||||
// maxA=X[count];
|
||||
// minA=X[count];
|
||||
// for (i=1;i<groupLengthA;i++) {
|
||||
// if (maxA<X[count+i]) maxA=X[count+i];
|
||||
// if (minA>X[count+i]) minA=X[count+i];
|
||||
// }
|
||||
// groupWidthA=number_of_bits(maxA-minA);
|
||||
// range=(long)codes_power<double>(groupWidthA,2)-1;
|
||||
// groupLengths[numberOfGroups]=groupLengthA;
|
||||
// groupWidths[numberOfGroups]=groupWidthA;
|
||||
// firstOrderValues[numberOfGroups] = maxA-range > 0 ? maxA-range : 0;
|
||||
// break;
|
||||
// }
|
||||
|
||||
incrementGroupLengthA = startGroupLength;
|
||||
computeGroupA = 1;
|
||||
continue;
|
||||
|
@ -1717,7 +1111,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len)
|
|||
min = firstOrderValues[i];
|
||||
}
|
||||
widthOfFirstOrderValues = number_of_bits(handle, max - min);
|
||||
firstOrderValuesMax = (long)grib_power(widthOfFirstOrderValues, 2) - 1;
|
||||
firstOrderValuesMax = (long)codes_power<double>(widthOfFirstOrderValues, 2) - 1;
|
||||
|
||||
if (numberOfGroups > 2) {
|
||||
/* loop through all the groups except the last in reverse order to
|
||||
|
@ -1745,7 +1139,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len)
|
|||
min = X[offset + j];
|
||||
}
|
||||
groupWidth = number_of_bits(handle, max - min);
|
||||
range = (long)grib_power(groupWidth, 2) - 1;
|
||||
range = (long)codes_power<double>(groupWidth, 2) - 1;
|
||||
|
||||
/* width of first order values has to be unchanged.*/
|
||||
for (j = groupWidth; j < groupWidths[i]; j++) {
|
||||
|
@ -1937,8 +1331,8 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len)
|
|||
if (ret)
|
||||
return ret;
|
||||
|
||||
Xp = X + orderOfSPD;
|
||||
pos = 0;
|
||||
Xp = X + orderOfSPD;
|
||||
pos = 0;
|
||||
#if EFDEBUG
|
||||
count = 0;
|
||||
#endif
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
* virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
|
||||
*/
|
||||
|
||||
#include "grib_scaling.h"
|
||||
#include "grib_api_internal.h"
|
||||
#include <type_traits>
|
||||
|
||||
|
@ -287,8 +288,8 @@ static int unpack(grib_accessor* a, T* values, size_t* len)
|
|||
}
|
||||
}
|
||||
|
||||
s = grib_power(binary_scale_factor, 2);
|
||||
d = grib_power(-decimal_scale_factor, 10);
|
||||
s = codes_power<T>(binary_scale_factor, 2);
|
||||
d = codes_power<T>(-decimal_scale_factor, 10);
|
||||
for (i = 0; i < numberOfSecondOrderPackedValues; i++) {
|
||||
values[i] = (T)(((X[i] * s) + reference_value) * d);
|
||||
}
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
* virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
|
||||
*/
|
||||
|
||||
#include "grib_scaling.h"
|
||||
#include "grib_api_internal.h"
|
||||
|
||||
/*
|
||||
|
@ -411,8 +412,8 @@ static int unpack(grib_accessor* a, T* values, size_t* len)
|
|||
k++;
|
||||
}
|
||||
|
||||
s = grib_power(binary_scale_factor, 2);
|
||||
d = grib_power(-decimal_scale_factor, 10);
|
||||
s = codes_power<T>(binary_scale_factor, 2);
|
||||
d = codes_power<T>(-decimal_scale_factor, 10);
|
||||
for (i = 0; i < n; i++) {
|
||||
values[i] = (T)(((X[i] * s) + reference_value) * d);
|
||||
}
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
* virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
|
||||
*/
|
||||
|
||||
#include "grib_scaling.h"
|
||||
#include "grib_api_internal.h"
|
||||
|
||||
/*
|
||||
|
@ -290,8 +291,8 @@ static int pack_double(grib_accessor* a, const double* cval, size_t* len)
|
|||
if ((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->offsetsection, &offsetsection)) != GRIB_SUCCESS)
|
||||
return ret;
|
||||
|
||||
decimal = grib_power(decimal_scale_factor, 10);
|
||||
divisor = grib_power(-binary_scale_factor, 2);
|
||||
decimal = codes_power<double>(decimal_scale_factor, 10);
|
||||
divisor = codes_power<double>(-binary_scale_factor, 2);
|
||||
|
||||
buflen = (((bits_per_value * n_vals) + 7) / 8) * sizeof(unsigned char);
|
||||
if ((buflen + (offsetdata - offsetsection)) % 2) {
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
*/
|
||||
|
||||
|
||||
#include "grib_scaling.h"
|
||||
#include "grib_api_internal.h"
|
||||
#include <type_traits>
|
||||
|
||||
|
@ -383,77 +384,75 @@ static int min_max_array(double* data, unsigned int n, double* min, double* max)
|
|||
return GRIB_SUCCESS;
|
||||
}
|
||||
|
||||
#if 0
|
||||
static void uint_char(unsigned int i, unsigned char* p)
|
||||
{
|
||||
p[0] = (i >> 24) & 255;
|
||||
p[1] = (i >> 16) & 255;
|
||||
p[2] = (i >> 8) & 255;
|
||||
p[3] = (i)&255;
|
||||
}
|
||||
// static void uint_char(unsigned int i, unsigned char* p)
|
||||
// {
|
||||
// p[0] = (i >> 24) & 255;
|
||||
// p[1] = (i >> 16) & 255;
|
||||
// p[2] = (i >> 8) & 255;
|
||||
// p[3] = (i)&255;
|
||||
// }
|
||||
|
||||
static unsigned char* mk_bms(grib_accessor* a, double* data, unsigned int* ndata)
|
||||
{
|
||||
int bms_size;
|
||||
unsigned char *bms, *cbits;
|
||||
unsigned int nn, i, start, c, imask, i0;
|
||||
// static unsigned char* mk_bms(grib_accessor* a, double* data, unsigned int* ndata)
|
||||
// {
|
||||
// int bms_size;
|
||||
// unsigned char *bms, *cbits;
|
||||
// unsigned int nn, i, start, c, imask, i0;
|
||||
|
||||
nn = *ndata;
|
||||
// nn = *ndata;
|
||||
|
||||
/* find first grid point with undefined data */
|
||||
for (i = 0; i < nn; i++) {
|
||||
if (UNDEFINED_VAL(data[i])) break;
|
||||
}
|
||||
// /* find first grid point with undefined data */
|
||||
// for (i = 0; i < nn; i++) {
|
||||
// if (UNDEFINED_VAL(data[i])) break;
|
||||
// }
|
||||
|
||||
if (i == nn) { /* all defined values, no need for bms */
|
||||
bms = reinterpret_cast<unsigned char*>(grib_context_malloc(a->context, 6));
|
||||
if (bms == NULL)
|
||||
grib_context_log(a->context, GRIB_LOG_ERROR, "mk_bms: memory allocation problem", "");
|
||||
uint_char(6, bms); // length of section 6
|
||||
bms[4] = 6; // section 6
|
||||
bms[5] = 255; // no bitmap
|
||||
return bms;
|
||||
}
|
||||
// if (i == nn) { /* all defined values, no need for bms */
|
||||
// bms = reinterpret_cast<unsigned char*>(grib_context_malloc(a->context, 6));
|
||||
// if (bms == NULL)
|
||||
// grib_context_log(a->context, GRIB_LOG_ERROR, "mk_bms: memory allocation problem", "");
|
||||
// uint_char(6, bms); // length of section 6
|
||||
// bms[4] = 6; // section 6
|
||||
// bms[5] = 255; // no bitmap
|
||||
// return bms;
|
||||
// }
|
||||
|
||||
bms_size = 6 + (nn + 7) / 8;
|
||||
bms = reinterpret_cast<unsigned char*>(grib_context_malloc(a->context, bms_size));
|
||||
if (bms == NULL)
|
||||
grib_context_log(a->context, GRIB_LOG_ERROR, "mk_bms: memory allocation problem", "");
|
||||
// bms_size = 6 + (nn + 7) / 8;
|
||||
// bms = reinterpret_cast<unsigned char*>(grib_context_malloc(a->context, bms_size));
|
||||
// if (bms == NULL)
|
||||
// grib_context_log(a->context, GRIB_LOG_ERROR, "mk_bms: memory allocation problem", "");
|
||||
|
||||
uint_char(bms_size, bms); // length of section 6
|
||||
bms[4] = 6; // section 6
|
||||
bms[5] = 0; // has bitmap
|
||||
// uint_char(bms_size, bms); // length of section 6
|
||||
// bms[4] = 6; // section 6
|
||||
// bms[5] = 0; // has bitmap
|
||||
|
||||
/* bitmap is accessed by bytes, make i0=i/8 bytes of bitmap */
|
||||
cbits = bms + 6;
|
||||
i0 = i >> 3; // Number of bytes, required to store the bitmap
|
||||
for (i = 0; i < i0; i++) {
|
||||
// Set all bits in the bitmap to 1
|
||||
*cbits++ = 255;
|
||||
}
|
||||
// /* bitmap is accessed by bytes, make i0=i/8 bytes of bitmap */
|
||||
// cbits = bms + 6;
|
||||
// i0 = i >> 3; // Number of bytes, required to store the bitmap
|
||||
// for (i = 0; i < i0; i++) {
|
||||
// // Set all bits in the bitmap to 1
|
||||
// *cbits++ = 255;
|
||||
// }
|
||||
|
||||
/* start processing data, skip i0*8 */
|
||||
// /* start processing data, skip i0*8 */
|
||||
|
||||
c = 0; // counter: c += imask
|
||||
imask = 128; // 100.0000
|
||||
i0 = i0 << 3; // Number of bits in the bitmap
|
||||
start = i0;
|
||||
for (i = i0; i < nn; i++) {
|
||||
if (DEFINED_VAL(data[i])) {
|
||||
c += imask;
|
||||
data[start++] = data[i];
|
||||
}
|
||||
if ((imask >>= 1) == 0) {
|
||||
*cbits++ = c;
|
||||
c = 0;
|
||||
imask = 128;
|
||||
}
|
||||
}
|
||||
if (imask != 128) *cbits = c;
|
||||
*ndata = start;
|
||||
return bms;
|
||||
}
|
||||
#endif
|
||||
// c = 0; // counter: c += imask
|
||||
// imask = 128; // 100.0000
|
||||
// i0 = i0 << 3; // Number of bits in the bitmap
|
||||
// start = i0;
|
||||
// for (i = i0; i < nn; i++) {
|
||||
// if (DEFINED_VAL(data[i])) {
|
||||
// c += imask;
|
||||
// data[start++] = data[i];
|
||||
// }
|
||||
// if ((imask >>= 1) == 0) {
|
||||
// *cbits++ = c;
|
||||
// c = 0;
|
||||
// imask = 128;
|
||||
// }
|
||||
// }
|
||||
// if (imask != 128) *cbits = c;
|
||||
// *ndata = start;
|
||||
// return bms;
|
||||
// }
|
||||
|
||||
static int post_process(grib_context* c, long* vals, long len, long order, long bias, const unsigned long extras[2])
|
||||
{
|
||||
|
@ -749,8 +748,8 @@ static int unpack(grib_accessor* a, T* val, const size_t* len)
|
|||
// de_spatial_difference (a->context, sec_val, n_vals, orderOfSpatialDifferencing, bias);
|
||||
}
|
||||
|
||||
binary_s = (T)grib_power(binary_scale_factor, 2);
|
||||
decimal_s = (T)grib_power(-decimal_scale_factor, 10);
|
||||
binary_s = (T)codes_power<T>(binary_scale_factor, 2);
|
||||
decimal_s = (T)codes_power<T>(-decimal_scale_factor, 10);
|
||||
|
||||
for (i = 0; i < n_vals; i++) {
|
||||
if (sec_val[i] == LONG_MAX) {
|
||||
|
|
|
@ -12,9 +12,10 @@
|
|||
* philippe.marguinaud@meteo.fr
|
||||
*******************************/
|
||||
|
||||
#include "grib_scaling.h"
|
||||
#include "grib_api_internal.h"
|
||||
#include "grib_optimize_decimal_factor.h"
|
||||
#include <math.h>
|
||||
#include <cmath>
|
||||
#include <algorithm>
|
||||
|
||||
/*
|
||||
|
@ -665,8 +666,8 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len)
|
|||
buf = (unsigned char*)gh->buffer->data;
|
||||
buf += grib_byte_offset(a);
|
||||
|
||||
s = grib_power(bt->binary_scale_factor, 2);
|
||||
d = grib_power(-bt->decimal_scale_factor, 10);
|
||||
s = codes_power<double>(bt->binary_scale_factor, 2);
|
||||
d = codes_power<double>(-bt->decimal_scale_factor, 10);
|
||||
|
||||
/*
|
||||
* Decode data
|
||||
|
@ -815,8 +816,8 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len)
|
|||
if (ret != GRIB_SUCCESS)
|
||||
goto cleanup;
|
||||
|
||||
s = grib_power(-bt->binary_scale_factor, 2);
|
||||
d = grib_power(+bt->decimal_scale_factor, 10);
|
||||
s = codes_power<double>(-bt->binary_scale_factor, 2);
|
||||
d = codes_power<double>(+bt->decimal_scale_factor, 10);
|
||||
}
|
||||
else {
|
||||
bt->decimal_scale_factor = 0;
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
* virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
|
||||
*/
|
||||
|
||||
#include "grib_scaling.h"
|
||||
#include "grib_api_internal.h"
|
||||
|
||||
/*
|
||||
|
@ -244,8 +245,8 @@ static int pack_double(grib_accessor* a, const double* cval, size_t* len)
|
|||
if ((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->decimal_scale_factor, &decimal_scale_factor)) != GRIB_SUCCESS)
|
||||
return ret;
|
||||
|
||||
decimal = grib_power(decimal_scale_factor, 10);
|
||||
divisor = grib_power(-binary_scale_factor, 2);
|
||||
decimal = codes_power<double>(decimal_scale_factor, 10);
|
||||
divisor = codes_power<double>(-binary_scale_factor, 2);
|
||||
|
||||
buflen = (((bits_per_value * n_vals) + 7) / 8) * sizeof(unsigned char);
|
||||
buf = (unsigned char*)grib_context_buffer_malloc_clear(a->context, buflen);
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
* virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
|
||||
*/
|
||||
|
||||
#include "grib_scaling.h"
|
||||
#include "grib_api_internal.h"
|
||||
|
||||
/*
|
||||
|
@ -271,8 +272,8 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len)
|
|||
|
||||
self->dirty = 0;
|
||||
|
||||
bscale = grib_power(binary_scale_factor, 2);
|
||||
dscale = grib_power(-decimal_scale_factor, 10);
|
||||
bscale = codes_power<double>(binary_scale_factor, 2);
|
||||
dscale = codes_power<double>(-decimal_scale_factor, 10);
|
||||
|
||||
/* TODO: This should be called upstream */
|
||||
if (*len < n_vals)
|
||||
|
@ -411,8 +412,8 @@ static int pack_double(grib_accessor* a, const double* cval, size_t* len)
|
|||
if ((ret = grib_get_long_internal(grib_handle_of_accessor(a), self->decimal_scale_factor, &decimal_scale_factor)) != GRIB_SUCCESS)
|
||||
return ret;
|
||||
|
||||
decimal = grib_power(decimal_scale_factor, 10);
|
||||
divisor = grib_power(-binary_scale_factor, 2);
|
||||
decimal = codes_power<double>(decimal_scale_factor, 10);
|
||||
divisor = codes_power<double>(-binary_scale_factor, 2);
|
||||
|
||||
simple_packing_size = (((bits_per_value * n_vals) + 7) / 8) * sizeof(unsigned char);
|
||||
buf = (unsigned char*)grib_context_malloc_clear(a->context, simple_packing_size + EXTRA_BUFFER_SIZE);
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
* virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
|
||||
*/
|
||||
|
||||
#include "grib_scaling.h"
|
||||
#include "grib_api_internal.h"
|
||||
#define PNG_ANYBITS
|
||||
|
||||
|
@ -248,8 +249,8 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len)
|
|||
if ((err = grib_get_long_internal(grib_handle_of_accessor(a), self->decimal_scale_factor, &decimal_scale_factor)) != GRIB_SUCCESS)
|
||||
return err;
|
||||
|
||||
bscale = grib_power(binary_scale_factor, 2);
|
||||
dscale = grib_power(-decimal_scale_factor, 10);
|
||||
bscale = codes_power<double>(binary_scale_factor, 2);
|
||||
dscale = codes_power<double>(-decimal_scale_factor, 10);
|
||||
|
||||
/* TODO: This should be called upstream */
|
||||
if (*len < n_vals)
|
||||
|
@ -502,7 +503,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len)
|
|||
return GRIB_SUCCESS;
|
||||
}
|
||||
|
||||
d = grib_power(decimal_scale_factor, 10);
|
||||
d = codes_power<double>(decimal_scale_factor, 10);
|
||||
|
||||
max = val[0];
|
||||
min = max;
|
||||
|
@ -526,7 +527,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len)
|
|||
}
|
||||
|
||||
binary_scale_factor = grib_get_binary_scale_fact(max, reference_value, bits_per_value, &err);
|
||||
divisor = grib_power(-binary_scale_factor, 2);
|
||||
divisor = codes_power<double>(-binary_scale_factor, 2);
|
||||
|
||||
#ifndef PNG_ANYBITS
|
||||
Assert(bits_per_value % 8 == 0);
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
* Enrico Fucile
|
||||
****************************/
|
||||
|
||||
#include "grib_api_internal_cpp.h"
|
||||
#include "grib_ieeefloat.h"
|
||||
|
||||
#define PRE_PROCESSING_NONE 0
|
||||
#define PRE_PROCESSING_DIFFERENCE 1
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
* virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
|
||||
*/
|
||||
|
||||
#include "grib_scaling.h"
|
||||
#include "grib_api_internal.h"
|
||||
|
||||
/*
|
||||
|
@ -203,7 +204,7 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len)
|
|||
if (decimal_scale_factor > 127) {
|
||||
decimal_scale_factor = -(decimal_scale_factor - 128);
|
||||
}
|
||||
level_scale_factor = grib_power(-decimal_scale_factor, 10.0);
|
||||
level_scale_factor = codes_power<double>(-decimal_scale_factor, 10.0);
|
||||
levels = (double*)grib_context_malloc_clear(a->context, sizeof(double) * (number_of_level_values + 1));
|
||||
levels[0] = missingValue;
|
||||
for (i = 0; i < number_of_level_values; i++) {
|
||||
|
|
|
@ -8,8 +8,9 @@
|
|||
* virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
|
||||
*/
|
||||
|
||||
#include "grib_scaling.h"
|
||||
#include "grib_api_internal.h"
|
||||
#include <math.h>
|
||||
#include <cmath>
|
||||
/*
|
||||
This is used by make_class.pl
|
||||
|
||||
|
@ -328,8 +329,8 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len)
|
|||
|
||||
lpos = 8 * (packed_offset - offsetdata);
|
||||
|
||||
s = grib_power(binary_scale_factor, 2);
|
||||
d = grib_power(-decimal_scale_factor, 10);
|
||||
s = codes_power<double>(binary_scale_factor, 2);
|
||||
d = codes_power<double>(-decimal_scale_factor, 10);
|
||||
|
||||
scals = (double*)grib_context_malloc(a->context, maxv * sizeof(double));
|
||||
Assert(scals);
|
||||
|
|
|
@ -8,8 +8,9 @@
|
|||
* virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
|
||||
*/
|
||||
|
||||
#include "grib_scaling.h"
|
||||
#include "grib_api_internal.h"
|
||||
#include <math.h>
|
||||
#include <cmath>
|
||||
/*
|
||||
This is used by make_class.pl
|
||||
|
||||
|
@ -307,8 +308,8 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len)
|
|||
|
||||
lpos = 8 * (packed_offset - offsetdata);
|
||||
|
||||
s = grib_power(binary_scale_factor, 2);
|
||||
d = grib_power(-decimal_scale_factor, 10);
|
||||
s = codes_power<double>(binary_scale_factor, 2);
|
||||
d = codes_power<double>(-decimal_scale_factor, 10);
|
||||
|
||||
scals = (double*)grib_context_malloc(a->context, maxv * sizeof(double));
|
||||
Assert(scals);
|
||||
|
|
|
@ -8,9 +8,11 @@
|
|||
* virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
|
||||
*/
|
||||
|
||||
#include "grib_api_internal_cpp.h"
|
||||
#include "grib_scaling.h"
|
||||
#include "grib_bits_any_endian_simple.h"
|
||||
#include "grib_optimize_decimal_factor.h"
|
||||
#include <float.h>
|
||||
#include <type_traits>
|
||||
|
||||
/*
|
||||
This is used by make_class.pl
|
||||
|
@ -235,8 +237,8 @@ static int unpack_double_element(grib_accessor* a, size_t idx, double* val)
|
|||
}
|
||||
|
||||
Assert(idx < n_vals);
|
||||
s = grib_power(binary_scale_factor, 2);
|
||||
d = grib_power(-decimal_scale_factor, 10);
|
||||
s = codes_power<double>(binary_scale_factor, 2);
|
||||
d = codes_power<double>(-decimal_scale_factor, 10);
|
||||
|
||||
grib_context_log(a->context, GRIB_LOG_DEBUG,
|
||||
"%s: %s: creating %s, %ld values (idx=%zu)",
|
||||
|
@ -368,8 +370,8 @@ static int unpack(grib_accessor* a, T* val, size_t* len)
|
|||
return GRIB_SUCCESS;
|
||||
}
|
||||
|
||||
s = grib_power(binary_scale_factor, 2);
|
||||
d = grib_power(-decimal_scale_factor, 10);
|
||||
s = codes_power<T>(binary_scale_factor, 2);
|
||||
d = codes_power<T>(-decimal_scale_factor, 10);
|
||||
|
||||
grib_context_log(a->context, GRIB_LOG_DEBUG,
|
||||
"%s %s: Creating %s, %zu values", cclass_name, __func__, a->name, n_vals);
|
||||
|
@ -394,15 +396,13 @@ static int unpack(grib_accessor* a, T* val, size_t* len)
|
|||
return GRIB_DECODING_ERROR;
|
||||
}
|
||||
}
|
||||
#if 0
|
||||
if (offsetBeforeData == offsetAfterData) {
|
||||
/* Crazy case: Constant field with bitsPerValue > 0 */
|
||||
for (i = 0; i < n_vals; i++)
|
||||
val[i] = reference_value;
|
||||
*len = n_vals;
|
||||
return GRIB_SUCCESS;
|
||||
}
|
||||
#endif
|
||||
// if (offsetBeforeData == offsetAfterData) {
|
||||
// /* Crazy case: Constant field with bitsPerValue > 0 */
|
||||
// for (i = 0; i < n_vals; i++)
|
||||
// val[i] = reference_value;
|
||||
// *len = n_vals;
|
||||
// return GRIB_SUCCESS;
|
||||
// }
|
||||
}
|
||||
|
||||
grib_context_log(a->context, GRIB_LOG_DEBUG,
|
||||
|
@ -506,8 +506,8 @@ static int _unpack_double(grib_accessor* a, double* val, size_t* len, unsigned c
|
|||
return GRIB_SUCCESS;
|
||||
}
|
||||
|
||||
s = grib_power(binary_scale_factor, 2);
|
||||
d = grib_power(-decimal_scale_factor, 10);
|
||||
s = codes_power<double>(binary_scale_factor, 2);
|
||||
d = codes_power<double>(-decimal_scale_factor, 10);
|
||||
|
||||
grib_context_log(a->context, GRIB_LOG_DEBUG,
|
||||
"%s %s: Creating %s, %zu values", cclass_name, __func__, a->name, n_vals);
|
||||
|
@ -531,15 +531,14 @@ static int _unpack_double(grib_accessor* a, double* val, size_t* len, unsigned c
|
|||
return GRIB_DECODING_ERROR;
|
||||
}
|
||||
}
|
||||
#if 0
|
||||
if (offsetBeforeData == offsetAfterData) {
|
||||
/* Crazy case: Constant field with bitsPerValue > 0 */
|
||||
for (i = 0; i < n_vals; i++)
|
||||
val[i] = reference_value;
|
||||
*len = n_vals;
|
||||
return GRIB_SUCCESS;
|
||||
}
|
||||
#endif
|
||||
|
||||
// if (offsetBeforeData == offsetAfterData) {
|
||||
// /* Crazy case: Constant field with bitsPerValue > 0 */
|
||||
// for (i = 0; i < n_vals; i++)
|
||||
// val[i] = reference_value;
|
||||
// *len = n_vals;
|
||||
// return GRIB_SUCCESS;
|
||||
// }
|
||||
}
|
||||
|
||||
grib_context_log(a->context, GRIB_LOG_DEBUG,
|
||||
|
@ -589,27 +588,24 @@ static int unpack_double_subarray(grib_accessor* a, double* val, size_t start, s
|
|||
#undef restrict
|
||||
#endif
|
||||
|
||||
#if 0
|
||||
static int grib_producing_large_constant_fields(const grib_context* c, grib_handle* h, int edition)
|
||||
{
|
||||
/* GRIB-802: If override key is set, ignore env. var and produce compressed fields */
|
||||
if (c->large_constant_fields) { /* This is set by the environment variable */
|
||||
/* check the override key */
|
||||
int err = 0;
|
||||
long override_large_constant_fields = 0;
|
||||
err = grib_get_long_internal(h, "override_large_constant_fields", &override_large_constant_fields);
|
||||
if (err == GRIB_SUCCESS && override_large_constant_fields) {
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
if (c->gribex_mode_on==1 && edition==1) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
// static int grib_producing_large_constant_fields(const grib_context* c, grib_handle* h, int edition)
|
||||
// {
|
||||
// /* GRIB-802: If override key is set, ignore env. var and produce compressed fields */
|
||||
// if (c->large_constant_fields) { /* This is set by the environment variable */
|
||||
// /* check the override key */
|
||||
// int err = 0;
|
||||
// long override_large_constant_fields = 0;
|
||||
// err = grib_get_long_internal(h, "override_large_constant_fields", &override_large_constant_fields);
|
||||
// if (err == GRIB_SUCCESS && override_large_constant_fields) {
|
||||
// return 0;
|
||||
// }
|
||||
// return 1;
|
||||
// }
|
||||
// if (c->gribex_mode_on==1 && edition==1) {
|
||||
// return 1;
|
||||
// }
|
||||
// return 0;
|
||||
// }
|
||||
|
||||
static int pack_double(grib_accessor* a, const double* val, size_t* len)
|
||||
{
|
||||
|
@ -743,7 +739,7 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len)
|
|||
/* decimal_scale_factor is given, binary_scale_factor=0 and bits_per_value is computed */
|
||||
binary_scale_factor = 0;
|
||||
decimal_scale_factor = decimal_scale_factor_get;
|
||||
decimal = grib_power(decimal_scale_factor, 10);
|
||||
decimal = codes_power<double>(decimal_scale_factor, 10);
|
||||
min *= decimal;
|
||||
max *= decimal;
|
||||
|
||||
|
@ -789,14 +785,14 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len)
|
|||
return err;
|
||||
}
|
||||
else {
|
||||
/* printf("max=%g reference_value=%g grib_power(-last,2)=%g decimal_scale_factor=%ld bits_per_value=%ld\n",
|
||||
max,reference_value,grib_power(-last,2),decimal_scale_factor,bits_per_value);*/
|
||||
/* printf("max=%g reference_value=%g codes_power<double>(-last,2)=%g decimal_scale_factor=%ld bits_per_value=%ld\n",
|
||||
max,reference_value,codes_power<double>(-last,2),decimal_scale_factor,bits_per_value);*/
|
||||
range = (max - min);
|
||||
unscaled_min = min;
|
||||
unscaled_max = max;
|
||||
f = (grib_power(bits_per_value, 2) - 1);
|
||||
minrange = grib_power(-last, 2) * f;
|
||||
maxrange = grib_power(last, 2) * f;
|
||||
f = (codes_power<double>(bits_per_value, 2) - 1);
|
||||
minrange = codes_power<double>(-last, 2) * f;
|
||||
maxrange = codes_power<double>(last, 2) * f;
|
||||
|
||||
while (range < minrange) {
|
||||
decimal_scale_factor += 1;
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
can appear
|
||||
*/
|
||||
|
||||
#include "grib_scaling.h"
|
||||
#include "grib_api_internal.h"
|
||||
/*
|
||||
This is used by make_class.pl
|
||||
|
@ -483,7 +484,7 @@ static void __expand(grib_accessor* a, bufr_descriptors_array* unexpanded, bufr_
|
|||
case 7:
|
||||
if (us->Y) {
|
||||
ccp->extraScale = us->Y;
|
||||
ccp->referenceFactor = grib_power(us->Y, 10);
|
||||
ccp->referenceFactor = codes_power<double>(us->Y, 10);
|
||||
ccp->extraWidth = ((10 * us->Y) + 2) / 3;
|
||||
}
|
||||
else {
|
||||
|
|
|
@ -1,116 +0,0 @@
|
|||
/*
|
||||
* (C) Copyright 2005- ECMWF.
|
||||
*
|
||||
* This software is licensed under the terms of the Apache Licence Version 2.0
|
||||
* which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
|
||||
*
|
||||
* In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
|
||||
* virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
|
||||
*/
|
||||
|
||||
#include "grib_api_internal.h"
|
||||
|
||||
/*
|
||||
This is used by make_class.pl
|
||||
|
||||
START_CLASS_DEF
|
||||
SUPER= grib_accessor_class_gen
|
||||
CLASS = accessor
|
||||
IMPLEMENTS = dump
|
||||
END_CLASS_DEF
|
||||
|
||||
*/
|
||||
|
||||
/* START_CLASS_IMP */
|
||||
|
||||
/*
|
||||
|
||||
Don't edit anything between START_CLASS_IMP and END_CLASS_IMP
|
||||
Instead edit values between START_CLASS_DEF and END_CLASS_DEF
|
||||
or edit "accessor.class" and rerun ./make_class.pl
|
||||
|
||||
*/
|
||||
|
||||
static void dump(grib_accessor*, grib_dumper*);
|
||||
//static void init_class(grib_accessor_class*);
|
||||
|
||||
typedef struct grib_accessor_forward
|
||||
{
|
||||
grib_accessor att;
|
||||
/* Members defined in gen */
|
||||
/* Members defined in forward */
|
||||
} grib_accessor_forward;
|
||||
|
||||
extern grib_accessor_class* grib_accessor_class_gen;
|
||||
|
||||
static grib_accessor_class _grib_accessor_class_forward = {
|
||||
&grib_accessor_class_gen, /* super */
|
||||
"forward", /* name */
|
||||
sizeof(grib_accessor_forward), /* size */
|
||||
0, /* inited */
|
||||
0, /* init_class */
|
||||
0, /* init */
|
||||
0, /* post_init */
|
||||
0, /* destroy */
|
||||
&dump, /* dump */
|
||||
0, /* next_offset */
|
||||
0, /* get length of string */
|
||||
0, /* get number of values */
|
||||
0, /* get number of bytes */
|
||||
0, /* get offset to bytes */
|
||||
0, /* get native type */
|
||||
0, /* get sub_section */
|
||||
0, /* pack_missing */
|
||||
0, /* is_missing */
|
||||
0, /* pack_long */
|
||||
0, /* unpack_long */
|
||||
0, /* pack_double */
|
||||
0, /* pack_float */
|
||||
0, /* unpack_double */
|
||||
0, /* unpack_float */
|
||||
0, /* pack_string */
|
||||
0, /* unpack_string */
|
||||
0, /* pack_string_array */
|
||||
0, /* unpack_string_array */
|
||||
0, /* pack_bytes */
|
||||
0, /* unpack_bytes */
|
||||
0, /* pack_expression */
|
||||
0, /* notify_change */
|
||||
0, /* update_size */
|
||||
0, /* preferred_size */
|
||||
0, /* resize */
|
||||
0, /* nearest_smaller_value */
|
||||
0, /* next accessor */
|
||||
0, /* compare vs. another accessor */
|
||||
0, /* unpack only ith value (double) */
|
||||
0, /* unpack only ith value (float) */
|
||||
0, /* unpack a given set of elements (double) */
|
||||
0, /* unpack a given set of elements (float) */
|
||||
0, /* unpack a subarray */
|
||||
0, /* clear */
|
||||
0, /* clone accessor */
|
||||
};
|
||||
|
||||
|
||||
grib_accessor_class* grib_accessor_class_forward = &_grib_accessor_class_forward;
|
||||
|
||||
|
||||
//static void init_class(grib_accessor_class* c)
|
||||
//{
|
||||
// INIT
|
||||
//}
|
||||
|
||||
/* END_CLASS_IMP */
|
||||
|
||||
|
||||
static void dump(grib_accessor* a, grib_dumper* dumper)
|
||||
{
|
||||
// grib_accessor *target = grib_find_accessor(grib_handle_of_accessor(a),a->alias);
|
||||
// if(target) {
|
||||
// grib_dump_label(dumper,a,"is:");
|
||||
// dumper->depth += 2;
|
||||
// grib_accessor_dump(target, dumper);
|
||||
// dumper->depth -= 2;
|
||||
// }
|
||||
// else grib_dump_label(dumper,a," undefined ");
|
||||
}
|
|
@ -9,7 +9,7 @@
|
|||
*/
|
||||
|
||||
#include "grib_api_internal.h"
|
||||
#include <math.h>
|
||||
#include <cmath>
|
||||
#ifdef ECCODES_ON_WINDOWS
|
||||
#include <stdint.h>
|
||||
#endif
|
||||
|
|
|
@ -365,6 +365,9 @@ static int unpack_multiple_time_ranges(grib_accessor* a, long* val, size_t* len)
|
|||
return GRIB_DECODING_ERROR;
|
||||
}
|
||||
|
||||
// For the old implementation of unpack_long, see
|
||||
// src/deprecated/grib_accessor_class_g2end_step.unpack_long.cc
|
||||
//
|
||||
static int unpack_long(grib_accessor* a, long* val, size_t* len)
|
||||
{
|
||||
grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a;
|
||||
|
@ -395,80 +398,6 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len)
|
|||
}
|
||||
}
|
||||
|
||||
#if 0
|
||||
static int unpack_long(grib_accessor* a, long* val, size_t *len)
|
||||
{
|
||||
grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a;
|
||||
int err = 0;
|
||||
long start_step;
|
||||
long unit;
|
||||
long coded_unit;
|
||||
long coded_time_range, typeOfTimeIncrement, numberOfTimeRange;
|
||||
long coded_time_range_sec=0;
|
||||
int factor;
|
||||
long u2sf,u2sf_step_unit;
|
||||
int add_time_range = 1; /* whether we add lengthOfTimeRange */
|
||||
|
||||
grib_handle* h=grib_handle_of_accessor(a);
|
||||
|
||||
if((err = grib_get_long_internal(h,self->start_step,&start_step))) return err;
|
||||
|
||||
/*point in time */
|
||||
if (self->year == NULL) {
|
||||
*val=start_step;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if((err = grib_get_long_internal(h,self->unit,&unit))) return err;
|
||||
|
||||
if((err = grib_get_long_internal(h,self->coded_unit,&coded_unit))) return err;
|
||||
if((err = grib_get_long_internal(h,self->coded_time_range, &coded_time_range))) return err;
|
||||
if((err = grib_get_long_internal(h,self->typeOfTimeIncrement, &typeOfTimeIncrement))) return err;
|
||||
if((err = grib_get_long_internal(h,self->numberOfTimeRange, &numberOfTimeRange))) return err;
|
||||
|
||||
Assert(numberOfTimeRange == 1 || numberOfTimeRange == 2);
|
||||
|
||||
err = convert_time_range(h, unit, coded_unit, &coded_time_range);
|
||||
if (err != GRIB_SUCCESS) return err;
|
||||
|
||||
#if 0
|
||||
if (coded_unit!=unit) {
|
||||
coded_time_range_sec=coded_time_range*u2s2[coded_unit];
|
||||
if (coded_time_range_sec<0) {
|
||||
factor=60;
|
||||
if (u2s2[coded_unit] % factor) return GRIB_DECODING_ERROR;
|
||||
if (u2s[unit] % factor) return GRIB_DECODING_ERROR;
|
||||
u2sf=u2s2[coded_unit]/factor;
|
||||
coded_time_range_sec=coded_time_range*u2sf;
|
||||
u2sf_step_unit=u2s[unit]/factor;
|
||||
} else {
|
||||
u2sf_step_unit=u2s[unit];
|
||||
}
|
||||
if (coded_time_range_sec % u2sf_step_unit!=0) {
|
||||
grib_context_log(h->context,GRIB_LOG_ERROR,"unable to convert endStep in stepUnits");
|
||||
return GRIB_WRONG_STEP_UNIT;
|
||||
}
|
||||
coded_time_range = coded_time_range_sec / u2sf_step_unit;
|
||||
}
|
||||
#endif
|
||||
if (typeOfTimeIncrement == 1) {
|
||||
/* See GRIB-488 */
|
||||
/* Note: For this case, lengthOfTimeRange is not related to step and should not be used to calculate step */
|
||||
add_time_range = 0;
|
||||
if (is_special_expver(h)) {
|
||||
add_time_range = 1;
|
||||
}
|
||||
}
|
||||
if (add_time_range) {
|
||||
*val = start_step + coded_time_range;
|
||||
} else {
|
||||
*val = start_step;
|
||||
}
|
||||
|
||||
return GRIB_SUCCESS;
|
||||
}
|
||||
#endif
|
||||
|
||||
static int pack_long(grib_accessor* a, const long* val, size_t* len)
|
||||
{
|
||||
grib_accessor_g2end_step* self = (grib_accessor_g2end_step*)a;
|
||||
|
|
|
@ -8,12 +8,8 @@
|
|||
* virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
|
||||
*/
|
||||
|
||||
/*************************************************
|
||||
* Enrico Fucile
|
||||
***********************************************/
|
||||
|
||||
#include "grib_api_internal.h"
|
||||
#include <math.h>
|
||||
#include <cmath>
|
||||
/*
|
||||
This is used by make_class.pl
|
||||
|
||||
|
@ -275,11 +271,9 @@ static int trial(const double* val, long v[6], long* basic_angle, long* sub_divi
|
|||
*basic_angle = 360;
|
||||
*sub_division = lcm(ni, nj);
|
||||
|
||||
#if 0
|
||||
printf("ni = %ld, nj = %ld , basic_angle=%ld sub_division = %ld\n",
|
||||
ni,nj,
|
||||
*basic_angle,*sub_division);
|
||||
#endif
|
||||
// printf("ni = %ld, nj = %ld , basic_angle=%ld sub_division = %ld\n",
|
||||
// ni, nj, *basic_angle,*sub_division);
|
||||
|
||||
if (*sub_division < 0)
|
||||
return 0;
|
||||
|
||||
|
|
|
@ -353,11 +353,10 @@ static int pack_long(grib_accessor* a, const long* val, size_t* len)
|
|||
// In this scenario we do not want to change the scale/value.
|
||||
// However when the user directly sets the level or when we are changing edition, then
|
||||
// we do want to change the scale/value.
|
||||
#if 0
|
||||
if (hand->loader && hand->loader->changing_edition==0) {
|
||||
change_scale_and_value = 0;
|
||||
}
|
||||
#endif
|
||||
// if (hand->loader && hand->loader->changing_edition==0) {
|
||||
// change_scale_and_value = 0;
|
||||
// }
|
||||
|
||||
if (change_scale_and_value) {
|
||||
if (type_first > 9) {
|
||||
if ((ret = grib_set_long_internal(hand, self->scale_first, scale_first)) != GRIB_SUCCESS)
|
||||
|
|
|
@ -14,9 +14,9 @@
|
|||
* Shahram Najm *
|
||||
***************************************************************************/
|
||||
#include "grib_api_internal.h"
|
||||
#include "grib_value.h"
|
||||
#include <limits>
|
||||
#include <cassert>
|
||||
#include "grib_api_internal_cpp.h"
|
||||
|
||||
/*
|
||||
This is used by make_class.pl
|
||||
|
|
|
@ -143,13 +143,13 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len)
|
|||
expver[2] = *pTemp++;
|
||||
expver[3] = *pTemp++;
|
||||
expver[4] = 0;
|
||||
#if 0
|
||||
expver[0] = intc[0];
|
||||
expver[1] = intc[1];
|
||||
expver[2] = intc[2];
|
||||
expver[3] = intc[3];
|
||||
expver[4] = 0;
|
||||
#endif
|
||||
|
||||
// expver[0] = intc[0];
|
||||
// expver[1] = intc[1];
|
||||
// expver[2] = intc[2];
|
||||
// expver[3] = intc[3];
|
||||
// expver[4] = 0;
|
||||
|
||||
/* if there is a difference, have to reverse*/
|
||||
if (strcmp(refexpver, expver)) {
|
||||
intc[0] = expver[3];
|
||||
|
|
|
@ -8,11 +8,6 @@
|
|||
* virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
|
||||
*/
|
||||
|
||||
/**************************************
|
||||
* Enrico Fucile
|
||||
**************************************/
|
||||
|
||||
|
||||
#include "grib_api_internal.h"
|
||||
/*
|
||||
This is used by make_class.pl
|
||||
|
@ -242,18 +237,15 @@ static int is_missing(grib_accessor* a)
|
|||
if (!av)
|
||||
return GRIB_NOT_FOUND;
|
||||
return grib_is_missing_internal(av);
|
||||
#if 0
|
||||
int ret=0;
|
||||
long value=0;
|
||||
|
||||
if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->value,
|
||||
&value) ) != GRIB_SUCCESS){
|
||||
grib_context_log(a->context, GRIB_LOG_ERROR,
|
||||
"Accessor %s cannot gather value for %s error %d", a->name,
|
||||
self->value, ret);
|
||||
return 0;
|
||||
}
|
||||
|
||||
return (value == GRIB_MISSING_LONG);
|
||||
#endif
|
||||
// int ret=0;
|
||||
// long value=0;
|
||||
// if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->value,
|
||||
// &value) ) != GRIB_SUCCESS){
|
||||
// grib_context_log(a->context, GRIB_LOG_ERROR,
|
||||
// "Accessor %s cannot gather value for %s error %d", a->name,
|
||||
// self->value, ret);
|
||||
// return 0;
|
||||
// }
|
||||
// return (value == GRIB_MISSING_LONG);
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
*/
|
||||
|
||||
#include "grib_api_internal.h"
|
||||
#include <ctype.h>
|
||||
#include <cctype>
|
||||
/*
|
||||
This is used by make_class.pl
|
||||
|
||||
|
|
|
@ -150,73 +150,10 @@ static void init(grib_accessor* a, const long l, grib_arguments* c)
|
|||
a->flags |= GRIB_ACCESSOR_FLAG_FUNCTION;
|
||||
a->length = 0;
|
||||
}
|
||||
#if 0
|
||||
/*Legacy mode*/
|
||||
static long num_points_reduced_gauss_old(grib_handle* h, long nj, long pl[],
|
||||
long max_pl, double lats[],
|
||||
double angular_precision,
|
||||
double lat_first, double lat_last,
|
||||
double lon_first, double lon_last)
|
||||
{
|
||||
long result=0;
|
||||
int is_global=0;
|
||||
size_t plsize=0;
|
||||
long ilon_first=0,ilon_last=0;
|
||||
double lon_first_row=0,lon_last_row=0;
|
||||
float d = 0;
|
||||
is_global=is_gaussian_global(lat_first,lat_last,lon_first,lon_last,max_pl,lats,angular_precision);
|
||||
d=fabs(lats[0]-lats[1]);
|
||||
if ( !is_global ) {
|
||||
long j = 0;
|
||||
/*sub area*/
|
||||
(void)d;
|
||||
#if EFDEBUG
|
||||
printf("-------- subarea fabs(lat_first-lats[0])=%g d=%g\n",fabs(lat_first-lats[0]),d);
|
||||
printf("-------- subarea fabs(lat_last+lats[0])=%g d=%g\n",fabs(lat_last+lats[0]),d);
|
||||
printf("-------- subarea lon_last=%g order=%ld 360.0-90.0/order=%g\n",
|
||||
lon_last,order,360.0-90.0/order);
|
||||
printf("-------- subarea lon_first=%g fabs(lon_last -( 360.0-90.0/order))=%g 90.0/order=%g\n",
|
||||
lon_first,fabs(lon_last - (360.0-90.0/order)),90.0/order);
|
||||
#endif
|
||||
for (j=0;j<nj;j++) {
|
||||
long row_count=0;
|
||||
#if EFDEBUG
|
||||
printf("-- %d ",j);
|
||||
#endif
|
||||
grib_get_reduced_row(pl[j],lon_first,lon_last,&row_count,&ilon_first,&ilon_last);
|
||||
lon_first_row=((ilon_first)*360.0)/pl[j];
|
||||
lon_last_row=((ilon_last)*360.0)/pl[j];
|
||||
result += row_count;
|
||||
(void)lon_last_row;
|
||||
(void)lon_first_row;
|
||||
#if EFDEBUG
|
||||
printf(" ilon_first=%ld lon_first=%.10e ilon_last=%ld lon_last=%.10e count=%ld row_count=%ld\n",
|
||||
ilon_first,lon_first_row,ilon_last,lon_last_row,result,row_count);
|
||||
#endif
|
||||
}
|
||||
} else {
|
||||
int i = 0;
|
||||
result=0;
|
||||
for (i=0;i<plsize;i++) result += pl[i];
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/* New MIR compatible way */
|
||||
static long num_points_reduced_gauss_new(grib_handle* h, long nj, long pl[], double lon_first, double lon_last)
|
||||
{
|
||||
long result = 0;
|
||||
long j;
|
||||
/* Always assume sub area */
|
||||
for (j=0;j<nj;j++) {
|
||||
long row_count=0;
|
||||
long ilon_first=0,ilon_last=0;
|
||||
grib_get_reduced_row2(pl[j], lon_first, lon_last, &row_count, &ilon_first, &ilon_last);
|
||||
result += row_count;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
#endif
|
||||
// Old implementation of num_points_reduced_gauss_old
|
||||
// See src/deprecated/grib_accessor_class_number_of_points_gaussian.cc
|
||||
//
|
||||
|
||||
static int angleApproximatelyEqual(double A, double B, double angular_precision)
|
||||
{
|
||||
|
@ -518,11 +455,10 @@ static int unpack_long_with_legacy_support(grib_accessor* a, long* val, size_t*
|
|||
return GRIB_GEOCALCULUS_PROBLEM;
|
||||
}
|
||||
grib_get_reduced_row_wrapper(h, pl[j], lon_first, lon_last, &row_count, &ilon_first, &ilon_last);
|
||||
#if 0
|
||||
if ( row_count != pl[j] ) {
|
||||
printf("oops...... rc=%ld but pl[%d]=%ld\n", row_count, j,pl[j]);
|
||||
}
|
||||
#endif
|
||||
|
||||
// if ( row_count != pl[j] ) {
|
||||
// printf("oops...... rc=%ld but pl[%d]=%ld\n", row_count, j,pl[j]);
|
||||
// }
|
||||
lon_first_row = ((ilon_first)*360.0) / pl[j];
|
||||
lon_last_row = ((ilon_last)*360.0) / pl[j];
|
||||
*val += row_count;
|
||||
|
|
|
@ -167,24 +167,18 @@ static int get_earth_shape(grib_handle* h, char* result)
|
|||
static int proj_space_view(grib_handle* h, char* result)
|
||||
{
|
||||
return GRIB_NOT_IMPLEMENTED;
|
||||
#if 0
|
||||
int err = 0;
|
||||
char shape[64] = {0,};
|
||||
double latOfSubSatellitePointInDegrees, lonOfSubSatellitePointInDegrees;
|
||||
|
||||
if ((err = get_earth_shape(h, shape)) != GRIB_SUCCESS)
|
||||
return err;
|
||||
|
||||
if ((err = grib_get_double_internal(h, "longitudeOfSubSatellitePointInDegrees", &lonOfSubSatellitePointInDegrees)) != GRIB_SUCCESS)
|
||||
return err;
|
||||
|
||||
snprintf(result, 526, "+proj=geos +lon_0=%lf +h=35785831 +x_0=0 +y_0=0 %s", lonOfSubSatellitePointInDegrees, shape);
|
||||
return err;
|
||||
|
||||
/* Experimental: For now do the same as gdalsrsinfo - hard coded values! */
|
||||
snprintf(result, 526, "+proj=geos +lon_0=0 +h=35785831 +x_0=0 +y_0=0 %s", shape);
|
||||
return err;
|
||||
#endif
|
||||
// int err = 0;
|
||||
// char shape[64] = {0,};
|
||||
// double latOfSubSatellitePointInDegrees, lonOfSubSatellitePointInDegrees;
|
||||
// if ((err = get_earth_shape(h, shape)) != GRIB_SUCCESS)
|
||||
// return err;
|
||||
// if ((err = grib_get_double_internal(h, "longitudeOfSubSatellitePointInDegrees", &lonOfSubSatellitePointInDegrees)) != GRIB_SUCCESS)
|
||||
// return err;
|
||||
// snprintf(result, 526, "+proj=geos +lon_0=%lf +h=35785831 +x_0=0 +y_0=0 %s", lonOfSubSatellitePointInDegrees, shape);
|
||||
// return err;
|
||||
// /* Experimental: For now do the same as gdalsrsinfo - hard coded values! */
|
||||
// snprintf(result, 526, "+proj=geos +lon_0=0 +h=35785831 +x_0=0 +y_0=0 %s", shape);
|
||||
// return err;
|
||||
}
|
||||
|
||||
static int proj_albers(grib_handle* h, char* result)
|
||||
|
|
|
@ -143,8 +143,8 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len)
|
|||
if (*len < 1) {
|
||||
ret = GRIB_ARRAY_TOO_SMALL;
|
||||
grib_context_log(a->context, GRIB_LOG_ERROR,
|
||||
"Accessor %s cannot gather value for %s and/or %s error %d",
|
||||
a->name, self->multiplier, self->divisor, ret);
|
||||
"Accessor %s cannot gather value for %s and/or %s",
|
||||
a->name, self->multiplier, self->divisor);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -161,7 +161,6 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len)
|
|||
*val = GRIB_MISSING_DOUBLE;
|
||||
else
|
||||
*val = ((double)(value * multiplier)) / divisor;
|
||||
/*printf("unpack_double: divisor=%ld multiplier=%ld long_value=%ld scaled_value=%.30f\n",(double)divisor,(double)multiplier,value,*val);*/
|
||||
|
||||
if (ret == GRIB_SUCCESS)
|
||||
*len = 1;
|
||||
|
@ -187,25 +186,19 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len)
|
|||
double x;
|
||||
|
||||
ret = grib_get_long_internal(grib_handle_of_accessor(a), self->divisor, &divisor);
|
||||
if (ret != GRIB_SUCCESS) {
|
||||
grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannot gather value for %s error %d \n", a->name, self->divisor, ret);
|
||||
return ret;
|
||||
}
|
||||
if (ret != GRIB_SUCCESS) return ret;
|
||||
|
||||
ret = grib_get_long_internal(grib_handle_of_accessor(a), self->multiplier, &multiplier);
|
||||
if (ret != GRIB_SUCCESS) {
|
||||
grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannot gather value for %s error %d \n", a->name, self->divisor, ret);
|
||||
return ret;
|
||||
}
|
||||
if (ret != GRIB_SUCCESS) return ret;
|
||||
|
||||
if (self->truncating) {
|
||||
ret = grib_get_long_internal(grib_handle_of_accessor(a), self->truncating, &truncating);
|
||||
if (ret != GRIB_SUCCESS) {
|
||||
grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannot gather value for %s error %d \n", a->name, self->truncating, ret);
|
||||
return ret;
|
||||
}
|
||||
if (ret != GRIB_SUCCESS) return ret;
|
||||
}
|
||||
|
||||
if (multiplier == 0) {
|
||||
grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s cannot divide by a zero multiplier %s error %d \n", a->name, self->multiplier, ret);
|
||||
grib_context_log(a->context, GRIB_LOG_ERROR, "Accessor %s: cannot divide by a zero multiplier %s",
|
||||
a->name, self->multiplier);
|
||||
return GRIB_ENCODING_ERROR;
|
||||
}
|
||||
|
||||
|
@ -239,17 +232,13 @@ static int is_missing(grib_accessor* a)
|
|||
if (!av)
|
||||
return GRIB_NOT_FOUND;
|
||||
return grib_is_missing_internal(av);
|
||||
#if 0
|
||||
int ret=0;
|
||||
long value=0;
|
||||
|
||||
if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->value, &value))!= GRIB_SUCCESS){
|
||||
grib_context_log(a->context, GRIB_LOG_ERROR,
|
||||
"Accessor %s cannot gather value for %s error %d \n", a->name,
|
||||
self->value, ret);
|
||||
return 0;
|
||||
}
|
||||
|
||||
return (value == GRIB_MISSING_LONG);
|
||||
#endif
|
||||
// int ret=0;
|
||||
// long value=0;
|
||||
// if((ret = grib_get_long_internal(grib_handle_of_accessor(a),self->value, &value))!= GRIB_SUCCESS){
|
||||
// grib_context_log(a->context, GRIB_LOG_ERROR,
|
||||
// "Accessor %s cannot gather value for %s error %d \n", a->name,
|
||||
// self->value, ret);
|
||||
// return 0;
|
||||
// }
|
||||
// return (value == GRIB_MISSING_LONG);
|
||||
}
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
* Enrico Fucile
|
||||
**********************************/
|
||||
|
||||
#include "grib_scaling.h"
|
||||
#include "grib_api_internal.h"
|
||||
/*
|
||||
This is used by make_class.pl
|
||||
|
@ -225,8 +226,8 @@ static int unpack_long(grib_accessor* a, long* val, size_t* len)
|
|||
min = values[i];
|
||||
}
|
||||
|
||||
d = grib_power(decimalScaleFactor, 10);
|
||||
b = grib_power(-binaryScaleFactor, 2);
|
||||
d = codes_power<double>(decimalScaleFactor, 10);
|
||||
b = codes_power<double>(-binaryScaleFactor, 2);
|
||||
|
||||
/* self->bitsPerValue=(long)ceil(log((double)((max-min)*d+1))/log(2.0))-binaryScaleFactor; */
|
||||
/* See GRIB-540 for why we use ceil */
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
**************************************/
|
||||
|
||||
|
||||
#include "grib_scaling.h"
|
||||
#include "grib_api_internal.h"
|
||||
/*
|
||||
This is used by make_class.pl
|
||||
|
@ -166,7 +167,7 @@ static int unpack_double(grib_accessor* a, double* val, size_t* len)
|
|||
Assert(1 == 0);
|
||||
|
||||
if (bitsPerValue != 0)
|
||||
*val = (*val + grib_power(binaryScaleFactor, 2)) * grib_power(-decimalScaleFactor, 10) * 0.5;
|
||||
*val = (*val + codes_power<double>(binaryScaleFactor, 2)) * codes_power<double>(-decimalScaleFactor, 10) * 0.5;
|
||||
|
||||
if (ret == GRIB_SUCCESS)
|
||||
*len = 1;
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
****************************************/
|
||||
|
||||
#include "grib_api_internal.h"
|
||||
#include <ctype.h>
|
||||
#include <cctype>
|
||||
|
||||
/*
|
||||
This is used by make_class.pl
|
||||
|
|
|
@ -179,15 +179,13 @@ static int get_native_type(grib_accessor* a)
|
|||
return GRIB_TYPE_LONG;
|
||||
}
|
||||
|
||||
#if 0
|
||||
static const char* mode_to_str(int p)
|
||||
{
|
||||
if (p==CODES_BUFR_UNPACK_STRUCTURE) return "CODES_BUFR_UNPACK_STRUCTURE";
|
||||
if (p==CODES_BUFR_UNPACK_FLAT) return "CODES_BUFR_UNPACK_FLAT";
|
||||
if (p==CODES_BUFR_NEW_DATA) return "CODES_BUFR_NEW_DATA";
|
||||
return "unknown proc flag";
|
||||
}
|
||||
#endif
|
||||
// static const char* mode_to_str(int p)
|
||||
// {
|
||||
// if (p==CODES_BUFR_UNPACK_STRUCTURE) return "CODES_BUFR_UNPACK_STRUCTURE";
|
||||
// if (p==CODES_BUFR_UNPACK_FLAT) return "CODES_BUFR_UNPACK_FLAT";
|
||||
// if (p==CODES_BUFR_NEW_DATA) return "CODES_BUFR_NEW_DATA";
|
||||
// return "unknown proc flag";
|
||||
// }
|
||||
|
||||
static int pack_long(grib_accessor* a, const long* val, size_t* len)
|
||||
{
|
||||
|
|
|
@ -37,7 +37,7 @@
|
|||
#line 6 "accessor_class_list.gperf"
|
||||
struct accessor_class_hash { char *name; grib_accessor_class **cclass;};
|
||||
|
||||
#define TOTAL_KEYWORDS 219
|
||||
#define TOTAL_KEYWORDS 218
|
||||
#define MIN_WORD_LENGTH 1
|
||||
#define MAX_WORD_LENGTH 44
|
||||
#define MIN_HASH_VALUE 1
|
||||
|
@ -61,7 +61,7 @@ grib_accessor_classes_get_id (const char *str, size_t len)
|
|||
680, 680, 680, 680, 680, 680, 680, 680, 680, 680,
|
||||
680, 680, 0, 680, 680, 680, 680, 680, 680, 680,
|
||||
680, 680, 680, 680, 680, 680, 680, 680, 0, 162,
|
||||
41, 7, 0, 680, 34, 680, 7, 680, 680, 680,
|
||||
41, 6, 0, 680, 34, 680, 8, 680, 680, 680,
|
||||
680, 680, 680, 680, 680, 680, 680, 680, 680, 680,
|
||||
680, 680, 680, 680, 680, 680, 680, 680, 680, 680,
|
||||
680, 680, 680, 680, 680, 680, 680, 680, 680, 680,
|
||||
|
@ -118,59 +118,59 @@ static const struct accessor_class_hash classes[] =
|
|||
#line 9 "accessor_class_list.gperf"
|
||||
{" "},
|
||||
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
||||
#line 156 "accessor_class_list.gperf"
|
||||
#line 155 "accessor_class_list.gperf"
|
||||
{"nearest", &grib_accessor_class_nearest},
|
||||
{""}, {""}, {""}, {""}, {""}, {""},
|
||||
#line 118 "accessor_class_list.gperf"
|
||||
#line 117 "accessor_class_list.gperf"
|
||||
{"gen", &grib_accessor_class_gen},
|
||||
{""}, {""},
|
||||
#line 119 "accessor_class_list.gperf"
|
||||
#line 118 "accessor_class_list.gperf"
|
||||
{"getenv", &grib_accessor_class_getenv},
|
||||
#line 84 "accessor_class_list.gperf"
|
||||
{"expanded_descriptors", &grib_accessor_class_expanded_descriptors},
|
||||
{""}, {""}, {""}, {""}, {""},
|
||||
#line 134 "accessor_class_list.gperf"
|
||||
#line 133 "accessor_class_list.gperf"
|
||||
{"int8", &grib_accessor_class_int8},
|
||||
#line 132 "accessor_class_list.gperf"
|
||||
#line 131 "accessor_class_list.gperf"
|
||||
{"int64", &grib_accessor_class_int64},
|
||||
#line 72 "accessor_class_list.gperf"
|
||||
{"data_secondary_bitmap", &grib_accessor_class_data_secondary_bitmap},
|
||||
#line 203 "accessor_class_list.gperf"
|
||||
#line 202 "accessor_class_list.gperf"
|
||||
{"time", &grib_accessor_class_time},
|
||||
#line 69 "accessor_class_list.gperf"
|
||||
{"data_png_packing", &grib_accessor_class_data_png_packing},
|
||||
{""},
|
||||
#line 191 "accessor_class_list.gperf"
|
||||
#line 190 "accessor_class_list.gperf"
|
||||
{"size", &grib_accessor_class_size},
|
||||
#line 181 "accessor_class_list.gperf"
|
||||
#line 180 "accessor_class_list.gperf"
|
||||
{"second_order_bits_per_value", &grib_accessor_class_second_order_bits_per_value},
|
||||
#line 188 "accessor_class_list.gperf"
|
||||
#line 187 "accessor_class_list.gperf"
|
||||
{"signed", &grib_accessor_class_signed},
|
||||
#line 182 "accessor_class_list.gperf"
|
||||
#line 181 "accessor_class_list.gperf"
|
||||
{"section", &grib_accessor_class_section},
|
||||
#line 204 "accessor_class_list.gperf"
|
||||
#line 203 "accessor_class_list.gperf"
|
||||
{"times", &grib_accessor_class_times},
|
||||
#line 70 "accessor_class_list.gperf"
|
||||
{"data_raw_packing", &grib_accessor_class_data_raw_packing},
|
||||
#line 117 "accessor_class_list.gperf"
|
||||
#line 116 "accessor_class_list.gperf"
|
||||
{"gds_not_present_bitmap", &grib_accessor_class_gds_not_present_bitmap},
|
||||
{""},
|
||||
#line 13 "accessor_class_list.gperf"
|
||||
{"ascii", &grib_accessor_class_ascii},
|
||||
{""},
|
||||
#line 183 "accessor_class_list.gperf"
|
||||
#line 182 "accessor_class_list.gperf"
|
||||
{"section_length", &grib_accessor_class_section_length},
|
||||
#line 184 "accessor_class_list.gperf"
|
||||
#line 183 "accessor_class_list.gperf"
|
||||
{"section_padding", &grib_accessor_class_section_padding},
|
||||
#line 197 "accessor_class_list.gperf"
|
||||
#line 196 "accessor_class_list.gperf"
|
||||
{"statistics", &grib_accessor_class_statistics},
|
||||
#line 200 "accessor_class_list.gperf"
|
||||
#line 199 "accessor_class_list.gperf"
|
||||
{"step_in_units", &grib_accessor_class_step_in_units},
|
||||
#line 189 "accessor_class_list.gperf"
|
||||
#line 188 "accessor_class_list.gperf"
|
||||
{"signed_bits", &grib_accessor_class_signed_bits},
|
||||
#line 194 "accessor_class_list.gperf"
|
||||
#line 193 "accessor_class_list.gperf"
|
||||
{"spd", &grib_accessor_class_spd},
|
||||
#line 168 "accessor_class_list.gperf"
|
||||
#line 167 "accessor_class_list.gperf"
|
||||
{"pad", &grib_accessor_class_pad},
|
||||
#line 76 "accessor_class_list.gperf"
|
||||
{"data_simple_packing", &grib_accessor_class_data_simple_packing},
|
||||
|
@ -178,39 +178,39 @@ static const struct accessor_class_hash classes[] =
|
|||
#line 79 "accessor_class_list.gperf"
|
||||
{"dirty", &grib_accessor_class_dirty},
|
||||
{""}, {""},
|
||||
#line 198 "accessor_class_list.gperf"
|
||||
#line 197 "accessor_class_list.gperf"
|
||||
{"statistics_spectral", &grib_accessor_class_statistics_spectral},
|
||||
#line 78 "accessor_class_list.gperf"
|
||||
{"dictionary", &grib_accessor_class_dictionary},
|
||||
{""},
|
||||
#line 116 "accessor_class_list.gperf"
|
||||
#line 115 "accessor_class_list.gperf"
|
||||
{"gds_is_present", &grib_accessor_class_gds_is_present},
|
||||
{""},
|
||||
#line 113 "accessor_class_list.gperf"
|
||||
#line 112 "accessor_class_list.gperf"
|
||||
{"g2lon", &grib_accessor_class_g2lon},
|
||||
#line 206 "accessor_class_list.gperf"
|
||||
#line 205 "accessor_class_list.gperf"
|
||||
{"to_integer", &grib_accessor_class_to_integer},
|
||||
#line 128 "accessor_class_list.gperf"
|
||||
#line 127 "accessor_class_list.gperf"
|
||||
{"int16", &grib_accessor_class_int16},
|
||||
{""},
|
||||
#line 108 "accessor_class_list.gperf"
|
||||
#line 107 "accessor_class_list.gperf"
|
||||
{"g2date", &grib_accessor_class_g2date},
|
||||
#line 46 "accessor_class_list.gperf"
|
||||
{"data_apply_bitmap", &grib_accessor_class_data_apply_bitmap},
|
||||
{""},
|
||||
#line 185 "accessor_class_list.gperf"
|
||||
#line 184 "accessor_class_list.gperf"
|
||||
{"section_pointer", &grib_accessor_class_section_pointer},
|
||||
#line 68 "accessor_class_list.gperf"
|
||||
{"data_jpeg2000_packing", &grib_accessor_class_data_jpeg2000_packing},
|
||||
#line 130 "accessor_class_list.gperf"
|
||||
#line 129 "accessor_class_list.gperf"
|
||||
{"int32", &grib_accessor_class_int32},
|
||||
#line 61 "accessor_class_list.gperf"
|
||||
{"data_g22order_packing", &grib_accessor_class_data_g22order_packing},
|
||||
#line 109 "accessor_class_list.gperf"
|
||||
#line 108 "accessor_class_list.gperf"
|
||||
{"g2end_step", &grib_accessor_class_g2end_step},
|
||||
#line 49 "accessor_class_list.gperf"
|
||||
{"data_apply_gdsnotpresent", &grib_accessor_class_data_apply_gdsnotpresent},
|
||||
#line 106 "accessor_class_list.gperf"
|
||||
#line 105 "accessor_class_list.gperf"
|
||||
{"g2bitmap", &grib_accessor_class_g2bitmap},
|
||||
#line 47 "accessor_class_list.gperf"
|
||||
{"data_apply_boustrophedonic", &grib_accessor_class_data_apply_boustrophedonic},
|
||||
|
@ -220,55 +220,55 @@ static const struct accessor_class_hash classes[] =
|
|||
{""}, {""}, {""}, {""},
|
||||
#line 48 "accessor_class_list.gperf"
|
||||
{"data_apply_boustrophedonic_bitmap", &grib_accessor_class_data_apply_boustrophedonic_bitmap},
|
||||
#line 114 "accessor_class_list.gperf"
|
||||
#line 113 "accessor_class_list.gperf"
|
||||
{"g2step_range", &grib_accessor_class_g2step_range},
|
||||
{""},
|
||||
#line 110 "accessor_class_list.gperf"
|
||||
#line 109 "accessor_class_list.gperf"
|
||||
{"g2grid", &grib_accessor_class_g2grid},
|
||||
{""},
|
||||
#line 207 "accessor_class_list.gperf"
|
||||
#line 206 "accessor_class_list.gperf"
|
||||
{"to_string", &grib_accessor_class_to_string},
|
||||
{""}, {""},
|
||||
#line 135 "accessor_class_list.gperf"
|
||||
#line 134 "accessor_class_list.gperf"
|
||||
{"iterator", &grib_accessor_class_iterator},
|
||||
#line 169 "accessor_class_list.gperf"
|
||||
#line 168 "accessor_class_list.gperf"
|
||||
{"padding", &grib_accessor_class_padding},
|
||||
{""}, {""},
|
||||
#line 210 "accessor_class_list.gperf"
|
||||
#line 209 "accessor_class_list.gperf"
|
||||
{"trim", &grib_accessor_class_trim},
|
||||
{""},
|
||||
#line 65 "accessor_class_list.gperf"
|
||||
{"data_g2shsimple_packing", &grib_accessor_class_data_g2shsimple_packing},
|
||||
#line 175 "accessor_class_list.gperf"
|
||||
#line 174 "accessor_class_list.gperf"
|
||||
{"raw", &grib_accessor_class_raw},
|
||||
{""},
|
||||
#line 82 "accessor_class_list.gperf"
|
||||
{"element", &grib_accessor_class_element},
|
||||
#line 170 "accessor_class_list.gperf"
|
||||
#line 169 "accessor_class_list.gperf"
|
||||
{"padto", &grib_accessor_class_padto},
|
||||
#line 104 "accessor_class_list.gperf"
|
||||
#line 103 "accessor_class_list.gperf"
|
||||
{"g2_eps", &grib_accessor_class_g2_eps},
|
||||
{""}, {""},
|
||||
#line 157 "accessor_class_list.gperf"
|
||||
#line 156 "accessor_class_list.gperf"
|
||||
{"non_alpha", &grib_accessor_class_non_alpha},
|
||||
#line 208 "accessor_class_list.gperf"
|
||||
#line 207 "accessor_class_list.gperf"
|
||||
{"transient", &grib_accessor_class_transient},
|
||||
#line 14 "accessor_class_list.gperf"
|
||||
{"assert", &grib_accessor_class_assert},
|
||||
{""},
|
||||
#line 141 "accessor_class_list.gperf"
|
||||
#line 140 "accessor_class_list.gperf"
|
||||
{"latitudes", &grib_accessor_class_latitudes},
|
||||
{""},
|
||||
#line 66 "accessor_class_list.gperf"
|
||||
{"data_g2simple_packing", &grib_accessor_class_data_g2simple_packing},
|
||||
#line 63 "accessor_class_list.gperf"
|
||||
{"data_g2complex_packing", &grib_accessor_class_data_g2complex_packing},
|
||||
#line 209 "accessor_class_list.gperf"
|
||||
#line 208 "accessor_class_list.gperf"
|
||||
{"transient_darray", &grib_accessor_class_transient_darray},
|
||||
{""},
|
||||
#line 102 "accessor_class_list.gperf"
|
||||
#line 101 "accessor_class_list.gperf"
|
||||
{"g2_aerosol", &grib_accessor_class_g2_aerosol},
|
||||
#line 111 "accessor_class_list.gperf"
|
||||
#line 110 "accessor_class_list.gperf"
|
||||
{"g2latlon", &grib_accessor_class_g2latlon},
|
||||
{""}, {""}, {""}, {""}, {""},
|
||||
#line 64 "accessor_class_list.gperf"
|
||||
|
@ -278,77 +278,77 @@ static const struct accessor_class_hash classes[] =
|
|||
#line 12 "accessor_class_list.gperf"
|
||||
{"array", &grib_accessor_class_array},
|
||||
{""}, {""}, {""}, {""},
|
||||
#line 176 "accessor_class_list.gperf"
|
||||
#line 175 "accessor_class_list.gperf"
|
||||
{"rdbtime_guess_date", &grib_accessor_class_rdbtime_guess_date},
|
||||
#line 67 "accessor_class_list.gperf"
|
||||
{"data_g2simple_packing_with_preprocessing", &grib_accessor_class_data_g2simple_packing_with_preprocessing},
|
||||
{""}, {""},
|
||||
#line 120 "accessor_class_list.gperf"
|
||||
#line 119 "accessor_class_list.gperf"
|
||||
{"global_gaussian", &grib_accessor_class_global_gaussian},
|
||||
{""},
|
||||
#line 187 "accessor_class_list.gperf"
|
||||
#line 186 "accessor_class_list.gperf"
|
||||
{"sexagesimal2decimal", &grib_accessor_class_sexagesimal2decimal},
|
||||
#line 140 "accessor_class_list.gperf"
|
||||
#line 139 "accessor_class_list.gperf"
|
||||
{"laplacian", &grib_accessor_class_laplacian},
|
||||
{""},
|
||||
#line 201 "accessor_class_list.gperf"
|
||||
#line 200 "accessor_class_list.gperf"
|
||||
{"sum", &grib_accessor_class_sum},
|
||||
{""},
|
||||
#line 115 "accessor_class_list.gperf"
|
||||
#line 114 "accessor_class_list.gperf"
|
||||
{"gaussian_grid_name", &grib_accessor_class_gaussian_grid_name},
|
||||
#line 178 "accessor_class_list.gperf"
|
||||
#line 177 "accessor_class_list.gperf"
|
||||
{"round", &grib_accessor_class_round},
|
||||
#line 146 "accessor_class_list.gperf"
|
||||
#line 145 "accessor_class_list.gperf"
|
||||
{"long", &grib_accessor_class_long},
|
||||
{""},
|
||||
#line 81 "accessor_class_list.gperf"
|
||||
{"double", &grib_accessor_class_double},
|
||||
#line 190 "accessor_class_list.gperf"
|
||||
#line 189 "accessor_class_list.gperf"
|
||||
{"simple_packing_error", &grib_accessor_class_simple_packing_error},
|
||||
#line 121 "accessor_class_list.gperf"
|
||||
#line 120 "accessor_class_list.gperf"
|
||||
{"group", &grib_accessor_class_group},
|
||||
{""},
|
||||
#line 173 "accessor_class_list.gperf"
|
||||
#line 172 "accessor_class_list.gperf"
|
||||
{"position", &grib_accessor_class_position},
|
||||
#line 137 "accessor_class_list.gperf"
|
||||
{"julian_day", &grib_accessor_class_julian_day},
|
||||
#line 136 "accessor_class_list.gperf"
|
||||
{"julian_day", &grib_accessor_class_julian_day},
|
||||
#line 135 "accessor_class_list.gperf"
|
||||
{"julian_date", &grib_accessor_class_julian_date},
|
||||
#line 220 "accessor_class_list.gperf"
|
||||
#line 219 "accessor_class_list.gperf"
|
||||
{"unsigned", &grib_accessor_class_unsigned},
|
||||
{""}, {""},
|
||||
#line 52 "accessor_class_list.gperf"
|
||||
{"data_dummy_field", &grib_accessor_class_data_dummy_field},
|
||||
{""},
|
||||
#line 174 "accessor_class_list.gperf"
|
||||
#line 173 "accessor_class_list.gperf"
|
||||
{"proj_string", &grib_accessor_class_proj_string},
|
||||
#line 15 "accessor_class_list.gperf"
|
||||
{"bit", &grib_accessor_class_bit},
|
||||
#line 17 "accessor_class_list.gperf"
|
||||
{"bits", &grib_accessor_class_bits},
|
||||
#line 199 "accessor_class_list.gperf"
|
||||
#line 198 "accessor_class_list.gperf"
|
||||
{"step_human_readable", &grib_accessor_class_step_human_readable},
|
||||
#line 71 "accessor_class_list.gperf"
|
||||
{"data_run_length_packing", &grib_accessor_class_data_run_length_packing},
|
||||
#line 179 "accessor_class_list.gperf"
|
||||
#line 178 "accessor_class_list.gperf"
|
||||
{"scale", &grib_accessor_class_scale},
|
||||
#line 195 "accessor_class_list.gperf"
|
||||
#line 194 "accessor_class_list.gperf"
|
||||
{"spectral_truncation", &grib_accessor_class_spectral_truncation},
|
||||
#line 45 "accessor_class_list.gperf"
|
||||
{"data_2order_packing", &grib_accessor_class_data_2order_packing},
|
||||
#line 217 "accessor_class_list.gperf"
|
||||
{"uint8", &grib_accessor_class_uint8},
|
||||
#line 213 "accessor_class_list.gperf"
|
||||
#line 212 "accessor_class_list.gperf"
|
||||
{"uint32", &grib_accessor_class_uint32},
|
||||
#line 216 "accessor_class_list.gperf"
|
||||
{"uint8", &grib_accessor_class_uint8},
|
||||
#line 31 "accessor_class_list.gperf"
|
||||
{"bytes", &grib_accessor_class_bytes},
|
||||
#line 16 "accessor_class_list.gperf"
|
||||
{"bitmap", &grib_accessor_class_bitmap},
|
||||
{""},
|
||||
#line 107 "accessor_class_list.gperf"
|
||||
#line 106 "accessor_class_list.gperf"
|
||||
{"g2bitmap_present", &grib_accessor_class_g2bitmap_present},
|
||||
{""}, {""},
|
||||
#line 196 "accessor_class_list.gperf"
|
||||
#line 195 "accessor_class_list.gperf"
|
||||
{"sprintf", &grib_accessor_class_sprintf},
|
||||
{""}, {""}, {""},
|
||||
#line 18 "accessor_class_list.gperf"
|
||||
|
@ -356,75 +356,74 @@ static const struct accessor_class_hash classes[] =
|
|||
#line 50 "accessor_class_list.gperf"
|
||||
{"data_ccsds_packing", &grib_accessor_class_data_ccsds_packing},
|
||||
{""},
|
||||
#line 221 "accessor_class_list.gperf"
|
||||
#line 220 "accessor_class_list.gperf"
|
||||
{"unsigned_bits", &grib_accessor_class_unsigned_bits},
|
||||
#line 165 "accessor_class_list.gperf"
|
||||
#line 164 "accessor_class_list.gperf"
|
||||
{"offset_file", &grib_accessor_class_offset_file},
|
||||
{""},
|
||||
#line 85 "accessor_class_list.gperf"
|
||||
{"forward", &grib_accessor_class_forward},
|
||||
#line 214 "accessor_class_list.gperf"
|
||||
#line 213 "accessor_class_list.gperf"
|
||||
{"uint32_little_endian", &grib_accessor_class_uint32_little_endian},
|
||||
#line 90 "accessor_class_list.gperf"
|
||||
{""},
|
||||
#line 89 "accessor_class_list.gperf"
|
||||
{"g1area", &grib_accessor_class_g1area},
|
||||
#line 159 "accessor_class_list.gperf"
|
||||
#line 158 "accessor_class_list.gperf"
|
||||
{"number_of_points", &grib_accessor_class_number_of_points},
|
||||
{""},
|
||||
#line 92 "accessor_class_list.gperf"
|
||||
#line 91 "accessor_class_list.gperf"
|
||||
{"g1date", &grib_accessor_class_g1date},
|
||||
{""}, {""},
|
||||
#line 139 "accessor_class_list.gperf"
|
||||
#line 138 "accessor_class_list.gperf"
|
||||
{"label", &grib_accessor_class_label},
|
||||
#line 218 "accessor_class_list.gperf"
|
||||
#line 217 "accessor_class_list.gperf"
|
||||
{"unexpanded_descriptors", &grib_accessor_class_unexpanded_descriptors},
|
||||
#line 215 "accessor_class_list.gperf"
|
||||
#line 214 "accessor_class_list.gperf"
|
||||
{"uint64", &grib_accessor_class_uint64},
|
||||
{""},
|
||||
#line 160 "accessor_class_list.gperf"
|
||||
#line 159 "accessor_class_list.gperf"
|
||||
{"number_of_points_gaussian", &grib_accessor_class_number_of_points_gaussian},
|
||||
{""},
|
||||
#line 91 "accessor_class_list.gperf"
|
||||
#line 90 "accessor_class_list.gperf"
|
||||
{"g1bitmap", &grib_accessor_class_g1bitmap},
|
||||
{""}, {""},
|
||||
#line 89 "accessor_class_list.gperf"
|
||||
#line 88 "accessor_class_list.gperf"
|
||||
{"g1_section4_length", &grib_accessor_class_g1_section4_length},
|
||||
#line 126 "accessor_class_list.gperf"
|
||||
#line 125 "accessor_class_list.gperf"
|
||||
{"ieeefloat", &grib_accessor_class_ieeefloat},
|
||||
{""},
|
||||
#line 88 "accessor_class_list.gperf"
|
||||
#line 87 "accessor_class_list.gperf"
|
||||
{"g1_message_length", &grib_accessor_class_g1_message_length},
|
||||
{""}, {""},
|
||||
#line 100 "accessor_class_list.gperf"
|
||||
#line 99 "accessor_class_list.gperf"
|
||||
{"g1step_range", &grib_accessor_class_g1step_range},
|
||||
{""}, {""},
|
||||
#line 40 "accessor_class_list.gperf"
|
||||
{"concept", &grib_accessor_class_concept},
|
||||
#line 41 "accessor_class_list.gperf"
|
||||
{"constant", &grib_accessor_class_constant},
|
||||
#line 216 "accessor_class_list.gperf"
|
||||
#line 215 "accessor_class_list.gperf"
|
||||
{"uint64_little_endian", &grib_accessor_class_uint64_little_endian},
|
||||
#line 80 "accessor_class_list.gperf"
|
||||
{"divdouble", &grib_accessor_class_divdouble},
|
||||
#line 227 "accessor_class_list.gperf"
|
||||
#line 226 "accessor_class_list.gperf"
|
||||
{"when", &grib_accessor_class_when},
|
||||
#line 164 "accessor_class_list.gperf"
|
||||
#line 163 "accessor_class_list.gperf"
|
||||
{"octet_number", &grib_accessor_class_octet_number},
|
||||
{""},
|
||||
#line 105 "accessor_class_list.gperf"
|
||||
#line 104 "accessor_class_list.gperf"
|
||||
{"g2_mars_labeling", &grib_accessor_class_g2_mars_labeling},
|
||||
#line 186 "accessor_class_list.gperf"
|
||||
#line 185 "accessor_class_list.gperf"
|
||||
{"select_step_template", &grib_accessor_class_select_step_template},
|
||||
{""},
|
||||
#line 59 "accessor_class_list.gperf"
|
||||
{"data_g1shsimple_packing", &grib_accessor_class_data_g1shsimple_packing},
|
||||
{""},
|
||||
#line 133 "accessor_class_list.gperf"
|
||||
#line 132 "accessor_class_list.gperf"
|
||||
{"int64_little_endian", &grib_accessor_class_int64_little_endian},
|
||||
{""}, {""},
|
||||
#line 19 "accessor_class_list.gperf"
|
||||
{"blob", &grib_accessor_class_blob},
|
||||
{""}, {""}, {""},
|
||||
#line 224 "accessor_class_list.gperf"
|
||||
#line 223 "accessor_class_list.gperf"
|
||||
{"values", &grib_accessor_class_values},
|
||||
{""}, {""}, {""}, {""},
|
||||
#line 60 "accessor_class_list.gperf"
|
||||
|
@ -432,45 +431,45 @@ static const struct accessor_class_hash classes[] =
|
|||
#line 53 "accessor_class_list.gperf"
|
||||
{"data_g1complex_packing", &grib_accessor_class_data_g1complex_packing},
|
||||
{""}, {""},
|
||||
#line 147 "accessor_class_list.gperf"
|
||||
#line 146 "accessor_class_list.gperf"
|
||||
{"long_vector", &grib_accessor_class_long_vector},
|
||||
#line 202 "accessor_class_list.gperf"
|
||||
#line 201 "accessor_class_list.gperf"
|
||||
{"suppressed", &grib_accessor_class_suppressed},
|
||||
#line 122 "accessor_class_list.gperf"
|
||||
#line 121 "accessor_class_list.gperf"
|
||||
{"gts_header", &grib_accessor_class_gts_header},
|
||||
#line 205 "accessor_class_list.gperf"
|
||||
#line 204 "accessor_class_list.gperf"
|
||||
{"to_double", &grib_accessor_class_to_double},
|
||||
{""}, {""},
|
||||
#line 145 "accessor_class_list.gperf"
|
||||
#line 144 "accessor_class_list.gperf"
|
||||
{"local_definition", &grib_accessor_class_local_definition},
|
||||
#line 58 "accessor_class_list.gperf"
|
||||
{"data_g1secondary_bitmap", &grib_accessor_class_data_g1secondary_bitmap},
|
||||
#line 222 "accessor_class_list.gperf"
|
||||
#line 221 "accessor_class_list.gperf"
|
||||
{"validity_date", &grib_accessor_class_validity_date},
|
||||
#line 144 "accessor_class_list.gperf"
|
||||
#line 143 "accessor_class_list.gperf"
|
||||
{"library_version", &grib_accessor_class_library_version},
|
||||
{""}, {""},
|
||||
#line 142 "accessor_class_list.gperf"
|
||||
#line 141 "accessor_class_list.gperf"
|
||||
{"latlon_increment", &grib_accessor_class_latlon_increment},
|
||||
{""}, {""},
|
||||
#line 94 "accessor_class_list.gperf"
|
||||
#line 93 "accessor_class_list.gperf"
|
||||
{"g1end_of_interval_monthly", &grib_accessor_class_g1end_of_interval_monthly},
|
||||
{""}, {""},
|
||||
#line 129 "accessor_class_list.gperf"
|
||||
#line 128 "accessor_class_list.gperf"
|
||||
{"int16_little_endian", &grib_accessor_class_int16_little_endian},
|
||||
#line 56 "accessor_class_list.gperf"
|
||||
{"data_g1second_order_general_packing", &grib_accessor_class_data_g1second_order_general_packing},
|
||||
#line 35 "accessor_class_list.gperf"
|
||||
{"closest_date", &grib_accessor_class_closest_date},
|
||||
#line 125 "accessor_class_list.gperf"
|
||||
#line 124 "accessor_class_list.gperf"
|
||||
{"ibmfloat", &grib_accessor_class_ibmfloat},
|
||||
#line 57 "accessor_class_list.gperf"
|
||||
{"data_g1second_order_row_by_row_packing", &grib_accessor_class_data_g1second_order_row_by_row_packing},
|
||||
#line 152 "accessor_class_list.gperf"
|
||||
#line 151 "accessor_class_list.gperf"
|
||||
{"md5", &grib_accessor_class_md5},
|
||||
#line 223 "accessor_class_list.gperf"
|
||||
#line 222 "accessor_class_list.gperf"
|
||||
{"validity_time", &grib_accessor_class_validity_time},
|
||||
#line 131 "accessor_class_list.gperf"
|
||||
#line 130 "accessor_class_list.gperf"
|
||||
{"int32_little_endian", &grib_accessor_class_int32_little_endian},
|
||||
#line 54 "accessor_class_list.gperf"
|
||||
{"data_g1second_order_constant_width_packing", &grib_accessor_class_data_g1second_order_constant_width_packing},
|
||||
|
@ -480,36 +479,36 @@ static const struct accessor_class_hash classes[] =
|
|||
{""}, {""},
|
||||
#line 74 "accessor_class_list.gperf"
|
||||
{"data_sh_unpacked", &grib_accessor_class_data_sh_unpacked},
|
||||
#line 226 "accessor_class_list.gperf"
|
||||
#line 225 "accessor_class_list.gperf"
|
||||
{"vector", &grib_accessor_class_vector},
|
||||
#line 20 "accessor_class_list.gperf"
|
||||
{"budgdate", &grib_accessor_class_budgdate},
|
||||
#line 153 "accessor_class_list.gperf"
|
||||
#line 152 "accessor_class_list.gperf"
|
||||
{"message", &grib_accessor_class_message},
|
||||
#line 149 "accessor_class_list.gperf"
|
||||
#line 148 "accessor_class_list.gperf"
|
||||
{"lookup", &grib_accessor_class_lookup},
|
||||
#line 75 "accessor_class_list.gperf"
|
||||
{"data_shsimple_packing", &grib_accessor_class_data_shsimple_packing},
|
||||
#line 138 "accessor_class_list.gperf"
|
||||
#line 137 "accessor_class_list.gperf"
|
||||
{"ksec1expver", &grib_accessor_class_ksec1expver},
|
||||
{""},
|
||||
#line 172 "accessor_class_list.gperf"
|
||||
#line 171 "accessor_class_list.gperf"
|
||||
{"padtomultiple", &grib_accessor_class_padtomultiple},
|
||||
#line 151 "accessor_class_list.gperf"
|
||||
#line 150 "accessor_class_list.gperf"
|
||||
{"mars_step", &grib_accessor_class_mars_step},
|
||||
#line 127 "accessor_class_list.gperf"
|
||||
#line 126 "accessor_class_list.gperf"
|
||||
{"ifs_param", &grib_accessor_class_ifs_param},
|
||||
{""},
|
||||
#line 192 "accessor_class_list.gperf"
|
||||
#line 191 "accessor_class_list.gperf"
|
||||
{"smart_table", &grib_accessor_class_smart_table},
|
||||
{""},
|
||||
#line 150 "accessor_class_list.gperf"
|
||||
#line 149 "accessor_class_list.gperf"
|
||||
{"mars_param", &grib_accessor_class_mars_param},
|
||||
{""},
|
||||
#line 22 "accessor_class_list.gperf"
|
||||
{"bufr_data_element", &grib_accessor_class_bufr_data_element},
|
||||
{""}, {""},
|
||||
#line 193 "accessor_class_list.gperf"
|
||||
#line 192 "accessor_class_list.gperf"
|
||||
{"smart_table_column", &grib_accessor_class_smart_table_column},
|
||||
{""},
|
||||
#line 21 "accessor_class_list.gperf"
|
||||
|
@ -520,10 +519,10 @@ static const struct accessor_class_hash classes[] =
|
|||
#line 29 "accessor_class_list.gperf"
|
||||
{"bufr_string_values", &grib_accessor_class_bufr_string_values},
|
||||
{""}, {""}, {""},
|
||||
#line 148 "accessor_class_list.gperf"
|
||||
#line 147 "accessor_class_list.gperf"
|
||||
{"longitudes", &grib_accessor_class_longitudes},
|
||||
{""},
|
||||
#line 158 "accessor_class_list.gperf"
|
||||
#line 157 "accessor_class_list.gperf"
|
||||
{"number_of_coded_values", &grib_accessor_class_number_of_coded_values},
|
||||
{""},
|
||||
#line 28 "accessor_class_list.gperf"
|
||||
|
@ -531,30 +530,30 @@ static const struct accessor_class_hash classes[] =
|
|||
#line 44 "accessor_class_list.gperf"
|
||||
{"count_total", &grib_accessor_class_count_total},
|
||||
{""}, {""}, {""}, {""},
|
||||
#line 123 "accessor_class_list.gperf"
|
||||
#line 122 "accessor_class_list.gperf"
|
||||
{"hash_array", &grib_accessor_class_hash_array},
|
||||
#line 166 "accessor_class_list.gperf"
|
||||
#line 165 "accessor_class_list.gperf"
|
||||
{"offset_values", &grib_accessor_class_offset_values},
|
||||
#line 124 "accessor_class_list.gperf"
|
||||
#line 123 "accessor_class_list.gperf"
|
||||
{"headers_only", &grib_accessor_class_headers_only},
|
||||
{""}, {""},
|
||||
#line 95 "accessor_class_list.gperf"
|
||||
#line 94 "accessor_class_list.gperf"
|
||||
{"g1fcperiod", &grib_accessor_class_g1fcperiod},
|
||||
#line 154 "accessor_class_list.gperf"
|
||||
#line 153 "accessor_class_list.gperf"
|
||||
{"message_copy", &grib_accessor_class_message_copy},
|
||||
{""}, {""},
|
||||
#line 171 "accessor_class_list.gperf"
|
||||
#line 170 "accessor_class_list.gperf"
|
||||
{"padtoeven", &grib_accessor_class_padtoeven},
|
||||
{""}, {""},
|
||||
#line 211 "accessor_class_list.gperf"
|
||||
#line 210 "accessor_class_list.gperf"
|
||||
{"uint16", &grib_accessor_class_uint16},
|
||||
{""}, {""},
|
||||
#line 155 "accessor_class_list.gperf"
|
||||
#line 154 "accessor_class_list.gperf"
|
||||
{"missing", &grib_accessor_class_missing},
|
||||
#line 225 "accessor_class_list.gperf"
|
||||
#line 224 "accessor_class_list.gperf"
|
||||
{"variable", &grib_accessor_class_variable},
|
||||
{""}, {""},
|
||||
#line 87 "accessor_class_list.gperf"
|
||||
#line 86 "accessor_class_list.gperf"
|
||||
{"g1_half_byte_codeflag", &grib_accessor_class_g1_half_byte_codeflag},
|
||||
{""},
|
||||
#line 42 "accessor_class_list.gperf"
|
||||
|
@ -563,7 +562,7 @@ static const struct accessor_class_hash classes[] =
|
|||
#line 36 "accessor_class_list.gperf"
|
||||
{"codeflag", &grib_accessor_class_codeflag},
|
||||
{""}, {""}, {""}, {""}, {""}, {""},
|
||||
#line 212 "accessor_class_list.gperf"
|
||||
#line 211 "accessor_class_list.gperf"
|
||||
{"uint16_little_endian", &grib_accessor_class_uint16_little_endian},
|
||||
#line 37 "accessor_class_list.gperf"
|
||||
{"codetable", &grib_accessor_class_codetable},
|
||||
|
@ -577,33 +576,33 @@ static const struct accessor_class_hash classes[] =
|
|||
#line 27 "accessor_class_list.gperf"
|
||||
{"bufr_group", &grib_accessor_class_bufr_group},
|
||||
{""}, {""},
|
||||
#line 161 "accessor_class_list.gperf"
|
||||
#line 160 "accessor_class_list.gperf"
|
||||
{"number_of_values", &grib_accessor_class_number_of_values},
|
||||
{""}, {""},
|
||||
#line 77 "accessor_class_list.gperf"
|
||||
{"decimal_precision", &grib_accessor_class_decimal_precision},
|
||||
{""}, {""},
|
||||
#line 112 "accessor_class_list.gperf"
|
||||
#line 111 "accessor_class_list.gperf"
|
||||
{"g2level", &grib_accessor_class_g2level},
|
||||
{""},
|
||||
#line 23 "accessor_class_list.gperf"
|
||||
{"bufr_elements_table", &grib_accessor_class_bufr_elements_table},
|
||||
{""}, {""},
|
||||
#line 143 "accessor_class_list.gperf"
|
||||
#line 142 "accessor_class_list.gperf"
|
||||
{"latlonvalues", &grib_accessor_class_latlonvalues},
|
||||
{""}, {""}, {""}, {""},
|
||||
#line 73 "accessor_class_list.gperf"
|
||||
{"data_sh_packed", &grib_accessor_class_data_sh_packed},
|
||||
#line 162 "accessor_class_list.gperf"
|
||||
#line 161 "accessor_class_list.gperf"
|
||||
{"number_of_values_data_raw_packing", &grib_accessor_class_number_of_values_data_raw_packing},
|
||||
{""}, {""}, {""}, {""},
|
||||
#line 180 "accessor_class_list.gperf"
|
||||
#line 179 "accessor_class_list.gperf"
|
||||
{"scale_values", &grib_accessor_class_scale_values},
|
||||
{""},
|
||||
#line 219 "accessor_class_list.gperf"
|
||||
#line 218 "accessor_class_list.gperf"
|
||||
{"unpack_bufr_values", &grib_accessor_class_unpack_bufr_values},
|
||||
{""}, {""}, {""},
|
||||
#line 86 "accessor_class_list.gperf"
|
||||
#line 85 "accessor_class_list.gperf"
|
||||
{"from_scale_factor_scaled_value", &grib_accessor_class_from_scale_factor_scaled_value},
|
||||
#line 11 "accessor_class_list.gperf"
|
||||
{"abstract_vector", &grib_accessor_class_abstract_vector},
|
||||
|
@ -614,19 +613,19 @@ static const struct accessor_class_hash classes[] =
|
|||
#line 32 "accessor_class_list.gperf"
|
||||
{"change_alternative_row_scanning", &grib_accessor_class_change_alternative_row_scanning},
|
||||
{""},
|
||||
#line 97 "accessor_class_list.gperf"
|
||||
#line 96 "accessor_class_list.gperf"
|
||||
{"g1monthlydate", &grib_accessor_class_g1monthlydate},
|
||||
{""}, {""},
|
||||
#line 101 "accessor_class_list.gperf"
|
||||
#line 100 "accessor_class_list.gperf"
|
||||
{"g1verificationdate", &grib_accessor_class_g1verificationdate},
|
||||
#line 167 "accessor_class_list.gperf"
|
||||
#line 166 "accessor_class_list.gperf"
|
||||
{"pack_bufr_values", &grib_accessor_class_pack_bufr_values},
|
||||
{""}, {""},
|
||||
#line 177 "accessor_class_list.gperf"
|
||||
#line 176 "accessor_class_list.gperf"
|
||||
{"reference_value_error", &grib_accessor_class_reference_value_error},
|
||||
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
||||
{""}, {""}, {""},
|
||||
#line 163 "accessor_class_list.gperf"
|
||||
#line 162 "accessor_class_list.gperf"
|
||||
{"octahedral_gaussian", &grib_accessor_class_octahedral_gaussian},
|
||||
{""}, {""}, {""}, {""}, {""}, {""}, {""},
|
||||
#line 26 "accessor_class_list.gperf"
|
||||
|
@ -647,7 +646,7 @@ static const struct accessor_class_hash classes[] =
|
|||
#line 39 "accessor_class_list.gperf"
|
||||
{"codetable_units", &grib_accessor_class_codetable_units},
|
||||
{""},
|
||||
#line 93 "accessor_class_list.gperf"
|
||||
#line 92 "accessor_class_list.gperf"
|
||||
{"g1day_of_the_year_date", &grib_accessor_class_g1day_of_the_year_date},
|
||||
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
||||
{""}, {""}, {""}, {""},
|
||||
|
@ -667,14 +666,14 @@ static const struct accessor_class_hash classes[] =
|
|||
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
||||
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
||||
{""}, {""},
|
||||
#line 99 "accessor_class_list.gperf"
|
||||
{"g1number_of_coded_values_sh_simple", &grib_accessor_class_g1number_of_coded_values_sh_simple},
|
||||
#line 98 "accessor_class_list.gperf"
|
||||
{"g1number_of_coded_values_sh_simple", &grib_accessor_class_g1number_of_coded_values_sh_simple},
|
||||
#line 97 "accessor_class_list.gperf"
|
||||
{"g1number_of_coded_values_sh_complex", &grib_accessor_class_g1number_of_coded_values_sh_complex},
|
||||
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
||||
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
||||
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
||||
#line 103 "accessor_class_list.gperf"
|
||||
#line 102 "accessor_class_list.gperf"
|
||||
{"g2_chemical", &grib_accessor_class_g2_chemical},
|
||||
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
||||
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
||||
|
@ -684,7 +683,7 @@ static const struct accessor_class_hash classes[] =
|
|||
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
||||
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
||||
{""}, {""}, {""}, {""}, {""},
|
||||
#line 96 "accessor_class_list.gperf"
|
||||
#line 95 "accessor_class_list.gperf"
|
||||
{"g1forecastmonth", &grib_accessor_class_g1forecastmonth}
|
||||
};
|
||||
|
||||
|
|
|
@ -74,7 +74,6 @@
|
|||
{ "element", &grib_accessor_class_element, },
|
||||
{ "evaluate", &grib_accessor_class_evaluate, },
|
||||
{ "expanded_descriptors", &grib_accessor_class_expanded_descriptors, },
|
||||
{ "forward", &grib_accessor_class_forward, },
|
||||
{ "from_scale_factor_scaled_value", &grib_accessor_class_from_scale_factor_scaled_value, },
|
||||
{ "g1_half_byte_codeflag", &grib_accessor_class_g1_half_byte_codeflag, },
|
||||
{ "g1_message_length", &grib_accessor_class_g1_message_length, },
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue