Merge commit 'ed6ba1f56da5c64b7e8c302a87b27b3af329ade7' into feature/memfs

This commit is contained in:
Baudouin Raoult 2016-06-18 16:52:06 +01:00
commit 61844f413b
47 changed files with 2934 additions and 1248 deletions

View File

@ -1,52 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
<storageModule moduleId="org.eclipse.cdt.core.settings">
<cconfiguration id="cdt.managedbuild.toolchain.gnu.base.117388601">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.toolchain.gnu.base.117388601" moduleId="org.eclipse.cdt.core.settings" name="Default">
<externalSettings/>
<extensions>
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration buildProperties="" id="cdt.managedbuild.toolchain.gnu.base.117388601" name="Default" parent="org.eclipse.cdt.build.core.emptycfg">
<folderInfo id="cdt.managedbuild.toolchain.gnu.base.117388601.793025112" name="/" resourcePath="">
<toolChain id="cdt.managedbuild.toolchain.gnu.base.1462179316" name="Linux GCC" superClass="cdt.managedbuild.toolchain.gnu.base">
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="cdt.managedbuild.target.gnu.platform.base.860211140" name="Debug Platform" osList="linux,hpux,aix,qnx" superClass="cdt.managedbuild.target.gnu.platform.base"/>
<builder id="cdt.managedbuild.target.gnu.builder.base.1272978155" managedBuildOn="false" name="Gnu Make Builder.Default" superClass="cdt.managedbuild.target.gnu.builder.base"/>
<tool id="cdt.managedbuild.tool.gnu.archiver.base.1052361218" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/>
<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.base.963458311" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.base"/>
<tool id="cdt.managedbuild.tool.gnu.c.compiler.base.1182912071" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.base">
<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.944880334" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
</tool>
<tool id="cdt.managedbuild.tool.gnu.c.linker.base.1829431036" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.base">
<inputType id="cdt.managedbuild.tool.gnu.c.linker.input.619958332" superClass="cdt.managedbuild.tool.gnu.c.linker.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType>
</tool>
<tool id="cdt.managedbuild.tool.gnu.cpp.linker.base.1695886808" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.base"/>
<tool id="cdt.managedbuild.tool.gnu.assembler.base.2103226257" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.base">
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.742915453" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
</tool>
</toolChain>
</folderInfo>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
</cconfiguration>
</storageModule>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<project id="ecCodes.null.1772218298" name="ecCodes"/>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
</cproject>

View File

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project>
<configuration id="cdt.managedbuild.toolchain.gnu.base.117388601" name="Default">
<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
<provider class="org.eclipse.cdt.core.language.settings.providers.LanguageSettingsGenericProvider" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider" name="CDT User Setting Entries" prefer-non-shared="true"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider copy-of="extension" id="org.eclipse.cdt.managedbuilder.core.GCCBuildCommandParser"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.GCCBuiltinSpecsDetector" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
</extension>
</configuration>
</project>

View File

@ -298,7 +298,7 @@ add_subdirectory( ifs_samples ) # must come after samples
ecbuild_dont_pack( DIRS
concepts tests.ecmwf doxygen confluence examples.dev templates parameters java
gaussian_experimental gribex examples/F77
examples/extra bamboo fortran/fortranCtypes tigge/tools share/eccodes grib_api_for_mars
examples/extra bamboo fortran/fortranCtypes tigge/tools share/eccodes
src/.deps tests/.deps tools/.deps tigge/.deps examples/C/.deps examples/python/.deps
python/.deps fortran/.deps
)

View File

@ -384,3 +384,4 @@ uegabe.bufr.num.ref
syno.bufr.out.ref
airep.bufr.out.ref
new_replication.bufr.ref
get_string_array.ref

View File

@ -38,7 +38,6 @@ do
tar="full_${files[i]}"
EOF
p4 edit ${files[i]}
if [[ ${precision[i]} -gt 0 ]]
then
grib_set -r -s bitsPerValue=0,decimalScaleFactor=${precision[i]} full_${files[i]} ${files[i]}
@ -53,4 +52,3 @@ EOF
grib_dump ${grib2} > /dev/null
done

View File

@ -612,6 +612,7 @@
parameterCategory = 0 ;
parameterNumber = 16 ;
typeOfStatisticalProcessing = 1 ;
typeOfFirstFixedSurface = 177 ;
}
#Cloudy brightness temperature
'clbt' = {
@ -2859,13 +2860,13 @@
parameterNumber = 5 ;
}
#Radiance (with respect to wave length)
'p3120' = {
'swrad' = {
discipline = 0 ;
parameterCategory = 4 ;
parameterNumber = 6 ;
}
#Wind mixing energy
'p3126' = {
'wmixe' = {
discipline = 0 ;
parameterCategory = 2 ;
parameterNumber = 19 ;

View File

@ -1,4 +1,4 @@
# Automatically generated by get_definitions.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER@MIRAKEL.DWD.DE, do not edit! 2016-02-03 10:04
# Automatically generated by get_definitions.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER@MIRAKEL.DWD.DE, do not edit! 2016-06-03 11:40
#paramId: 500000
#Pressure (S) (not reduced)
'Pressure (S) (not reduced)' = {
@ -1933,7 +1933,6 @@
parameterCategory = 3 ;
parameterNumber = 0 ;
typeOfFirstFixedSurface = 107 ;
unitsFactor = 100 ;
}
#paramId: 500302
@ -6134,6 +6133,536 @@
parameterNumber = 42 ;
}
#paramId: 503229
#Prognostic mass mixing ratio of volcanic ash particles for bin number 1
'Prognostic mass mixing ratio of volcanic ash particles for bin number 1' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62025 ;
modeNumber = 1 ;
typeOfDistributionFunction = 1 ;
}
#paramId: 503230
#Prognostic mass mixing ratio of volcanic ash particles for bin number 2
'Prognostic mass mixing ratio of volcanic ash particles for bin number 2' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62025 ;
modeNumber = 2 ;
typeOfDistributionFunction = 1 ;
}
#paramId: 503231
#Prognostic mass mixing ratio of volcanic ash particles for bin number 3
'Prognostic mass mixing ratio of volcanic ash particles for bin number 3' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62025 ;
modeNumber = 3 ;
typeOfDistributionFunction = 1 ;
}
#paramId: 503232
#Prognostic mass mixing ratio of volcanic ash particles for bin number 4
'Prognostic mass mixing ratio of volcanic ash particles for bin number 4' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62025 ;
modeNumber = 4 ;
typeOfDistributionFunction = 1 ;
}
#paramId: 503233
#Prognostic mass mixing ratio of volcanic ash particles for bin number 5
'Prognostic mass mixing ratio of volcanic ash particles for bin number 5' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62025 ;
modeNumber = 5 ;
typeOfDistributionFunction = 1 ;
}
#paramId: 503234
#Prognostic mass mixing ratio of volcanic ash particles for bin number 6
'Prognostic mass mixing ratio of volcanic ash particles for bin number 6' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62025 ;
modeNumber = 6 ;
typeOfDistributionFunction = 1 ;
}
#paramId: 503235
#Modal prognostic mass mixing ratio of volcanic ash particles (fine mode)
'Modal prognostic mass mixing ratio of volcanic ash particles (fine mode)' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62025 ;
modeNumber = 1 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503236
#Modal prognostic mass mixing ratio of volcanic ash particles (medium mode)
'Modal prognostic mass mixing ratio of volcanic ash particles (medium mode)' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62025 ;
modeNumber = 2 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503237
#Modal prognostic mass mixing ratio of volcanic ash particles (coarse mode)
'Modal prognostic mass mixing ratio of volcanic ash particles (coarse mode)' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62025 ;
modeNumber = 3 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503238
#Modal prognostic specific number concentration of volcanic ash particles (fine mode)
'Modal prognostic specific number concentration of volcanic ash particles (fine mode)' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 60 ;
constituentType = 62025 ;
modeNumber = 1 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503239
#Modal prognostic specific number concentration of volcanic ash particles (medium mode)
'Modal prognostic specific number concentration of volcanic ash particles (medium mode)' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 60 ;
constituentType = 62025 ;
modeNumber = 2 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503240
#Modal prognostic specific number concentration of volcanic ash particles (coarse mode)
'Modal prognostic specific number concentration of volcanic ash particles (coarse mode)' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 60 ;
constituentType = 62025 ;
modeNumber = 3 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503241
#Modal prognostic mass mixing ratio of mineral dust particles (fine mode)
'Modal prognostic mass mixing ratio of mineral dust particles (fine mode)' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62001 ;
modeNumber = 1 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503242
#Modal prognostic mass mixing ratio of mineral dust particles (medium mode)
'Modal prognostic mass mixing ratio of mineral dust particles (medium mode)' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62001 ;
modeNumber = 2 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503243
#Modal prognostic mass mixing ratio of mineral dust particles (coarse mode)
'Modal prognostic mass mixing ratio of mineral dust particles (coarse mode)' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62001 ;
modeNumber = 3 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503244
#Modal prognostic specific number concentration of mineral dust particles (fine mode)
'Modal prognostic specific number concentration of mineral dust particles (fine mode)' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 60 ;
constituentType = 62001 ;
modeNumber = 1 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503245
#Modal prognostic specific number concentration of mineral dust particles (medium mode)
'Modal prognostic specific number concentration of mineral dust particles (medium mode)' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 60 ;
constituentType = 62001 ;
modeNumber = 2 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503246
#Modal prognostic specific number concentration of mineral dust particles (coarsemode)
'Modal prognostic specific number concentration of mineral dust particles (coarsemode)' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 60 ;
constituentType = 62001 ;
modeNumber = 3 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503247
#Modal prognostic mass mixing ratio of sea salt particles (fine mode)
'Modal prognostic mass mixing ratio of sea salt particles (fine mode)' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62008 ;
modeNumber = 1 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503248
#Modal prognostic mass mixing ratio of sea salt particles (medium mode)
'Modal prognostic mass mixing ratio of sea salt particles (medium mode)' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62008 ;
modeNumber = 2 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503249
#Modal prognostic mass mixing ratio of sea salt particles (coarse mode)
'Modal prognostic mass mixing ratio of sea salt particles (coarse mode)' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62008 ;
modeNumber = 3 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503250
#Modal prognostic specific number concentration of sea salt particles (fine mode)
'Modal prognostic specific number concentration of sea salt particles (fine mode)' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 60 ;
constituentType = 62008 ;
modeNumber = 1 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503251
#Modal prognostic specific number concentration of sea salt particles (medium mode)
'Modal prognostic specific number concentration of sea salt particles (medium mode)' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 60 ;
constituentType = 62008 ;
modeNumber = 2 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503252
#Modal prognostic specific number concentration of sea salt particles (coarse mode)
'Modal prognostic specific number concentration of sea salt particles (coarse mode)' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 60 ;
constituentType = 62008 ;
modeNumber = 3 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503253
#Prognostic specific activity concentration of Caesium 137
'Prognostic specific activity concentration of Caesium 137' = {
discipline = 0 ;
parameterCategory = 18 ;
parameterNumber = 14 ;
constituentType = 30172 ;
}
#paramId: 503254
#Prognostic specific activity concentration of Iodine 131 aerosol
'Prognostic specific activity concentration of Iodine 131 aerosol' = {
discipline = 0 ;
parameterCategory = 18 ;
parameterNumber = 14 ;
constituentType = 30141 ;
}
#paramId: 503255
#Prognostic specific activity concentration of Tellurium 132
'Prognostic specific activity concentration of Tellurium 132' = {
discipline = 0 ;
parameterCategory = 18 ;
parameterNumber = 14 ;
constituentType = 30129 ;
}
#paramId: 503256
#Prognostic specific activity concentration of Zirconium 95
'Prognostic specific activity concentration of Zirconium 95' = {
discipline = 0 ;
parameterCategory = 18 ;
parameterNumber = 14 ;
constituentType = 30079 ;
}
#paramId: 503257
#Prognostic specific activity concentration of Xenon 133
'Prognostic specific activity concentration of Xenon 133' = {
discipline = 0 ;
parameterCategory = 18 ;
parameterNumber = 14 ;
constituentType = 30161 ;
}
#paramId: 503258
#Prognostic specific activity concentration of Iodine 131 elementary gaseous
'Prognostic specific activity concentration of Iodine 131 elementary gaseous' = {
discipline = 0 ;
parameterCategory = 18 ;
parameterNumber = 14 ;
constituentType = 30138 ;
}
#paramId: 503259
#Prognostic specific activity concentration of Iodine 131 organic bounded
'Prognostic specific activity concentration of Iodine 131 organic bounded' = {
discipline = 0 ;
parameterCategory = 18 ;
parameterNumber = 14 ;
constituentType = 30139 ;
}
#paramId: 503260
#Prognostic specific activity concentration of Barium 140
'Prognostic specific activity concentration of Barium 140' = {
discipline = 0 ;
parameterCategory = 18 ;
parameterNumber = 14 ;
constituentType = 30175 ;
}
#paramId: 503261
#Prognostic specific activity concentration of Ruthenium 103
'Prognostic specific activity concentration of Ruthenium 103' = {
discipline = 0 ;
parameterCategory = 18 ;
parameterNumber = 14 ;
constituentType = 30102 ;
}
#paramId: 503262
#Diagnostic total mass concentration of volcanic ash
'Diagnostic total mass concentration of volcanic ash' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 0 ;
constituentType = 62025 ;
}
#paramId: 503263
#Diagnostic maximum total mass concentration of volcanic ash in layer SFC-FL200
'Diagnostic maximum total mass concentration of volcanic ash in layer SFC-FL200' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 61 ;
typeOfSecondFixedSurface = 100 ;
scaleFactorOfSecondFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = 101325 ;
typeOfFirstFixedSurface = 100 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfFirstFixedSurface = 46500 ;
constituentType = 62025 ;
}
#paramId: 503265
#Diagnostic total column of mass concentration of volcanic ash
'Diagnostic total column of mass concentration of volcanic ash' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 1 ;
typeOfFirstFixedSurface = 10 ;
constituentType = 62025 ;
}
#paramId: 503266
#Diagnostic height of model layer with maximal total mass concentration of volcanic ash
'Diagnostic height of model layer with maximal total mass concentration of volcanic ash' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 62 ;
constituentType = 62025 ;
}
#paramId: 503267
#Diagnostic volcanic ash optical depth
'Diagnostic volcanic ash optical depth' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 102 ;
aerosolType = 62025 ;
}
#paramId: 503268
#Diagnostic mineral dust optical depth
'Diagnostic mineral dust optical depth' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 102 ;
aerosolType = 62001 ;
}
#paramId: 503269
#Diagnostic sea salt optical depth
'Diagnostic sea salt optical depth' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 102 ;
aerosolType = 62008 ;
}
#paramId: 503270
#Diagnostic vmaximum activity concentration of radionuclides in a layer
'Diagnostic vmaximum activity concentration of radionuclides in a layer' = {
discipline = 0 ;
parameterCategory = 18 ;
parameterNumber = 15 ;
}
#paramId: 503273
#Diagnostic maximum total mass concentration of volcanic ash in layer FL200-FL350
'Diagnostic maximum total mass concentration of volcanic ash in layer FL200-FL350' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 61 ;
typeOfSecondFixedSurface = 100 ;
scaleFactorOfSecondFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = 46500 ;
typeOfFirstFixedSurface = 100 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfFirstFixedSurface = 24000 ;
constituentType = 62025 ;
}
#paramId: 503274
#Diagnostic maximum total mass concentration of volcanic ash in layer SFC-FL200
'Diagnostic maximum total mass concentration of volcanic ash in layer SFC-FL200' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 61 ;
typeOfSecondFixedSurface = 100 ;
scaleFactorOfSecondFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = 101325 ;
typeOfFirstFixedSurface = 100 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfFirstFixedSurface = 70000 ;
constituentType = 62025 ;
}
#paramId: 503275
#Diagnostic maximum total mass concentration of volcanic ash in layer FL350-FL550
'Diagnostic maximum total mass concentration of volcanic ash in layer FL350-FL550' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 61 ;
typeOfSecondFixedSurface = 100 ;
scaleFactorOfSecondFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = 24000 ;
typeOfFirstFixedSurface = 100 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfFirstFixedSurface = 9100 ;
constituentType = 62025 ;
}
#paramId: 503276
#Diagnostic maximum total mass concentration of volcanic ash in layer FL100-FL245
'Diagnostic maximum total mass concentration of volcanic ash in layer FL100-FL245' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 61 ;
typeOfSecondFixedSurface = 100 ;
scaleFactorOfSecondFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = 70000 ;
typeOfFirstFixedSurface = 100 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfFirstFixedSurface = 38500 ;
constituentType = 62025 ;
}
#paramId: 503277
#Diagnostic maximum total mass concentration of volcanic ash in layer FL245-FL390
'Diagnostic maximum total mass concentration of volcanic ash in layer FL245-FL390' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 61 ;
typeOfSecondFixedSurface = 100 ;
scaleFactorOfSecondFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = 38500 ;
typeOfFirstFixedSurface = 100 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfFirstFixedSurface = 20000 ;
constituentType = 62025 ;
}
#paramId: 503278
#Diagnostic maximum total mass concentration of volcanic ash in layer FL390-FL530
'Diagnostic maximum total mass concentration of volcanic ash in layer FL390-FL530' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 61 ;
typeOfSecondFixedSurface = 100 ;
scaleFactorOfSecondFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = 20000 ;
typeOfFirstFixedSurface = 100 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfFirstFixedSurface = 10000 ;
constituentType = 62025 ;
}
#paramId: 503279
#Diagnostic maximum total mass concentration of volcanic ash in a layer
'Diagnostic maximum total mass concentration of volcanic ash in a layer' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 61 ;
constituentType = 62025 ;
}
#paramId: 503280
#Aerosol optical depth
'Aerosol optical depth' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 102 ;
}
#paramId: 500092
#Solar radiation heating rate
'Solar radiation heating rate' = {
@ -10833,3 +11362,52 @@
parameterNumber = 202 ;
}
#paramId: 503282
#Diagnostic total column of activity concentration of radionuclides
'Diagnostic total column of activity concentration of radionuclides' = {
discipline = 0 ;
parameterCategory = 18 ;
parameterNumber = 192 ;
typeOfFirstFixedSurface = 10 ;
}
#paramId: 503283
#Liquid water potential temperature variance
'Liquid water potential temperature variance' = {
discipline = 0 ;
parameterCategory = 198 ;
parameterNumber = 0 ;
}
#paramId: 503284
#Total water specific humidity variance
'Total water specific humidity variance' = {
discipline = 0 ;
parameterCategory = 198 ;
parameterNumber = 1 ;
}
#paramId: 503285
#Liquid water potential temperature - total water specific humidity covariance
'Liquid water potential temperature - total water specific humidity covariance' = {
discipline = 0 ;
parameterCategory = 198 ;
parameterNumber = 2 ;
}
#paramId: 503286
#Impervious (paved or sealed) surface fraction
'Impervious (paved or sealed) surface fraction' = {
discipline = 2 ;
parameterCategory = 0 ;
parameterNumber = 196 ;
}
#paramId: 503287
#Antropogenic heat flux (e.g. urban heating, traffic)
'Antropogenic heat flux (e.g. urban heating, traffic)' = {
discipline = 2 ;
parameterCategory = 0 ;
parameterNumber = 197 ;
}

View File

@ -1,4 +1,4 @@
# Automatically generated by get_definitions.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER@MIRAKEL.DWD.DE, do not edit! 2016-02-03 10:04
# Automatically generated by get_definitions.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER@MIRAKEL.DWD.DE, do not edit! 2016-06-03 11:40
#paramId: 500000
#Pressure (S) (not reduced)
'500000' = {
@ -2603,7 +2603,6 @@
parameterCategory = 3 ;
parameterNumber = 0 ;
typeOfFirstFixedSurface = 107 ;
unitsFactor = 100 ;
}
#paramId: 500302
@ -11372,3 +11371,582 @@
parameterNumber = 202 ;
}
#paramId: 503229
#Prognostic mass mixing ratio of volcanic ash particles for bin number 1
'503229' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62025 ;
modeNumber = 1 ;
typeOfDistributionFunction = 1 ;
}
#paramId: 503230
#Prognostic mass mixing ratio of volcanic ash particles for bin number 2
'503230' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62025 ;
modeNumber = 2 ;
typeOfDistributionFunction = 1 ;
}
#paramId: 503231
#Prognostic mass mixing ratio of volcanic ash particles for bin number 3
'503231' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62025 ;
modeNumber = 3 ;
typeOfDistributionFunction = 1 ;
}
#paramId: 503232
#Prognostic mass mixing ratio of volcanic ash particles for bin number 4
'503232' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62025 ;
modeNumber = 4 ;
typeOfDistributionFunction = 1 ;
}
#paramId: 503233
#Prognostic mass mixing ratio of volcanic ash particles for bin number 5
'503233' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62025 ;
modeNumber = 5 ;
typeOfDistributionFunction = 1 ;
}
#paramId: 503234
#Prognostic mass mixing ratio of volcanic ash particles for bin number 6
'503234' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62025 ;
modeNumber = 6 ;
typeOfDistributionFunction = 1 ;
}
#paramId: 503235
#Modal prognostic mass mixing ratio of volcanic ash particles (fine mode)
'503235' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62025 ;
modeNumber = 1 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503236
#Modal prognostic mass mixing ratio of volcanic ash particles (medium mode)
'503236' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62025 ;
modeNumber = 2 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503237
#Modal prognostic mass mixing ratio of volcanic ash particles (coarse mode)
'503237' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62025 ;
modeNumber = 3 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503238
#Modal prognostic specific number concentration of volcanic ash particles (fine mode)
'503238' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 60 ;
constituentType = 62025 ;
modeNumber = 1 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503239
#Modal prognostic specific number concentration of volcanic ash particles (medium mode)
'503239' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 60 ;
constituentType = 62025 ;
modeNumber = 2 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503240
#Modal prognostic specific number concentration of volcanic ash particles (coarse mode)
'503240' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 60 ;
constituentType = 62025 ;
modeNumber = 3 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503241
#Modal prognostic mass mixing ratio of mineral dust particles (fine mode)
'503241' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62001 ;
modeNumber = 1 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503242
#Modal prognostic mass mixing ratio of mineral dust particles (medium mode)
'503242' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62001 ;
modeNumber = 2 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503243
#Modal prognostic mass mixing ratio of mineral dust particles (coarse mode)
'503243' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62001 ;
modeNumber = 3 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503244
#Modal prognostic specific number concentration of mineral dust particles (fine mode)
'503244' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 60 ;
constituentType = 62001 ;
modeNumber = 1 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503245
#Modal prognostic specific number concentration of mineral dust particles (medium mode)
'503245' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 60 ;
constituentType = 62001 ;
modeNumber = 2 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503246
#Modal prognostic specific number concentration of mineral dust particles (coarsemode)
'503246' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 60 ;
constituentType = 62001 ;
modeNumber = 3 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503247
#Modal prognostic mass mixing ratio of sea salt particles (fine mode)
'503247' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62008 ;
modeNumber = 1 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503248
#Modal prognostic mass mixing ratio of sea salt particles (medium mode)
'503248' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62008 ;
modeNumber = 2 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503249
#Modal prognostic mass mixing ratio of sea salt particles (coarse mode)
'503249' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62008 ;
modeNumber = 3 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503250
#Modal prognostic specific number concentration of sea salt particles (fine mode)
'503250' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 60 ;
constituentType = 62008 ;
modeNumber = 1 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503251
#Modal prognostic specific number concentration of sea salt particles (medium mode)
'503251' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 60 ;
constituentType = 62008 ;
modeNumber = 2 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503252
#Modal prognostic specific number concentration of sea salt particles (coarse mode)
'503252' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 60 ;
constituentType = 62008 ;
modeNumber = 3 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503253
#Prognostic specific activity concentration of Caesium 137
'503253' = {
discipline = 0 ;
parameterCategory = 18 ;
parameterNumber = 14 ;
constituentType = 30172 ;
}
#paramId: 503254
#Prognostic specific activity concentration of Iodine 131 aerosol
'503254' = {
discipline = 0 ;
parameterCategory = 18 ;
parameterNumber = 14 ;
constituentType = 30141 ;
}
#paramId: 503255
#Prognostic specific activity concentration of Tellurium 132
'503255' = {
discipline = 0 ;
parameterCategory = 18 ;
parameterNumber = 14 ;
constituentType = 30129 ;
}
#paramId: 503256
#Prognostic specific activity concentration of Zirconium 95
'503256' = {
discipline = 0 ;
parameterCategory = 18 ;
parameterNumber = 14 ;
constituentType = 30079 ;
}
#paramId: 503257
#Prognostic specific activity concentration of Xenon 133
'503257' = {
discipline = 0 ;
parameterCategory = 18 ;
parameterNumber = 14 ;
constituentType = 30161 ;
}
#paramId: 503258
#Prognostic specific activity concentration of Iodine 131 elementary gaseous
'503258' = {
discipline = 0 ;
parameterCategory = 18 ;
parameterNumber = 14 ;
constituentType = 30138 ;
}
#paramId: 503259
#Prognostic specific activity concentration of Iodine 131 organic bounded
'503259' = {
discipline = 0 ;
parameterCategory = 18 ;
parameterNumber = 14 ;
constituentType = 30139 ;
}
#paramId: 503260
#Prognostic specific activity concentration of Barium 140
'503260' = {
discipline = 0 ;
parameterCategory = 18 ;
parameterNumber = 14 ;
constituentType = 30175 ;
}
#paramId: 503261
#Prognostic specific activity concentration of Ruthenium 103
'503261' = {
discipline = 0 ;
parameterCategory = 18 ;
parameterNumber = 14 ;
constituentType = 30102 ;
}
#paramId: 503262
#Diagnostic total mass concentration of volcanic ash
'503262' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 0 ;
constituentType = 62025 ;
}
#paramId: 503263
#Diagnostic maximum total mass concentration of volcanic ash in layer SFC-FL200
'503263' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 61 ;
typeOfSecondFixedSurface = 100 ;
scaleFactorOfSecondFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = 101325 ;
typeOfFirstFixedSurface = 100 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfFirstFixedSurface = 46500 ;
constituentType = 62025 ;
}
#paramId: 503265
#Diagnostic total column of mass concentration of volcanic ash
'503265' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 1 ;
typeOfFirstFixedSurface = 10 ;
constituentType = 62025 ;
}
#paramId: 503266
#Diagnostic height of model layer with maximal total mass concentration of volcanic ash
'503266' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 62 ;
constituentType = 62025 ;
}
#paramId: 503267
#Diagnostic volcanic ash optical depth
'503267' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 102 ;
aerosolType = 62025 ;
}
#paramId: 503268
#Diagnostic mineral dust optical depth
'503268' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 102 ;
aerosolType = 62001 ;
}
#paramId: 503269
#Diagnostic sea salt optical depth
'503269' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 102 ;
aerosolType = 62008 ;
}
#paramId: 503270
#Diagnostic vmaximum activity concentration of radionuclides in a layer
'503270' = {
discipline = 0 ;
parameterCategory = 18 ;
parameterNumber = 15 ;
}
#paramId: 503273
#Diagnostic maximum total mass concentration of volcanic ash in layer FL200-FL350
'503273' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 61 ;
typeOfSecondFixedSurface = 100 ;
scaleFactorOfSecondFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = 46500 ;
typeOfFirstFixedSurface = 100 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfFirstFixedSurface = 24000 ;
constituentType = 62025 ;
}
#paramId: 503274
#Diagnostic maximum total mass concentration of volcanic ash in layer SFC-FL200
'503274' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 61 ;
typeOfSecondFixedSurface = 100 ;
scaleFactorOfSecondFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = 101325 ;
typeOfFirstFixedSurface = 100 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfFirstFixedSurface = 70000 ;
constituentType = 62025 ;
}
#paramId: 503275
#Diagnostic maximum total mass concentration of volcanic ash in layer FL350-FL550
'503275' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 61 ;
typeOfSecondFixedSurface = 100 ;
scaleFactorOfSecondFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = 24000 ;
typeOfFirstFixedSurface = 100 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfFirstFixedSurface = 9100 ;
constituentType = 62025 ;
}
#paramId: 503276
#Diagnostic maximum total mass concentration of volcanic ash in layer FL100-FL245
'503276' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 61 ;
typeOfSecondFixedSurface = 100 ;
scaleFactorOfSecondFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = 70000 ;
typeOfFirstFixedSurface = 100 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfFirstFixedSurface = 38500 ;
constituentType = 62025 ;
}
#paramId: 503277
#Diagnostic maximum total mass concentration of volcanic ash in layer FL245-FL390
'503277' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 61 ;
typeOfSecondFixedSurface = 100 ;
scaleFactorOfSecondFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = 38500 ;
typeOfFirstFixedSurface = 100 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfFirstFixedSurface = 20000 ;
constituentType = 62025 ;
}
#paramId: 503278
#Diagnostic maximum total mass concentration of volcanic ash in layer FL390-FL530
'503278' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 61 ;
typeOfSecondFixedSurface = 100 ;
scaleFactorOfSecondFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = 20000 ;
typeOfFirstFixedSurface = 100 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfFirstFixedSurface = 10000 ;
constituentType = 62025 ;
}
#paramId: 503279
#Diagnostic maximum total mass concentration of volcanic ash in a layer
'503279' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 61 ;
constituentType = 62025 ;
}
#paramId: 503280
#Aerosol optical depth
'503280' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 102 ;
}
#paramId: 503282
#Diagnostic total column of activity concentration of radionuclides
'503282' = {
discipline = 0 ;
parameterCategory = 18 ;
parameterNumber = 192 ;
typeOfFirstFixedSurface = 10 ;
}
#paramId: 503283
#Liquid water potential temperature variance
'503283' = {
discipline = 0 ;
parameterCategory = 198 ;
parameterNumber = 0 ;
}
#paramId: 503284
#Total water specific humidity variance
'503284' = {
discipline = 0 ;
parameterCategory = 198 ;
parameterNumber = 1 ;
}
#paramId: 503285
#Liquid water potential temperature - total water specific humidity covariance
'503285' = {
discipline = 0 ;
parameterCategory = 198 ;
parameterNumber = 2 ;
}
#paramId: 503286
#Impervious (paved or sealed) surface fraction
'503286' = {
discipline = 2 ;
parameterCategory = 0 ;
parameterNumber = 196 ;
}
#paramId: 503287
#Antropogenic heat flux (e.g. urban heating, traffic)
'503287' = {
discipline = 2 ;
parameterCategory = 0 ;
parameterNumber = 197 ;
}

View File

@ -1,4 +1,4 @@
# Automatically generated by get_definitions.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER@MIRAKEL.DWD.DE, do not edit! 2016-02-03 10:04
# Automatically generated by get_definitions.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER@MIRAKEL.DWD.DE, do not edit! 2016-06-03 11:40
#paramId: 500000
#Pressure (S) (not reduced)
'PS' = {
@ -1933,7 +1933,6 @@
parameterCategory = 3 ;
parameterNumber = 0 ;
typeOfFirstFixedSurface = 107 ;
unitsFactor = 100 ;
}
#paramId: 500302
@ -6134,6 +6133,536 @@
parameterNumber = 42 ;
}
#paramId: 503229
#Prognostic mass mixing ratio of volcanic ash particles for bin number 1
'ASH1' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62025 ;
modeNumber = 1 ;
typeOfDistributionFunction = 1 ;
}
#paramId: 503230
#Prognostic mass mixing ratio of volcanic ash particles for bin number 2
'ASH2' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62025 ;
modeNumber = 2 ;
typeOfDistributionFunction = 1 ;
}
#paramId: 503231
#Prognostic mass mixing ratio of volcanic ash particles for bin number 3
'ASH3' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62025 ;
modeNumber = 3 ;
typeOfDistributionFunction = 1 ;
}
#paramId: 503232
#Prognostic mass mixing ratio of volcanic ash particles for bin number 4
'ASH4' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62025 ;
modeNumber = 4 ;
typeOfDistributionFunction = 1 ;
}
#paramId: 503233
#Prognostic mass mixing ratio of volcanic ash particles for bin number 5
'ASH5' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62025 ;
modeNumber = 5 ;
typeOfDistributionFunction = 1 ;
}
#paramId: 503234
#Prognostic mass mixing ratio of volcanic ash particles for bin number 6
'ASH6' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62025 ;
modeNumber = 6 ;
typeOfDistributionFunction = 1 ;
}
#paramId: 503235
#Modal prognostic mass mixing ratio of volcanic ash particles (fine mode)
'ASHA' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62025 ;
modeNumber = 1 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503236
#Modal prognostic mass mixing ratio of volcanic ash particles (medium mode)
'ASHB' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62025 ;
modeNumber = 2 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503237
#Modal prognostic mass mixing ratio of volcanic ash particles (coarse mode)
'ASHC' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62025 ;
modeNumber = 3 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503238
#Modal prognostic specific number concentration of volcanic ash particles (fine mode)
'ASHA0' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 60 ;
constituentType = 62025 ;
modeNumber = 1 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503239
#Modal prognostic specific number concentration of volcanic ash particles (medium mode)
'ASHB0' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 60 ;
constituentType = 62025 ;
modeNumber = 2 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503240
#Modal prognostic specific number concentration of volcanic ash particles (coarse mode)
'ASHC0' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 60 ;
constituentType = 62025 ;
modeNumber = 3 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503241
#Modal prognostic mass mixing ratio of mineral dust particles (fine mode)
'DUSTA' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62001 ;
modeNumber = 1 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503242
#Modal prognostic mass mixing ratio of mineral dust particles (medium mode)
'DUSTB' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62001 ;
modeNumber = 2 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503243
#Modal prognostic mass mixing ratio of mineral dust particles (coarse mode)
'DUSTC' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62001 ;
modeNumber = 3 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503244
#Modal prognostic specific number concentration of mineral dust particles (fine mode)
'DUSTA0' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 60 ;
constituentType = 62001 ;
modeNumber = 1 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503245
#Modal prognostic specific number concentration of mineral dust particles (medium mode)
'DUSTB0' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 60 ;
constituentType = 62001 ;
modeNumber = 2 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503246
#Modal prognostic specific number concentration of mineral dust particles (coarsemode)
'DUSTC0' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 60 ;
constituentType = 62001 ;
modeNumber = 3 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503247
#Modal prognostic mass mixing ratio of sea salt particles (fine mode)
'SEASA' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62008 ;
modeNumber = 1 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503248
#Modal prognostic mass mixing ratio of sea salt particles (medium mode)
'SEASB' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62008 ;
modeNumber = 2 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503249
#Modal prognostic mass mixing ratio of sea salt particles (coarse mode)
'SEASC' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62008 ;
modeNumber = 3 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503250
#Modal prognostic specific number concentration of sea salt particles (fine mode)
'SEASA0' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 60 ;
constituentType = 62008 ;
modeNumber = 1 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503251
#Modal prognostic specific number concentration of sea salt particles (medium mode)
'SEASB0' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 60 ;
constituentType = 62008 ;
modeNumber = 2 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503252
#Modal prognostic specific number concentration of sea salt particles (coarse mode)
'SEASC0' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 60 ;
constituentType = 62008 ;
modeNumber = 3 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503253
#Prognostic specific activity concentration of Caesium 137
'Cs_137' = {
discipline = 0 ;
parameterCategory = 18 ;
parameterNumber = 14 ;
constituentType = 30172 ;
}
#paramId: 503254
#Prognostic specific activity concentration of Iodine 131 aerosol
'I_131a' = {
discipline = 0 ;
parameterCategory = 18 ;
parameterNumber = 14 ;
constituentType = 30141 ;
}
#paramId: 503255
#Prognostic specific activity concentration of Tellurium 132
'Te_132' = {
discipline = 0 ;
parameterCategory = 18 ;
parameterNumber = 14 ;
constituentType = 30129 ;
}
#paramId: 503256
#Prognostic specific activity concentration of Zirconium 95
'Zr_95' = {
discipline = 0 ;
parameterCategory = 18 ;
parameterNumber = 14 ;
constituentType = 30079 ;
}
#paramId: 503257
#Prognostic specific activity concentration of Xenon 133
'Xe_133' = {
discipline = 0 ;
parameterCategory = 18 ;
parameterNumber = 14 ;
constituentType = 30161 ;
}
#paramId: 503258
#Prognostic specific activity concentration of Iodine 131 elementary gaseous
'I_131g' = {
discipline = 0 ;
parameterCategory = 18 ;
parameterNumber = 14 ;
constituentType = 30138 ;
}
#paramId: 503259
#Prognostic specific activity concentration of Iodine 131 organic bounded
'I_131o' = {
discipline = 0 ;
parameterCategory = 18 ;
parameterNumber = 14 ;
constituentType = 30139 ;
}
#paramId: 503260
#Prognostic specific activity concentration of Barium 140
'Ba_140' = {
discipline = 0 ;
parameterCategory = 18 ;
parameterNumber = 14 ;
constituentType = 30175 ;
}
#paramId: 503261
#Prognostic specific activity concentration of Ruthenium 103
'Ru_103' = {
discipline = 0 ;
parameterCategory = 18 ;
parameterNumber = 14 ;
constituentType = 30102 ;
}
#paramId: 503262
#Diagnostic total mass concentration of volcanic ash
'ASH_TOTAL_MC' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 0 ;
constituentType = 62025 ;
}
#paramId: 503263
#Diagnostic maximum total mass concentration of volcanic ash in layer SFC-FL200
'ASH_MAX_TOTAL_MC_SFC_200' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 61 ;
typeOfSecondFixedSurface = 100 ;
scaleFactorOfSecondFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = 101325 ;
typeOfFirstFixedSurface = 100 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfFirstFixedSurface = 46500 ;
constituentType = 62025 ;
}
#paramId: 503265
#Diagnostic total column of mass concentration of volcanic ash
'ASH_TOTAL_MC_VI' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 1 ;
typeOfFirstFixedSurface = 10 ;
constituentType = 62025 ;
}
#paramId: 503266
#Diagnostic height of model layer with maximal total mass concentration of volcanic ash
'ASH_HML_MAX' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 62 ;
constituentType = 62025 ;
}
#paramId: 503267
#Diagnostic volcanic ash optical depth
'AOD_ASH' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 102 ;
aerosolType = 62025 ;
}
#paramId: 503268
#Diagnostic mineral dust optical depth
'AOD_DUST' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 102 ;
aerosolType = 62001 ;
}
#paramId: 503269
#Diagnostic sea salt optical depth
'AOD_SEAS' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 102 ;
aerosolType = 62008 ;
}
#paramId: 503270
#Diagnostic vmaximum activity concentration of radionuclides in a layer
'RADIONUC_MAX_AC_LAYER' = {
discipline = 0 ;
parameterCategory = 18 ;
parameterNumber = 15 ;
}
#paramId: 503273
#Diagnostic maximum total mass concentration of volcanic ash in layer FL200-FL350
'ASH_MAX_TOTAL_MC_200_350' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 61 ;
typeOfSecondFixedSurface = 100 ;
scaleFactorOfSecondFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = 46500 ;
typeOfFirstFixedSurface = 100 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfFirstFixedSurface = 24000 ;
constituentType = 62025 ;
}
#paramId: 503274
#Diagnostic maximum total mass concentration of volcanic ash in layer SFC-FL200
'ASH_MAX_TOTAL_MC_SFC_100' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 61 ;
typeOfSecondFixedSurface = 100 ;
scaleFactorOfSecondFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = 101325 ;
typeOfFirstFixedSurface = 100 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfFirstFixedSurface = 70000 ;
constituentType = 62025 ;
}
#paramId: 503275
#Diagnostic maximum total mass concentration of volcanic ash in layer FL350-FL550
'ASH_MAX_TOTAL_MC_350_550' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 61 ;
typeOfSecondFixedSurface = 100 ;
scaleFactorOfSecondFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = 24000 ;
typeOfFirstFixedSurface = 100 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfFirstFixedSurface = 9100 ;
constituentType = 62025 ;
}
#paramId: 503276
#Diagnostic maximum total mass concentration of volcanic ash in layer FL100-FL245
'ASH_MAX_TOTAL_MC_100_245' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 61 ;
typeOfSecondFixedSurface = 100 ;
scaleFactorOfSecondFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = 70000 ;
typeOfFirstFixedSurface = 100 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfFirstFixedSurface = 38500 ;
constituentType = 62025 ;
}
#paramId: 503277
#Diagnostic maximum total mass concentration of volcanic ash in layer FL245-FL390
'ASH_MAX_TOTAL_MC_245_390' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 61 ;
typeOfSecondFixedSurface = 100 ;
scaleFactorOfSecondFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = 38500 ;
typeOfFirstFixedSurface = 100 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfFirstFixedSurface = 20000 ;
constituentType = 62025 ;
}
#paramId: 503278
#Diagnostic maximum total mass concentration of volcanic ash in layer FL390-FL530
'ASH_MAX_TOTAL_MC_390_530' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 61 ;
typeOfSecondFixedSurface = 100 ;
scaleFactorOfSecondFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = 20000 ;
typeOfFirstFixedSurface = 100 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfFirstFixedSurface = 10000 ;
constituentType = 62025 ;
}
#paramId: 503279
#Diagnostic maximum total mass concentration of volcanic ash in a layer
'ASH_MAX_TOTAL_MC_LAYER' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 61 ;
constituentType = 62025 ;
}
#paramId: 503280
#Aerosol optical depth
'AEROSOL_OPTICAL_DEPTH' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 102 ;
}
#paramId: 500092
#Solar radiation heating rate
'SOHR_RAD' = {
@ -10833,3 +11362,52 @@
parameterNumber = 202 ;
}
#paramId: 503282
#Diagnostic total column of activity concentration of radionuclides
'RADIONUC_AC_VI' = {
discipline = 0 ;
parameterCategory = 18 ;
parameterNumber = 192 ;
typeOfFirstFixedSurface = 10 ;
}
#paramId: 503283
#Liquid water potential temperature variance
'THLTHLCOV' = {
discipline = 0 ;
parameterCategory = 198 ;
parameterNumber = 0 ;
}
#paramId: 503284
#Total water specific humidity variance
'QTQTCOV' = {
discipline = 0 ;
parameterCategory = 198 ;
parameterNumber = 1 ;
}
#paramId: 503285
#Liquid water potential temperature - total water specific humidity covariance
'THLQTCOV' = {
discipline = 0 ;
parameterCategory = 198 ;
parameterNumber = 2 ;
}
#paramId: 503286
#Impervious (paved or sealed) surface fraction
'FR_PAVED' = {
discipline = 2 ;
parameterCategory = 0 ;
parameterNumber = 196 ;
}
#paramId: 503287
#Antropogenic heat flux (e.g. urban heating, traffic)
'AHF' = {
discipline = 2 ;
parameterCategory = 0 ;
parameterNumber = 197 ;
}

View File

@ -1,4 +1,4 @@
# Automatically generated by get_definitions.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER@MIRAKEL.DWD.DE, do not edit! 2016-02-03 10:04
# Automatically generated by get_definitions.sql from database PRJ_TDCFDOKU.GRIB_PARAMETER@MIRAKEL.DWD.DE, do not edit! 2016-06-03 11:40
#paramId: 500000
#Pressure (S) (not reduced)
'Pa' = {
@ -1933,7 +1933,6 @@
parameterCategory = 3 ;
parameterNumber = 0 ;
typeOfFirstFixedSurface = 107 ;
unitsFactor = 100 ;
}
#paramId: 500302
@ -6134,6 +6133,536 @@
parameterNumber = 42 ;
}
#paramId: 503229
#Prognostic mass mixing ratio of volcanic ash particles for bin number 1
'kg kg-1' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62025 ;
modeNumber = 1 ;
typeOfDistributionFunction = 1 ;
}
#paramId: 503230
#Prognostic mass mixing ratio of volcanic ash particles for bin number 2
'kg kg-1' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62025 ;
modeNumber = 2 ;
typeOfDistributionFunction = 1 ;
}
#paramId: 503231
#Prognostic mass mixing ratio of volcanic ash particles for bin number 3
'kg kg-1' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62025 ;
modeNumber = 3 ;
typeOfDistributionFunction = 1 ;
}
#paramId: 503232
#Prognostic mass mixing ratio of volcanic ash particles for bin number 4
'kg kg-1' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62025 ;
modeNumber = 4 ;
typeOfDistributionFunction = 1 ;
}
#paramId: 503233
#Prognostic mass mixing ratio of volcanic ash particles for bin number 5
'kg kg-1' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62025 ;
modeNumber = 5 ;
typeOfDistributionFunction = 1 ;
}
#paramId: 503234
#Prognostic mass mixing ratio of volcanic ash particles for bin number 6
'kg kg-1' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62025 ;
modeNumber = 6 ;
typeOfDistributionFunction = 1 ;
}
#paramId: 503235
#Modal prognostic mass mixing ratio of volcanic ash particles (fine mode)
'kg kg-1' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62025 ;
modeNumber = 1 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503236
#Modal prognostic mass mixing ratio of volcanic ash particles (medium mode)
'kg kg-1' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62025 ;
modeNumber = 2 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503237
#Modal prognostic mass mixing ratio of volcanic ash particles (coarse mode)
'kg kg-1' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62025 ;
modeNumber = 3 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503238
#Modal prognostic specific number concentration of volcanic ash particles (fine mode)
'kg-1' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 60 ;
constituentType = 62025 ;
modeNumber = 1 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503239
#Modal prognostic specific number concentration of volcanic ash particles (medium mode)
'kg-1' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 60 ;
constituentType = 62025 ;
modeNumber = 2 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503240
#Modal prognostic specific number concentration of volcanic ash particles (coarse mode)
'kg-1' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 60 ;
constituentType = 62025 ;
modeNumber = 3 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503241
#Modal prognostic mass mixing ratio of mineral dust particles (fine mode)
'kg kg-1' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62001 ;
modeNumber = 1 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503242
#Modal prognostic mass mixing ratio of mineral dust particles (medium mode)
'kg kg-1' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62001 ;
modeNumber = 2 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503243
#Modal prognostic mass mixing ratio of mineral dust particles (coarse mode)
'kg kg-1' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62001 ;
modeNumber = 3 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503244
#Modal prognostic specific number concentration of mineral dust particles (fine mode)
'kg-1' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 60 ;
constituentType = 62001 ;
modeNumber = 1 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503245
#Modal prognostic specific number concentration of mineral dust particles (medium mode)
'kg-1' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 60 ;
constituentType = 62001 ;
modeNumber = 2 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503246
#Modal prognostic specific number concentration of mineral dust particles (coarsemode)
'kg-1' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 60 ;
constituentType = 62001 ;
modeNumber = 3 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503247
#Modal prognostic mass mixing ratio of sea salt particles (fine mode)
'kg kg-1' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62008 ;
modeNumber = 1 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503248
#Modal prognostic mass mixing ratio of sea salt particles (medium mode)
'kg kg-1' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62008 ;
modeNumber = 2 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503249
#Modal prognostic mass mixing ratio of sea salt particles (coarse mode)
'kg kg-1' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 2 ;
constituentType = 62008 ;
modeNumber = 3 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503250
#Modal prognostic specific number concentration of sea salt particles (fine mode)
'kg-1' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 60 ;
constituentType = 62008 ;
modeNumber = 1 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503251
#Modal prognostic specific number concentration of sea salt particles (medium mode)
'kg-1' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 60 ;
constituentType = 62008 ;
modeNumber = 2 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503252
#Modal prognostic specific number concentration of sea salt particles (coarse mode)
'kg-1' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 60 ;
constituentType = 62008 ;
modeNumber = 3 ;
typeOfDistributionFunction = 7 ;
}
#paramId: 503253
#Prognostic specific activity concentration of Caesium 137
'Bq kg-1' = {
discipline = 0 ;
parameterCategory = 18 ;
parameterNumber = 14 ;
constituentType = 30172 ;
}
#paramId: 503254
#Prognostic specific activity concentration of Iodine 131 aerosol
'Bq kg-1' = {
discipline = 0 ;
parameterCategory = 18 ;
parameterNumber = 14 ;
constituentType = 30141 ;
}
#paramId: 503255
#Prognostic specific activity concentration of Tellurium 132
'Bq kg-1' = {
discipline = 0 ;
parameterCategory = 18 ;
parameterNumber = 14 ;
constituentType = 30129 ;
}
#paramId: 503256
#Prognostic specific activity concentration of Zirconium 95
'Bq kg-1' = {
discipline = 0 ;
parameterCategory = 18 ;
parameterNumber = 14 ;
constituentType = 30079 ;
}
#paramId: 503257
#Prognostic specific activity concentration of Xenon 133
'Bq kg-1' = {
discipline = 0 ;
parameterCategory = 18 ;
parameterNumber = 14 ;
constituentType = 30161 ;
}
#paramId: 503258
#Prognostic specific activity concentration of Iodine 131 elementary gaseous
'Bq kg-1' = {
discipline = 0 ;
parameterCategory = 18 ;
parameterNumber = 14 ;
constituentType = 30138 ;
}
#paramId: 503259
#Prognostic specific activity concentration of Iodine 131 organic bounded
'Bq kg-1' = {
discipline = 0 ;
parameterCategory = 18 ;
parameterNumber = 14 ;
constituentType = 30139 ;
}
#paramId: 503260
#Prognostic specific activity concentration of Barium 140
'Bq kg-1' = {
discipline = 0 ;
parameterCategory = 18 ;
parameterNumber = 14 ;
constituentType = 30175 ;
}
#paramId: 503261
#Prognostic specific activity concentration of Ruthenium 103
'Bq kg-1' = {
discipline = 0 ;
parameterCategory = 18 ;
parameterNumber = 14 ;
constituentType = 30102 ;
}
#paramId: 503262
#Diagnostic total mass concentration of volcanic ash
'kg m-3' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 0 ;
constituentType = 62025 ;
}
#paramId: 503263
#Diagnostic maximum total mass concentration of volcanic ash in layer SFC-FL200
'kg m-3' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 61 ;
typeOfSecondFixedSurface = 100 ;
scaleFactorOfSecondFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = 101325 ;
typeOfFirstFixedSurface = 100 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfFirstFixedSurface = 46500 ;
constituentType = 62025 ;
}
#paramId: 503265
#Diagnostic total column of mass concentration of volcanic ash
'kg m-2' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 1 ;
typeOfFirstFixedSurface = 10 ;
constituentType = 62025 ;
}
#paramId: 503266
#Diagnostic height of model layer with maximal total mass concentration of volcanic ash
'm' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 62 ;
constituentType = 62025 ;
}
#paramId: 503267
#Diagnostic volcanic ash optical depth
'Numeric' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 102 ;
aerosolType = 62025 ;
}
#paramId: 503268
#Diagnostic mineral dust optical depth
'Numeric' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 102 ;
aerosolType = 62001 ;
}
#paramId: 503269
#Diagnostic sea salt optical depth
'Numeric' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 102 ;
aerosolType = 62008 ;
}
#paramId: 503270
#Diagnostic vmaximum activity concentration of radionuclides in a layer
'Bq m-3' = {
discipline = 0 ;
parameterCategory = 18 ;
parameterNumber = 15 ;
}
#paramId: 503273
#Diagnostic maximum total mass concentration of volcanic ash in layer FL200-FL350
'kg m-3' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 61 ;
typeOfSecondFixedSurface = 100 ;
scaleFactorOfSecondFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = 46500 ;
typeOfFirstFixedSurface = 100 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfFirstFixedSurface = 24000 ;
constituentType = 62025 ;
}
#paramId: 503274
#Diagnostic maximum total mass concentration of volcanic ash in layer SFC-FL200
'kg m-3' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 61 ;
typeOfSecondFixedSurface = 100 ;
scaleFactorOfSecondFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = 101325 ;
typeOfFirstFixedSurface = 100 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfFirstFixedSurface = 70000 ;
constituentType = 62025 ;
}
#paramId: 503275
#Diagnostic maximum total mass concentration of volcanic ash in layer FL350-FL550
'kg m-3' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 61 ;
typeOfSecondFixedSurface = 100 ;
scaleFactorOfSecondFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = 24000 ;
typeOfFirstFixedSurface = 100 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfFirstFixedSurface = 9100 ;
constituentType = 62025 ;
}
#paramId: 503276
#Diagnostic maximum total mass concentration of volcanic ash in layer FL100-FL245
'kg m-3' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 61 ;
typeOfSecondFixedSurface = 100 ;
scaleFactorOfSecondFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = 70000 ;
typeOfFirstFixedSurface = 100 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfFirstFixedSurface = 38500 ;
constituentType = 62025 ;
}
#paramId: 503277
#Diagnostic maximum total mass concentration of volcanic ash in layer FL245-FL390
'kg m-3' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 61 ;
typeOfSecondFixedSurface = 100 ;
scaleFactorOfSecondFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = 38500 ;
typeOfFirstFixedSurface = 100 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfFirstFixedSurface = 20000 ;
constituentType = 62025 ;
}
#paramId: 503278
#Diagnostic maximum total mass concentration of volcanic ash in layer FL390-FL530
'kg m-3' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 61 ;
typeOfSecondFixedSurface = 100 ;
scaleFactorOfSecondFixedSurface = 0 ;
scaledValueOfSecondFixedSurface = 20000 ;
typeOfFirstFixedSurface = 100 ;
scaleFactorOfFirstFixedSurface = 0 ;
scaledValueOfFirstFixedSurface = 10000 ;
constituentType = 62025 ;
}
#paramId: 503279
#Diagnostic maximum total mass concentration of volcanic ash in a layer
'kg m-3' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 61 ;
constituentType = 62025 ;
}
#paramId: 503280
#Aerosol optical depth
'Numeric' = {
discipline = 0 ;
parameterCategory = 20 ;
parameterNumber = 102 ;
}
#paramId: 500092
#Solar radiation heating rate
'K s-1' = {
@ -10833,3 +11362,52 @@
parameterNumber = 202 ;
}
#paramId: 503282
#Diagnostic total column of activity concentration of radionuclides
'Bq m-2' = {
discipline = 0 ;
parameterCategory = 18 ;
parameterNumber = 192 ;
typeOfFirstFixedSurface = 10 ;
}
#paramId: 503283
#Liquid water potential temperature variance
'K2' = {
discipline = 0 ;
parameterCategory = 198 ;
parameterNumber = 0 ;
}
#paramId: 503284
#Total water specific humidity variance
'kg2 kg-2' = {
discipline = 0 ;
parameterCategory = 198 ;
parameterNumber = 1 ;
}
#paramId: 503285
#Liquid water potential temperature - total water specific humidity covariance
'K kg kg-1' = {
discipline = 0 ;
parameterCategory = 198 ;
parameterNumber = 2 ;
}
#paramId: 503286
#Impervious (paved or sealed) surface fraction
'Proportion' = {
discipline = 2 ;
parameterCategory = 0 ;
parameterNumber = 196 ;
}
#paramId: 503287
#Antropogenic heat flux (e.g. urban heating, traffic)
'W m-2' = {
discipline = 2 ;
parameterCategory = 0 ;
parameterNumber = 197 ;
}

View File

@ -612,6 +612,7 @@
parameterCategory = 0 ;
parameterNumber = 16 ;
typeOfStatisticalProcessing = 1 ;
typeOfFirstFixedSurface = 177 ;
}
#Cloudy brightness temperature
'Cloudy brightness temperature' = {

View File

@ -611,6 +611,7 @@
discipline = 1 ;
parameterCategory = 0 ;
parameterNumber = 16 ;
typeOfFirstFixedSurface = 177 ;
typeOfStatisticalProcessing = 1 ;
}
#Cloudy brightness temperature

View File

@ -612,6 +612,7 @@
parameterCategory = 0 ;
parameterNumber = 16 ;
typeOfStatisticalProcessing = 1 ;
typeOfFirstFixedSurface = 177 ;
}
#Cloudy brightness temperature
'clbt' = {

View File

@ -612,6 +612,7 @@
parameterCategory = 0 ;
parameterNumber = 16 ;
typeOfStatisticalProcessing = 1 ;
typeOfFirstFixedSurface = 177 ;
}
#Cloudy brightness temperature
'K' = {

View File

@ -4,13 +4,9 @@ prov=$1
dest=$2
mkdir -p $dest
p4 edit $dest/*.html
for file in $prov/*.html
do
f=`basename $file`
cat head.html $file tail.html > $dest/$f
done
p4 add $dest/*.html

View File

@ -1,5 +1,5 @@
/*! \defgroup environment Environment variables
Environment variables applicable to eccodes:
Environment variables applicable to ecCodes:
\b ECCODES_DEBUG - If set to 1, it will enable debug level logging messages to be displayed by the library.
@ -7,16 +7,16 @@ Environment variables applicable to eccodes:
\b ECCODES_IO_BUFFER_SIZE - Defines the size in bytes of the buffer used in the IO calls from Fortran and in the tools.
\b ECCODES_NO_ABORT - When set to 1 it causes grib_api not to abort execution on failing asserts.
\b ECCODES_NO_ABORT - When set to 1 it causes ecCodes not to abort execution on failing asserts.
\b GRIB_API_WRITE_ON_FAIL - When set to 1 it will write the last processed grib message in a file named $PID_$FILEID_error.grib on failure in a fortran function used without the return code argument.
\b ECCODES_GRIB_WRITE_ON_FAIL - When set to 1 it will write the last processed GRIB message in a file named $PID_$FILEID_error.grib on failure in a fortran function used without the return code argument.
\b ECCODES_DEFINITION_PATH - Set to the folder containing the set of definition files you want grib_api to use instead of the default one.
\b ECCODES_DEFINITION_PATH - Set to the folder containing the set of definition files you want ecCodes to use instead of the default one.
\b ECCODES_GRIBEX_MODE_ON - When set to 1 it will enable the GRIBEX compatibility mode and grib_api will produce GRIB messages readable by GRIBEX.
\b ECCODES_GRIBEX_MODE_ON - When set to 1 it will enable the GRIBEX compatibility mode and ecCodes will produce GRIB messages readable by GRIBEX.
\b ECCODES_GRIB_IEEE_PACKING - Accepted values 32 or 64 for 32 or 64 bits IEEE floating point respectively. The GRIB message produced will contain data written in IEEE floating point without packing.
\b ECCODES_SAMPLES_PATH - Set to the folder containing the set of samples you want grib_api to use instead of the default one.
\b ECCODES_SAMPLES_PATH - Set to the folder containing the set of samples you want ecCodes to use instead of the default one.
*/

View File

@ -25,7 +25,7 @@ ABBREVIATE_BRIEF = "The $name class" \
ALWAYS_DETAILED_SEC = YES
INLINE_INHERITED_MEMB = NO
FULL_PATH_NAMES = NO
STRIP_FROM_PATH = /var/tmp/mac/p4/grib_api/main/doxygen/
STRIP_FROM_PATH = /home/ma/masn/git/eccodes/doxygen/
STRIP_FROM_INC_PATH =
SHORT_NAMES = NO
JAVADOC_AUTOBRIEF = YES
@ -105,7 +105,7 @@ INPUT = grib_api.dox \
../tools/grib_keys.dox \
../tools/grib_copy.dox \
../tools/grib_index_build.dox \
../python/eccodes.py
gribapi.py
FILE_PATTERNS = *.c \
*.cc \
*.cxx \

View File

@ -12,366 +12,4 @@
<!-- #EndEditable --> <!-- #BeginEditable "metalink" -->
<!-- Users insert meta LINK tags here -->
<!-- #EndEditable --> <!-- #BeginEditable "doctitle" -->
<title>GRIB API Manual</title>
<!-- #EndEditable --><!-- #BeginEditable "customstyle" -->
<!--put custom style here-->
<link rel="stylesheet" href="/publications/manuals/grib_api/doxygen.css" type="text/css">
<!-- #EndEditable -->
<script type="text/javascript" language="JavaScript" src=
"/assets/js/ecmwf.js">
</script>
<link rel="stylesheet" href="/assets/css/ecmwf.css" type=
"text/css">
</head>
<body bgcolor="#FFFFF2" text="#000000">
<a name="top"></a>
<table summary="Formatting Table: Page Layout" width="750" border=
"0" cellspacing="0" cellpadding="0" bgcolor="#FFFFF2">
<tr>
<td bgcolor="#CCCE9B" align="left" valign="middle"><a href="/"><img
src="/assets/images/text_logo.jpg" border="0" alt="Home page"
width="136" height="26" align="middle"></a></td>
<td bgcolor="#CCCE9B">&nbsp;</td>
<td bgcolor="#CCCE9B" valign="middle">
<form name="search" method="post" action="/cgi-bin/htsearch"><input
type="hidden" name="restrict" value="">
<table summary="Formatting Table: Actions Menu" border="0"
cellspacing="4" cellpadding="0" align="right">
<tr>
<td><a href="/" class="menuitem">Home</a></td>
<td>&nbsp;</td>
<td><a href="/your/d/room/" class="menuitem">Your Room</a></td>
<td>&nbsp;</td>
<td><a href="/tools/login/" class="menuitem">Login</a></td>
<td>&nbsp;</td>
<td><a href="/about/contact/" class="menuitem">Contact</a></td>
<td>&nbsp;</td>
<td><a href="/about/feedback/" class="menuitem">Feedback</a></td>
<td>&nbsp;</td>
<td><a href="/about/sitemap/" class="menuitem">Site Map</a></td>
<td>&nbsp;</td>
<td><a href="/tools/qsearch/" class="menuitem">Search:</a></td>
<td valign="bottom"><input type="hidden" name="exclude" value="">
<input type="hidden" name="config" value="wmss"> <input type="text"
name="words" maxlength="128" size="8" style=
"height:20px; width:80px"> </td>
<td>&nbsp;</td>
</tr>
</table>
</form>
</td>
</tr>
<tr>
<td align="center" valign="middle" width="136" bgcolor="#EEEEDE"><a
href="/samples/d/banner/page.html"><img alt="Discover this product"
border="0" width="136" height="64" src=
"/samples/d/banner/image.jpg"></a></td>
<td bgcolor="#EEEEDE">&nbsp;</td>
<td align="right" bgcolor="#EEEEDE">
<table summary="Formatting Table: Top Navigation" cellpadding="2"
cellspacing="0" border="0" width="100%">
<tr bgcolor="#EEEEDE">
<td valign="top" bgcolor="#EEEEDE" width="16%"><a href=
"/about/"><span class="topnav">About Us</span></a><br>
<a class="topnav1" href="/about/overview/">Overview</a><br>
<a class="topnav1" href="/about/location/">Getting here</a><br>
<a class="topnav1" href="/about/committees/">Committees</a> </td>
<td valign="top" bgcolor="#EEEEDE" width="16%"><a href=
"/products/"><span class="topnav">Products</span></a><br>
<a class="topnav1" href="/products/forecasts/">Forecasts</a><br>
<a class="topnav1" href="/products/data/">Order Data</a><br>
<a class="topnav1" href="/products/data/software/">Order
Software</a><br>
</td>
<td valign="top" bgcolor="#EEEEDE" width="16%"><a href=
"/services/"><span class="topnav">Services</span></a><br>
<a class="topnav1" href="/services/computing/">Computing</a><br>
<a class="topnav1" href="/services/archive/">Archive</a><br>
<a class="topnav1" href="/services/prepifs/">PrepIFS</a><br>
</td>
<td valign="top" bgcolor="#EEEEDE" width="16%"><a href=
"/research/"><span class="topnav">Research</span></a><br>
<a class="topnav1" href="/research/ifs/">Modelling</a><br>
<a class="topnav1" href="/research/era/">Reanalysis</a><br>
<a class="topnav1" href="/research/seasonal/">Seasonal</a><br>
</td>
<td valign="top" bgcolor="#EEEEDE" width="16%"><a href=
"/publications/"><span class="topnav">Publications</span></a><br>
<a class="topnav1" href=
"/publications/newsletters/">Newsletters</a><br>
<a class="topnav1" href="/publications/manuals/">Manuals</a><br>
<a class="topnav1" href="/publications/manuals/libraries">Libraries</a><br>
</td>
<td valign="top" bgcolor="#EEEEDE" width="20%"><a href=
"/newsevents/"><span class="topnav">News&amp;Events</span></a><br>
<a class="topnav1" href="/newsevents/calendar/">Calendar</a><br>
<a class="topnav1" href="/newsevents/employment/">Employment</a><a
class="topnav1" href="/newsevents/calendar/"></a><br>
<a class="topnav1" href="/newsevents/itt/">Open Tenders</a><br>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="left" valign="middle" width="136" bgcolor="#CCCE9B">
<!-- #BeginEditable "spare1" -->&nbsp;<!-- #EndEditable --></td>
<td bgcolor="#CCCE9B">&nbsp;</td>
<td valign="middle" bgcolor="#CCCE9B">
<table summary="Formatting Table: Location header" cellpadding="0"
cellspacing="0" border="0" width="100%">
<tr>
<td align="left"><span class="location">
<!-- #BeginEditable "location" -->
<!-- #BeginLibraryItem "/PRODUCTS/DATA/LIBRARY/software_top_menu.lbi" --><span
class="location"><a href="/">Home</a>&nbsp;&gt;&nbsp;
<a href= "/publications/index.html">Publications</a>&nbsp;&gt;&nbsp;
<a href= "/publications/manuals/index.html">Manuals</a> &gt;
<!-- #EndLibraryItem -->Grib API&gt;&nbsp;
<!-- #EndEditable -->&nbsp;</span> </td>
<td align="right"><!-- #BeginEditable "topprevnext" -->
<!-- #EndEditable --></td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="left"><!-- #BeginEditable "spare2" -->&nbsp;
<!-- #EndEditable --> </td>
<td>&nbsp;</td>
<td align="left">
<h1><!-- #BeginEditable "heading" -->
<!-- #EndEditable --></h1>
</td>
</tr>
<tr>
<td valign="top" width="136" background=
"/assets/images/map_backdrop.jpg"><!-- #BeginEditable "submenu" -->
<!-- #BeginLibraryItem "/PRODUCTS/DATA/SOFTWARE/" --><!-- + + + + + NAME = [Data]+ + + + + + + + + -->
<table background="/assets/shim.gif" bgcolor="#FFF1B3" border="0"
cellpadding="1" cellspacing="0" width="100%" class="submenu">
<tbody>
<tr>
<td><a class="menuheading" href=
"/publications/manuals/grib_api/index.html">GRIB API Manual</a> </td>
</tr>
<tr>
<td>
<table bgcolor="#ffffff" border="0" cellpadding="3" cellspacing="0"
width="100%">
<tr>
<td>
<table bgcolor="#ffffff" width="100%">
<tr>
<td><a class="menuitem" href=
"/publications/manuals/grib_api/installation.html">Installation</a></td>
</tr>
<tr>
<td><a class="menuitem" href=
"/publications/manuals/grib_api/namespacegribapi.html">Python</a></td>
</tr>
<tr>
<td><a class="menuitem" href=
"/publications/manuals/grib_api/namespacegrib__api.html">Fortran 90</a></td>
</tr>
<tr>
<td><a class="menuitem" href=
"/publications/manuals/grib_api/modules.html">C</a></td>
</tr>
<tr>
<td><a class="menuitem" href=
"/publications/manuals/grib_api/conversion.html">GRIB Conversion</a></td>
</tr>
<td><a class="menuitem" href=
"/publications/manuals/grib_api/gribexkeys/callGribex.html">GRIBEX keys</a></td>
</tr>
<tr>
<td><a class="menuitem" href=
"/publications/manuals/grib_api/keys.html">Keys</a></td>
</tr>
<tr>
<td><a class="menuitem" href=
"/publications/manuals/grib_api/grib_examples.html">Examples</a></td>
</tr>
<tr>
<td><a class="menuitem" href=
"/publications/manuals/grib_api/tools.html">Tools</a></td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</tbody>
</table>
<br>
<!-- - - NAME = [archive]- - - - - - - -->
<!-- #EndLibraryItem --><!-- #BeginLibraryItem "/products/data/Library/software_rel6.lbi" --><!-- + + + + + NAME = [Data]+ + + + + + + + + -->
<!-- #BeginLibraryItem "/PRODUCTS/DATA/LIBRARY/software_menu.lbi" --><!-- + + + + + NAME = [Data]+ + + + + + + + + -->
<table background="/assets/shim.gif" bgcolor="#FFF1B3" border="0"
cellpadding="1" cellspacing="0" width="100%" class="submenu">
<tbody>
<tr>
<td><a class="menuheading" href=
"/products/data/software/index.html">Software</a> </td>
</tr>
<tr>
<td>
<table bgcolor="#ffffff" border="0" cellpadding="3" cellspacing="0"
width="100%">
<tr>
<td>
<table bgcolor="#ffffff" width="100%">
<tr>
<td><a class="menuitem" href=
"/products/data/software/bufr.html">BUFR</a></td>
</tr>
<tr>
<td><a class="menuitem" href=
"/products/data/software/crex.html">CREX</a></td>
</tr>
<tr>
<td><a class="menuitem" href=
"/products/data/software/grib.html">GRIBEX</a></td>
</tr>
<tr>
<td><a class="menuitem" href=
"/products/data/software/grib_api.html">GRIB API</a></td>
</tr>
<tr>
<td><a class="menuitem" href=
"/products/data/software/interpolation.html">Interpolation</a></td>
</tr>
<tr>
<td><a class="menuitem" href=
"/products/data/software/magics.html">Magics</a></td>
</tr>
<tr>
<td><a class="menuitem" href=
"/products/data/software/metview.html">Metview</a></td>
</tr>
<tr>
<td><a class="menuitem" href=
"/products/data/software/sms.html">SMS</a></td>
</tr>
<tr>
<td><a class="menuitem" href=
"/products/data/software/forms/ECMWF_software_ordering_form.pdf">Ordering
forms</a> <img src="/products/data/archive/forms/pdf.gif" width=
"20" height="20"></td>
</tr>
<tr>
<td><a class="menuitem" href=
"/products/data/software/forms/ECMWF_software_licence.pdf">Software
licence<img src="/products/data/archive/forms/pdf.gif" width="20"
height="20" border="0"></a></td>
</tr>
<tr>
<td><a class="menuitem" href=
"/products/data/software/payment.html">Payment rules</a></td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</tbody>
</table>
<br>
<!-- - - NAME = [archive]- - - - - - - -->
<!-- #EndLibraryItem --><!-- #BeginLibraryItem "/products/data/Library/software_rel6.lbi" --><!-- + + + + + NAME = [Data]+ + + + + + + + + -->
<table background="/assets/shim.gif" bgcolor="#CCCE9B" border="0"
cellpadding="1" cellspacing="0" width="100%" class="submenu">
<tbody>
<tr>
<td><span><a class="menuheading" href=
"/publications/manuals/index.html">Related Manuals</a></span></td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td>
<table bgcolor="#ffffff" border="0" cellpadding="3" cellspacing="0"
width="100%">
<tr>
<td>
<table bgcolor="#ffffff" width="100%">
<tr>
<td><a class="menuitem" href=
"/publications/manuals/libraries/gribex/index.html">GRIBEX
manual</a> </td>
</tr>
<tr>
<td><a class="menuitem" href=
"/publications/manuals/libraries/interpolation/index.html">Interpolation
manual</a> </td>
</tr>
<tr>
<td><a class="menuitem" href=
"/publications/manuals/metview/index.html">Metview Manuals</a></td>
</tr>
<tr>
<td>
<p><a class="menuitem" href=
"/publications/manuals/magics/index.html">Magics Manuals</a></p>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</tbody>
</table>
<br>
<!-- - - NAME = [data]- - - - - - - --> <!-- #EndLibraryItem -->
<!-- #EndEditable --> &nbsp;<br>
</td>
<td>&nbsp;</td>
<td valign="top">
<!-- #BeginEditable "content" ****** -->
<title>ecCodes Manual</title>

View File

@ -3,7 +3,7 @@
cd ../tools
./make_dox.ksh
cd ../doxygen
p4 edit ../html/*
rm -f ../html/*
touch ../html/Makefile.am
doxygen grib_api_wiz.cfg

View File

@ -1,13 +1,17 @@
#!/bin/sh
./prepare_pydocs.pl < ../python/eccode.py > eccode.py
set -e
./prepare_pydocs.pl < ../python/gribapi.py > gribapi.py
cd ../tools
./make_dox.ksh
cd ../doxygen
p4 edit ../html_web/*
rm -f ../html_web/*
doxygen grib_api_site.cfg
DOXYGEN_EXE=doxygen
# DOXYGEN_EXE=/tmp/doxygen-1.5.3/bin/doxygen
$DOXYGEN_EXE grib_api_site.cfg
cp doxygen.css ../html_web/
./build_gribex.ksh gribex ../html_web/gribexkeys
./make_site.ksh

View File

@ -16,7 +16,6 @@
<td><a href="#top"><img src="/assets/icons/up.gif" alt=
"Top of page" border="0" width="18" height="18"></a></td>
<td><span class="documentdate"><!-- #BeginEditable "version" -->
<!-- #BeginDate format:Ge1 -->25.02.2011<!-- #EndDate -->
<!-- #EndEditable --></span></td>
</tr>
</table>

View File

@ -36,6 +36,7 @@ list( APPEND tests
bufr_clone
bufr_expanded
bufr_get_keys
bufr_get_string_array
bufr_keys_iterator
bufr_read_header
bufr_read_scatterometer

View File

@ -0,0 +1,68 @@
!
!Copyright 2005-2016 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.
!
!
! FOTRAN 90 Implementation: bufr_get_string_array
!
! Description: how to get an array of strings from a BUFR message.
program bufr_get_string_array
use eccodes
implicit none
integer :: ifile
integer :: iret,i,n
integer :: ibufr
integer :: strsize
integer, parameter :: max_strsize = 20
character(len=max_strsize) , dimension(:),allocatable :: stationOrSiteName
call codes_open_file(ifile,'../../data/bufr/pgps_110.bufr','r')
call codes_bufr_new_from_file(ifile,ibufr,iret)
! unpack the data values
call codes_set(ibufr,'unpack',1)
! get the width of the strings which is te same for all of them
call codes_get(ibufr,'stationOrSiteName->width',strsize)
! the width is given in bits
strsize=strsize/8
! max_strsize has to be set to a value >= to the size of the strings that we are getting
! back from the call to codes_get_string_array
if (strsize > max_strsize) then
print *,'stationOrSiteName array dimension is ',max_strsize,' and should be ',strsize
call exit(1)
end if
! allocating the array of strings to be passed to codes_get_string_array is mandatory
call codes_get_size(ibufr,'stationOrSiteName',n)
allocate(stationOrSiteName(n))
! passing an array of strings stationOrSiteName which must be allocated beforehand
call codes_get_string_array(ibufr,'stationOrSiteName',stationOrSiteName)
do i=1,n
write(*,'(A)')trim(stationOrSiteName(i))
end do
!remember to deallocate
deallocate(stationOrSiteName)
! release memory associated with bufr handle
! ibufr won't be accessible any more from codes_release on
call codes_release(ibufr)
! close file
call codes_close_file(ifile)
end program bufr_get_string_array

View File

@ -0,0 +1,39 @@
#!/bin/sh
# Copyright 2005-2016 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.sh
set -x
#Define a common label for all the tmp files
label="bufr_get_string_array_test_f"
#Prepare tmp file
fTmp=${label}.tmp.txt
rm -f $fTmp | true
#-----------------------------------------------------
# Test get string array from a BUFR
#----------------------------------------------------
fRef=${data_dir}/bufr/get_string_array.ref
REDIRECT=/dev/null
#Write the values into a file and compare with reference
${examples_dir}/eccodes_f_bufr_get_string_array $f > $fTmp
#We compare output to the reference by ignoring the whitespaces
diff -w $fRef $fTmp
#cat $fRes
#Clean up
rm -f ${fTmp} | true

View File

@ -96,8 +96,8 @@
codes_get_real4, &
codes_get_real8, &
codes_get_string, &
codes_get_int_array, &
codes_get_byte_array, &
codes_get_int_array, &
codes_get_real4_array, &
codes_get_real8_array
end interface codes_get

View File

@ -100,8 +100,8 @@
codes_get_real4, &
codes_get_real8, &
codes_get_string, &
codes_get_int_array, &
codes_get_byte_array, &
codes_get_int_array, &
codes_get_real4_array, &
codes_get_real8_array
end interface codes_get

View File

@ -828,6 +828,43 @@ subroutine codes_get_string ( gribid, key, value, status )
call grib_get_string ( gribid, key, value, status )
end subroutine codes_get_string
subroutine codes_get_string_array ( gribid, key, value, status )
integer(kind=kindOfInt), intent(in) :: gribid
character(len=*), intent(in) :: key
character(len=*), dimension(:),allocatable,intent(inout) :: value
integer(kind=kindOfInt),optional, intent(out) :: status
character :: cvalue(size(value)*len(value(0)))
integer(kind=kindOfInt) :: iret
integer(kind=kindOfInt) :: nb_values
integer(kind=kindOfInt) :: slen
integer(kind=kindOfInt) :: i,s,j
if (allocated(value) .eqv. .false.) then
iret=CODES_NULL_POINTER
if (present(status)) then
status = iret
else
call grib_check(iret,'grib_get',key)
endif
end if
nb_values=size(value)
slen=len(value(0))
iret=grib_f_get_string_array ( gribid, key, cvalue , nb_values, slen )
value=transfer(cvalue,value)
if (iret /= 0) then
call grib_f_write_on_fail(gribid)
endif
if (present(status)) then
status = iret
else
call grib_check(iret,'grib_get',key)
endif
end subroutine codes_get_string_array
! Note: This function supports the allocatable array attribute
! -------------------------------------------------------------
subroutine codes_get_int_array ( gribid, key, value, status )
@ -861,9 +898,9 @@ subroutine codes_get_int_array ( gribid, key, value, status )
value(i)=value(1)
enddo
endif
if (iret /= 0) then
call grib_f_write_on_fail(gribid)
endif
if (iret /= 0) then
call grib_f_write_on_fail(gribid)
endif
if (present(status)) then
status = iret
else
@ -926,7 +963,6 @@ subroutine codes_get_byte_array ( gribid, key, value, length, status )
integer(kind=kindOfInt), optional, intent(out) :: status
integer(kind=kindOfInt) :: iret
integer(kind=kindOfInt) :: nb_values
character :: bytes(size(value))
call grib_get_byte_array ( gribid, key, value, length, status )
end subroutine codes_get_byte_array
@ -1144,7 +1180,6 @@ subroutine codes_set_byte_array ( gribid, key, value, length, status )
integer(kind=kindOfInt), optional, intent(out) :: status
integer(kind=kindOfInt) :: iret
integer(kind=kindOfInt) :: nb_values
character :: bytes(size(value))
call grib_set_byte_array ( gribid, key, value, length, status )
end subroutine codes_set_byte_array

View File

@ -32,7 +32,8 @@ integer, external :: grib_f_get_int, grib_f_get_long,grib_f_get_int_array, &
grib_f_get_real8, grib_f_get_real8_array, &
grib_f_get_real4_element, grib_f_get_real8_element, &
grib_f_get_real4_elements, grib_f_get_real8_elements, &
grib_f_get_string,grib_f_is_missing,grib_f_is_defined
grib_f_get_string,grib_f_get_string_array, &
grib_f_is_missing,grib_f_is_defined
integer, external :: grib_f_new_from_index, &
grib_f_index_new_from_file, &
grib_f_index_add_file, &

View File

@ -162,6 +162,16 @@ static void czstr_to_fortran(char* str,int len)
*p=' ';
}
/*static void czstr_to_fortran_replace0(char* str,int len)
{
char *p,*end;
p=str; end=str+len-1;
while (p != end) {
if (*p=='\0') *p=' ';
p++;
}
}*/
static void fort_char_clean(char* str,int len)
{
char *p,*end;
@ -2697,6 +2707,43 @@ int grib_f_set_real8_array(int* gid, char* key, double *val, int* size, int len)
return grib_f_set_real8_array_( gid, key, val, size, len);
}
/*****************************************************************************/
int grib_f_get_string_array_(int* gid, char* key, char* val,int* nvals,int* slen,int len)
{
grib_handle *h = get_handle(*gid);
int err = GRIB_SUCCESS;
size_t i;
char buf[1024];
size_t lsize = *nvals;
char** cval=0;
char* p=val;
if(!h) return GRIB_INVALID_GRIB;
cval=(char**)grib_context_malloc_clear(h->context,sizeof(char*)*lsize);
err = grib_get_string_array(h, cast_char(buf,key,len), cval, &lsize);
if (err) return err;
if (strlen(cval[0])>*slen) err=GRIB_ARRAY_TOO_SMALL;
for (i=0;i<lsize;i++) {
strcpy(p,cval[i]);
czstr_to_fortran(p,*slen);
p+= *slen;
}
grib_context_free(h->context,cval);
/*remember to deallocate each string*/
return err;
}
int grib_f_get_string_array__(int* gid, char* key, char* val,int* nvals,int* slen, int len){
return grib_f_get_string_array_( gid, key, val,nvals,slen,len);
}
int grib_f_get_string_array(int* gid, char* key, char* val,int* nvals,int* slen, int len){
return grib_f_get_string_array_( gid, key, val, nvals, slen, len);
}
/*****************************************************************************/
int grib_f_get_string_(int* gid, char* key, char* val,int len, int len2){

View File

@ -1,39 +0,0 @@
# Copyright 2005-2016 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.
#
constant GRIBEXSection1Problem = 120 - section1Length ;
template mars_labeling "grib1/mars_labeling.def";
unsigned[1] yearOfReference = yearOfCentury : dump;
unsigned[1] monthOfReference = month : dump;
unsigned[1] dayOfReference = day : dump;
unsigned[1] hourOfReference = hour : dump;
unsigned[1] minuteOfReference = minute : dump;
unsigned[1] centuryOfReference = centuryOfReferenceTimeOfData : dump;
transient secondsOfReference = 0 ;
unsigned[1] numberOfForcasts=0 : dump;
unsigned[1] numberOfAnalysis=1 : dump;
if (numberOfForcasts) {
unsigned[3] forecastSteps[numberOfForcasts] : dump;
}
if (numberOfAnalysis) {
signed[3] analysisOffsets[numberOfAnalysis] : dump;
}
padto padding_local_35(offsetSection1 + 120);
meta dateOfReference g1date(centuryOfReference,yearOfReference,monthOfReference,dayOfReference) : dump;
meta timeOfReference time(hourOfReference,minuteOfReference,secondsOfReference) : dump;
if (indicatorOfTypeOfLevel==160) {
alias mars.levelist = level;
}

View File

@ -1,160 +0,0 @@
# Copyright 2005-2016 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.
#
# START grib1::section
# SECTION 4, Binary data section
# Length of section
# (octets)
position offsetSection4;
# Due to a trick done by GRIBEX to support large GRIBs, we need a special treatment
# of the message length and of the section4 lenth, so instead of
# length[3] section4Length ;
# we get:
g1_section4_length[3] section4Length(totalLength);
meta section4Pointer section_pointer(offsetSection4,section4Length,4);
g1_half_byte_codeflag halfByte;
flags[1] dataFlag "grib1/11.table" = 0 : read_only;
signed[2] binaryScaleFactor = 0 : read_only,dump;
ibmfloat referenceValue : read_only,dump;
unsigned[1] bitsPerValue : dump ;
alias numberOfBitsContainingEachPackedValue = bitsPerValue;
meta referenceValueError reference_value_error(referenceValue,ibm);
flagbit sphericalHarmonics(dataFlag,7) : dump;
flagbit complexPacking(dataFlag,6) : dump;
flagbit integerPointValues(dataFlag,5) : dump;
flagbit additionalFlagPresent(dataFlag,4) : edition_specific,dump;
transient hideThis=0;
concept packingType {
#set uses the last one
#get returns the first match
"grid_simple" = { sphericalHarmonics = 0; complexPacking = 0; additionalFlagPresent = 0;}
"grid_ieee" = { sphericalHarmonics = 0; complexPacking = 0;
integerPointValues=1; additionalFlagPresent=1;}
"spectral_complex" = { sphericalHarmonics = 1; complexPacking = 1;
additionalFlagPresent = 0; }
"spectral_simple" = { sphericalHarmonics = 1; complexPacking = 0; additionalFlagPresent = 0;
representationMode=1;}
"spectral_ieee" = { sphericalHarmonics = 1; complexPacking = 1;
additionalFlagPresent = 0; hideThis=1; }
"grid_simple_matrix" = { sphericalHarmonics = 0; complexPacking = 0; additionalFlagPresent = 1;}
"grid_second_order" = { sphericalHarmonics = 0; complexPacking = 1; }
"grid_complex" = { sphericalHarmonics = 0; complexPacking = 0; additionalFlagPresent = 0;}
"grid_complex_spatial_differencing" = { sphericalHarmonics = 0; complexPacking = 0; additionalFlagPresent = 0;}
"grid_jpeg" = { sphericalHarmonics = 0; complexPacking = 0; additionalFlagPresent = 0;}
"grid_png" = { sphericalHarmonics = 0; complexPacking = 0; additionalFlagPresent = 0;}
"grid_simple_log_preprocessing"= { sphericalHarmonics = 0; complexPacking = 0; additionalFlagPresent = 0;}
} : dump;
alias ls.packingType=packingType;
alias typeOfPacking=packingType;
if( binaryScaleFactor == -32767) {
constant dataRepresentationTemplateNumber = 0;
constant bitMapIndicator = 0;
# For grib 1 -> 2
position offsetBeforeData;
transient numberOfCodedValues=numberOfPoints;
meta values data_dummy_field(
section4Length,
offsetBeforeData,
offsetSection4,
unitsFactor,
unitsBias,
changingPrecision,
numberOfCodedValues,
bitsPerValue,
referenceValue,
binaryScaleFactor,
decimalScaleFactor,
halfByte,
packingType,
grid_ieee,precision,
missingValue,
numberOfPoints,
bitmap
) : dump;
} else {
template dataValues "grib1/data.[packingType:s].def";
}
position offsetAfterData;
transient dataLength=(offsetAfterData-offsetBeforeData)/8;
if (bitmapPresent==1) {
alias numberOfEffectiveValues=numberOfDataPoints;
} else {
alias numberOfEffectiveValues=numberOfCodedValues;
}
_if (sphericalHarmonics) {
alias numberOfEffectiveValues=numberOfValues;
}
#meta setDecimalPrecision suppressed(decimalPrecision,changeDecimalPrecision);
meta changeDecimalPrecision decimal_precision(bitsPerValue,decimalScaleFactor,changingPrecision,values) : edition_specific;
meta decimalPrecision decimal_precision(bitsPerValue,decimalScaleFactor,changingPrecision) : edition_specific;
alias setDecimalPrecision=changeDecimalPrecision;
meta bitsPerValueAndRepack bits_per_value(values,bitsPerValue) : edition_specific;
alias setBitsPerValue=bitsPerValueAndRepack;
meta scaleValuesBy scale_values(values,missingValue) : edition_specific;
meta offsetValuesBy offset_values(values,missingValue) : edition_specific;
concept gridType {
#set uses the last one
#get returns the first match
"regular_ll" = {dataRepresentationType = 0; sphericalHarmonics = 0; PLPresent=0;}
"reduced_ll" = {dataRepresentationType = 0; sphericalHarmonics = 0; PLPresent=1; Ni=missing(); }
"mercator" = {dataRepresentationType = 1; sphericalHarmonics = 0; PLPresent=0; }
"lambert" = {dataRepresentationType = 3; sphericalHarmonics = 0; PLPresent=0; }
"polar_stereographic" = {dataRepresentationType = 5; sphericalHarmonics = 0; PLPresent=0; }
"UTM" = {dataRepresentationType = 6; sphericalHarmonics = 0; PLPresent=0; }
"simple_polyconic" = {dataRepresentationType = 7; sphericalHarmonics = 0; PLPresent=0; }
"albers" = {dataRepresentationType = 8; sphericalHarmonics = 0; PLPresent=0; }
"miller" = {dataRepresentationType = 8; sphericalHarmonics = 0; PLPresent=0; }
"rotated_ll" = {dataRepresentationType = 10; sphericalHarmonics = 0; PLPresent=0; }
"stretched_ll" = {dataRepresentationType = 20; sphericalHarmonics = 0; PLPresent=0; }
"stretched_rotated_ll" = {dataRepresentationType = 30; sphericalHarmonics = 0; PLPresent=0; }
"regular_gg" = {dataRepresentationType = 4; sphericalHarmonics = 0; PLPresent=0; }
"rotated_gg" = {dataRepresentationType = 14; sphericalHarmonics = 0; PLPresent=0; }
"stretched_gg" = {dataRepresentationType = 24; sphericalHarmonics = 0; PLPresent=0; }
"stretched_rotated_gg" = {dataRepresentationType = 34; sphericalHarmonics = 0; PLPresent=0; }
"reduced_gg" = {dataRepresentationType = 4; sphericalHarmonics = 0;
PLPresent=1; numberOfPointsAlongAParallel = missing();
iDirectionIncrement = missing(); ijDirectionIncrementGiven=0;}
"sh" = {dataRepresentationType = 50; sphericalHarmonics = 1; PLPresent=0; }
"rotated_sh" = {dataRepresentationType = 60; sphericalHarmonics = 1; PLPresent=0; }
"stretched_sh" = {dataRepresentationType = 70; sphericalHarmonics = 1; PLPresent=0; }
"stretched_rotated_sh" = {dataRepresentationType = 80; sphericalHarmonics = 1; PLPresent=0; }
"space_view" = {dataRepresentationType = 90; sphericalHarmonics = 0; PLPresent=0; }
"unknown" = {PLPresent=0;}
"unknown_PLPresent" = {PLPresent=1;}
} : dump;
alias ls.gridType=gridType;
alias geography.gridType=gridType;
alias typeOfGrid=gridType;
meta getNumberOfValues size(values) : edition_specific,dump ;
padtoeven padding_sec4_1(offsetSection4,section4Length) ;
meta md5Section4 md5(offsetSection4,section4Length);

View File

@ -1,12 +0,0 @@
if WITH_MARS_TESTS
TESTS = ls.sh
noinst_PROGRAMS =
LDADD = $(top_builddir)/src/libgrib_api.a $(EMOS_LIB)
INCLUDES = -I$(top_builddir)/src
EXTRA_DIST = $(TESTS)
endif

View File

@ -1,50 +0,0 @@
# Copyright 2005-2016 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.
set -ea
echo
echo "TEST: $0"
data_dir=""
# save current working dir
save=`pwd`
if [ -z "${data_dir}" ]
then
cd ../
cpath=`pwd`
ECCODES_DEFINITION_PATH=$cpath/definitions
export ECCODES_DEFINITION_PATH
ECCODES_SAMPLES_PATH=$cpath/samples
export ECCODES_SAMPLES_PATH
tools_dir=$cpath/tools/
tigge_dir=$cpath/tigge/
data_dir=$cpath/data
test_dir=$cpath/tests
def_dir=$cpath/definitions
else
tools_dir=""
tigge_dir=""
fi
if [ -z "${GRIB_API_INCLUDE}" ]
then
GRIB_API_INCLUDE=`pwd`/src
fi
if [ -z "${GRIB_API_LIB}" ]
then
GRIB_API_LIB=`pwd`/src
fi
# go back to current working dir
cd $save
set -u

View File

@ -1,60 +0,0 @@
#!/bin/sh
# Copyright 2005-2016 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.sh
rm -f log | true
workdir=`pwd`
cd ${data_dir}
infile=regular_gaussian_model_level.grib1
${tools_dir}grib_ls -P count $infile > log
${tools_dir}grib_ls -p count,step $infile >> log
${tools_dir}grib_ls $infile >> log
${tools_dir}grib_ls -l 0,0,1 $infile >> log
${tools_dir}grib_get -l 0,0,1 $infile >> log
${tools_dir}grib_get -p count,step $infile >> log
${tools_dir}grib_get -P count $infile >> log
files=" reduced_gaussian_lsm.grib1
reduced_gaussian_model_level.grib1
reduced_gaussian_model_level.grib2
reduced_gaussian_pressure_level.grib1
reduced_gaussian_pressure_level.grib2
reduced_gaussian_pressure_level_constant.grib1
reduced_gaussian_pressure_level_constant.grib2
reduced_gaussian_sub_area.grib1
reduced_gaussian_sub_area.grib2
reduced_gaussian_surface.grib1
reduced_gaussian_surface.grib2
reduced_latlon_surface.grib1
reduced_latlon_surface.grib2
regular_gaussian_model_level.grib1
regular_gaussian_model_level.grib2
regular_gaussian_pressure_level.grib1
regular_gaussian_pressure_level.grib2
regular_gaussian_pressure_level_constant.grib1
regular_gaussian_pressure_level_constant.grib2
regular_gaussian_surface.grib1
regular_gaussian_surface.grib2
regular_latlon_surface.grib1
regular_latlon_surface.grib2
"
for file in $files
do
echo $file >> log
${tools_dir}grib_ls -l 40,28 $file | grep index | awk '{print $4;}' >> log
done
diff log ls.log
rm -f log
cd $workdir

View File

@ -490,6 +490,7 @@ static grib_darray* decode_double_array(grib_context* c,unsigned char* data,long
} else {
dval=localReference*modifiedFactor;
}
grib_context_log(c, GRIB_LOG_DEBUG," modifiedWidth=%ld lval=%ld dval=%g", modifiedWidth,lval,dval);
grib_darray_push(c,ret,dval);
}

View File

@ -83,7 +83,6 @@ static void init_class(grib_iterator_class* c)
static int next(grib_iterator* i, double *lat, double *lon, double *val)
{
grib_iterator_lambert_conformal* self = (grib_iterator_lambert_conformal*)i;
if((long)i->e >= (long)(i->nv-1))
@ -114,161 +113,161 @@ static int next(grib_iterator* i, double *lat, double *lon, double *val)
static int init(grib_iterator* iter,grib_handle* h,grib_arguments* args)
{
int i, j, ret=0;
double *lats, *lons; /* the lat/lon arrays to be populated */
long nx,ny,iScansNegatively,jScansPositively,jPointsAreConsecutive,alternativeRowScanning;
double LoVInDegrees,LaDInDegrees,Latin1InDegrees,Latin2InDegrees,latFirstInDegrees,
lonFirstInDegrees, Dx, Dy, radius=0;
double latFirstInRadians, lonFirstInRadians, LoVInRadians, Latin1InRadians, Latin2InRadians,
LaDInRadians, lonDiff, lonDeg, latDeg;
double f, n, rho, rho0, angle, x0, y0, x, y, tmp, tmp2;
int i, j, ret=0;
double *lats, *lons; /* the lat/lon arrays to be populated */
long nx,ny,iScansNegatively,jScansPositively,jPointsAreConsecutive,alternativeRowScanning;
double LoVInDegrees,LaDInDegrees,Latin1InDegrees,Latin2InDegrees,latFirstInDegrees,
lonFirstInDegrees, Dx, Dy, radius=0;
double latFirstInRadians, lonFirstInRadians, LoVInRadians, Latin1InRadians, Latin2InRadians,
LaDInRadians, lonDiff, lonDeg, latDeg;
double f, n, rho, rho0, angle, x0, y0, x, y, tmp, tmp2;
grib_iterator_lambert_conformal* self = (grib_iterator_lambert_conformal*)iter;
grib_iterator_lambert_conformal* self = (grib_iterator_lambert_conformal*)iter;
const char* sradius = grib_arguments_get_name(h,args,self->carg++);
const char* snx = grib_arguments_get_name(h,args,self->carg++);
const char* sny = grib_arguments_get_name(h,args,self->carg++);
const char* sLoVInDegrees = grib_arguments_get_name(h,args,self->carg++);
const char* sLaDInDegrees = grib_arguments_get_name(h,args,self->carg++);
const char* sLatin1InDegrees = grib_arguments_get_name(h,args,self->carg++);
const char* sLatin2InDegrees = grib_arguments_get_name(h,args,self->carg++);
const char* slatFirstInDegrees = grib_arguments_get_name(h,args,self->carg++);
const char* slonFirstInDegrees = grib_arguments_get_name(h,args,self->carg++);
/* Dx and Dy are in Metres */
const char* sDx = grib_arguments_get_name(h,args,self->carg++);
const char* sDy = grib_arguments_get_name(h,args,self->carg++);
const char* siScansNegatively = grib_arguments_get_name(h,args,self->carg++);
const char* sjScansPositively = grib_arguments_get_name(h,args,self->carg++);
const char* sjPointsAreConsecutive = grib_arguments_get_name(h,args,self->carg++);
const char* salternativeRowScanning = grib_arguments_get_name(h,args,self->carg++);
const char* sradius = grib_arguments_get_name(h,args,self->carg++);
const char* snx = grib_arguments_get_name(h,args,self->carg++);
const char* sny = grib_arguments_get_name(h,args,self->carg++);
const char* sLoVInDegrees = grib_arguments_get_name(h,args,self->carg++);
const char* sLaDInDegrees = grib_arguments_get_name(h,args,self->carg++);
const char* sLatin1InDegrees = grib_arguments_get_name(h,args,self->carg++);
const char* sLatin2InDegrees = grib_arguments_get_name(h,args,self->carg++);
const char* slatFirstInDegrees = grib_arguments_get_name(h,args,self->carg++);
const char* slonFirstInDegrees = grib_arguments_get_name(h,args,self->carg++);
/* Dx and Dy are in Metres */
const char* sDx = grib_arguments_get_name(h,args,self->carg++);
const char* sDy = grib_arguments_get_name(h,args,self->carg++);
const char* siScansNegatively = grib_arguments_get_name(h,args,self->carg++);
const char* sjScansPositively = grib_arguments_get_name(h,args,self->carg++);
const char* sjPointsAreConsecutive = grib_arguments_get_name(h,args,self->carg++);
const char* salternativeRowScanning = grib_arguments_get_name(h,args,self->carg++);
if((ret = grib_get_long_internal(h, snx,&nx)) != GRIB_SUCCESS)
return ret;
if((ret = grib_get_long_internal(h, sny,&ny)) != GRIB_SUCCESS)
return ret;
if((ret = grib_get_long_internal(h, snx,&nx)) != GRIB_SUCCESS)
return ret;
if((ret = grib_get_long_internal(h, sny,&ny)) != GRIB_SUCCESS)
return ret;
if (iter->nv!=nx*ny) {
grib_context_log(h->context,GRIB_LOG_ERROR,"Wrong number of points (%ld!=%ldx%ld)",iter->nv,nx,ny);
return GRIB_WRONG_GRID;
}
if((ret = grib_get_double_internal(h, sradius,&radius)) != GRIB_SUCCESS)
return ret;
if((ret = grib_get_double_internal(h, sLoVInDegrees, &LoVInDegrees))!=GRIB_SUCCESS)
return ret;
if((ret = grib_get_double_internal(h, sLaDInDegrees, &LaDInDegrees))!=GRIB_SUCCESS)
return ret;
if((ret = grib_get_double_internal(h, sLatin1InDegrees, &Latin1InDegrees))!=GRIB_SUCCESS)
return ret;
if((ret = grib_get_double_internal(h, sLatin2InDegrees, &Latin2InDegrees))!=GRIB_SUCCESS)
return ret;
if((ret = grib_get_double_internal(h, slatFirstInDegrees,&latFirstInDegrees)) !=GRIB_SUCCESS)
return ret;
if((ret = grib_get_double_internal(h, slonFirstInDegrees,&lonFirstInDegrees)) !=GRIB_SUCCESS)
return ret;
if((ret = grib_get_double_internal(h, sDx,&Dx)) !=GRIB_SUCCESS)
return ret;
if((ret = grib_get_double_internal(h, sDy,&Dy)) !=GRIB_SUCCESS)
return ret;
if((ret = grib_get_long_internal(h, sjPointsAreConsecutive,&jPointsAreConsecutive)) !=GRIB_SUCCESS)
return ret;
if((ret = grib_get_long_internal(h, sjScansPositively,&jScansPositively)) !=GRIB_SUCCESS)
return ret;
if((ret = grib_get_long_internal(h, siScansNegatively,&iScansNegatively)) !=GRIB_SUCCESS)
return ret;
if((ret = grib_get_long_internal(h, salternativeRowScanning,&alternativeRowScanning)) !=GRIB_SUCCESS)
return ret;
if (iter->nv!=nx*ny) {
grib_context_log(h->context,GRIB_LOG_ERROR,"Wrong number of points (%ld!=%ldx%ld)",iter->nv,nx,ny);
return GRIB_WRONG_GRID;
}
if((ret = grib_get_double_internal(h, sradius,&radius)) != GRIB_SUCCESS)
return ret;
if((ret = grib_get_double_internal(h, sLoVInDegrees, &LoVInDegrees))!=GRIB_SUCCESS)
return ret;
if((ret = grib_get_double_internal(h, sLaDInDegrees, &LaDInDegrees))!=GRIB_SUCCESS)
return ret;
if((ret = grib_get_double_internal(h, sLatin1InDegrees, &Latin1InDegrees))!=GRIB_SUCCESS)
return ret;
if((ret = grib_get_double_internal(h, sLatin2InDegrees, &Latin2InDegrees))!=GRIB_SUCCESS)
return ret;
if((ret = grib_get_double_internal(h, slatFirstInDegrees,&latFirstInDegrees)) !=GRIB_SUCCESS)
return ret;
if((ret = grib_get_double_internal(h, slonFirstInDegrees,&lonFirstInDegrees)) !=GRIB_SUCCESS)
return ret;
if((ret = grib_get_double_internal(h, sDx,&Dx)) !=GRIB_SUCCESS)
return ret;
if((ret = grib_get_double_internal(h, sDy,&Dy)) !=GRIB_SUCCESS)
return ret;
if((ret = grib_get_long_internal(h, sjPointsAreConsecutive,&jPointsAreConsecutive)) !=GRIB_SUCCESS)
return ret;
if((ret = grib_get_long_internal(h, sjScansPositively,&jScansPositively)) !=GRIB_SUCCESS)
return ret;
if((ret = grib_get_long_internal(h, siScansNegatively,&iScansNegatively)) !=GRIB_SUCCESS)
return ret;
if((ret = grib_get_long_internal(h, salternativeRowScanning,&alternativeRowScanning)) !=GRIB_SUCCESS)
return ret;
/* See Wolfram MathWorld: http://mathworld.wolfram.com/LambertConformalConicProjection.html */
latFirstInRadians = latFirstInDegrees * DEG2RAD;
lonFirstInRadians = lonFirstInDegrees * DEG2RAD;
Latin1InRadians = Latin1InDegrees * DEG2RAD;
Latin2InRadians = Latin2InDegrees * DEG2RAD;
LaDInRadians = LaDInDegrees * DEG2RAD;
LoVInRadians = LoVInDegrees * DEG2RAD;
/* See Wolfram MathWorld: http://mathworld.wolfram.com/LambertConformalConicProjection.html */
latFirstInRadians = latFirstInDegrees * DEG2RAD;
lonFirstInRadians = lonFirstInDegrees * DEG2RAD;
Latin1InRadians = Latin1InDegrees * DEG2RAD;
Latin2InRadians = Latin2InDegrees * DEG2RAD;
LaDInRadians = LaDInDegrees * DEG2RAD;
LoVInRadians = LoVInDegrees * DEG2RAD;
if ( fabs(Latin1InRadians - Latin2InRadians) < 1E-09 ) {
n = sin(Latin1InRadians);
}
else {
n = log(cos(Latin1InRadians)/cos(Latin2InRadians)) /
log(tan(M_PI_4 + Latin2InRadians/2.0) / tan(M_PI_4 + Latin1InRadians/2.0));
}
if ( fabs(Latin1InRadians - Latin2InRadians) < 1E-09 ) {
n = sin(Latin1InRadians);
}
else {
n = log(cos(Latin1InRadians)/cos(Latin2InRadians)) /
log(tan(M_PI_4 + Latin2InRadians/2.0) / tan(M_PI_4 + Latin1InRadians/2.0));
}
f = (cos(Latin1InRadians) * pow(tan(M_PI_4 + Latin1InRadians/2.0), n)) / n;
rho = radius * f * pow(tan(M_PI_4 + latFirstInRadians/2.0), -n);
rho0 = radius * f * pow(tan(M_PI_4 + LaDInRadians/2.0), -n);
if ( n < 0 ) /* adjustment for southern hemisphere */
rho0 = -rho0;
lonDiff = lonFirstInRadians - LoVInRadians;
f = (cos(Latin1InRadians) * pow(tan(M_PI_4 + Latin1InRadians/2.0), n)) / n;
rho = radius * f * pow(tan(M_PI_4 + latFirstInRadians/2.0), -n);
rho0 = radius * f * pow(tan(M_PI_4 + LaDInRadians/2.0), -n);
if ( n < 0 ) /* adjustment for southern hemisphere */
rho0 = -rho0;
lonDiff = lonFirstInRadians - LoVInRadians;
/* Adjust longitude to range -180 to 180 */
if (lonDiff > M_PI) lonDiff -= 2*M_PI;
if (lonDiff < -M_PI) lonDiff += 2*M_PI;
angle = n * lonDiff;
x0 = rho * sin(angle);
y0 = rho0 - rho * cos(angle);
Dx = iScansNegatively == 0 ? Dx : -Dx;
Dy = jScansPositively == 1 ? Dy : -Dy;
/* Adjust longitude to range -180 to 180 */
if (lonDiff > M_PI) lonDiff -= 2*M_PI;
if (lonDiff < -M_PI) lonDiff += 2*M_PI;
angle = n * lonDiff;
x0 = rho * sin(angle);
y0 = rho0 - rho * cos(angle);
Dx = iScansNegatively == 0 ? Dx : -Dx;
/* GRIB-405: Don't change sign of Dy. Latitudes ALWAYS increase from latitudeOfFirstGridPoint */
/*Dy = jScansPositively == 1 ? Dy : -Dy;*/
/* No support (yet) for jPointsAreConsecutive */
if (jPointsAreConsecutive) {
grib_context_log(h->context,GRIB_LOG_ERROR,"No support for: 'Adjacent points in j (y) direction being consecutive'");
Assert(0);
}
/* No support (yet) for jPointsAreConsecutive */
if (jPointsAreConsecutive) {
grib_context_log(h->context,GRIB_LOG_ERROR,"No support for: 'Adjacent points in j (y) direction being consecutive'");
Assert(0);
}
/* Allocate latitude and longitude arrays */
self->lats = (double*)grib_context_malloc(h->context,iter->nv*sizeof(double));
if (!self->lats) {
grib_context_log(h->context,GRIB_LOG_ERROR, "unable to allocate %ld bytes",iter->nv*sizeof(double));
return GRIB_OUT_OF_MEMORY;
}
self->lons = (double*)grib_context_malloc(h->context,iter->nv*sizeof(double));
if (!self->lats) {
grib_context_log(h->context,GRIB_LOG_ERROR, "unable to allocate %ld bytes",iter->nv*sizeof(double));
return GRIB_OUT_OF_MEMORY;
}
lats=self->lats;
lons=self->lons;
/* Allocate latitude and longitude arrays */
self->lats = (double*)grib_context_malloc(h->context,iter->nv*sizeof(double));
if (!self->lats) {
grib_context_log(h->context,GRIB_LOG_ERROR, "unable to allocate %ld bytes",iter->nv*sizeof(double));
return GRIB_OUT_OF_MEMORY;
}
self->lons = (double*)grib_context_malloc(h->context,iter->nv*sizeof(double));
if (!self->lats) {
grib_context_log(h->context,GRIB_LOG_ERROR, "unable to allocate %ld bytes",iter->nv*sizeof(double));
return GRIB_OUT_OF_MEMORY;
}
lats=self->lats;
lons=self->lons;
/* Populate our arrays */
for (j = 0; j < ny; j++) {
y = y0 + j*Dy;
if ( n < 0 ) { /* adjustment for southern hemisphere */
y = -y;
}
tmp = rho0 - y;
tmp2 = tmp*tmp;
for (i = 0; i < nx; i++) {
int index =i+j*nx;
x = x0 + i*Dx;
if ( n < 0 ) { /* adjustment for southern hemisphere */
x = -x;
}
/* Populate our arrays */
for (j = 0; j < ny; j++) {
y = y0 + j*Dy;
if ( n < 0 ) { /* adjustment for southern hemisphere */
y = -y;
}
tmp = rho0 - y;
tmp2 = tmp*tmp;
for (i = 0; i < nx; i++) {
int index =i+j*nx;
x = x0 + i*Dx;
if ( n < 0 ) { /* adjustment for southern hemisphere */
x = -x;
}
angle = atan(x / tmp);
rho = sqrt(x*x + tmp2);
if (n <= 0) rho = -rho;
lonDeg = LoVInDegrees + (angle/n) * RAD2DEG;
latDeg = (2.0 * atan(pow(radius * f/rho, 1.0/n)) - M_PI_2) * RAD2DEG;
while ( lonDeg >= 360.0) lonDeg -= 360.0;
while ( lonDeg < 0.0) lonDeg += 360.0;
lons[index] = lonDeg;
lats[index] = latDeg;
}
}
angle = atan(x / tmp);
rho = sqrt(x*x + tmp2);
if (n <= 0) rho = -rho;
lonDeg = LoVInDegrees + (angle/n) * RAD2DEG;
latDeg = (2.0 * atan(pow(radius * f/rho, 1.0/n)) - M_PI_2) * RAD2DEG;
while ( lonDeg >= 360.0) lonDeg -= 360.0;
while ( lonDeg < 0.0) lonDeg += 360.0;
lons[index] = lonDeg;
lats[index] = latDeg;
}
}
iter->e = -1;
iter->e = -1;
return ret;
return ret;
}
static int destroy(grib_iterator* i)
{
grib_iterator_lambert_conformal* self = (grib_iterator_lambert_conformal*)i;
const grib_context *c = i->h->context;
grib_iterator_lambert_conformal* self = (grib_iterator_lambert_conformal*)i;
const grib_context *c = i->h->context;
grib_context_free(c,self->lats);
grib_context_free(c,self->lons);
return 1;
grib_context_free(c,self->lats);
grib_context_free(c,self->lons);
return 1;
}

View File

@ -371,11 +371,19 @@ static void point_in_time(grib_handle* h,const parameter* p,double min,double ma
case 0: /* Analysis */
if (is_uerra)
CHECK(eq(h,"productDefinitionTemplateNumber",0)||eq(h,"productDefinitionTemplateNumber",1));
if (get(h,"productDefinitionTemplateNumber") == 1){
CHECK(ne(h,"numberOfForecastsInEnsemble",0));
CHECK(le(h,"perturbationNumber",get(h,"numberOfForecastsInEnsemble")));
}
break;
case 1: /* Forecast */
if (is_uerra)
CHECK(eq(h,"productDefinitionTemplateNumber",0)||eq(h,"productDefinitionTemplateNumber",1));
if (get(h,"productDefinitionTemplateNumber") == 1){
CHECK(ne(h,"numberOfForecastsInEnsemble",0));
CHECK(le(h,"perturbationNumber",get(h,"numberOfForecastsInEnsemble")));
}
break;
case 2: /* Analysis and forecast products */
@ -1145,30 +1153,29 @@ static void verify(grib_handle* h)
CHECK(eq(h,"productionStatusOfProcessedData",6)||eq(h,"productionStatusOfProcessedData",7)); /* S2S prod||test */
CHECK(le(h,"endStep",100*24));
}
else if (is_uerra){
CHECK(eq(h,"productionStatusOfProcessedData",8)||eq(h,"productionStatusOfProcessedData",9)); /* UERRA prod||test */
CHECK(le(h,"endStep",30));
}
else
else if (!is_uerra)
{
CHECK(eq(h,"productionStatusOfProcessedData",4)||eq(h,"productionStatusOfProcessedData",5)); /* TIGGE prod||test */
CHECK(le(h,"endStep",30*24));
}
if (is_uerra){
CHECK((eq(h,"step",1)||eq(h,"step",2)||eq(h,"step",4)||eq(h,"step",5))||(get(h,"step") % 3) == 0);
}
else if (is_lam){
CHECK((get(h,"step") % 3) == 0);
}
else
else if (!is_uerra)
{
CHECK((get(h,"step") % 6) == 0);
}
if (is_uerra){
/* 0 = analysis , 2 = analysis or forecast */
CHECK(eq(h,"typeOfProcessedData",0)||eq(h,"typeOfProcessedData",2));
CHECK(eq(h,"productionStatusOfProcessedData",8)||eq(h,"productionStatusOfProcessedData",9)); /* UERRA prod||test */
CHECK(le(h,"endStep",30));
/* 0 = analysis , 1 = forecast */
CHECK(eq(h,"typeOfProcessedData",0)||eq(h,"typeOfProcessedData",1));
if (get(h,"typeOfProcessedData") == 0)
CHECK(eq(h,"step",0));
else
CHECK((eq(h,"step",1)||eq(h,"step",2)||eq(h,"step",4)||eq(h,"step",5))||(get(h,"step") % 3) == 0);
}
else
{

View File

@ -1082,7 +1082,6 @@ s2s/ammc: warning: s2s.mx2t6_20151224_26.grib2, field 47 [surface_air_maximum_te
{"scaleFactorOfFirstFixedSurface", GRIB_TYPE_LONG, 0},
{"scaledValueOfFirstFixedSurface", GRIB_TYPE_LONG, 10},
/* {"typeOfSecondFixedSurface", GRIB_TYPE_LONG, 255}, */
{NULL, },
},
{&three_hourly, &given_level},
@ -1382,9 +1381,6 @@ warning: s2s.z_tigge_c_kwbc_20150817000000_ncep_prod_pf_pl_0000_015_0500_w.grib2
12,
{
{"model", GRIB_TYPE_STRING, 0, "glob"},
{"paramId", GRIB_TYPE_LONG, 135},
{"discipline", GRIB_TYPE_LONG, 0},
{"parameterCategory", GRIB_TYPE_LONG, 2},
{"parameterNumber", GRIB_TYPE_LONG, 8},
@ -2803,7 +2799,7 @@ s2s/ammc/enfo:s2s.tcc_20151004_9.grib2, field 21 [total_cloud_cover_sfc.glob]: t
10,
150,
{
{"paramId", GRIB_TYPE_LONG, 228256},
{"paramId", GRIB_TYPE_LONG, 49},
{"class", GRIB_TYPE_STRING, 0, "ur"},
{"discipline", GRIB_TYPE_LONG, 0},
{"parameterCategory", GRIB_TYPE_LONG, 2},
@ -2817,13 +2813,14 @@ s2s/ammc/enfo:s2s.tcc_20151004_9.grib2, field 21 [total_cloud_cover_sfc.glob]: t
{&since_prev_pp, &given_level},
},
{
"2_metre_maximum_temperature_uerra", /* TBD xxx Length of time range 1/3/6 checks? */
"2_metre_maximum_temperature_uerra",
200,
340,
200,
340,
{
{"paramId", GRIB_TYPE_LONG, 228257},
{"paramId", GRIB_TYPE_LONG, 201},
{"class", GRIB_TYPE_STRING, 0, "ur"},
{"discipline", GRIB_TYPE_LONG, 0},
{"parameterCategory", GRIB_TYPE_LONG, 0},
{"parameterNumber", GRIB_TYPE_LONG, 0},
@ -2834,13 +2831,14 @@ s2s/ammc/enfo:s2s.tcc_20151004_9.grib2, field 21 [total_cloud_cover_sfc.glob]: t
{&since_prev_pp, &given_level},
},
{
"2_metre_minimum_temperature_uerra", /* TBD xxx Length of time range 1/3/6 checks? */
"2_metre_minimum_temperature_uerra",
200,
340,
200,
340,
{
{"paramId", GRIB_TYPE_LONG, 228258},
{"paramId", GRIB_TYPE_LONG, 202},
{"class", GRIB_TYPE_STRING, 0, "ur"},
{"discipline", GRIB_TYPE_LONG, 0},
{"parameterCategory", GRIB_TYPE_LONG, 0},
{"parameterNumber", GRIB_TYPE_LONG, 0},
@ -2900,7 +2898,23 @@ s2s/ammc/enfo:s2s.tcc_20151004_9.grib2, field 21 [total_cloud_cover_sfc.glob]: t
{&point_in_time, &predefined_level},
},
{
"liquid_non-frozen_soil_moisture_sfc",
"liquid_non-frozen_soil_moisture_level",
-1e-19,
0,
450,
800,
{
{"paramId", GRIB_TYPE_LONG, 260210},
{"discipline", GRIB_TYPE_LONG, 2},
{"parameterCategory", GRIB_TYPE_LONG, 3},
{"parameterNumber", GRIB_TYPE_LONG, 10},
{"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 151},
{NULL, },
},
{&point_in_time, &given_level},
},
{
"liquid_non-frozen_soil_moisture_layer",
-1e-19,
0,
450,
@ -2919,7 +2933,23 @@ s2s/ammc/enfo:s2s.tcc_20151004_9.grib2, field 21 [total_cloud_cover_sfc.glob]: t
{&point_in_time, &given_thickness},
},
{
"volumetric_soil_moisture_sfc",
"volumetric_soil_moisture_level",
-1e-19,
0,
450,
800,
{
{"paramId", GRIB_TYPE_LONG, 260199},
{"discipline", GRIB_TYPE_LONG, 2},
{"parameterCategory", GRIB_TYPE_LONG, 0},
{"parameterNumber", GRIB_TYPE_LONG, 25},
{"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 151},
{NULL, },
},
{&point_in_time, &given_level},
},
{
"volumetric_soil_moisture_layer",
-1e-19,
0,
450,
@ -2944,7 +2974,7 @@ s2s/ammc/enfo:s2s.tcc_20151004_9.grib2, field 21 [total_cloud_cover_sfc.glob]: t
-1e+10,
1e+10,
{
{"paramId", GRIB_TYPE_LONG, 260433},
{"paramId", GRIB_TYPE_LONG, 260364},
{"discipline", GRIB_TYPE_LONG, 2},
{"parameterCategory", GRIB_TYPE_LONG, 3},
{"parameterNumber", GRIB_TYPE_LONG, 26},
@ -2954,7 +2984,7 @@ s2s/ammc/enfo:s2s.tcc_20151004_9.grib2, field 21 [total_cloud_cover_sfc.glob]: t
{&point_in_time, &predefined_level},
},
{
"soil_temperature_sfc",
"soil_temperature_level",
200,
230,
300,
@ -2970,6 +3000,43 @@ s2s/ammc/enfo:s2s.tcc_20151004_9.grib2, field 21 [total_cloud_cover_sfc.glob]: t
},
{&point_in_time, &given_level},
},
{
"soil_temperature_level",
200,
230,
300,
350,
{
{"paramId", GRIB_TYPE_LONG, 260360},
{"discipline", GRIB_TYPE_LONG, 2},
{"parameterCategory", GRIB_TYPE_LONG, 3},
{"parameterNumber", GRIB_TYPE_LONG, 18},
{"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 151},
{"scaleFactorOfFirstFixedSurface", GRIB_TYPE_LONG, 0},
{NULL, },
},
{&point_in_time, &given_level},
},
{
"soil_temperature_layer",
200,
230,
300,
350,
{
{"paramId", GRIB_TYPE_LONG, 260360},
{"discipline", GRIB_TYPE_LONG, 2},
{"parameterCategory", GRIB_TYPE_LONG, 3},
{"parameterNumber", GRIB_TYPE_LONG, 18},
{"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 151},
{"scaleFactorOfFirstFixedSurface", GRIB_TYPE_LONG, 0},
{"typeOfSecondFixedSurface", GRIB_TYPE_LONG, 151},
{"scaleFactorOfSecondFixedSurface", GRIB_TYPE_LONG, 0},
{NULL, },
},
{&point_in_time, &given_thickness},
},
{
"total_column_water_sfc.ur",
0,
@ -2988,5 +3055,24 @@ s2s/ammc/enfo:s2s.tcc_20151004_9.grib2, field 21 [total_cloud_cover_sfc.glob]: t
{&point_in_time, &predefined_thickness},
},
{
"w_vertical_velocity_pl",
-20,
0,
0,
20,
{
{"class", GRIB_TYPE_STRING, 0, "ur"},
{"paramId", GRIB_TYPE_LONG, 135},
{"discipline", GRIB_TYPE_LONG, 0},
{"parameterCategory", GRIB_TYPE_LONG, 2},
{"parameterNumber", GRIB_TYPE_LONG, 8},
{"typeOfFirstFixedSurface", GRIB_TYPE_LONG, 100},
{NULL, },
},
{&point_in_time, &given_level, &pressure_level},
},
};

View File

@ -11,25 +11,28 @@
\n \n -r \n Repack data. Sometimes after setting some keys involving properties
of the packing algorithm a repacking of data is needed.
This repacking is performed setting this -r option.
\n \n -p key[:{s/d/l}],key[:{s/d/l}],... \n
\n \n -p key[:{s/d/i}],key[:{s/d/i}],... \n
Declaration of keys to print.
For each key a string (key:s) or a double (key:d) or a long (key:l)
For each key a string (key:s), a double (key:d) or an integer (key:i)
type can be requested. Default type is string.
\n \n -P key[:{s/d/l}],key[:{s/d/l}],... \n
\n \n -P key[:{s/d/i}],key[:{s/d/i}],... \n
As -p adding the declared keys to the default list.
\n \n -w key[:{s/d/l}]=value,key[:{s/d/l}]=value,... \n
\n \n -w key[:{s/d/i}]{=/!=}value,key[:{s/d/i}]=value,... \n
Where clause.
Only grib messages matching the key/value constraints are copied to the
output_grib_file.
For each key a string (key:s) or a double (key:d) or a long (key:l)
A valid constraint is of type key=value or key!=value.
For each key a string (key:s), a double (key:d) or an integer (key:i)
type can be defined. Default type is string.
\n \n -B order by directive \n
Order by. The output will be ordered according the order by directive.
Order by example: "step asc, centre desc" (step ascending and centre discending)
Order by. The output will be ordered according to the order by directive.
Order by example: "step asc, centre desc" (step ascending and centre descending)
\n \n -V \n Version.
\n \n -W width \n
Minimum width of each column in output. Default is 10.
\n \n -M \n Multi-grib support off. Turn off support for multiple fields in single grib message.
\n \n -M \n Multi-field support off. Turn off support for multiple fields in single grib message.
\n \n -T T | B | M | A \n Message type. T->GTS, B->BUFR, M->METAR (Experimental),A->Any (Experimental).
The input file is interpreted according to the message type.
\n \n -g \n Copy GTS header.
\n \n -G \n GRIBEX compatibility mode.
\n \n -7 \n Does not fail when the message has wrong length
@ -44,6 +47,10 @@
\verbatim
> grib_copy -w levtype!=pl ../data/tigge_pf_ecmwf.grib2 out.grib
\endverbatim\n
-# To copy only the first three fields from a file\n
\verbatim
> grib_copy -w count=1/2/3 ../data/tigge_pf_ecmwf.grib2 out.grib
\endverbatim\n
-# A grib_file with multi field messages can be converted in single field messages
with a simple grib_copy.\n
\verbatim
@ -52,6 +59,6 @@ with a simple grib_copy.\n
-# Use the square brackets to insert the value of a key
in the name of the output file.\n
\verbatim
> grib_copy in.grib out_[shortName].grib
> grib_copy in.grib 'out_[shortName].grib'
\endverbatim\n
*/

View File

@ -9,21 +9,29 @@
\section OPTIONS
-O \n Octet mode. WMO documentation style dump.
\n \n -D \n Debug mode.
\n \n -d \n Print all data values. Available only in C mode
\n \n -C \n C code mode. A C code program generating the grib message is dumped.
\n \n -d \n Print all data values.
\n \n -j \n JSON mode (JavaScript Object Notation).
\n \n -t \n Print type information.
\n \n -H \n Print octet content in hexadecimal format.
\n \n -a \n Dump aliases.
\n \n -w key[:{s/d/l}]{=/!=}value,key[:{s/d/l}]{=/!=}value,... \n
\n \n -w key[:{s/d/i}]{=/!=}value,key[:{s/d/i}]{=/!=}value,... \n
Where clause.
Grib messages are processed only if they match all the key/value constraints.
Messages are processed only if they match all the key/value constraints.
A valid constraint is of type key=value or key!=value.
For each key a string (key:s) or a double (key:d) or a long (key:l)
For each key a string (key:s), a double (key:d) or an integer (key:i)
type can be specified. Default type is string.
\n \n -M \n Multi-grib support off. Turn off support for multiple fields in single grib message.
\n \n -s key[:{s/d/i}]=value,key[:{s/d/i}]=value,... \n
Key/values to set.
For each key a string (key:s), a double (key:d) or an integer (key:i)
type can be defined. By default the native type is set.
\n \n -M \n Multi-field support off. Turn off support for multiple fields in single grib message.
\n \n -T T | B | M | A \n Message type. T->GTS, B->BUFR, M->METAR (Experimental),A->Any (Experimental).
The input file is interpreted according to the message type.
\n \n -7 \n Does not fail when the message has wrong length
\n \n -V \n Version.
\n \n -G \n GRIBEX compatibility mode.
\n \n -X offset \n
Input file offset in bytes. Processing of the input file will start from "offset".
\n \n -x \n Fast parsing option, only headers are loaded.
\n \n
\section grib_dump_examples grib_dump examples
-# To dump in a WMO documentation style with hexadecimal octet values (-H).\n
@ -38,209 +46,4 @@
\verbatim
> grib_dump -D ../data/regular_latlon_surface.grib1
\endverbatim\n
-# To obtain a C code example from a grib file.\n
\code
>grib_dump -C ../data/regular_latlon_surface.grib1
#include <grib_api.h>
/* This code was generated automatically */
int main(int argc,const char** argv)
{
grib_handle *h = NULL;
size_t size = 0;
double* vdouble = NULL;
long* vlong = NULL;
FILE* f = NULL;
const char* p = NULL;
const void* buffer = NULL;
if(argc != 2) {
fprintf(stderr,"usage: %s out\n",argv[0]);
exit(1);
}
h = grib_handle_new_from_samples(NULL,"GRIB1");
if(!h) {
fprintf(stderr,"Cannot create grib handle\n");
exit(1);
}
GRIB_CHECK(grib_set_long(h,"parametersVersion",1),0);
GRIB_CHECK(grib_set_long(h,"truncateLaplacian",0),0);
GRIB_CHECK(grib_set_long(h,"truncateDegrees",0),0);
GRIB_CHECK(grib_set_long(h,"dummy",1),0);
GRIB_CHECK(grib_set_long(h,"changingPrecision",0),0);
GRIB_CHECK(grib_set_long(h,"unitsFactor",1),0);
GRIB_CHECK(grib_set_long(h,"unitsBias",0),0);
GRIB_CHECK(grib_set_long(h,"timeRangeIndicatorFromStepRange",-1),0);
GRIB_CHECK(grib_set_long(h,"eps",0),0);
GRIB_CHECK(grib_set_long(h,"editionNumber",1),0);
GRIB_CHECK(grib_set_long(h,"productionStatusOfProcessedData",0),0);
GRIB_CHECK(grib_set_long(h,"table2Version",128),0);
/* 98 = European Center for Medium-Range Weather Forecasts (grib1/0.table) */
GRIB_CHECK(grib_set_long(h,"centre",98),0);
GRIB_CHECK(grib_set_long(h,"generatingProcessIdentifier",130),0);
GRIB_CHECK(grib_set_long(h,"gridDefinition",255),0);
/* 128 = 10000000
(1=1) Section 2 included
(2=0) Section 3 omited
See grib1/1.table */
GRIB_CHECK(grib_set_long(h,"section1Flags",128),0);
/* 167 = 2 metre temperature (K) (grib1/2.98.128.table) */
GRIB_CHECK(grib_set_long(h,"indicatorOfParameter",167),0);
/* 1 = Surface (of the Earth, which includes sea surface) (grib1/3.table) */
GRIB_CHECK(grib_set_long(h,"indicatorOfTypeOfLevel",1),0);
GRIB_CHECK(grib_set_long(h,"level",0),0);
GRIB_CHECK(grib_set_long(h,"yearOfCentury",8),0);
GRIB_CHECK(grib_set_long(h,"month",2),0);
GRIB_CHECK(grib_set_long(h,"day",6),0);
GRIB_CHECK(grib_set_long(h,"hour",12),0);
GRIB_CHECK(grib_set_long(h,"minute",0),0);
GRIB_CHECK(grib_set_long(h,"second",0),0);
/* 1 = Hour (grib1/4.table) */
GRIB_CHECK(grib_set_long(h,"unitOfTimeRange",1),0);
GRIB_CHECK(grib_set_long(h,"P1",0),0);
GRIB_CHECK(grib_set_long(h,"P2",0),0);
/* 0 = Forecast product valid at reference time + P1 (P1>0) (grib1/5.table) */
GRIB_CHECK(grib_set_long(h,"timeRangeIndicator",0),0);
GRIB_CHECK(grib_set_long(h,"numberIncludedInAverage",0),0);
GRIB_CHECK(grib_set_long(h,"numberMissingFromAveragesOrAccumulations",0),0);
GRIB_CHECK(grib_set_long(h,"centuryOfReferenceTimeOfData",21),0);
/* 0 = Unknown code table entry (grib1/0.ecmf.table) */
GRIB_CHECK(grib_set_long(h,"subCentre",0),0);
GRIB_CHECK(grib_set_long(h,"decimalScaleFactor",0),0);
GRIB_CHECK(grib_set_long(h,"setLocalDefinition",0),0);
GRIB_CHECK(grib_set_long(h,"dataDate",20080206),0);
GRIB_CHECK(grib_set_long(h,"dataTime",1200),0);
/* 1 = Hour (stepUnits.table) */
GRIB_CHECK(grib_set_long(h,"stepUnits",1),0);
GRIB_CHECK(grib_set_long(h,"deleteLocalDefinition",0),0);
/* 1 = MARS labelling or ensemble forecast data (grib1/localDefinitionNumber.98.table) */
GRIB_CHECK(grib_set_long(h,"localDefinitionNumber",1),0);
/* 1 = Operational archive (mars/class.table) */
GRIB_CHECK(grib_set_long(h,"marsClass",1),0);
/* 2 = Analysis (mars/type.table) */
GRIB_CHECK(grib_set_long(h,"marsType",2),0);
/* 1025 = Atmospheric model (mars/stream.table) */
GRIB_CHECK(grib_set_long(h,"marsStream",1025),0);
p = "0001";
size = strlen(p)+1;
GRIB_CHECK(grib_set_string(h,"experimentVersionNumber",p,&size),0);
GRIB_CHECK(grib_set_long(h,"perturbationNumber",0),0);
GRIB_CHECK(grib_set_long(h,"numberOfForecastsInEnsemble",0),0);
/* x */
GRIB_CHECK(grib_set_long(h,"gridDescriptionSectionPresent",1),0);
GRIB_CHECK(grib_set_long(h,"GDSPresent",1),0);
GRIB_CHECK(grib_set_long(h,"bitmapPresent",0),0);
GRIB_CHECK(grib_set_long(h,"radius",6367470),0);
GRIB_CHECK(grib_set_long(h,"shapeOfTheEarth",6),0);
GRIB_CHECK(grib_set_long(h,"numberOfVerticalCoordinateValues",0),0);
GRIB_CHECK(grib_set_long(h,"pvlLocation",255),0);
/* 0 = Latitude/Longitude Grid (grib1/6.table) */
GRIB_CHECK(grib_set_long(h,"dataRepresentationType",0),0);
GRIB_CHECK(grib_set_long(h,"Ni",16),0);
GRIB_CHECK(grib_set_long(h,"Nj",31),0);
GRIB_CHECK(grib_set_long(h,"latitudeOfFirstGridPoint",60000),0);
GRIB_CHECK(grib_set_long(h,"longitudeOfFirstGridPoint",0),0);
/* 128 = 10000000
(1=1) Direction increments given
(2=0) Earth assumed spherical with radius = 6367.47 km
(5=0) u and v components resolved relative to easterly and northerly directions
See grib1/7.table */
GRIB_CHECK(grib_set_long(h,"resolutionAndComponentFlags",128),0);
GRIB_CHECK(grib_set_long(h,"ijDirectionIncrementGiven",1),0);
GRIB_CHECK(grib_set_long(h,"earthIsOblate",0),0);
GRIB_CHECK(grib_set_long(h,"uvRelativeToGrid",0),0);
GRIB_CHECK(grib_set_long(h,"latitudeOfLastGridPoint",0),0);
GRIB_CHECK(grib_set_long(h,"longitudeOfLastGridPoint",30000),0);
GRIB_CHECK(grib_set_long(h,"iDirectionIncrement",2000),0);
GRIB_CHECK(grib_set_long(h,"jDirectionIncrement",2000),0);
/* 0 = 00000000
(1=0) Points scan in +i direction
(2=0) Points scan in -j direction
(3=0) Adjacent points in i direction are consecutive
See grib1/8.table */
GRIB_CHECK(grib_set_long(h,"scanningMode",0),0);
GRIB_CHECK(grib_set_long(h,"iScansNegatively",0),0);
GRIB_CHECK(grib_set_long(h,"jScansPositively",0),0);
GRIB_CHECK(grib_set_long(h,"jPointsAreConsecutive",0),0);
GRIB_CHECK(grib_set_long(h,"iScansPositively",1),0);
/* ITERATOR */
/* NEAREST */
GRIB_CHECK(grib_set_long(h,"PVPresent",0),0);
GRIB_CHECK(grib_set_long(h,"PLPresent",0),0);
GRIB_CHECK(grib_set_long(h,"missingValue",9999),0);
GRIB_CHECK(grib_set_long(h,"sphericalHarmonics",0),0);
GRIB_CHECK(grib_set_long(h,"complexPacking",0),0);
GRIB_CHECK(grib_set_long(h,"integerPointValues",0),0);
GRIB_CHECK(grib_set_long(h,"additionalFlagPresent",0),0);
GRIB_CHECK(grib_set_long(h,"hideThis",0),0);
GRIB_CHECK(grib_set_long(h,"bitsPerValue",16),0);
GRIB_CHECK(grib_set_long(h,"dirty_statistics",1),0);
GRIB_CHECK(grib_set_long(h,"dataLength",124),0);
GRIB_CHECK(grib_set_long(h,"changeDecimalPrecision",0),0);
GRIB_CHECK(grib_set_long(h,"decimalPrecision",0),0);
GRIB_CHECK(grib_set_long(h,"bitsPerValueAndRepack",16),0);
/* Save the message */
f = fopen(argv[1],"w");
if(!f) {
perror(argv[1]);
exit(1);
}
GRIB_CHECK(grib_get_message(h,&buffer,&size),0);
if(fwrite(buffer,1,size,f) != size) {
perror(argv[1]);
exit(1);
}
if(fclose(f)) {
perror(argv[1]);
exit(1);
}
grib_handle_delete(h);
return 0;
}
\endcode\n
*/

View File

@ -1,8 +1,8 @@
/*! \page grib_filter grib_filter
Latest training course presentation on grib_filter available <a href="http://www.ecmwf.int/services/computing/training/material/grib_api/grib_api_filter.pdf">here<img src="/assets/icons/pdf.gif" width="20" height="20" align="absmiddle" border="0"></a>.
\section DESCRIPTION
Apply the rules defined in rules_file to each grib message
in the grib files provided as arguments.
Apply the rules defined in rules_file to each GRIB message
in the GRIB files provided as arguments.
If you specify '-' (a single dash) for the rules_file, the rules will be read from standard input.
\section USAGE
grib_filter
@ -10,13 +10,15 @@ Latest training course presentation on grib_filter available <a href="http://www
\section OPTIONS
-f \n Force. Force the execution not to fail on error.
\n \n -o output_grib_file \n
Output grib is written to ouput_grib_file.
If an ouput grib file is required and -o is not used, the ouput grib is written to filtered.out
\n \n -M \n Multi-grib support off. Turn off support for multiple fields in single grib message.
\n \n -o output_file \n
Output is written to output_file.
If an output file is required and -o is not used, the output is written to filter.out
\n \n -M \n Multi-field support off. Turn off support for multiple fields in single grib message.
\n \n -V \n Version.
\n \n -g \n Copy GTS header.
\n \n -G \n GRIBEX compatibility mode.
\n \n -T T | B | M | A \n Message type. T->GTS, B->BUFR, M->METAR (Experimental),A->Any (Experimental).
The input file is interpreted according to the message type.
\n \n -7 \n Does not fail when the message has wrong length
\n \n -v \n Verbose.
\n \n
@ -26,7 +28,7 @@ Latest training course presentation on grib_filter available <a href="http://www
is sent to multiple files depending on key values used in the output file name. \n
If we write a rules_file containing the only statement:\n \n
\verbatim
write "../data/split/[centre]_[dataDate]_[dataType]_[levelType].grib[edition]";
write "../data/split/[centre]_[date]_[dataType]_[levelType].grib[editionNumber]";
\endverbatim\n
Applying this rules_file to the "../data/tigge_pf_ecmwf.grib2" grib file we obtain several files in the ../data/split directory containing
fields split according to their key values\n
@ -41,14 +43,14 @@ ecmf_20070122_pf_pv.grib2
ecmf_20070122_pf_sfc.grib2
\endverbatim\n
-# The key values in the file name can also be obtained in a different format by indicating explicitly the type required after a colon.
- :l for long
- :i for integer
- :d for double
- :s for string
.
The following statement works in a slightly different way from the previous example,
including in the output file name the long values for centre and dataType.\n
including in the output file name the integer values for centre and dataType.\n
\verbatim
write "../data/split/[centre:l]_[dataDate]_[dataType:l]_[levelType].grib[edition]";
write "../data/split/[centre:i]_[date]_[dataType:i]_[levelType].grib[editionNumber]";
\endverbatim\n
Running the same command again we obtain a different list of files.\n
\verbatim
@ -62,20 +64,19 @@ Running the same command again we obtain a different list of files.\n
98_20070122_4_sfc.grib2
\endverbatim\n
-# Other statements are allowed in the grib_filter syntax:
- comments beginning with #
- print "string to print also with key values like in the file name"
- transient keyname1 = keyname2;
- set keyname = keyvalue;
- defined(keyname) to check if a key is defined in a message
- if ( condition ) { block of rules } else { block of rules }\n
The condition can be made using ==,!= and joining single block conditions with || and && \n
The statement can be any valid statement also another nested condition\n
- set keyname = keyvalue;
- print "string to print also with key values like in the file name"
- transient keyname1 = keyname2;
- comments beginning with #
.
A complex example of grib_filter rules is the following to change temperature in a grib edition 1 file.
\verbatim
# Temperature
if ( level == 850 && indicatorOfParameter == 11 ) {
print "found indicatorOfParameter=[indicatorOfParameter] level=[level] date=[dataDate]";
print "found indicatorOfParameter=[indicatorOfParameter] level=[level] date=[date]";
transient oldtype = type ;
set identificationOfOriginatingGeneratingSubCentre=98;
set gribTablesVersionNo = 128;
@ -95,32 +96,40 @@ if ( level == 850 && indicatorOfParameter == 11 ) {
}
set numberOfForecastsInEnsemble=11;
write;
print "indicatorOfParameter=[indicatorOfParameter] level=[level] date=[dataDate]";
print "indicatorOfParameter=[indicatorOfParameter] level=[level] date=[date]";
print;
}
\endverbatim\n
-# Here is an example of an IF statement comparing a key with a string.
Note you have to use the "is" keyword for strings and not "==", and to negate you add the "!" before the whole condition:\n \n
\verbatim
# Select Geopotential Height messages which are not on a Reduced Gaussian Grid
if (shortName is "gh" && !(gridType is "reduced_gg" )) {
set step = 72;
}
\endverbatim\n
-# The switch statement is an enhanced version of the if statement. Its syntax is the following:
\verbatim
switch (key1,key2,...,keyn) {
case val11,val12,...,val1n:
switch (key1) {
case val1:
# block of rules;
case val21,val22,...,val2n:
case val2:
# block of rules;
default:
# [ block of rules ]
# block of rules
}
\endverbatim\n
Each value of each key given as argument to the switch statement is matched against the values specified in the case statements.\n
If there is a match, then the block or rules corresponding to the matching case statement is executed.\n
Otherwise, the default case is executed. The default case is mandatory, even if empty.\n
Otherwise, the default case is executed. The default case is mandatory if the case statements do not cover all the possibilities.\n
The "~" operator can be used to match "anything".\n\n
Following is an example showing the use of the switch statement:\n
\verbatim
processing paramId=[paramId] [shortName] [stepType]
switch (shortName,indicatorOfParameter) {
case tp:
switch (shortName) {
case tp :
set stepType=accum;
case ~,2 :
case 10u :
set typeOfLevel=surface;
default:
}

View File

@ -10,9 +10,9 @@
\section OPTIONS
-f \n Force. Force the execution not to fail on error.
\n \n -p key[:{s/d/l}],key[:{s/d/l}],... \n
\n \n -p key[:{s/d/i}],key[:{s/d/i}],... \n
Declaration of keys to print.
For each key a string (key:s) or a double (key:d) or a long (key:l)
For each key a string (key:s), a double (key:d) or an integer (key:i)
type can be requested. Default type is string.
\n \n -F format \n
C style format for floating point values.
@ -22,28 +22,32 @@
4 (4 values in the nearest points are printed) Default
1 (the value at the nearest point is printed)
file (file is used as mask. The closer point with mask value>=0.5 is printed)
\n \n -P key[:{s/d/l}],key[:{s/d/l}],... \n
\n \n -P key[:{s/d/i}],key[:{s/d/i}],... \n
As -p adding the declared keys to the default list.
\n \n -w key[:{s/d/l}]{=/!=}value,key[:{s/d/l}]{=/!=}value,... \n
\n \n -w key[:{s/d/i}]{=/!=}value,key[:{s/d/i}]{=/!=}value,... \n
Where clause.
Grib messages are processed only if they match all the key/value constraints.
Messages are processed only if they match all the key/value constraints.
A valid constraint is of type key=value or key!=value.
For each key a string (key:s) or a double (key:d) or a long (key:l)
For each key a string (key:s), a double (key:d) or an integer (key:i)
type can be specified. Default type is string.
\n \n -n namespace \n
All the keys belonging to namespace are printed.
\n \n -s key[:{s/d/l}]=value,key[:{s/d/l}]=value,... \n
\n \n -s key[:{s/d/i}]=value,key[:{s/d/i}]=value,... \n
Key/values to set.
For each key a string (key:s) or a double (key:d) or a long (key:l)
For each key a string (key:s), a double (key:d) or an integer (key:i)
type can be defined. By default the native type is set.
\n \n -V \n Version.
\n \n -W width \n
Minimum width of each column in output. Default is 10.
\n \n -m \n Mars keys are printed.
\n \n -M \n Multi-grib support off. Turn off support for multiple fields in single grib message.
\n \n -M \n Multi-field support off. Turn off support for multiple fields in single grib message.
\n \n -g \n Copy GTS header.
\n \n -G \n GRIBEX compatibility mode.
\n \n -T T | B | M | A \n Message type. T->GTS, B->BUFR, M->METAR (Experimental),A->Any (Experimental).
The input file is interpreted according to the message type.
\n \n -7 \n Does not fail when the message has wrong length
\n \n -X offset \n
Input file offset in bytes. Processing of the input file will start from "offset".
\n \n -i index \n
Data value corresponding to the given index is printed.
\n \n

View File

@ -7,26 +7,28 @@
[options] grib_file grib_file ...
\section OPTIONS
-M \n Multi-grib support off. Turn off support for multiple fields in single grib message.
-M \n Multi-field support off. Turn off support for multiple fields in single grib message.
\n \n -m missingValue \n
The missing value is given through this option.
Any string is allowed and it is printed in place of the missing
values. Default is to skip the missing values.
\n \n -p key[:{s/d/l}],key[:{s/d/l}],... \n
\n \n -p key[:{s/d/i}],key[:{s/d/i}],... \n
Declaration of keys to print.
For each key a string (key:s) or a double (key:d) or a long (key:l)
For each key a string (key:s), a double (key:d) or an integer (key:i)
type can be requested. Default type is string.
\n \n -F format \n
C style format for values. Default is "%.10e"
\n \n -w key[:{s/d/l}]{=/!=}value,key[:{s/d/l}]{=/!=}value,... \n
\n \n -w key[:{s/d/i}]{=/!=}value,key[:{s/d/i}]{=/!=}value,... \n
Where clause.
Grib messages are processed only if they match all the key/value constraints.
Messages are processed only if they match all the key/value constraints.
A valid constraint is of type key=value or key!=value.
For each key a string (key:s) or a double (key:d) or a long (key:l)
For each key a string (key:s), a double (key:d) or an integer (key:i)
type can be specified. Default type is string.
\n \n -f \n Force. Force the execution not to fail on error.
\n \n -G \n GRIBEX compatibility mode.
\n \n -7 \n Does not fail when the message has wrong length
\n \n -X offset \n
Input file offset in bytes. Processing of the input file will start from "offset".
\n \n -V \n Version.
\n \n
\section grib_get_data_examples grib_get_data examples

View File

@ -8,13 +8,19 @@
\section OPTIONS
-f \n Force. Force the execution not to fail on error.
\n \n -o output_grib_file \n
Output grib is written to ouput_grib_file.
If an ouput grib file is required and -o is not used, the ouput grib is written to filtered.out
\n \n -o output_index_file \n
Output is written to output_index_file.
If an output index file is required and -o is not used, the output index is written to gribidx
\n \n -k key1,key2,... \n
Specify a list of keys to index on. By default the input files are indexed on the MARS keys.
For each key a string (key:s) or a double (key:d) or an integer (key:i)
type can be requested.
\n \n -V \n Version.
\n \n -M \n Multi-grib support off. Turn off support for multiple fields in single grib message.
\n \n -T T | B | M | A \n Message type. T->GTS, B->BUFR, M->METAR (Experimental),A->Any (Experimental).
The input file is interpreted according to the message type.
\n \n -M \n Multi-field support off. Turn off support for multiple fields in single grib message.
\n \n -N \n Do not compress index.
By default the index is compressed to remove keys with only one value.
\n \n
\section grib_index_build_examples grib_index_build examples
-# By default grib_index_build will index on the MARS keys. \n

View File

@ -8,32 +8,33 @@
[options] grib_file grib_file ...
\section OPTIONS
-p key[:{s/d/l}],key[:{s/d/l}],... \n
-p key[:{s/d/i}],key[:{s/d/i}],... \n
Declaration of keys to print.
For each key a string (key:s) or a double (key:d) or a long (key:l)
For each key a string (key:s), a double (key:d) or an integer (key:i)
type can be requested. Default type is string.
\n \n -F format \n
C style format for floating point values.
\n \n -P key[:{s/d/l}],key[:{s/d/l}],... \n
\n \n -P key[:{s/d/i}],key[:{s/d/i}],... \n
As -p adding the declared keys to the default list.
\n \n -w key[:{s/d/l}]{=/!=}value,key[:{s/d/l}]{=/!=}value,... \n
\n \n -w key[:{s/d/i}]{=/!=}value,key[:{s/d/i}]{=/!=}value,... \n
Where clause.
Grib messages are processed only if they match all the key/value constraints.
Messages are processed only if they match all the key/value constraints.
A valid constraint is of type key=value or key!=value.
For each key a string (key:s) or a double (key:d) or a long (key:l)
For each key a string (key:s), a double (key:d) or an integer (key:i)
type can be specified. Default type is string.
\n \n -j \n json output \n \n -B order by directive \n
Order by. The output will be ordered according the order by directive.
Order by example: "step asc, centre desc" (step ascending and centre discending)
\n \n -j \n json output
\n \n -B order by directive \n
Order by. The output will be ordered according to the order by directive.
Order by example: "step asc, centre desc" (step ascending and centre descending)
\n \n -l Latitude,Longitude[,MODE,file] \n
Value close to the point of a Latitude/Longitude.
Allowed values for MODE are:
4 (4 values in the nearest points are printed) Default
1 (the value at the nearest point is printed)
file (file is used as mask. The closer point with mask value>=0.5 is printed)
\n \n -s key[:{s/d/l}]=value,key[:{s/d/l}]=value,... \n
\n \n -s key[:{s/d/i}]=value,key[:{s/d/i}]=value,... \n
Key/values to set.
For each key a string (key:s) or a double (key:d) or a long (key:l)
For each key a string (key:s), a double (key:d) or an integer (key:i)
type can be defined. By default the native type is set.
\n \n -i index \n
Data value corresponding to the given index is printed.
@ -43,10 +44,13 @@
\n \n -V \n Version.
\n \n -W width \n
Minimum width of each column in output. Default is 10.
\n \n -M \n Multi-grib support off. Turn off support for multiple fields in single grib message.
\n \n -M \n Multi-field support off. Turn off support for multiple fields in single grib message.
\n \n -g \n Copy GTS header.
\n \n -G \n GRIBEX compatibility mode.
\n \n -T T | B | M | A \n Message type. T->GTS, B->BUFR, M->METAR (Experimental),A->Any (Experimental).
The input file is interpreted according to the message type.
\n \n -7 \n Does not fail when the message has wrong length
\n \n -X offset \n
Input file offset in bytes. Processing of the input file will start from "offset".
\n \n -x \n Fast parsing option, only headers are loaded.
\n \n
\section grib_ls_examples grib_ls examples
@ -75,9 +79,9 @@ Only the pressure levels are listed with the following line.\n
../data/reduced_gaussian_surface.grib2
paramId shortName value
167 2t 282.002
1 of 1 grib messages in ../data/reduced_gaussian_surface.grib2
1 of 1 messages in ../data/reduced_gaussian_surface.grib2
1 of 1 total grib messages in 1 files
1 of 1 total messages in 1 files
Input Point: latitude=51.46 longitude=-1.33
Grid Point chosen #3 index=749 latitude=51.63 longitude=0.00 distance=93.81 (Km)
Other grid Points

View File

@ -9,35 +9,38 @@
[options] grib_file grib_file ... output_grib_file
\section OPTIONS
-s key[:{s/d/l}]=value,key[:{s/d/l}]=value,... \n
-s key[:{s/d/i}]=value,key[:{s/d/i}]=value,... \n
Key/values to set.
For each key a string (key:s) or a double (key:d) or a long (key:l)
For each key a string (key:s), a double (key:d) or an integer (key:i)
type can be defined. By default the native type is set.
\n \n -r \n Repack data. Sometimes after setting some keys involving properties
of the packing algorithm a repacking of data is needed.
This repacking is performed setting this -r option.
\n \n -d value \n
Set all the data values to "value".
\n \n -p key[:{s/d/l}],key[:{s/d/l}],... \n
\n \n -p key[:{s/d/i}],key[:{s/d/i}],... \n
Declaration of keys to print.
For each key a string (key:s) or a double (key:d) or a long (key:l)
For each key a string (key:s), a double (key:d) or an integer (key:i)
type can be requested. Default type is string.
\n \n -P key[:{s/d/l}],key[:{s/d/l}],... \n
\n \n -P key[:{s/d/i}],key[:{s/d/i}],... \n
As -p adding the declared keys to the default list.
\n \n -w key[:{s/d/l}]=value,key[:{s/d/l}]=value,... \n
\n \n -w key[:{s/d/i}]{=/!=}value,key[:{s/d/i}]=value,... \n
Where clause.
Set is only executed for grib messages matching all the key/value constraints.
If a grib message does not match the constraints it is copied unchanged
to the output_grib_file. This behaviour can be changed setting the option -S.
For each key a string (key:s) or a double (key:d) or a long (key:l)
A valid constraint is of type key=value or key!=value.
For each key a string (key:s), a double (key:d) or an integer (key:i)
type can be defined. Default type is string.
\n \n -7 \n Does not fail when the message has wrong length
\n \n -S \n Strict. Only grib messages matching all the constraints are copied to
the output file
\n \n -V \n Version.
\n \n -M \n Multi-grib support off. Turn off support for multiple fields in single grib message.
\n \n -M \n Multi-field support off. Turn off support for multiple fields in single grib message.
\n \n -g \n Copy GTS header.
\n \n -G \n GRIBEX compatibility mode.
\n \n -T T | B | M | A \n Message type. T->GTS, B->BUFR, M->METAR (Experimental),A->Any (Experimental).
The input file is interpreted according to the message type.
\n \n -f \n Force. Force the execution not to fail on error.
\n \n -v \n Verbose.
\n \n

View File

@ -3,30 +3,26 @@ set -ex
set -A tools grib_dump grib_ls grib_get grib_copy grib_set grib_filter grib_compare grib_get_data grib_keys grib_index_build
export DOXYGEN_USAGE=1
p4 edit tools.dox
cat tools_head.dox > tools.dox
for tool in ${tools[@]}
do
p4 edit ${tool}.dox
set +e
set +e
./$tool > ${tool}.dox
set -e
set -e
cat >> ${tool}.dox <<EOF
cat >> ${tool}.dox <<EOF
\section ${tool}_examples ${tool} examples
EOF
./${tool}.sh >> ${tool}.dox
cat >> ${tool}.dox <<EOF
cat >> ${tool}.dox <<EOF
*/
EOF
cat >> tools.dox <<EOF
cat >> tools.dox <<EOF
- \ref ${tool}
EOF