From 43d47cdc0de5130f6e81f1b19981bc573c18d780 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 26 Mar 2013 14:24:08 +0000 Subject: [PATCH 1/7] Update config files and also git ignore settings --- .gitignore | 23 ++ config/config.guess | 422 +++++++++++++-------------- config/config.sub | 91 ++++-- config/depcomp | 226 +++++++++++---- config/install-sh | 694 ++++++++++++++++++++++++++++++-------------- config/missing | 226 +++++++++------ 6 files changed, 1064 insertions(+), 618 deletions(-) diff --git a/.gitignore b/.gitignore index a77244e3f..e3debf2f1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,26 @@ +# Generated stuff from libtool, automake etc +Makefile +Makefile.in +*.lo +.deps/ +/libtool +config.h.in +lex.yy.c +stamp-h1 +src/config.h +autom4te.cache/ +config.log +config.status +configure +grib_api.spec +grib_api.pc +grib_api_f90.pc +perl/GRIB-API/Makefile.PL +rpms/grib_api.pc +rpms/grib_api.spec +rpms/grib_api_f90.pc +aclocal.m4 + # compiled source # ################### *.com diff --git a/config/config.guess b/config/config.guess index fed1d3a1b..666c5ad92 100755 --- a/config/config.guess +++ b/config/config.guess @@ -1,10 +1,10 @@ #! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 # Free Software Foundation, Inc. -timestamp='2008-01-23' +timestamp='2009-11-20' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -27,16 +27,16 @@ timestamp='2008-01-23' # the same distribution terms that you use for the rest of that program. -# Originally written by Per Bothner . -# Please send patches to . Submit a context -# diff and a properly formatted ChangeLog entry. +# Originally written by Per Bothner. Please send patches (context +# diff format) to and include a ChangeLog +# entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # -# The plan is that this can be called by configure scripts if you -# don't specify an explicit build system type. +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD me=`echo "$0" | sed -e 's,.*/,,'` @@ -139,6 +139,16 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown +case "${UNAME_MACHINE}" in + i?86) + test -z "$VENDOR" && VENDOR=pc + ;; + *) + test -z "$VENDOR" && VENDOR=unknown + ;; +esac +test -f /etc/SuSE-release -o -f /.buildenv && VENDOR=suse + # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in @@ -170,7 +180,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep __ELF__ >/dev/null + | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? @@ -203,19 +213,19 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + echo ${UNAME_MACHINE_ARCH}-${VENDOR}-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) - echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + echo ${UNAME_MACHINE}-${VENDOR}-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) - echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + echo ${UNAME_MACHINE}-${VENDOR}-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) - echo powerpc-unknown-mirbsd${UNAME_RELEASE} + echo powerpc-${VENDOR}-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) - echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + echo ${UNAME_MACHINE}-${VENDOR}-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in @@ -280,13 +290,13 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 + echo m68k-${VENDOR}-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-amigaos + echo ${UNAME_MACHINE}-${VENDOR}-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-morphos + echo ${UNAME_MACHINE}-${VENDOR}-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition @@ -301,7 +311,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm:riscos:*:*|arm:RISCOS:*:*) - echo arm-unknown-riscos + echo arm-${VENDOR}-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp @@ -324,14 +334,33 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; + s390x:SunOS:*:*) + echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + echo i386-pc-auroraux${UNAME_RELEASE} + exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) - echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + eval $set_cc_for_build + SUN_ARCH="i386" + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH="x86_64" + fi + fi + echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize @@ -390,7 +419,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} + echo m68k-${VENDOR}-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} @@ -640,7 +669,7 @@ EOF # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | - grep __LP64__ >/dev/null + grep -q __LP64__ then HP_ARCH="hppa2.0w" else @@ -701,9 +730,9 @@ EOF exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then - echo ${UNAME_MACHINE}-unknown-osf1mk + echo ${UNAME_MACHINE}-${VENDOR}-osf1mk else - echo ${UNAME_MACHINE}-unknown-osf1 + echo ${UNAME_MACHINE}-${VENDOR}-osf1 fi exit ;; parisc*:Lites*:*:*) @@ -763,19 +792,19 @@ EOF echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi${UNAME_RELEASE} + echo sparc-${VENDOR}-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + echo ${UNAME_MACHINE}-${VENDOR}-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) case ${UNAME_MACHINE} in pc98) - echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + echo i386-${VENDOR}-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; amd64) - echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + echo x86_64-${VENDOR}-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) - echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + echo ${UNAME_MACHINE}-${VENDOR}-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) @@ -791,21 +820,24 @@ EOF i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; - *:Interix*:[3456]*) + *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; - EM64T | authenticamd) - echo x86_64-unknown-interix${UNAME_RELEASE} + authenticamd | genuineintel | EM64T) + echo x86_64-${VENDOR}-interix${UNAME_RELEASE} exit ;; IA64) - echo ia64-unknown-interix${UNAME_RELEASE} + echo ia64-${VENDOR}-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; + 8664:Windows_NT:*) + echo x86_64-pc-mks + exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we @@ -816,111 +848,25 @@ EOF echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) - echo x86_64-unknown-cygwin + echo x86_64-${VENDOR}-cygwin exit ;; p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin + echo powerpcle-${VENDOR}-cygwin exit ;; prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + echo powerpcle-${VENDOR}-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-${VENDOR}-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu + echo ${UNAME_MACHINE}-${VENDOR}-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; - arm*:Linux:*:*) - eval $set_cc_for_build - if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ARM_EABI__ - then - echo ${UNAME_MACHINE}-unknown-linux-gnu - else - echo ${UNAME_MACHINE}-unknown-linux-gnueabi - fi - exit ;; - avr32*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - cris:Linux:*:*) - echo cris-axis-linux-gnu - exit ;; - crisv32:Linux:*:*) - echo crisv32-axis-linux-gnu - exit ;; - frv:Linux:*:*) - echo frv-unknown-linux-gnu - exit ;; - ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - m32r*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - mips:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #undef CPU - #undef mips - #undef mipsel - #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=mipsel - #else - #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=mips - #else - CPU= - #endif - #endif -EOF - eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' - /^CPU/{ - s: ::g - p - }'`" - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } - ;; - mips64:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #undef CPU - #undef mips64 - #undef mips64el - #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=mips64el - #else - #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=mips64 - #else - CPU= - #endif - #endif -EOF - eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' - /^CPU/{ - s: ::g - p - }'`" - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } - ;; - or32:Linux:*:*) - echo or32-unknown-linux-gnu - exit ;; - ppc:Linux:*:*) - echo powerpc-unknown-linux-gnu - exit ;; - ppc64:Linux:*:*) - echo powerpc64-unknown-linux-gnu - exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; @@ -931,105 +877,115 @@ EOF EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac - objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null + objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi - echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu${LIBC} + exit ;; + arm*:Linux:*:*) + eval $set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu + else + echo ${UNAME_MACHINE}-${VENDOR}-linux-gnueabi + fi + exit ;; + avr32*:Linux:*:*) + echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu + exit ;; + cris:Linux:*:*) + echo cris-axis-linux-gnu + exit ;; + crisv32:Linux:*:*) + echo crisv32-axis-linux-gnu + exit ;; + frv:Linux:*:*) + echo frv-${VENDOR}-linux-gnu + exit ;; + i*86:Linux:*:*) + LIBC=gnu + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #ifdef __dietlibc__ + LIBC=dietlibc + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` + echo "${UNAME_MACHINE}-${VENDOR}-linux-${LIBC}" + exit ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu + exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu + exit ;; + mips:Linux:*:* | mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef ${UNAME_MACHINE} + #undef ${UNAME_MACHINE}el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=${UNAME_MACHINE}el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=${UNAME_MACHINE} + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` + test x"${CPU}" != x && { echo "${CPU}-${VENDOR}-linux-gnu"; exit; } + ;; + or32:Linux:*:*) + echo or32-${VENDOR}-linux-gnu + exit ;; + padre:Linux:*:*) + echo sparc-${VENDOR}-linux-gnu + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-${VENDOR}-linux-gnu exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-gnu ;; - PA8*) echo hppa2.0-unknown-linux-gnu ;; - *) echo hppa-unknown-linux-gnu ;; + PA7*) echo hppa1.1-${VENDOR}-linux-gnu ;; + PA8*) echo hppa2.0-${VENDOR}-linux-gnu ;; + *) echo hppa-${VENDOR}-linux-gnu ;; esac exit ;; - parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-gnu + ppc64:Linux:*:*) + echo powerpc64-${VENDOR}-linux-gnu + exit ;; + ppc:Linux:*:*) + echo powerpc-${VENDOR}-linux-gnu exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit ;; sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu exit ;; sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-gnu exit ;; x86_64:Linux:*:*) - echo x86_64-unknown-linux-gnu + echo x86_64-${VENDOR}-linux-gnu exit ;; xtensa*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu exit ;; - i*86:Linux:*:*) - # The BFD linker knows what the default object file format is, so - # first see if it will tell us. cd to the root directory to prevent - # problems with other programs or directories called `ld' in the path. - # Set LC_ALL=C to ensure ld outputs messages in English. - ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ - | sed -ne '/supported targets:/!d - s/[ ][ ]*/ /g - s/.*supported targets: *// - s/ .*// - p'` - case "$ld_supported_targets" in - elf32-i386) - TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" - ;; - a.out-i386-linux) - echo "${UNAME_MACHINE}-pc-linux-gnuaout" - exit ;; - coff-i386) - echo "${UNAME_MACHINE}-pc-linux-gnucoff" - exit ;; - "") - # Either a pre-BFD a.out linker (linux-gnuoldld) or - # one that does not give us useful --help. - echo "${UNAME_MACHINE}-pc-linux-gnuoldld" - exit ;; - esac - # Determine whether the default compiler is a.out or elf - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - #ifdef __ELF__ - # ifdef __GLIBC__ - # if __GLIBC__ >= 2 - LIBC=gnu - # else - LIBC=gnulibc1 - # endif - # else - LIBC=gnulibc1 - # endif - #else - #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) - LIBC=gnu - #else - LIBC=gnuaout - #endif - #endif - #ifdef __dietlibc__ - LIBC=dietlibc - #endif -EOF - eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' - /^LIBC/{ - s: ::g - p - }'`" - test x"${LIBC}" != x && { - echo "${UNAME_MACHINE}-pc-linux-${LIBC}" - exit - } - test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } - ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both @@ -1050,16 +1006,16 @@ EOF echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) - echo ${UNAME_MACHINE}-unknown-stop + echo ${UNAME_MACHINE}-${VENDOR}-stop exit ;; i*86:atheos:*:*) - echo ${UNAME_MACHINE}-unknown-atheos + echo ${UNAME_MACHINE}-${VENDOR}-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; - i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + echo i386-${VENDOR}-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp @@ -1079,7 +1035,7 @@ EOF *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac - echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + echo ${UNAME_MACHINE}-${VENDOR}-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then @@ -1102,8 +1058,11 @@ EOF pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about - # the processor, so we play safe by assuming i386. - echo i386-pc-msdosdjgpp + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configury will decide that + # this is a cross-build. + echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 @@ -1115,7 +1074,7 @@ EOF if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + echo i860-${VENDOR}-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) @@ -1141,20 +1100,30 @@ EOF 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos${UNAME_RELEASE} + echo m68k-${VENDOR}-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos${UNAME_RELEASE} + echo sparc-${VENDOR}-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos${UNAME_RELEASE} + echo rs6000-${VENDOR}-lynxos${UNAME_RELEASE} exit ;; - PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) - echo powerpc-unknown-lynxos${UNAME_RELEASE} + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + echo powerpc-${VENDOR}-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} @@ -1204,7 +1173,7 @@ EOF if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else - echo mips-unknown-sysv${UNAME_RELEASE} + echo mips-${VENDOR}-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. @@ -1216,6 +1185,9 @@ EOF BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + echo i586-pc-haiku + exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; @@ -1234,9 +1206,6 @@ EOF SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; - SX-9:SUPER-UX:*:*) - echo sx9-nec-superux${UNAME_RELEASE} - exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; @@ -1246,6 +1215,16 @@ EOF *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in + i386) + eval $set_cc_for_build + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + UNAME_PROCESSOR="x86_64" + fi + fi ;; unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} @@ -1285,13 +1264,13 @@ EOF else UNAME_MACHINE="$cputype" fi - echo ${UNAME_MACHINE}-unknown-plan9 + echo ${UNAME_MACHINE}-${VENDOR}-plan9 exit ;; *:TOPS-10:*:*) - echo pdp10-unknown-tops10 + echo pdp10-${VENDOR}-tops10 exit ;; *:TENEX:*:*) - echo pdp10-unknown-tenex + echo pdp10-${VENDOR}-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 @@ -1300,16 +1279,16 @@ EOF echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) - echo pdp10-unknown-tops20 + echo pdp10-${VENDOR}-tops20 exit ;; *:ITS:*:*) - echo pdp10-unknown-its + echo pdp10-${VENDOR}-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) - echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + echo ${UNAME_MACHINE}-${VENDOR}-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` @@ -1327,6 +1306,9 @@ EOF i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; + i*86:AROS:*:*) + echo ${UNAME_MACHINE}-pc-aros + exit ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 diff --git a/config/config.sub b/config/config.sub index 6759825a5..2a55a5075 100755 --- a/config/config.sub +++ b/config/config.sub @@ -1,10 +1,10 @@ #! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 # Free Software Foundation, Inc. -timestamp='2008-01-16' +timestamp='2009-11-20' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software @@ -32,13 +32,16 @@ timestamp='2008-01-16' # Please send patches to . Submit a context -# diff and a properly formatted ChangeLog entry. +# diff and a properly formatted GNU ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD + # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. @@ -122,6 +125,7 @@ maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ + kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` @@ -148,10 +152,13 @@ case $os in -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis | -knuth | -cray) + -apple | -axis | -knuth | -cray | -microblaze) os= basic_machine=$1 ;; + -bluegene*) + os=-cnk + ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 @@ -249,13 +256,16 @@ case $basic_machine in | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ + | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ - | maxq | mb | microblaze | mcore | mep \ + | maxq | mb | microblaze | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ - | mips64vr | mips64vrel \ + | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ @@ -268,6 +278,7 @@ case $basic_machine in | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ + | moxie \ | mt \ | msp430 \ | nios | nios2 \ @@ -276,20 +287,22 @@ case $basic_machine in | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ + | rx \ | score \ - | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu | strongarm \ | tahoe | thumb | tic4x | tic80 | tron \ + | ubicom32 \ | v850 | v850e \ | we32k \ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ - | z8k) + | z8k | z80) basic_machine=$basic_machine-unknown ;; - m6811 | m68hc11 | m6812 | m68hc12) + m6811 | m68hc11 | m6812 | m68hc12 | picochip) # Motorola 68HC11/12. basic_machine=$basic_machine-unknown os=-none @@ -329,14 +342,17 @@ case $basic_machine in | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ + | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | maxq-* | mcore-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ - | mips64vr-* | mips64vrel-* \ + | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ + | mips64r5900-* | mips64r5900el-* \ + | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ @@ -357,21 +373,22 @@ case $basic_machine in | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ - | romp-* | rs6000-* \ - | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | romp-* | rs6000-* | rx-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ | tahoe-* | thumb-* \ - | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \ | tron-* \ + | ubicom32-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ - | z8k-*) + | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) @@ -439,6 +456,10 @@ case $basic_machine in basic_machine=m68k-apollo os=-bsd ;; + aros) + basic_machine=i386-pc + os=-aros + ;; aux) basic_machine=m68k-apple os=-aux @@ -455,10 +476,18 @@ case $basic_machine in basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; + bluegene*) + basic_machine=powerpc-ibm + os=-cnk + ;; c90) basic_machine=c90-cray os=-unicos ;; + cegcc) + basic_machine=arm-unknown + os=-cegcc + ;; convex-c1) basic_machine=c1-convex os=-bsd @@ -526,6 +555,10 @@ case $basic_machine in basic_machine=m88k-motorola os=-sysv3 ;; + dicos) + basic_machine=i686-pc + os=-dicos + ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp @@ -699,6 +732,9 @@ case $basic_machine in basic_machine=ns32k-utek os=-sysv ;; + microblaze) + basic_machine=microblaze-xilinx + ;; mingw32) basic_machine=i386-pc os=-mingw32 @@ -1128,6 +1164,10 @@ case $basic_machine in basic_machine=z8k-unknown os=-sim ;; + z80-*-coff) + basic_machine=z80-unknown + os=-sim + ;; none) basic_machine=none-none os=-none @@ -1166,7 +1206,7 @@ case $basic_machine in we32k) basic_machine=we32k-att ;; - sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) + sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) @@ -1216,6 +1256,9 @@ case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. + -auroraux) + os=-auroraux + ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; @@ -1236,10 +1279,11 @@ case $os in # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ + | -sym* | -kopensolaris* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* \ + | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ @@ -1248,7 +1292,7 @@ case $os in | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* \ + | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ @@ -1258,7 +1302,7 @@ case $os in | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ - | -skyos* | -haiku* | -rdos* | -toppers* | -drops*) + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) @@ -1388,6 +1432,9 @@ case $os in -zvmoe) os=-zvmoe ;; + -dicos*) + os=-dicos + ;; -none) ;; *) @@ -1585,7 +1632,7 @@ case $basic_machine in -sunos*) vendor=sun ;; - -aix*) + -cnk*|-aix*) vendor=ibm ;; -beos*) diff --git a/config/depcomp b/config/depcomp index 9e5522d04..df8eea7e4 100755 --- a/config/depcomp +++ b/config/depcomp @@ -1,9 +1,10 @@ #! /bin/sh # depcomp - compile a program generating dependencies as side-effects -scriptversion=2003-11-08.23 +scriptversion=2009-04-28.21; # UTC -# Copyright (C) 1999, 2000, 2003 Free Software Foundation, Inc. +# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free +# Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -16,9 +17,7 @@ scriptversion=2003-11-08.23 # GNU General Public License for more details. # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. +# along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -43,17 +42,18 @@ Environment variables: depmode Dependency tracking mode. source Source file read by `PROGRAMS ARGS'. object Object file output by `PROGRAMS ARGS'. + DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputing dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF - exit 0 + exit $? ;; -v | --v*) echo "depcomp $scriptversion" - exit 0 + exit $? ;; esac @@ -61,18 +61,10 @@ if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi -# `libtool' can also be set to `yes' or `no'. - -if test -z "$depfile"; then - base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'` - dir=`echo "$object" | sed 's,/.*$,/,'` - if test "$dir" = "$object"; then - dir= - fi - # FIXME: should be _deps on DOS. - depfile="$dir.deps/$base" -fi +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" @@ -93,12 +85,34 @@ if test "$depmode" = dashXmstdout; then depmode=dashmstdout fi +cygpath_u="cygpath -u -f -" +if test "$depmode" = msvcmsys; then + # This is just like msvisualcpp but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u="sed s,\\\\\\\\,/,g" + depmode=msvisualcpp +fi + case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. - "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" +## Unfortunately, FreeBSD c89 acceptance of flags depends upon +## the command line argument order; so add the flags where they +## appear in depend2.am. Note that the slowdown incurred here +## affects only configure: in makefiles, %FASTDEP% shortcuts this. + for arg + do + case $arg in + -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; + *) set fnord "$@" "$arg" ;; + esac + shift # fnord + shift # $arg + done + "$@" stat=$? if test $stat -eq 0; then : else @@ -185,14 +199,14 @@ sgi) ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ tr ' -' ' ' >> $depfile - echo >> $depfile +' ' ' >> "$depfile" + echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ - >> $depfile + >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile @@ -208,34 +222,39 @@ aix) # current directory. Also, the AIX compiler puts `$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. - stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` - tmpdepfile="$stripped.u" + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then + tmpdepfile1=$dir$base.u + tmpdepfile2=$base.u + tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else + tmpdepfile1=$dir$base.u + tmpdepfile2=$dir$base.u + tmpdepfile3=$dir$base.u "$@" -M fi stat=$? - if test -f "$tmpdepfile"; then : - else - stripped=`echo "$stripped" | sed 's,^.*/,,'` - tmpdepfile="$stripped.u" - fi - if test $stat -eq 0; then : else - rm -f "$tmpdepfile" + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done if test -f "$tmpdepfile"; then - outname="$stripped.o" # Each line is of the form `foo.o: dependent.h'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. - sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" - sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a tab and a space in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile @@ -283,6 +302,51 @@ icc) rm -f "$tmpdepfile" ;; +hp2) + # The "hp" stanza above does not work with aCC (C++) and HP's ia64 + # compilers, which have integrated preprocessors. The correct option + # to use with these is +Maked; it writes dependencies to a file named + # 'foo.d', which lands next to the object file, wherever that + # happens to be. + # Much of this is similar to the tru64 case; see comments there. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir.libs/$base.d + "$@" -Wc,+Maked + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + "$@" +Maked + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" + # Add `dependent.h:' lines. + sed -ne '2,${ + s/^ *// + s/ \\*$// + s/$/:/ + p + }' "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" "$tmpdepfile2" + ;; + tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. @@ -294,27 +358,43 @@ tru64) base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then - tmpdepfile1="$dir.libs/$base.lo.d" - tmpdepfile2="$dir.libs/$base.d" + # With Tru64 cc, shared objects can also be used to make a + # static library. This mechanism is used in libtool 1.4 series to + # handle both shared and static libraries in a single compilation. + # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. + # + # With libtool 1.5 this exception was removed, and libtool now + # generates 2 separate objects for the 2 libraries. These two + # compilations output dependencies in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 + tmpdepfile2=$dir$base.o.d # libtool 1.5 + tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 + tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else - tmpdepfile1="$dir$base.o.d" - tmpdepfile2="$dir$base.d" + tmpdepfile1=$dir$base.o.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + tmpdepfile4=$dir$base.d "$@" -MD fi stat=$? if test $stat -eq 0; then : else - rm -f "$tmpdepfile1" "$tmpdepfile2" + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" exit $stat fi - if test -f "$tmpdepfile1"; then - tmpdepfile="$tmpdepfile1" - else - tmpdepfile="$tmpdepfile2" - fi + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + do + test -f "$tmpdepfile" && break + done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. @@ -336,7 +416,7 @@ dashmstdout) # Remove the call to Libtool. if test "$libtool" = yes; then - while test $1 != '--mode=compile'; do + while test "X$1" != 'X--mode=compile'; do shift done shift @@ -387,32 +467,39 @@ makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then - while test $1 != '--mode=compile'; do + while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift - cleared=no - for arg in "$@"; do + cleared=no eat=no + for arg + do case $cleared in no) set ""; shift cleared=yes ;; esac + if test $eat = yes; then + eat=no + continue + fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. + -arch) + eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done - obj_suffix="`echo $object | sed 's/^.*\././'`" + obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" @@ -432,7 +519,7 @@ cpp) # Remove the call to Libtool. if test "$libtool" = yes; then - while test $1 != '--mode=compile'; do + while test "X$1" != 'X--mode=compile'; do shift done shift @@ -458,7 +545,8 @@ cpp) done "$@" -E | - sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | + sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" @@ -469,13 +557,27 @@ cpp) msvisualcpp) # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout, regardless of -o, - # because we must use -o when running libtool. + # always write the preprocessed file to stdout. "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + IFS=" " for arg do case "$arg" in + -o) + shift + ;; + $object) + shift + ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift @@ -488,16 +590,23 @@ msvisualcpp) ;; esac done - "$@" -E | - sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" + "$@" -E 2>/dev/null | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" - . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" echo " " >> "$depfile" - . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; +msvcmsys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + none) exec "$@" ;; @@ -516,5 +625,6 @@ exit 0 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" # End: diff --git a/config/install-sh b/config/install-sh index 36f96f3e0..6781b987b 100755 --- a/config/install-sh +++ b/config/install-sh @@ -1,276 +1,520 @@ #!/bin/sh -# # install - install a program, script, or datafile -# This comes from X11R5 (mit/util/scripts/install.sh). + +scriptversion=2009-04-28.21; # UTC + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. # -# Copyright 1991 by the Massachusetts Institute of Technology +# Copyright (C) 1994 X Consortium # -# Permission to use, copy, modify, distribute, and sell this software and its -# documentation for any purpose is hereby granted without fee, provided that -# the above copyright notice appear in all copies and that both that -# copyright notice and this permission notice appear in supporting -# documentation, and that the name of M.I.T. not be used in advertising or -# publicity pertaining to distribution of the software without specific, -# written prior permission. M.I.T. makes no representations about the -# suitability of this software for any purpose. It is provided "as is" -# without express or implied warranty. +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written -# from scratch. It can only install one file at a time, a restriction -# shared with many OS's install programs. +# from scratch. +nl=' +' +IFS=" "" $nl" # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. -doit="${DOITPROG-}" +doit=${DOITPROG-} +if test -z "$doit"; then + doit_exec=exec +else + doit_exec=$doit +fi +# Put in absolute file names if you don't have them in your path; +# or use environment vars. -# put in absolute paths if you don't have them in your path; or use env. vars. +chgrpprog=${CHGRPPROG-chgrp} +chmodprog=${CHMODPROG-chmod} +chownprog=${CHOWNPROG-chown} +cmpprog=${CMPPROG-cmp} +cpprog=${CPPROG-cp} +mkdirprog=${MKDIRPROG-mkdir} +mvprog=${MVPROG-mv} +rmprog=${RMPROG-rm} +stripprog=${STRIPPROG-strip} -mvprog="${MVPROG-mv}" -cpprog="${CPPROG-cp}" -chmodprog="${CHMODPROG-chmod}" -chownprog="${CHOWNPROG-chown}" -chgrpprog="${CHGRPPROG-chgrp}" -stripprog="${STRIPPROG-strip}" -rmprog="${RMPROG-rm}" -mkdirprog="${MKDIRPROG-mkdir}" +posix_glob='?' +initialize_posix_glob=' + test "$posix_glob" != "?" || { + if (set -f) 2>/dev/null; then + posix_glob= + else + posix_glob=: + fi + } +' -transformbasename="" -transform_arg="" -instcmd="$mvprog" -chmodcmd="$chmodprog 0755" -chowncmd="" -chgrpcmd="" -stripcmd="" +posix_mkdir= + +# Desired mode of installed file. +mode=0755 + +chgrpcmd= +chmodcmd=$chmodprog +chowncmd= +mvcmd=$mvprog rmcmd="$rmprog -f" -mvcmd="$mvprog" -src="" -dst="" -dir_arg="" +stripcmd= -while [ x"$1" != x ]; do - case $1 in - -c) instcmd=$cpprog - shift - continue;; +src= +dst= +dir_arg= +dst_arg= - -d) dir_arg=true - shift - continue;; +copy_on_change=false +no_target_directory= - -m) chmodcmd="$chmodprog $2" - shift - shift - continue;; +usage="\ +Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... - -o) chowncmd="$chownprog $2" - shift - shift - continue;; +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. - -g) chgrpcmd="$chgrpprog $2" - shift - shift - continue;; +Options: + --help display this help and exit. + --version display version info and exit. - -s) stripcmd=$stripprog - shift - continue;; + -c (ignored) + -C install only if different (preserve the last data modification time) + -d create directories instead of installing files. + -g GROUP $chgrpprog installed files to GROUP. + -m MODE $chmodprog installed files to MODE. + -o USER $chownprog installed files to USER. + -s $stripprog installed files. + -t DIRECTORY install into DIRECTORY. + -T report an error if DSTFILE is a directory. - -t=*) transformarg=`echo $1 | sed 's/-t=//'` - shift - continue;; +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG + RMPROG STRIPPROG +" - -b=*) transformbasename=`echo $1 | sed 's/-b=//'` - shift - continue;; +while test $# -ne 0; do + case $1 in + -c) ;; - *) if [ x"$src" = x ] - then - src=$1 - else - # this colon is to work around a 386BSD /bin/sh bug - : - dst=$1 - fi - shift - continue;; + -C) copy_on_change=true;; + + -d) dir_arg=true;; + + -g) chgrpcmd="$chgrpprog $2" + shift;; + + --help) echo "$usage"; exit $?;; + + -m) mode=$2 + case $mode in + *' '* | *' '* | *' +'* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; + + -o) chowncmd="$chownprog $2" + shift;; + + -s) stripcmd=$stripprog;; + + -t) dst_arg=$2 + shift;; + + -T) no_target_directory=true;; + + --version) echo "$0 $scriptversion"; exit $?;; + + --) shift + break;; + + -*) echo "$0: invalid option: $1" >&2 + exit 1;; + + *) break;; + esac + shift +done + +if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then + # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dst_arg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dst_arg" + shift # fnord + fi + shift # arg + dst_arg=$arg + done +fi + +if test $# -eq 0; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call `install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +if test -z "$dir_arg"; then + trap '(exit $?); exit' 1 2 13 15 + + # Set umask so as not to create temps with too-generous modes. + # However, 'strip' requires both read and write access to temps. + case $mode in + # Optimize common cases. + *644) cp_umask=133;; + *755) cp_umask=22;; + + *[0-7]) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw='% 200' + fi + cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; + *) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw=,u+rw + fi + cp_umask=$mode$u_plus_rw;; + esac +fi + +for src +do + # Protect names starting with `-'. + case $src in + -*) src=./$src;; + esac + + if test -n "$dir_arg"; then + dst=$src + dstdir=$dst + test -d "$dstdir" + dstdir_status=$? + else + + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dst_arg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + + dst=$dst_arg + # Protect names starting with `-'. + case $dst in + -*) dst=./$dst;; esac -done -if [ x"$src" = x ] -then - echo "$0: no input file specified" >&2 + # If destination is a directory, append the input filename; won't work + # if double slashes aren't ignored. + if test -d "$dst"; then + if test -n "$no_target_directory"; then + echo "$0: $dst_arg: Is a directory" >&2 exit 1 -else - : -fi + fi + dstdir=$dst + dst=$dstdir/`basename "$src"` + dstdir_status=0 + else + # Prefer dirname, but fall back on a substitute if dirname fails. + dstdir=` + (dirname "$dst") 2>/dev/null || + expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$dst" : 'X\(//\)[^/]' \| \ + X"$dst" : 'X\(//\)$' \| \ + X"$dst" : 'X\(/\)' \| . 2>/dev/null || + echo X"$dst" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q' + ` -if [ x"$dir_arg" != x ]; then - dst=$src - src="" + test -d "$dstdir" + dstdir_status=$? + fi + fi - if [ -d "$dst" ]; then - instcmd=: - chmodcmd="" + obsolete_mkdir_used=false + + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + # Create intermediate dirs using mode 755 as modified by the umask. + # This is like FreeBSD 'install' as of 1997-10-28. + umask=`umask` + case $stripcmd.$umask in + # Optimize common cases. + *[2367][2367]) mkdir_umask=$umask;; + .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; + + *[0-7]) + mkdir_umask=`expr $umask + 22 \ + - $umask % 100 % 40 + $umask % 20 \ + - $umask % 10 % 4 + $umask % 2 + `;; + *) mkdir_umask=$umask,go-w;; + esac + + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode else - instcmd=$mkdirprog - fi -else - -# Waiting for this to be detected by the "$instcmd $src $dsttmp" command -# might cause directories to be created, which would be especially bad -# if $src (and thus $dsttmp) contains '*'. - - if [ -f "$src" ] || [ -d "$src" ] - then - : - else - echo "$0: $src does not exist" >&2 - exit 1 + mkdir_mode= fi - if [ x"$dst" = x ] - then - echo "$0: no destination specified" >&2 - exit 1 + posix_mkdir=false + case $umask in + *[123567][0-7][0-7]) + # POSIX mkdir -p sets u+wx bits regardless of umask, which + # is incompatible with FreeBSD 'install' when (umask & 300) != 0. + ;; + *) + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 + + if (umask $mkdir_umask && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writeable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + ls_ld_tmpdir=`ls -ld "$tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/d" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null + fi + trap '' 0;; + esac;; + esac + + if + $posix_mkdir && ( + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + ) + then : + else + + # The umask is ridiculous, or mkdir does not conform to POSIX, + # or it failed possibly due to a race condition. Create the + # directory the slow way, step by step, checking for races as we go. + + case $dstdir in + /*) prefix='/';; + -*) prefix='./';; + *) prefix='';; + esac + + eval "$initialize_posix_glob" + + oIFS=$IFS + IFS=/ + $posix_glob set -f + set fnord $dstdir + shift + $posix_glob set +f + IFS=$oIFS + + prefixes= + + for d + do + test -z "$d" && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= else - : + if $posix_mkdir; then + (umask=$mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi fi + prefix=$prefix/ + done -# If destination is a directory, append the input filename; if your system -# does not like double slashes in filenames, you may need to add some logic + if test -n "$prefixes"; then + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true + fi + fi + fi - if [ -d "$dst" ] - then - dst=$dst/`basename "$src"` - else - : - fi -fi + if test -n "$dir_arg"; then + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 + else -## this sed command emulates the dirname command -dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` + # Make a couple of temp file names in the proper directory. + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ -# Make sure that the destination directory exists. -# this part is taken from Noah Friedman's mkinstalldirs script + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 -# Skip lots of stat calls in the usual case. -if [ ! -d "$dstdir" ]; then -defaultIFS=' - ' -IFS="${IFS-$defaultIFS}" + # Copy the file name to the temp name. + (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && -oIFS=$IFS -# Some sh's can't handle IFS=/ for some reason. -IFS='%' -set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` -IFS=$oIFS + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && + { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && + { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && -pathcomp='' + # If -C, don't bother to copy if it wouldn't change the file. + if $copy_on_change && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && -while [ $# -ne 0 ] ; do - pathcomp=$pathcomp$1 - shift + eval "$initialize_posix_glob" && + $posix_glob set -f && + set X $old && old=:$2:$4:$5:$6 && + set X $new && new=:$2:$4:$5:$6 && + $posix_glob set +f && - if [ ! -d "$pathcomp" ] ; - then - $mkdirprog "$pathcomp" - else - : - fi + test "$old" = "$new" && + $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 + then + rm -f "$dsttmp" + else + # Rename the file to the real destination. + $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || - pathcomp=$pathcomp/ + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + { + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd -f "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" + } + fi || exit 1 + + trap '' 0 + fi done -fi -if [ x"$dir_arg" != x ] -then - $doit $instcmd "$dst" && - - if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dst"; else : ; fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dst"; else : ; fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dst"; else : ; fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dst"; else : ; fi -else - -# If we're going to rename the final executable, determine the name now. - - if [ x"$transformarg" = x ] - then - dstfile=`basename "$dst"` - else - dstfile=`basename "$dst" $transformbasename | - sed $transformarg`$transformbasename - fi - -# don't allow the sed command to completely eliminate the filename - - if [ x"$dstfile" = x ] - then - dstfile=`basename "$dst"` - else - : - fi - -# Make a couple of temp file names in the proper directory. - - dsttmp=$dstdir/#inst.$$# - rmtmp=$dstdir/#rm.$$# - -# Trap to clean up temp files at exit. - - trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0 - trap '(exit $?); exit' 1 2 13 15 - -# Move or copy the file name to the temp name - - $doit $instcmd "$src" "$dsttmp" && - -# and set any options; do chmod last to preserve setuid bits - -# If any of these fail, we abort the whole thing. If we want to -# ignore errors from any of these, just make sure not to ignore -# errors from the above "$doit $instcmd $src $dsttmp" command. - - if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp"; else :;fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp"; else :;fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dsttmp"; else :;fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp"; else :;fi && - -# Now remove or move aside any old file at destination location. We try this -# two ways since rm can't unlink itself on some systems and the destination -# file might be busy for other reasons. In this case, the final cleanup -# might fail but the new file should still install successfully. - -{ - if [ -f "$dstdir/$dstfile" ] - then - $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null || - $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null || - { - echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 - (exit 1); exit - } - else - : - fi -} && - -# Now rename the file to the real destination. - - $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" - -fi && - -# The final little trick to "correctly" pass the exit status to the exit trap. - -{ - (exit 0); exit -} +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/config/missing b/config/missing index 6a37006e8..28055d2ae 100755 --- a/config/missing +++ b/config/missing @@ -1,6 +1,10 @@ #! /bin/sh # Common stub for a few missing GNU programs while installing. -# Copyright (C) 1996, 1997, 1999, 2000, 2002 Free Software Foundation, Inc. + +scriptversion=2009-04-28.21; # UTC + +# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, +# 2008, 2009 Free Software Foundation, Inc. # Originally by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify @@ -14,9 +18,7 @@ # GNU General Public License for more details. # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. +# along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -29,6 +31,8 @@ if test $# -eq 0; then fi run=: +sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' +sed_minuso='s/.* -o \([^ ]*\).*/\1/p' # In the cases where this matters, `missing' is being run in the # srcdir already. @@ -38,18 +42,24 @@ else configure_ac=configure.in fi -case "$1" in +msg="missing on your system" + +case $1 in --run) # Try to run requested program, and just exit if it succeeds. run= shift "$@" && exit 0 + # Exit code 63 means version mismatch. This often happens + # when the user try to use an ancient version of a tool on + # a file that requires a minimum version. In this case we + # we should proceed has if the program had been absent, or + # if --run hadn't been passed. + if test $? = 63; then + run=: + msg="probably too old" + fi ;; -esac - -# If it does not exist, or fails to run (possibly an outdated version), -# try to emulate it. -case "$1" in -h|--h|--he|--hel|--help) echo "\ @@ -67,6 +77,7 @@ Supported PROGRAM values: aclocal touch file \`aclocal.m4' autoconf touch file \`configure' autoheader touch file \`config.h.in' + autom4te touch the output file, or create a stub one automake touch all \`Makefile.in' files bison create \`y.tab.[ch]', if possible, from existing .[ch] flex create \`lex.yy.c', if possible, from existing .c @@ -74,11 +85,18 @@ Supported PROGRAM values: lex create \`lex.yy.c', if possible, from existing .c makeinfo touch the output file tar try tar, gnutar, gtar, then tar without non-portable flags - yacc create \`y.tab.[ch]', if possible, from existing .[ch]" + yacc create \`y.tab.[ch]', if possible, from existing .[ch] + +Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and +\`g' are ignored when checking the name. + +Send bug reports to ." + exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) - echo "missing 0.4 - GNU automake" + echo "missing $scriptversion (GNU Automake)" + exit $? ;; -*) @@ -87,42 +105,69 @@ Supported PROGRAM values: exit 1 ;; - aclocal*) +esac + +# normalize program name to check for. +program=`echo "$1" | sed ' + s/^gnu-//; t + s/^gnu//; t + s/^g//; t'` + +# Now exit if we have it, but it failed. Also exit now if we +# don't have it and --version was passed (most likely to detect +# the program). This is about non-GNU programs, so use $1 not +# $program. +case $1 in + lex*|yacc*) + # Not GNU programs, they don't have --version. + ;; + + tar*) + if test -n "$run"; then + echo 1>&2 "ERROR: \`tar' requires --run" + exit 1 + elif test "x$2" = "x--version" || test "x$2" = "x--help"; then + exit 1 + fi + ;; + + *) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 + elif test "x$2" = "x--version" || test "x$2" = "x--help"; then + # Could not run --version or --help. This is probably someone + # running `$TOOL --version' or `$TOOL --help' to check whether + # $TOOL exists and not knowing $TOOL uses missing. + exit 1 fi + ;; +esac +# If it does not exist, or fails to run (possibly an outdated version), +# try to emulate it. +case $program in + aclocal*) echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if +WARNING: \`$1' is $msg. You should only need it if you modified \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." touch aclocal.m4 ;; - autoconf) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - fi - + autoconf*) echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if +WARNING: \`$1' is $msg. You should only need it if you modified \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." touch configure ;; - autoheader) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - fi - + autoheader*) echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if +WARNING: \`$1' is $msg. You should only need it if you modified \`acconfig.h' or \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." @@ -130,7 +175,7 @@ WARNING: \`$1' is missing on your system. You should only need it if test -z "$files" && files="config.h" touch_files= for f in $files; do - case "$f" in + case $f in *:*) touch_files="$touch_files "`echo "$f" | sed -e 's/^[^:]*://' -e 's/:.*//'`;; *) touch_files="$touch_files $f.in";; @@ -140,13 +185,8 @@ WARNING: \`$1' is missing on your system. You should only need it if ;; automake*) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - fi - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if +WARNING: \`$1' is $msg. You should only need it if you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." @@ -155,21 +195,16 @@ WARNING: \`$1' is missing on your system. You should only need it if while read f; do touch "$f"; done ;; - autom4te) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - fi - + autom4te*) echo 1>&2 "\ -WARNING: \`$1' is needed, and you do not seem to have it handy on your - system. You might have modified some files without having the +WARNING: \`$1' is needed, but is $msg. + You might have modified some files without having the proper tools for further handling them. - You can get \`$1Help2man' as part of \`Autoconf' from any GNU + You can get \`$1' as part of \`Autoconf' from any GNU archive site." - file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` - test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` + file=`echo "$*" | sed -n "$sed_output"` + test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else @@ -183,111 +218,108 @@ WARNING: \`$1' is needed, and you do not seem to have it handy on your fi ;; - bison|yacc) + bison*|yacc*) echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if +WARNING: \`$1' $msg. You should only need it if you modified a \`.y' file. You may need the \`Bison' package in order for those modifications to take effect. You can get \`Bison' from any GNU archive site." rm -f y.tab.c y.tab.h - if [ $# -ne 1 ]; then + if test $# -ne 1; then eval LASTARG="\${$#}" - case "$LASTARG" in + case $LASTARG in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` - if [ -f "$SRCFILE" ]; then + if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.c fi SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` - if [ -f "$SRCFILE" ]; then + if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.h fi ;; esac fi - if [ ! -f y.tab.h ]; then + if test ! -f y.tab.h; then echo >y.tab.h fi - if [ ! -f y.tab.c ]; then + if test ! -f y.tab.c; then echo 'main() { return 0; }' >y.tab.c fi ;; - lex|flex) + lex*|flex*) echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if +WARNING: \`$1' is $msg. You should only need it if you modified a \`.l' file. You may need the \`Flex' package in order for those modifications to take effect. You can get \`Flex' from any GNU archive site." rm -f lex.yy.c - if [ $# -ne 1 ]; then + if test $# -ne 1; then eval LASTARG="\${$#}" - case "$LASTARG" in + case $LASTARG in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` - if [ -f "$SRCFILE" ]; then + if test -f "$SRCFILE"; then cp "$SRCFILE" lex.yy.c fi ;; esac fi - if [ ! -f lex.yy.c ]; then + if test ! -f lex.yy.c; then echo 'main() { return 0; }' >lex.yy.c fi ;; - help2man) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - fi - + help2man*) echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if +WARNING: \`$1' is $msg. You should only need it if you modified a dependency of a manual page. You may need the \`Help2man' package in order for those modifications to take effect. You can get \`Help2man' from any GNU archive site." - file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` - if test -z "$file"; then - file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` - fi - if [ -f "$file" ]; then + file=`echo "$*" | sed -n "$sed_output"` + test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` + if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo ".ab help2man is required to generate this page" - exit 1 + exit $? fi ;; - makeinfo) - if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then - # We have makeinfo, but it failed. - exit 1 - fi - + makeinfo*) echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if +WARNING: \`$1' is $msg. You should only need it if you modified a \`.texi' or \`.texinfo' file, or any other file indirectly affecting the aspect of the manual. The spurious call might also be the consequence of using a buggy \`make' (AIX, DU, IRIX). You might want to install the \`Texinfo' package or the \`GNU make' package. Grab either from any GNU archive site." - file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + # The file to touch is that specified with -o ... + file=`echo "$*" | sed -n "$sed_output"` + test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -z "$file"; then - file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` - file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` + # ... or it is the one specified with @setfilename ... + infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` + file=`sed -n ' + /^@setfilename/{ + s/.* \([^ ]*\) *$/\1/ + p + q + }' $infile` + # ... or it is derived from the source name (dir/f.texi becomes f.info) + test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info fi + # If the file does not exist, the user really needs makeinfo; + # let's fail without touching anything. + test -f $file || exit 1 touch $file ;; - tar) + tar*) shift - if test -n "$run"; then - echo 1>&2 "ERROR: \`tar' requires --run" - exit 1 - fi # We have already tried tar in the generic part. # Look for gnutar/gtar before invocation to avoid ugly error @@ -300,13 +332,13 @@ WARNING: \`$1' is missing on your system. You should only need it if fi firstarg="$1" if shift; then - case "$firstarg" in + case $firstarg in *o*) firstarg=`echo "$firstarg" | sed s/o//` tar "$firstarg" "$@" && exit 0 ;; esac - case "$firstarg" in + case $firstarg in *h*) firstarg=`echo "$firstarg" | sed s/h//` tar "$firstarg" "$@" && exit 0 @@ -323,10 +355,10 @@ WARNING: I can't seem to be able to run \`tar' with the given arguments. *) echo 1>&2 "\ -WARNING: \`$1' is needed, and you do not seem to have it handy on your - system. You might have modified some files without having the +WARNING: \`$1' is needed, and is $msg. + You might have modified some files without having the proper tools for further handling them. Check the \`README' file, - it often tells you about the needed prerequirements for installing + it often tells you about the needed prerequisites for installing this package. You may also peek at any GNU archive site, in case some other package would contain this missing \`$1' program." exit 1 @@ -334,3 +366,11 @@ WARNING: \`$1' is needed, and you do not seem to have it handy on your esac exit 0 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: From ef2245d6b93ee69e69a6a2d45b2fadbf7ae2555e Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 26 Mar 2013 15:30:14 +0000 Subject: [PATCH 2/7] Remove p4 edit commands; git does not need them --- src/extrules.am | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/extrules.am b/src/extrules.am index 126f90037..86dba0a6a 100644 --- a/src/extrules.am +++ b/src/extrules.am @@ -18,7 +18,6 @@ templates: grib_lex.c : gribl.l grib_yacc.h $(LEX) gribl.l - p4 edit grib_lex.c sed 's/yy/grib_yy/g' < $(LEX_OUTPUT_ROOT).c | sed 's/static void grib_yyunput/void grib_yyunput/' > grib_lex1.c sed 's/fgetc/getc/g' < grib_lex1.c > grib_lex.c rm -f grib_lex1.c @@ -26,11 +25,9 @@ grib_lex.c : gribl.l grib_yacc.h grib_yacc.h grib_yacc.c : griby.y $(YACC) -d griby.y - p4 edit grib_yacc.c sed 's/yy/grib_yy/g' < y.tab.c > grib_yacc1.c sed 's/fgetc/getc/g' < grib_yacc1.c > grib_yacc.c rm -f grib_yacc1.c - p4 edit grib_yacc.h sed 's/yy/grib_yy/g' < y.tab.h > grib_yacc.h rm -f y.tab.c y.tab.h From d5e4f270042bcb66416a86c1e9f57e2589dde377 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 26 Mar 2013 15:31:42 +0000 Subject: [PATCH 3/7] Add the ascii files in data dir --- data/60_model_levels | 61 +++ data/Makefile.am | 1 + data/bitmap.diff | 123 ++++++ data/filter_rules | 130 ++++++ data/ieee_test.good | 1 + data/index.ok | 395 +++++++++++++++++ data/index_f90.ok | 389 +++++++++++++++++ data/julian.out.good | 58 +++ data/list_points | 3 + data/local.good.log | 54 +++ data/ls.log | 172 ++++++++ data/mf.rules | 125 ++++++ data/multi.ok | 22 + data/multi_level.txt | 9 + data/multi_step.txt | 10 + data/no_bitmap.diff | 109 +++++ data/perf.ksh | 17 + data/read_any.ok | 14 + data/ret.sh | 56 +++ data/sample_grib.txt | 65 +++ data/scan_x_regular_gg_5_7_good.dump | 0 data/scan_x_regular_ll_5_4_good.dump | 21 + data/scan_x_regular_ll_5_7_good.dump | 36 ++ data/scan_x_regular_ll_8_4_good.dump | 33 ++ data/scan_x_regular_ll_8_7_good.dump | 57 +++ data/scan_x_rotated_ll_5_4_good.dump | 21 + data/scan_x_rotated_ll_5_7_good.dump | 36 ++ data/scan_x_rotated_ll_8_4_good.dump | 33 ++ data/scan_x_rotated_ll_8_7_good.dump | 57 +++ data/scan_y_regular_ll_5_4_good.dump | 21 + data/scan_y_regular_ll_5_7_good.dump | 36 ++ data/scan_y_regular_ll_8_4_good.dump | 33 ++ data/scan_y_regular_ll_8_7_good.dump | 57 +++ data/scan_y_rotated_ll_5_4_good.dump | 21 + data/scan_y_rotated_ll_5_7_good.dump | 36 ++ data/scan_y_rotated_ll_8_4_good.dump | 33 ++ data/scan_y_rotated_ll_8_7_good.dump | 57 +++ data/spherical_model_level.grib1.good | 521 +++++++++++++++++++++++ data/spherical_model_level.grib1_32.good | 521 +++++++++++++++++++++++ data/statistics.out.good | 4 + data/step.log | 58 +++ data/step_grib1.filter | 131 ++++++ data/step_grib1.log | 75 ++++ data/typeOfProcessedData.ok | 42 ++ 44 files changed, 3754 insertions(+) create mode 100644 data/60_model_levels create mode 100644 data/Makefile.am create mode 100644 data/bitmap.diff create mode 100644 data/filter_rules create mode 100644 data/ieee_test.good create mode 100644 data/index.ok create mode 100644 data/index_f90.ok create mode 100644 data/julian.out.good create mode 100644 data/list_points create mode 100644 data/local.good.log create mode 100644 data/ls.log create mode 100644 data/mf.rules create mode 100644 data/multi.ok create mode 100644 data/multi_level.txt create mode 100644 data/multi_step.txt create mode 100644 data/no_bitmap.diff create mode 100755 data/perf.ksh create mode 100644 data/read_any.ok create mode 100755 data/ret.sh create mode 100644 data/sample_grib.txt create mode 100644 data/scan_x_regular_gg_5_7_good.dump create mode 100644 data/scan_x_regular_ll_5_4_good.dump create mode 100644 data/scan_x_regular_ll_5_7_good.dump create mode 100644 data/scan_x_regular_ll_8_4_good.dump create mode 100644 data/scan_x_regular_ll_8_7_good.dump create mode 100644 data/scan_x_rotated_ll_5_4_good.dump create mode 100644 data/scan_x_rotated_ll_5_7_good.dump create mode 100644 data/scan_x_rotated_ll_8_4_good.dump create mode 100644 data/scan_x_rotated_ll_8_7_good.dump create mode 100644 data/scan_y_regular_ll_5_4_good.dump create mode 100644 data/scan_y_regular_ll_5_7_good.dump create mode 100644 data/scan_y_regular_ll_8_4_good.dump create mode 100644 data/scan_y_regular_ll_8_7_good.dump create mode 100644 data/scan_y_rotated_ll_5_4_good.dump create mode 100644 data/scan_y_rotated_ll_5_7_good.dump create mode 100644 data/scan_y_rotated_ll_8_4_good.dump create mode 100644 data/scan_y_rotated_ll_8_7_good.dump create mode 100644 data/spherical_model_level.grib1.good create mode 100644 data/spherical_model_level.grib1_32.good create mode 100644 data/statistics.out.good create mode 100644 data/step.log create mode 100644 data/step_grib1.filter create mode 100644 data/step_grib1.log create mode 100644 data/typeOfProcessedData.ok diff --git a/data/60_model_levels b/data/60_model_levels new file mode 100644 index 000000000..26286a5ed --- /dev/null +++ b/data/60_model_levels @@ -0,0 +1,61 @@ +0.000000 0.00000000 +20.000000 0.00000000 +38.425343 0.00000000 +63.647804 0.00000000 +95.636963 0.00000000 +134.483307 0.00000000 +180.584351 0.00000000 +234.779053 0.00000000 +298.495789 0.00000000 +373.971924 0.00000000 +464.618134 0.00000000 +575.651001 0.00000000 +713.218079 0.00000000 +883.660522 0.00000000 +1094.834717 0.00000000 +1356.474609 0.00000000 +1680.640259 0.00000000 +2082.273926 0.00000000 +2579.888672 0.00000000 +3196.421631 0.00000000 +3960.291504 0.00000000 +4906.708496 0.00000000 +6018.019531 0.00000000 +7306.631348 0.00000000 +8765.053711 0.00007582 +10376.126953 0.00046139 +12077.446289 0.00181516 +13775.325195 0.00508112 +15379.805664 0.01114291 +16819.474609 0.02067788 +18045.183594 0.03412116 +19027.695313 0.05169041 +19755.109375 0.07353383 +20222.205078 0.09967469 +20429.863281 0.13002251 +20384.480469 0.16438432 +20097.402344 0.20247594 +19584.330078 0.24393314 +18864.750000 0.28832296 +17961.357422 0.33515489 +16899.468750 0.38389215 +15706.447266 0.43396294 +14411.124023 0.48477158 +13043.218750 0.53570992 +11632.758789 0.58616841 +10209.500977 0.63554746 +8802.356445 0.68326861 +7438.803223 0.72878581 +6144.314941 0.77159661 +4941.778320 0.81125343 +3850.913330 0.84737492 +2887.696533 0.87965691 +2063.779785 0.90788388 +1385.912598 0.93194032 +855.361755 0.95182151 +467.333588 0.96764523 +210.393890 0.97966272 +65.889244 0.98827010 +7.367743 0.99401945 +0.000000 0.99763012 +0.000000 1.00000000 diff --git a/data/Makefile.am b/data/Makefile.am new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/data/Makefile.am @@ -0,0 +1 @@ + diff --git a/data/bitmap.diff b/data/bitmap.diff new file mode 100644 index 000000000..b2129cab0 --- /dev/null +++ b/data/bitmap.diff @@ -0,0 +1,123 @@ +#============== MESSAGE 1 ( length=11680 ) ============== +1-4 identifier = GRIB +5-7 totalLength = 11680 +8 editionNumber = 1 +====================== SECTION_1 ( length=52, padding=0 ) ====================== +1-3 section1Length = 52 +4 table2Version = 128 +5 centre = 98 [European Center for Medium-Range Weather Forecasts (grib1/0.table) ] +6 generatingProcessIdentifier = 130 +7 gridDefinition = 255 +8 section1Flags = 192 [11000000] +9 indicatorOfParameter = 130 [Temperature (K) (grib1/2.98.128.table) ] +10 indicatorOfTypeOfLevel = 109 [Hybrid level level number (2 octets) (grib1/3.table) ] +11-12 level = 1 +13 yearOfCentury = 8 +14 month = 2 +15 day = 6 +16 hour = 12 +17 minute = 0 +18 unitOfTimeRange = 1 [Hour (grib1/4.table) ] +19 P1 = 0 +20 P2 = 0 +21 timeRangeIndicator = 0 [Forecast product valid at reference time + P1 (P1>0) (grib1/5.table) ] +22-23 numberIncludedInAverage = 0 +24 numberMissingFromAveragesOrAccumulations = 0 +25 centuryOfReferenceTimeOfData = 21 +26 subCentre = 0 [Unknown code table entry (grib1/0.ecmf.table) ] +27-28 decimalScaleFactor = 0 +29-40 reservedNeedNotBePresent = 12 { + 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 + } # pad reservedNeedNotBePresent +41 localDefinitionNumber = 1 [MARS labelling or ensemble forecast data (grib1/localDefinitionNumber.98.table) ] +42 marsClass = 1 [Operational archive (mars/class.table) ] +43 marsType = 2 [Analysis (mars/type.table) ] +44-45 marsStream = 1025 [Atmospheric model (mars/stream.table) ] +46-49 experimentVersionNumber = 0001 +50 perturbationNumber = 0 +51 numberOfForecastsInEnsemble = 0 +52 padding_local1_1 = 1 { + 00 + } # pad padding_local1_1 +====================== SECTION_2 ( length=896, padding=0 ) ====================== +1-3 section2Length = 896 +4 numberOfVerticalCoordinateValues = 184 +5 pvlLocation = 33 +6 dataRepresentationType = 4 [Gaussian Latitude/Longitude Grid (grib1/6.table) ] +7-8 Ni = MISSING +9-10 Nj = 64 +11-13 latitudeOfFirstGridPoint = 87864 +14-16 longitudeOfFirstGridPoint = 0 +17 resolutionAndComponentFlags = 0 [00000000] +18-20 latitudeOfLastGridPoint = -87864 +21-23 longitudeOfLastGridPoint = 357188 +24-25 iDirectionIncrement = MISSING +26-27 N = 32 +28 scanningMode = 0 [00000000] +29-32 padding_grid4_1 = 4 { + 00, 00, 00, 00 + } # pad padding_grid4_1 +33-768 pv = (184,736) { +0.0000000000e+00, 2.0000400543e+00, 3.9808320999e+00, 7.3871860504e+00, 1.2908319473e+01, 2.1413604736e+01, 3.3952865601e+01, 5.1746597290e+01, +7.6167663574e+01, 1.0871556091e+02, 1.5098602295e+02, 2.0463745117e+02, 2.7135644531e+02, 3.5282446289e+02, 4.5068579102e+02, 5.6651928711e+02, +7.0181323242e+02, 8.5794580078e+02, 1.0361665039e+03, 1.2375854492e+03, 1.4631638184e+03, 1.7137097168e+03, 1.9898745117e+03, 2.2921555176e+03, +2.6208984375e+03, 2.9763022461e+03, 3.3584257812e+03, 3.7671960449e+03, 4.2024179688e+03, 4.6637773438e+03, 5.1508593750e+03, 5.6631562500e+03, +6.1998398438e+03, 6.7597265625e+03, 7.3414687500e+03, 7.9429257812e+03, 8.5646250000e+03, 9.2083046875e+03, 9.8735625000e+03, 1.0558882812e+04, +1.1262484375e+04, 1.1982660156e+04, 1.2713898438e+04, 1.3453226562e+04, 1.4192011719e+04, 1.4922687500e+04, 1.5638054688e+04, 1.6329562500e+04, +1.6990625000e+04, 1.7613281250e+04, 1.8191031250e+04, 1.8716968750e+04, 1.9184546875e+04, 1.9587515625e+04, 1.9919796875e+04, 2.0175394531e+04, +2.0348917969e+04, 2.0434156250e+04, 2.0426218750e+04, 2.0319011719e+04, 2.0107031250e+04, 1.9785359375e+04, 1.9348777344e+04, 1.8798824219e+04, +1.8141296875e+04, 1.7385593750e+04, 1.6544585938e+04, 1.5633566406e+04, 1.4665644531e+04, 1.3653218750e+04, 1.2608382812e+04, 1.1543167969e+04, +1.0471312500e+04, 9.4052226562e+03, 8.3562539062e+03, 7.3351640625e+03, 6.3539218750e+03, 5.4228007812e+03, 4.5502148438e+03, 3.7434643555e+03, +3.0101469727e+03, 2.3562026367e+03, 1.7848544922e+03, 1.2976562500e+03, 8.9519360352e+02, 5.7631420898e+02, 3.3677246094e+02, 1.6204342651e+02, +5.4208343506e+01, 6.5756282806e+00, 3.1600000802e-03, 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, +0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00 +... 84 more values +} # ibmfloat pv +769-896 pl = (64,128) { +2.0000000000e+01, 2.7000000000e+01, 3.6000000000e+01, 4.0000000000e+01, 4.5000000000e+01, 5.0000000000e+01, 6.0000000000e+01, 6.4000000000e+01, +7.2000000000e+01, 7.5000000000e+01, 8.0000000000e+01, 9.0000000000e+01, 9.0000000000e+01, 9.6000000000e+01, 1.0000000000e+02, 1.0800000000e+02, +1.0800000000e+02, 1.2000000000e+02, 1.2000000000e+02, 1.2000000000e+02, 1.2800000000e+02, 1.2800000000e+02, 1.2800000000e+02, 1.2800000000e+02, +1.2800000000e+02, 1.2800000000e+02, 1.2800000000e+02, 1.2800000000e+02, 1.2800000000e+02, 1.2800000000e+02, 1.2800000000e+02, 1.2800000000e+02, +1.2800000000e+02, 1.2800000000e+02, 1.2800000000e+02, 1.2800000000e+02, 1.2800000000e+02, 1.2800000000e+02, 1.2800000000e+02, 1.2800000000e+02, +1.2800000000e+02, 1.2800000000e+02, 1.2800000000e+02, 1.2800000000e+02, 1.2000000000e+02, 1.2000000000e+02, 1.2000000000e+02, 1.0800000000e+02, +1.0800000000e+02, 1.0000000000e+02, 9.6000000000e+01, 9.0000000000e+01, 9.0000000000e+01, 8.0000000000e+01, 7.5000000000e+01, 7.2000000000e+01, +6.4000000000e+01, 6.0000000000e+01, 5.0000000000e+01, 4.5000000000e+01, 4.0000000000e+01, 3.6000000000e+01, 2.7000000000e+01, 2.0000000000e+01 +} # unsigned pl +====================== SECTION3 ( length=772, padding=0 ) ====================== +1-3 section3Length = 772 +4 numberOfUnusedBitsAtEndOfSection3 = 14 +5-6 tableReference = 0 +7-772 bitmap = 766 { + ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, + ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, + ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, + ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, + ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, + ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, ff, + ff, ff, ff, ff + ... 665 more values + } # g1bitmap bitmap +====================== SECTION_4 ( length=9948, padding=0 ) ====================== +1-3 section4Length = 9948 +4 dataFlag = 14 [00001110] +5-6 binaryScaleFactor = -6 +7-10 referenceValue = 160.252 +11 bitsPerValue = 13 +12-9948 codedValues = (6114,9937) { +1.9907963562e+02, 1.9872026062e+02, 1.9851713562e+02, 1.9839213562e+02, 1.9822026062e+02, 1.9798588562e+02, 1.9770463562e+02, 1.9747026062e+02, +1.9737651062e+02, 1.9740776062e+02, 1.9756401062e+02, 1.9787651062e+02, 1.9839213562e+02, 1.9907963562e+02, 1.9979838562e+02, 2.0034526062e+02, +2.0059526062e+02, 2.0053276062e+02, 2.0015776062e+02, 1.9959526062e+02, 1.9984526062e+02, 1.9959526062e+02, 1.9954838562e+02, 1.9943901062e+02, +1.9940776062e+02, 1.9926713562e+02, 1.9875151062e+02, 1.9789213562e+02, 1.9698588562e+02, 1.9642338562e+02, 1.9637651062e+02, 1.9679838562e+02, +1.9737651062e+02, 1.9782963562e+02, 1.9806401062e+02, 1.9814213562e+02, 1.9843901062e+02, 1.9925151062e+02, 2.0065776062e+02, 2.0222026062e+02, +2.0334526062e+02, 2.0389213562e+02, 2.0420463562e+02, 2.0442338562e+02, 2.0404838562e+02, 2.0265776062e+02, 2.0090776062e+02, 2.0176713562e+02, +2.0101713562e+02, 2.0039213562e+02, 1.9961088562e+02, 1.9925151062e+02, 1.9940776062e+02, 1.9934526062e+02, 1.9872026062e+02, 1.9790776062e+02, +1.9725151062e+02, 1.9670463562e+02, 1.9623588562e+02, 1.9597026062e+02, 1.9595463562e+02, 1.9612651062e+02, 1.9645463562e+02, 1.9692338562e+02, +1.9750151062e+02, 1.9809526062e+02, 1.9845463562e+02, 1.9845463562e+02, 1.9829838562e+02, 1.9837651062e+02, 1.9882963562e+02, 1.9993901062e+02, +2.0181401062e+02, 2.0401713562e+02, 2.0581401062e+02, 2.0700151062e+02, 2.0781401062e+02, 2.0848588562e+02, 2.0926713562e+02, 2.0973588562e+02, +2.0887651062e+02, 2.0640776062e+02, 2.0356401062e+02, 2.0676713562e+02, 2.0443901062e+02, 2.0272026062e+02, 2.0140776062e+02, 2.0081401062e+02, +2.0068901062e+02, 1.9993901062e+02, 1.9834526062e+02, 1.9704838562e+02, 1.9695463562e+02, 1.9770463562e+02, 1.9812651062e+02, 1.9779838562e+02, +1.9726713562e+02, 1.9690776062e+02, 1.9653276062e+02, 1.9626713562e+02 +... 6014 more values +} # data_g1simple_packing codedValues +====================== SECTION_5 ( length=4, padding=0 ) ====================== +1-4 7777 = 7777 diff --git a/data/filter_rules b/data/filter_rules new file mode 100644 index 000000000..55f91a276 --- /dev/null +++ b/data/filter_rules @@ -0,0 +1,130 @@ +# Geopotential height +if ( ( level == 500 || level == 1000 ) && indicatorOfParameter == 7 ) { + print "found indicatorOfParameter=[indicatorOfParameter] level=[level] date=[date]"; + transient oldtype = type ; + set identificationOfOriginatingGeneratingSubCentre = 98 ; + set gribTablesVersionNo = 128; + set indicatorOfParameter = 129 ; + set localDefinitionNumber = 1 ; + set marsClass="od"; + set marsStream="kwbc"; + # Negatively/Positively Perturbed Forecast + if ( oldtype == 2 || oldtype == 3 ) { + set marsType="pf"; + set experimentVersionNumber="4001"; + } + # Control Forecast + if ( oldtype == 1 ) { + set marsType="cf"; + set experimentVersionNumber="0001"; + } + set numberOfForecastsInEnsemble=11; + write; + write "[indicatorOfParameter].grib"; + print "indicatorOfParameter=[indicatorOfParameter] level=[level] date=[date]"; + print; +} + +# U wind +if ( level == 250 && indicatorOfParameter == 33 ) { + print "found indicatorOfParameter=[indicatorOfParameter] level=[level] date=[date]"; + transient oldtype = type ; + set identificationOfOriginatingGeneratingSubCentre=98; + set gribTablesVersionNo = 128; + set indicatorOfParameter = 131 ; + set localDefinitionNumber=1; + set marsClass="od"; + set marsStream="kwbc"; + # Negatively/Positively Perturbed Forecast + if ( oldtype == 2 || oldtype == 3 ) { + set marsType="pf"; + set experimentVersionNumber="4001"; + } + # Control Forecast + if ( oldtype == 1 ) { + set marsType="cf"; + set experimentVersionNumber="0001"; + } + set numberOfForecastsInEnsemble=11; + write ; + print "indicatorOfParameter=[indicatorOfParameter] level=[level] date=[date]"; + print; +} + +# V wind +if ( level == 250 && indicatorOfParameter == 34 ) { + print "found indicatorOfParameter=[indicatorOfParameter] level=[level] date=[date]"; + transient oldtype = type ; + set identificationOfOriginatingGeneratingSubCentre=98; + set gribTablesVersionNo = 128; + set indicatorOfParameter = 132; + set localDefinitionNumber=1; + set marsClass="od"; + set marsStream="kwbc"; + # Negatively/Positively Perturbed Forecast + if ( oldtype == 2 || oldtype == 3 ) { + set marsType="pf"; + set experimentVersionNumber="4001"; + } + # Control Forecast + if ( oldtype == 1 ) { + set marsType="cf"; + set experimentVersionNumber="0001"; + } + set numberOfForecastsInEnsemble=11; + write ; + print "indicatorOfParameter=[indicatorOfParameter] level=[level] date=[date]"; + print; +} + +# Relative humidity +if ( level == 700 && indicatorOfParameter == 52 ) { + print "found indicatorOfParameter=[indicatorOfParameter] level=[level] date=[date]"; + transient oldtype = type ; + set identificationOfOriginatingGeneratingSubCentre = 98; + set gribTablesVersionNo = 128; + set indicatorOfParameter = 157 ; + set localDefinitionNumber=1; + set marsClass="od"; + set marsStream="kwbc"; + # Negatively/Positively Perturbed Forecast + if ( oldtype == 2 || oldtype == 3 ) { + set marsType="pf"; + set experimentVersionNumber="4001"; + } + # Control Forecast + if ( oldtype == 1 ) { + set marsType="cf"; + set experimentVersionNumber="0001"; + } + set numberOfForecastsInEnsemble=11; + write; + print "indicatorOfParameter=[indicatorOfParameter] level=[level] date=[date]"; + print; +} + +# Temperature +if ( level == 850 && indicatorOfParameter == 11 ) { + print "found indicatorOfParameter=[indicatorOfParameter] level=[level] date=[date]"; + transient oldtype = type ; + set identificationOfOriginatingGeneratingSubCentre=98; + set gribTablesVersionNo = 128; + set indicatorOfParameter = 130; + set localDefinitionNumber=1; + set marsClass="od"; + set marsStream="kwbc"; + # Negatively/Positively Perturbed Forecast + if ( oldtype == 2 || oldtype == 3 ) { + set marsType="pf"; + set experimentVersionNumber="4001"; + } + # Control Forecast + if ( oldtype == 1 ) { + set marsType="cf"; + set experimentVersionNumber="0001"; + } + set numberOfForecastsInEnsemble=11; + write; + print "indicatorOfParameter=[indicatorOfParameter] level=[level] date=[date]"; + print; +} diff --git a/data/ieee_test.good b/data/ieee_test.good new file mode 100644 index 000000000..8a6500813 --- /dev/null +++ b/data/ieee_test.good @@ -0,0 +1 @@ +1.23457e-36 2.34567e-36 1.23457e-36 2.34567e-36 1.23457e-36 2.34567e-36 diff --git a/data/index.ok b/data/index.ok new file mode 100644 index 000000000..bc333e59a --- /dev/null +++ b/data/index.ok @@ -0,0 +1,395 @@ +indexing... +end indexing... +stepSize=4 +12 24 48 60 +levelSize=12 +10 50 100 200 250 300 400 500 700 850 925 1000 +numberSize=4 +1 2 3 4 +shortNameSize=2 +t z +shortName=t level=10 number=1 step=12 +shortName=t level=10 number=1 step=24 +shortName=t level=10 number=1 step=48 +shortName=t level=10 number=1 step=60 +shortName=t level=10 number=2 step=12 +shortName=t level=10 number=2 step=24 +shortName=t level=10 number=2 step=48 +shortName=t level=10 number=2 step=60 +shortName=t level=10 number=3 step=12 +shortName=t level=10 number=3 step=24 +shortName=t level=10 number=3 step=48 +shortName=t level=10 number=3 step=60 +shortName=t level=10 number=4 step=12 +shortName=t level=10 number=4 step=24 +shortName=t level=10 number=4 step=48 +shortName=t level=10 number=4 step=60 +shortName=t level=50 number=1 step=12 +shortName=t level=50 number=1 step=24 +shortName=t level=50 number=1 step=48 +shortName=t level=50 number=1 step=60 +shortName=t level=50 number=2 step=12 +shortName=t level=50 number=2 step=24 +shortName=t level=50 number=2 step=48 +shortName=t level=50 number=2 step=60 +shortName=t level=50 number=3 step=12 +shortName=t level=50 number=3 step=24 +shortName=t level=50 number=3 step=48 +shortName=t level=50 number=3 step=60 +shortName=t level=50 number=4 step=12 +shortName=t level=50 number=4 step=24 +shortName=t level=50 number=4 step=48 +shortName=t level=50 number=4 step=60 +shortName=t level=100 number=1 step=12 +shortName=t level=100 number=1 step=24 +shortName=t level=100 number=1 step=48 +shortName=t level=100 number=1 step=60 +shortName=t level=100 number=2 step=12 +shortName=t level=100 number=2 step=24 +shortName=t level=100 number=2 step=48 +shortName=t level=100 number=2 step=60 +shortName=t level=100 number=3 step=12 +shortName=t level=100 number=3 step=24 +shortName=t level=100 number=3 step=48 +shortName=t level=100 number=3 step=60 +shortName=t level=100 number=4 step=12 +shortName=t level=100 number=4 step=24 +shortName=t level=100 number=4 step=48 +shortName=t level=100 number=4 step=60 +shortName=t level=200 number=1 step=12 +shortName=t level=200 number=1 step=24 +shortName=t level=200 number=1 step=48 +shortName=t level=200 number=1 step=60 +shortName=t level=200 number=2 step=12 +shortName=t level=200 number=2 step=24 +shortName=t level=200 number=2 step=48 +shortName=t level=200 number=2 step=60 +shortName=t level=200 number=3 step=12 +shortName=t level=200 number=3 step=24 +shortName=t level=200 number=3 step=48 +shortName=t level=200 number=3 step=60 +shortName=t level=200 number=4 step=12 +shortName=t level=200 number=4 step=24 +shortName=t level=200 number=4 step=48 +shortName=t level=200 number=4 step=60 +shortName=t level=250 number=1 step=12 +shortName=t level=250 number=1 step=24 +shortName=t level=250 number=1 step=48 +shortName=t level=250 number=1 step=60 +shortName=t level=250 number=2 step=12 +shortName=t level=250 number=2 step=24 +shortName=t level=250 number=2 step=48 +shortName=t level=250 number=2 step=60 +shortName=t level=250 number=3 step=12 +shortName=t level=250 number=3 step=24 +shortName=t level=250 number=3 step=48 +shortName=t level=250 number=3 step=60 +shortName=t level=250 number=4 step=12 +shortName=t level=250 number=4 step=24 +shortName=t level=250 number=4 step=48 +shortName=t level=250 number=4 step=60 +shortName=t level=300 number=1 step=12 +shortName=t level=300 number=1 step=24 +shortName=t level=300 number=1 step=48 +shortName=t level=300 number=1 step=60 +shortName=t level=300 number=2 step=12 +shortName=t level=300 number=2 step=24 +shortName=t level=300 number=2 step=48 +shortName=t level=300 number=2 step=60 +shortName=t level=300 number=3 step=12 +shortName=t level=300 number=3 step=24 +shortName=t level=300 number=3 step=48 +shortName=t level=300 number=3 step=60 +shortName=t level=300 number=4 step=12 +shortName=t level=300 number=4 step=24 +shortName=t level=300 number=4 step=48 +shortName=t level=300 number=4 step=60 +shortName=t level=400 number=1 step=12 +shortName=t level=400 number=1 step=24 +shortName=t level=400 number=1 step=48 +shortName=t level=400 number=1 step=60 +shortName=t level=400 number=2 step=12 +shortName=t level=400 number=2 step=24 +shortName=t level=400 number=2 step=48 +shortName=t level=400 number=2 step=60 +shortName=t level=400 number=3 step=12 +shortName=t level=400 number=3 step=24 +shortName=t level=400 number=3 step=48 +shortName=t level=400 number=3 step=60 +shortName=t level=400 number=4 step=12 +shortName=t level=400 number=4 step=24 +shortName=t level=400 number=4 step=48 +shortName=t level=400 number=4 step=60 +shortName=t level=500 number=1 step=12 +shortName=t level=500 number=1 step=24 +shortName=t level=500 number=1 step=48 +shortName=t level=500 number=1 step=60 +shortName=t level=500 number=2 step=12 +shortName=t level=500 number=2 step=24 +shortName=t level=500 number=2 step=48 +shortName=t level=500 number=2 step=60 +shortName=t level=500 number=3 step=12 +shortName=t level=500 number=3 step=24 +shortName=t level=500 number=3 step=48 +shortName=t level=500 number=3 step=60 +shortName=t level=500 number=4 step=12 +shortName=t level=500 number=4 step=24 +shortName=t level=500 number=4 step=48 +shortName=t level=500 number=4 step=60 +shortName=t level=700 number=1 step=12 +shortName=t level=700 number=1 step=24 +shortName=t level=700 number=1 step=48 +shortName=t level=700 number=1 step=60 +shortName=t level=700 number=2 step=12 +shortName=t level=700 number=2 step=24 +shortName=t level=700 number=2 step=48 +shortName=t level=700 number=2 step=60 +shortName=t level=700 number=3 step=12 +shortName=t level=700 number=3 step=24 +shortName=t level=700 number=3 step=48 +shortName=t level=700 number=3 step=60 +shortName=t level=700 number=4 step=12 +shortName=t level=700 number=4 step=24 +shortName=t level=700 number=4 step=48 +shortName=t level=700 number=4 step=60 +shortName=t level=850 number=1 step=12 +shortName=t level=850 number=1 step=24 +shortName=t level=850 number=1 step=48 +shortName=t level=850 number=1 step=60 +shortName=t level=850 number=2 step=12 +shortName=t level=850 number=2 step=24 +shortName=t level=850 number=2 step=48 +shortName=t level=850 number=2 step=60 +shortName=t level=850 number=3 step=12 +shortName=t level=850 number=3 step=24 +shortName=t level=850 number=3 step=48 +shortName=t level=850 number=3 step=60 +shortName=t level=850 number=4 step=12 +shortName=t level=850 number=4 step=24 +shortName=t level=850 number=4 step=48 +shortName=t level=850 number=4 step=60 +shortName=t level=925 number=1 step=12 +shortName=t level=925 number=1 step=24 +shortName=t level=925 number=1 step=48 +shortName=t level=925 number=1 step=60 +shortName=t level=925 number=2 step=12 +shortName=t level=925 number=2 step=24 +shortName=t level=925 number=2 step=48 +shortName=t level=925 number=2 step=60 +shortName=t level=925 number=3 step=12 +shortName=t level=925 number=3 step=24 +shortName=t level=925 number=3 step=48 +shortName=t level=925 number=3 step=60 +shortName=t level=925 number=4 step=12 +shortName=t level=925 number=4 step=24 +shortName=t level=925 number=4 step=48 +shortName=t level=925 number=4 step=60 +shortName=t level=1000 number=1 step=12 +shortName=t level=1000 number=1 step=24 +shortName=t level=1000 number=1 step=48 +shortName=t level=1000 number=1 step=60 +shortName=t level=1000 number=2 step=12 +shortName=t level=1000 number=2 step=24 +shortName=t level=1000 number=2 step=48 +shortName=t level=1000 number=2 step=60 +shortName=t level=1000 number=3 step=12 +shortName=t level=1000 number=3 step=24 +shortName=t level=1000 number=3 step=48 +shortName=t level=1000 number=3 step=60 +shortName=t level=1000 number=4 step=12 +shortName=t level=1000 number=4 step=24 +shortName=t level=1000 number=4 step=48 +shortName=t level=1000 number=4 step=60 +shortName=z level=10 number=1 step=12 +shortName=z level=10 number=1 step=24 +shortName=z level=10 number=1 step=48 +shortName=z level=10 number=1 step=60 +shortName=z level=10 number=2 step=12 +shortName=z level=10 number=2 step=24 +shortName=z level=10 number=2 step=48 +shortName=z level=10 number=2 step=60 +shortName=z level=10 number=3 step=12 +shortName=z level=10 number=3 step=24 +shortName=z level=10 number=3 step=48 +shortName=z level=10 number=3 step=60 +shortName=z level=10 number=4 step=12 +shortName=z level=10 number=4 step=24 +shortName=z level=10 number=4 step=48 +shortName=z level=10 number=4 step=60 +shortName=z level=50 number=1 step=12 +shortName=z level=50 number=1 step=24 +shortName=z level=50 number=1 step=48 +shortName=z level=50 number=1 step=60 +shortName=z level=50 number=2 step=12 +shortName=z level=50 number=2 step=24 +shortName=z level=50 number=2 step=48 +shortName=z level=50 number=2 step=60 +shortName=z level=50 number=3 step=12 +shortName=z level=50 number=3 step=24 +shortName=z level=50 number=3 step=48 +shortName=z level=50 number=3 step=60 +shortName=z level=50 number=4 step=12 +shortName=z level=50 number=4 step=24 +shortName=z level=50 number=4 step=48 +shortName=z level=50 number=4 step=60 +shortName=z level=100 number=1 step=12 +shortName=z level=100 number=1 step=24 +shortName=z level=100 number=1 step=48 +shortName=z level=100 number=1 step=60 +shortName=z level=100 number=2 step=12 +shortName=z level=100 number=2 step=24 +shortName=z level=100 number=2 step=48 +shortName=z level=100 number=2 step=60 +shortName=z level=100 number=3 step=12 +shortName=z level=100 number=3 step=24 +shortName=z level=100 number=3 step=48 +shortName=z level=100 number=3 step=60 +shortName=z level=100 number=4 step=12 +shortName=z level=100 number=4 step=24 +shortName=z level=100 number=4 step=48 +shortName=z level=100 number=4 step=60 +shortName=z level=200 number=1 step=12 +shortName=z level=200 number=1 step=24 +shortName=z level=200 number=1 step=48 +shortName=z level=200 number=1 step=60 +shortName=z level=200 number=2 step=12 +shortName=z level=200 number=2 step=24 +shortName=z level=200 number=2 step=48 +shortName=z level=200 number=2 step=60 +shortName=z level=200 number=3 step=12 +shortName=z level=200 number=3 step=24 +shortName=z level=200 number=3 step=48 +shortName=z level=200 number=3 step=60 +shortName=z level=200 number=4 step=12 +shortName=z level=200 number=4 step=24 +shortName=z level=200 number=4 step=48 +shortName=z level=200 number=4 step=60 +shortName=z level=250 number=1 step=12 +shortName=z level=250 number=1 step=24 +shortName=z level=250 number=1 step=48 +shortName=z level=250 number=1 step=60 +shortName=z level=250 number=2 step=12 +shortName=z level=250 number=2 step=24 +shortName=z level=250 number=2 step=48 +shortName=z level=250 number=2 step=60 +shortName=z level=250 number=3 step=12 +shortName=z level=250 number=3 step=24 +shortName=z level=250 number=3 step=48 +shortName=z level=250 number=3 step=60 +shortName=z level=250 number=4 step=12 +shortName=z level=250 number=4 step=24 +shortName=z level=250 number=4 step=48 +shortName=z level=250 number=4 step=60 +shortName=z level=300 number=1 step=12 +shortName=z level=300 number=1 step=24 +shortName=z level=300 number=1 step=48 +shortName=z level=300 number=1 step=60 +shortName=z level=300 number=2 step=12 +shortName=z level=300 number=2 step=24 +shortName=z level=300 number=2 step=48 +shortName=z level=300 number=2 step=60 +shortName=z level=300 number=3 step=12 +shortName=z level=300 number=3 step=24 +shortName=z level=300 number=3 step=48 +shortName=z level=300 number=3 step=60 +shortName=z level=300 number=4 step=12 +shortName=z level=300 number=4 step=24 +shortName=z level=300 number=4 step=48 +shortName=z level=300 number=4 step=60 +shortName=z level=400 number=1 step=12 +shortName=z level=400 number=1 step=24 +shortName=z level=400 number=1 step=48 +shortName=z level=400 number=1 step=60 +shortName=z level=400 number=2 step=12 +shortName=z level=400 number=2 step=24 +shortName=z level=400 number=2 step=48 +shortName=z level=400 number=2 step=60 +shortName=z level=400 number=3 step=12 +shortName=z level=400 number=3 step=24 +shortName=z level=400 number=3 step=48 +shortName=z level=400 number=3 step=60 +shortName=z level=400 number=4 step=12 +shortName=z level=400 number=4 step=24 +shortName=z level=400 number=4 step=48 +shortName=z level=400 number=4 step=60 +shortName=z level=500 number=1 step=12 +shortName=z level=500 number=1 step=24 +shortName=z level=500 number=1 step=48 +shortName=z level=500 number=1 step=60 +shortName=z level=500 number=2 step=12 +shortName=z level=500 number=2 step=24 +shortName=z level=500 number=2 step=48 +shortName=z level=500 number=2 step=60 +shortName=z level=500 number=3 step=12 +shortName=z level=500 number=3 step=24 +shortName=z level=500 number=3 step=48 +shortName=z level=500 number=3 step=60 +shortName=z level=500 number=4 step=12 +shortName=z level=500 number=4 step=24 +shortName=z level=500 number=4 step=48 +shortName=z level=500 number=4 step=60 +shortName=z level=700 number=1 step=12 +shortName=z level=700 number=1 step=24 +shortName=z level=700 number=1 step=48 +shortName=z level=700 number=1 step=60 +shortName=z level=700 number=2 step=12 +shortName=z level=700 number=2 step=24 +shortName=z level=700 number=2 step=48 +shortName=z level=700 number=2 step=60 +shortName=z level=700 number=3 step=12 +shortName=z level=700 number=3 step=24 +shortName=z level=700 number=3 step=48 +shortName=z level=700 number=3 step=60 +shortName=z level=700 number=4 step=12 +shortName=z level=700 number=4 step=24 +shortName=z level=700 number=4 step=48 +shortName=z level=700 number=4 step=60 +shortName=z level=850 number=1 step=12 +shortName=z level=850 number=1 step=24 +shortName=z level=850 number=1 step=48 +shortName=z level=850 number=1 step=60 +shortName=z level=850 number=2 step=12 +shortName=z level=850 number=2 step=24 +shortName=z level=850 number=2 step=48 +shortName=z level=850 number=2 step=60 +shortName=z level=850 number=3 step=12 +shortName=z level=850 number=3 step=24 +shortName=z level=850 number=3 step=48 +shortName=z level=850 number=3 step=60 +shortName=z level=850 number=4 step=12 +shortName=z level=850 number=4 step=24 +shortName=z level=850 number=4 step=48 +shortName=z level=850 number=4 step=60 +shortName=z level=925 number=1 step=12 +shortName=z level=925 number=1 step=24 +shortName=z level=925 number=1 step=48 +shortName=z level=925 number=1 step=60 +shortName=z level=925 number=2 step=12 +shortName=z level=925 number=2 step=24 +shortName=z level=925 number=2 step=48 +shortName=z level=925 number=2 step=60 +shortName=z level=925 number=3 step=12 +shortName=z level=925 number=3 step=24 +shortName=z level=925 number=3 step=48 +shortName=z level=925 number=3 step=60 +shortName=z level=925 number=4 step=12 +shortName=z level=925 number=4 step=24 +shortName=z level=925 number=4 step=48 +shortName=z level=925 number=4 step=60 +shortName=z level=1000 number=1 step=12 +shortName=z level=1000 number=1 step=24 +shortName=z level=1000 number=1 step=48 +shortName=z level=1000 number=1 step=60 +shortName=z level=1000 number=2 step=12 +shortName=z level=1000 number=2 step=24 +shortName=z level=1000 number=2 step=48 +shortName=z level=1000 number=2 step=60 +shortName=z level=1000 number=3 step=12 +shortName=z level=1000 number=3 step=24 +shortName=z level=1000 number=3 step=48 +shortName=z level=1000 number=3 step=60 +shortName=z level=1000 number=4 step=12 +shortName=z level=1000 number=4 step=24 +shortName=z level=1000 number=4 step=48 +shortName=z level=1000 number=4 step=60 + 384 messages selected diff --git a/data/index_f90.ok b/data/index_f90.ok new file mode 100644 index 000000000..ebe0c9ac7 --- /dev/null +++ b/data/index_f90.ok @@ -0,0 +1,389 @@ +shortNameSize= 2 +numberSize= 4 +levelSize= 12 +stepSize= 4 +shortName=t number= 1 level= 10 step= 12 +shortName=z number= 1 level= 10 step= 12 +shortName=t number= 1 level= 50 step= 12 +shortName=z number= 1 level= 50 step= 12 +shortName=t number= 1 level= 100 step= 12 +shortName=z number= 1 level= 100 step= 12 +shortName=t number= 1 level= 200 step= 12 +shortName=z number= 1 level= 200 step= 12 +shortName=t number= 1 level= 250 step= 12 +shortName=z number= 1 level= 250 step= 12 +shortName=t number= 1 level= 300 step= 12 +shortName=z number= 1 level= 300 step= 12 +shortName=t number= 1 level= 400 step= 12 +shortName=z number= 1 level= 400 step= 12 +shortName=t number= 1 level= 500 step= 12 +shortName=z number= 1 level= 500 step= 12 +shortName=t number= 1 level= 700 step= 12 +shortName=z number= 1 level= 700 step= 12 +shortName=t number= 1 level= 850 step= 12 +shortName=z number= 1 level= 850 step= 12 +shortName=t number= 1 level= 925 step= 12 +shortName=z number= 1 level= 925 step= 12 +shortName=t number= 1 level=1000 step= 12 +shortName=z number= 1 level=1000 step= 12 +shortName=t number= 2 level= 10 step= 12 +shortName=z number= 2 level= 10 step= 12 +shortName=t number= 2 level= 50 step= 12 +shortName=z number= 2 level= 50 step= 12 +shortName=t number= 2 level= 100 step= 12 +shortName=z number= 2 level= 100 step= 12 +shortName=t number= 2 level= 200 step= 12 +shortName=z number= 2 level= 200 step= 12 +shortName=t number= 2 level= 250 step= 12 +shortName=z number= 2 level= 250 step= 12 +shortName=t number= 2 level= 300 step= 12 +shortName=z number= 2 level= 300 step= 12 +shortName=t number= 2 level= 400 step= 12 +shortName=z number= 2 level= 400 step= 12 +shortName=t number= 2 level= 500 step= 12 +shortName=z number= 2 level= 500 step= 12 +shortName=t number= 2 level= 700 step= 12 +shortName=z number= 2 level= 700 step= 12 +shortName=t number= 2 level= 850 step= 12 +shortName=z number= 2 level= 850 step= 12 +shortName=t number= 2 level= 925 step= 12 +shortName=z number= 2 level= 925 step= 12 +shortName=t number= 2 level=1000 step= 12 +shortName=z number= 2 level=1000 step= 12 +shortName=t number= 3 level= 10 step= 12 +shortName=z number= 3 level= 10 step= 12 +shortName=t number= 3 level= 50 step= 12 +shortName=z number= 3 level= 50 step= 12 +shortName=t number= 3 level= 100 step= 12 +shortName=z number= 3 level= 100 step= 12 +shortName=t number= 3 level= 200 step= 12 +shortName=z number= 3 level= 200 step= 12 +shortName=t number= 3 level= 250 step= 12 +shortName=z number= 3 level= 250 step= 12 +shortName=t number= 3 level= 300 step= 12 +shortName=z number= 3 level= 300 step= 12 +shortName=t number= 3 level= 400 step= 12 +shortName=z number= 3 level= 400 step= 12 +shortName=t number= 3 level= 500 step= 12 +shortName=z number= 3 level= 500 step= 12 +shortName=t number= 3 level= 700 step= 12 +shortName=z number= 3 level= 700 step= 12 +shortName=t number= 3 level= 850 step= 12 +shortName=z number= 3 level= 850 step= 12 +shortName=t number= 3 level= 925 step= 12 +shortName=z number= 3 level= 925 step= 12 +shortName=t number= 3 level=1000 step= 12 +shortName=z number= 3 level=1000 step= 12 +shortName=t number= 4 level= 10 step= 12 +shortName=z number= 4 level= 10 step= 12 +shortName=t number= 4 level= 50 step= 12 +shortName=z number= 4 level= 50 step= 12 +shortName=t number= 4 level= 100 step= 12 +shortName=z number= 4 level= 100 step= 12 +shortName=t number= 4 level= 200 step= 12 +shortName=z number= 4 level= 200 step= 12 +shortName=t number= 4 level= 250 step= 12 +shortName=z number= 4 level= 250 step= 12 +shortName=t number= 4 level= 300 step= 12 +shortName=z number= 4 level= 300 step= 12 +shortName=t number= 4 level= 400 step= 12 +shortName=z number= 4 level= 400 step= 12 +shortName=t number= 4 level= 500 step= 12 +shortName=z number= 4 level= 500 step= 12 +shortName=t number= 4 level= 700 step= 12 +shortName=z number= 4 level= 700 step= 12 +shortName=t number= 4 level= 850 step= 12 +shortName=z number= 4 level= 850 step= 12 +shortName=t number= 4 level= 925 step= 12 +shortName=z number= 4 level= 925 step= 12 +shortName=t number= 4 level=1000 step= 12 +shortName=z number= 4 level=1000 step= 12 +shortName=t number= 1 level= 10 step= 24 +shortName=z number= 1 level= 10 step= 24 +shortName=t number= 1 level= 50 step= 24 +shortName=z number= 1 level= 50 step= 24 +shortName=t number= 1 level= 100 step= 24 +shortName=z number= 1 level= 100 step= 24 +shortName=t number= 1 level= 200 step= 24 +shortName=z number= 1 level= 200 step= 24 +shortName=t number= 1 level= 250 step= 24 +shortName=z number= 1 level= 250 step= 24 +shortName=t number= 1 level= 300 step= 24 +shortName=z number= 1 level= 300 step= 24 +shortName=t number= 1 level= 400 step= 24 +shortName=z number= 1 level= 400 step= 24 +shortName=t number= 1 level= 500 step= 24 +shortName=z number= 1 level= 500 step= 24 +shortName=t number= 1 level= 700 step= 24 +shortName=z number= 1 level= 700 step= 24 +shortName=t number= 1 level= 850 step= 24 +shortName=z number= 1 level= 850 step= 24 +shortName=t number= 1 level= 925 step= 24 +shortName=z number= 1 level= 925 step= 24 +shortName=t number= 1 level=1000 step= 24 +shortName=z number= 1 level=1000 step= 24 +shortName=t number= 2 level= 10 step= 24 +shortName=z number= 2 level= 10 step= 24 +shortName=t number= 2 level= 50 step= 24 +shortName=z number= 2 level= 50 step= 24 +shortName=t number= 2 level= 100 step= 24 +shortName=z number= 2 level= 100 step= 24 +shortName=t number= 2 level= 200 step= 24 +shortName=z number= 2 level= 200 step= 24 +shortName=t number= 2 level= 250 step= 24 +shortName=z number= 2 level= 250 step= 24 +shortName=t number= 2 level= 300 step= 24 +shortName=z number= 2 level= 300 step= 24 +shortName=t number= 2 level= 400 step= 24 +shortName=z number= 2 level= 400 step= 24 +shortName=t number= 2 level= 500 step= 24 +shortName=z number= 2 level= 500 step= 24 +shortName=t number= 2 level= 700 step= 24 +shortName=z number= 2 level= 700 step= 24 +shortName=t number= 2 level= 850 step= 24 +shortName=z number= 2 level= 850 step= 24 +shortName=t number= 2 level= 925 step= 24 +shortName=z number= 2 level= 925 step= 24 +shortName=t number= 2 level=1000 step= 24 +shortName=z number= 2 level=1000 step= 24 +shortName=t number= 3 level= 10 step= 24 +shortName=z number= 3 level= 10 step= 24 +shortName=t number= 3 level= 50 step= 24 +shortName=z number= 3 level= 50 step= 24 +shortName=t number= 3 level= 100 step= 24 +shortName=z number= 3 level= 100 step= 24 +shortName=t number= 3 level= 200 step= 24 +shortName=z number= 3 level= 200 step= 24 +shortName=t number= 3 level= 250 step= 24 +shortName=z number= 3 level= 250 step= 24 +shortName=t number= 3 level= 300 step= 24 +shortName=z number= 3 level= 300 step= 24 +shortName=t number= 3 level= 400 step= 24 +shortName=z number= 3 level= 400 step= 24 +shortName=t number= 3 level= 500 step= 24 +shortName=z number= 3 level= 500 step= 24 +shortName=t number= 3 level= 700 step= 24 +shortName=z number= 3 level= 700 step= 24 +shortName=t number= 3 level= 850 step= 24 +shortName=z number= 3 level= 850 step= 24 +shortName=t number= 3 level= 925 step= 24 +shortName=z number= 3 level= 925 step= 24 +shortName=t number= 3 level=1000 step= 24 +shortName=z number= 3 level=1000 step= 24 +shortName=t number= 4 level= 10 step= 24 +shortName=z number= 4 level= 10 step= 24 +shortName=t number= 4 level= 50 step= 24 +shortName=z number= 4 level= 50 step= 24 +shortName=t number= 4 level= 100 step= 24 +shortName=z number= 4 level= 100 step= 24 +shortName=t number= 4 level= 200 step= 24 +shortName=z number= 4 level= 200 step= 24 +shortName=t number= 4 level= 250 step= 24 +shortName=z number= 4 level= 250 step= 24 +shortName=t number= 4 level= 300 step= 24 +shortName=z number= 4 level= 300 step= 24 +shortName=t number= 4 level= 400 step= 24 +shortName=z number= 4 level= 400 step= 24 +shortName=t number= 4 level= 500 step= 24 +shortName=z number= 4 level= 500 step= 24 +shortName=t number= 4 level= 700 step= 24 +shortName=z number= 4 level= 700 step= 24 +shortName=t number= 4 level= 850 step= 24 +shortName=z number= 4 level= 850 step= 24 +shortName=t number= 4 level= 925 step= 24 +shortName=z number= 4 level= 925 step= 24 +shortName=t number= 4 level=1000 step= 24 +shortName=z number= 4 level=1000 step= 24 +shortName=t number= 1 level= 10 step= 48 +shortName=z number= 1 level= 10 step= 48 +shortName=t number= 1 level= 50 step= 48 +shortName=z number= 1 level= 50 step= 48 +shortName=t number= 1 level= 100 step= 48 +shortName=z number= 1 level= 100 step= 48 +shortName=t number= 1 level= 200 step= 48 +shortName=z number= 1 level= 200 step= 48 +shortName=t number= 1 level= 250 step= 48 +shortName=z number= 1 level= 250 step= 48 +shortName=t number= 1 level= 300 step= 48 +shortName=z number= 1 level= 300 step= 48 +shortName=t number= 1 level= 400 step= 48 +shortName=z number= 1 level= 400 step= 48 +shortName=t number= 1 level= 500 step= 48 +shortName=z number= 1 level= 500 step= 48 +shortName=t number= 1 level= 700 step= 48 +shortName=z number= 1 level= 700 step= 48 +shortName=t number= 1 level= 850 step= 48 +shortName=z number= 1 level= 850 step= 48 +shortName=t number= 1 level= 925 step= 48 +shortName=z number= 1 level= 925 step= 48 +shortName=t number= 1 level=1000 step= 48 +shortName=z number= 1 level=1000 step= 48 +shortName=t number= 2 level= 10 step= 48 +shortName=z number= 2 level= 10 step= 48 +shortName=t number= 2 level= 50 step= 48 +shortName=z number= 2 level= 50 step= 48 +shortName=t number= 2 level= 100 step= 48 +shortName=z number= 2 level= 100 step= 48 +shortName=t number= 2 level= 200 step= 48 +shortName=z number= 2 level= 200 step= 48 +shortName=t number= 2 level= 250 step= 48 +shortName=z number= 2 level= 250 step= 48 +shortName=t number= 2 level= 300 step= 48 +shortName=z number= 2 level= 300 step= 48 +shortName=t number= 2 level= 400 step= 48 +shortName=z number= 2 level= 400 step= 48 +shortName=t number= 2 level= 500 step= 48 +shortName=z number= 2 level= 500 step= 48 +shortName=t number= 2 level= 700 step= 48 +shortName=z number= 2 level= 700 step= 48 +shortName=t number= 2 level= 850 step= 48 +shortName=z number= 2 level= 850 step= 48 +shortName=t number= 2 level= 925 step= 48 +shortName=z number= 2 level= 925 step= 48 +shortName=t number= 2 level=1000 step= 48 +shortName=z number= 2 level=1000 step= 48 +shortName=t number= 3 level= 10 step= 48 +shortName=z number= 3 level= 10 step= 48 +shortName=t number= 3 level= 50 step= 48 +shortName=z number= 3 level= 50 step= 48 +shortName=t number= 3 level= 100 step= 48 +shortName=z number= 3 level= 100 step= 48 +shortName=t number= 3 level= 200 step= 48 +shortName=z number= 3 level= 200 step= 48 +shortName=t number= 3 level= 250 step= 48 +shortName=z number= 3 level= 250 step= 48 +shortName=t number= 3 level= 300 step= 48 +shortName=z number= 3 level= 300 step= 48 +shortName=t number= 3 level= 400 step= 48 +shortName=z number= 3 level= 400 step= 48 +shortName=t number= 3 level= 500 step= 48 +shortName=z number= 3 level= 500 step= 48 +shortName=t number= 3 level= 700 step= 48 +shortName=z number= 3 level= 700 step= 48 +shortName=t number= 3 level= 850 step= 48 +shortName=z number= 3 level= 850 step= 48 +shortName=t number= 3 level= 925 step= 48 +shortName=z number= 3 level= 925 step= 48 +shortName=t number= 3 level=1000 step= 48 +shortName=z number= 3 level=1000 step= 48 +shortName=t number= 4 level= 10 step= 48 +shortName=z number= 4 level= 10 step= 48 +shortName=t number= 4 level= 50 step= 48 +shortName=z number= 4 level= 50 step= 48 +shortName=t number= 4 level= 100 step= 48 +shortName=z number= 4 level= 100 step= 48 +shortName=t number= 4 level= 200 step= 48 +shortName=z number= 4 level= 200 step= 48 +shortName=t number= 4 level= 250 step= 48 +shortName=z number= 4 level= 250 step= 48 +shortName=t number= 4 level= 300 step= 48 +shortName=z number= 4 level= 300 step= 48 +shortName=t number= 4 level= 400 step= 48 +shortName=z number= 4 level= 400 step= 48 +shortName=t number= 4 level= 500 step= 48 +shortName=z number= 4 level= 500 step= 48 +shortName=t number= 4 level= 700 step= 48 +shortName=z number= 4 level= 700 step= 48 +shortName=t number= 4 level= 850 step= 48 +shortName=z number= 4 level= 850 step= 48 +shortName=t number= 4 level= 925 step= 48 +shortName=z number= 4 level= 925 step= 48 +shortName=t number= 4 level=1000 step= 48 +shortName=z number= 4 level=1000 step= 48 +shortName=t number= 1 level= 10 step= 60 +shortName=z number= 1 level= 10 step= 60 +shortName=t number= 1 level= 50 step= 60 +shortName=z number= 1 level= 50 step= 60 +shortName=t number= 1 level= 100 step= 60 +shortName=z number= 1 level= 100 step= 60 +shortName=t number= 1 level= 200 step= 60 +shortName=z number= 1 level= 200 step= 60 +shortName=t number= 1 level= 250 step= 60 +shortName=z number= 1 level= 250 step= 60 +shortName=t number= 1 level= 300 step= 60 +shortName=z number= 1 level= 300 step= 60 +shortName=t number= 1 level= 400 step= 60 +shortName=z number= 1 level= 400 step= 60 +shortName=t number= 1 level= 500 step= 60 +shortName=z number= 1 level= 500 step= 60 +shortName=t number= 1 level= 700 step= 60 +shortName=z number= 1 level= 700 step= 60 +shortName=t number= 1 level= 850 step= 60 +shortName=z number= 1 level= 850 step= 60 +shortName=t number= 1 level= 925 step= 60 +shortName=z number= 1 level= 925 step= 60 +shortName=t number= 1 level=1000 step= 60 +shortName=z number= 1 level=1000 step= 60 +shortName=t number= 2 level= 10 step= 60 +shortName=z number= 2 level= 10 step= 60 +shortName=t number= 2 level= 50 step= 60 +shortName=z number= 2 level= 50 step= 60 +shortName=t number= 2 level= 100 step= 60 +shortName=z number= 2 level= 100 step= 60 +shortName=t number= 2 level= 200 step= 60 +shortName=z number= 2 level= 200 step= 60 +shortName=t number= 2 level= 250 step= 60 +shortName=z number= 2 level= 250 step= 60 +shortName=t number= 2 level= 300 step= 60 +shortName=z number= 2 level= 300 step= 60 +shortName=t number= 2 level= 400 step= 60 +shortName=z number= 2 level= 400 step= 60 +shortName=t number= 2 level= 500 step= 60 +shortName=z number= 2 level= 500 step= 60 +shortName=t number= 2 level= 700 step= 60 +shortName=z number= 2 level= 700 step= 60 +shortName=t number= 2 level= 850 step= 60 +shortName=z number= 2 level= 850 step= 60 +shortName=t number= 2 level= 925 step= 60 +shortName=z number= 2 level= 925 step= 60 +shortName=t number= 2 level=1000 step= 60 +shortName=z number= 2 level=1000 step= 60 +shortName=t number= 3 level= 10 step= 60 +shortName=z number= 3 level= 10 step= 60 +shortName=t number= 3 level= 50 step= 60 +shortName=z number= 3 level= 50 step= 60 +shortName=t number= 3 level= 100 step= 60 +shortName=z number= 3 level= 100 step= 60 +shortName=t number= 3 level= 200 step= 60 +shortName=z number= 3 level= 200 step= 60 +shortName=t number= 3 level= 250 step= 60 +shortName=z number= 3 level= 250 step= 60 +shortName=t number= 3 level= 300 step= 60 +shortName=z number= 3 level= 300 step= 60 +shortName=t number= 3 level= 400 step= 60 +shortName=z number= 3 level= 400 step= 60 +shortName=t number= 3 level= 500 step= 60 +shortName=z number= 3 level= 500 step= 60 +shortName=t number= 3 level= 700 step= 60 +shortName=z number= 3 level= 700 step= 60 +shortName=t number= 3 level= 850 step= 60 +shortName=z number= 3 level= 850 step= 60 +shortName=t number= 3 level= 925 step= 60 +shortName=z number= 3 level= 925 step= 60 +shortName=t number= 3 level=1000 step= 60 +shortName=z number= 3 level=1000 step= 60 +shortName=t number= 4 level= 10 step= 60 +shortName=z number= 4 level= 10 step= 60 +shortName=t number= 4 level= 50 step= 60 +shortName=z number= 4 level= 50 step= 60 +shortName=t number= 4 level= 100 step= 60 +shortName=z number= 4 level= 100 step= 60 +shortName=t number= 4 level= 200 step= 60 +shortName=z number= 4 level= 200 step= 60 +shortName=t number= 4 level= 250 step= 60 +shortName=z number= 4 level= 250 step= 60 +shortName=t number= 4 level= 300 step= 60 +shortName=z number= 4 level= 300 step= 60 +shortName=t number= 4 level= 400 step= 60 +shortName=z number= 4 level= 400 step= 60 +shortName=t number= 4 level= 500 step= 60 +shortName=z number= 4 level= 500 step= 60 +shortName=t number= 4 level= 700 step= 60 +shortName=z number= 4 level= 700 step= 60 +shortName=t number= 4 level= 850 step= 60 +shortName=z number= 4 level= 850 step= 60 +shortName=t number= 4 level= 925 step= 60 +shortName=z number= 4 level= 925 step= 60 +shortName=t number= 4 level=1000 step= 60 +shortName=z number= 4 level=1000 step= 60 + 384 messages selected diff --git a/data/julian.out.good b/data/julian.out.good new file mode 100644 index 000000000..700d28ef2 --- /dev/null +++ b/data/julian.out.good @@ -0,0 +1,58 @@ +1957 10 4 19:26:24 -> 2436116.310000 +1957 10 4 19:26:24 -> 2436116.310000 + ++ 2000 1 1 12:0:0 -> 2451545.000000 +- 2000 1 1 12:0:0 -> 2451545.000000 ++ 20000101 -> 2451545 +- 20000101 -> 2451545 + ++ 1987 1 27 0:0:0 -> 2446822.500000 +- 1987 1 27 0:0:0 -> 2446822.500000 ++ 19870127 -> 2446823 +- 19870127 -> 2446823 + ++ 1987 6 19 12:0:0 -> 2446966.000000 +- 1987 6 19 12:0:0 -> 2446966.000000 ++ 19870619 -> 2446966 +- 19870619 -> 2446966 + ++ 1988 1 27 0:0:0 -> 2447187.500000 +- 1988 1 27 0:0:0 -> 2447187.500000 ++ 19880127 -> 2447188 +- 19880127 -> 2447188 + ++ 1988 6 19 12:0:0 -> 2447332.000000 +- 1988 6 19 12:0:0 -> 2447332.000000 ++ 19880619 -> 2447332 +- 19880619 -> 2447332 + ++ 1900 1 1 0:0:0 -> 2415020.500000 +- 1900 1 1 0:0:0 -> 2415020.500000 ++ 19000101 -> 2415021 +- 19000101 -> 2415021 + ++ 1600 1 1 0:0:0 -> 2305447.500000 +- 1600 1 1 0:0:0 -> 2305447.500000 ++ 16000101 -> 2305448 +- 16000101 -> 2305448 + ++ 1600 12 31 0:0:0 -> 2305812.500000 +- 1600 12 31 0:0:0 -> 2305812.500000 ++ 16001231 -> 2305813 +- 16001231 -> 2305813 + ++ 1326 5 14 0:0:0 -> 2205512.500000 +- 1326 5 14 0:0:0 -> 2205512.500000 ++ 13260522 -> 2205513 +- 13260522 -> 2205513 + ++ 837 4 10 7:12:0 -> 2026871.800000 +- 837 4 10 7:12:0 -> 2026871.800000 ++ 8370414 -> 2026872 +- 8370414 -> 2026872 + ++ -4712 1 1 12:0:0 -> 0.000000 +- -4712 1 1 12:0:0 -> 0.000000 ++ -47120001 -> 0 +- -47120001 -> 6 + diff --git a/data/list_points b/data/list_points new file mode 100644 index 000000000..7f2ec6110 --- /dev/null +++ b/data/list_points @@ -0,0 +1,3 @@ +2 +30 -20 +13 234 diff --git a/data/local.good.log b/data/local.good.log new file mode 100644 index 000000000..67a989ef7 --- /dev/null +++ b/data/local.good.log @@ -0,0 +1,54 @@ +1 2 50 1 +1 not_found 0 +15 2 50 1 +15 0 1 +26 2 50 1 +26 0 1 +30 2 50 1 +30 0 1 +1 +1 +1 2 50 1 +15 2 50 1 +26 2 50 1 +30 2 50 1 +7 +7 +1 2 50 1 +15 2 50 1 +26 2 50 1 +30 2 50 1 +9 +9 +1 2 50 1 +15 2 50 1 +26 2 50 1 +30 2 50 1 +20 +20 +1 2 50 1 +15 2 50 1 +26 2 50 1 +30 2 50 1 +25 +25 +1 2 50 1 +15 2 50 1 +26 2 50 1 +30 2 50 1 +26 +26 +1 2 50 1 +15 2 50 1 +26 2 50 1 +30 2 50 1 +30 +30 +1 2 50 1 +15 2 50 1 +26 2 50 1 +30 2 50 1 +1 not_found +1 2 0 +1 2 4 +1 1 diff --git a/data/ls.log b/data/ls.log new file mode 100644 index 000000000..4ec193456 --- /dev/null +++ b/data/ls.log @@ -0,0 +1,172 @@ +regular_gaussian_model_level.grib1 +count edition centre typeOfLevel level dataDate stepRange dataType shortName packingType gridType +1 1 ecmf hybrid 1 20080206 0 an t grid_simple regular_gg +1 of 1 grib messages in regular_gaussian_model_level.grib1 + +1 of 1 total grib messages in 1 files +regular_gaussian_model_level.grib1 +count step +1 0 +1 of 1 grib messages in regular_gaussian_model_level.grib1 + +1 of 1 total grib messages in 1 files +regular_gaussian_model_level.grib1 +edition centre typeOfLevel level dataDate stepRange dataType shortName packingType gridType +1 ecmf hybrid 1 20080206 0 an t grid_simple regular_gg +1 of 1 grib messages in regular_gaussian_model_level.grib1 + +1 of 1 total grib messages in 1 files +regular_gaussian_model_level.grib1 +edition centre typeOfLevel level dataDate stepRange dataType shortName packingType gridType value +1 ecmf hybrid 1 20080206 0 an t grid_simple regular_gg 198.5 +1 of 1 grib messages in regular_gaussian_model_level.grib1 + +1 of 1 total grib messages in 1 files +Input Point: latitude=0.00 longitude=0.00 +Grid Point chosen #2 index=4096 latitude=-1.40 longitude=0.00 distance=155.07 (Km) +Other grid Points +- 1 - index=4097 latitude=-1.40 longitude=2.81 distance=348.89 (Km) +- 2 - index=4096 latitude=-1.40 longitude=0.00 distance=155.07 (Km) +- 3 - index=3969 latitude=1.40 longitude=2.81 distance=348.89 (Km) +- 4 - index=3968 latitude=1.40 longitude=0.00 distance=155.07 (Km) +198.5 +1 0 +1 +reduced_gaussian_lsm.grib1 +#4 +index=1291 +index=1290 +index=1171 +index=1170 +reduced_gaussian_model_level.grib1 +#4 +index=1291 +index=1290 +index=1171 +index=1170 +reduced_gaussian_model_level.grib2 +#4 +index=1291 +index=1290 +index=1171 +index=1170 +reduced_gaussian_pressure_level.grib1 +#4 +index=1291 +index=1290 +index=1171 +index=1170 +reduced_gaussian_pressure_level.grib2 +#4 +index=1291 +index=1290 +index=1171 +index=1170 +reduced_gaussian_pressure_level_constant.grib1 +#4 +index=1291 +index=1290 +index=1171 +index=1170 +reduced_gaussian_pressure_level_constant.grib2 +#4 +index=1291 +index=1290 +index=1171 +index=1170 +reduced_gaussian_sub_area.grib1 +#3 +index=19985 +index=19984 +index=19665 +index=19664 +reduced_gaussian_sub_area.grib2 +#3 +index=19985 +index=19984 +index=19665 +index=19664 +reduced_gaussian_surface.grib1 +#4 +index=1291 +index=1290 +index=1171 +index=1170 +reduced_gaussian_surface.grib2 +#4 +index=1291 +index=1290 +index=1171 +index=1170 +reduced_latlon_surface.grib1 +#1 +index=54796 +index=54795 +index=54034 +index=54033 +reduced_latlon_surface.grib2 +#1 +index=54796 +index=54795 +index=54034 +index=54033 +regular_gaussian_model_level.grib1 +#3 +index=2314 +index=2313 +index=2186 +index=2185 +regular_gaussian_model_level.grib2 +#3 +index=2314 +index=2313 +index=2186 +index=2185 +regular_gaussian_pressure_level.grib1 +#3 +index=2314 +index=2313 +index=2186 +index=2185 +regular_gaussian_pressure_level.grib2 +#3 +index=2314 +index=2313 +index=2186 +index=2185 +regular_gaussian_pressure_level_constant.grib1 +#3 +index=2314 +index=2313 +index=2186 +index=2185 +regular_gaussian_pressure_level_constant.grib2 +#3 +index=2314 +index=2313 +index=2186 +index=2185 +regular_gaussian_surface.grib1 +#3 +index=2314 +index=2313 +index=2186 +index=2185 +regular_gaussian_surface.grib2 +#3 +index=2314 +index=2313 +index=2186 +index=2185 +regular_latlon_surface.grib1 +#2 +index=175 +index=174 +index=159 +index=158 +regular_latlon_surface.grib2 +#2 +index=175 +index=174 +index=159 +index=158 diff --git a/data/mf.rules b/data/mf.rules new file mode 100644 index 000000000..fa6a017d2 --- /dev/null +++ b/data/mf.rules @@ -0,0 +1,125 @@ +# GRIB edition 2 +editionNumber = 2; + +# TIGGE prod = 4, test = 5 + +productionStatusOfProcessedData = 5; + +# JPEG-2000 packing +#typeOfPacking = "grid_jpeg"; +typeOfPacking = "grid_simple"; + +# Shape of the Earth +shapeOfTheEarth = 6; + + +typeOfGeneratingProcess = 4; # CF of PF +numberOfForecastsInEnsemble = 11; # 10 Members + 1 Control +#productDefinitionTemplateNumber = 1; + + +if( subCentre == 100 || subCentre == 0) +{ + # Control + typeOfProcessedData = 3; + typeOfEnsembleForecast = 1; # Low-res control forecast + + + number = 0; + +} + +if( subCentre != 100 && subCentre != 0) +{ + typeOfProcessedData = 4; +# typeOfEnsembleForecast = 2; # Negatively perturbed forecast + typeOfEnsembleForecast = 3; # Positively perturbed forecast + + number = subCentre - 100; +} + + +# typeOfEnsembleForecast = ?; + + +# Pressure level + +# Temperature +if( indicatorOfParameter == 11 && indicatorOfTypeOfLevel == 100) { productDefinitionTemplateNumber=1;shortName = 't'; } + +# Geopotential +if( indicatorOfParameter == 6 ) { productDefinitionTemplateNumber=1;shortName = 'gh'; } + +# U-component +if( indicatorOfParameter == 33 && indicatorOfTypeOfLevel == 100) { productDefinitionTemplateNumber=1;shortName = 'u'; } +if( indicatorOfParameter == 34 && indicatorOfTypeOfLevel == 100) { productDefinitionTemplateNumber=1;shortName = 'v'; } + +# Specific humidity +if( indicatorOfParameter == 51) { productDefinitionTemplateNumber=1;shortName = 'q'; } + + +# Single level +# Orography + +if( indicatorOfParameter == 8) { productDefinitionTemplateNumber=1;shortName = 'orog'; } + +# Wind +if( indicatorOfParameter == 33 && indicatorOfTypeOfLevel == 105) { productDefinitionTemplateNumber=1;shortName = '10u'; } +if( indicatorOfParameter == 34 && indicatorOfTypeOfLevel == 105) { productDefinitionTemplateNumber=1;shortName = '10v'; } + + +# Dew point +if( indicatorOfParameter == 17) { + productDefinitionTemplateNumber = 1; + shortName = '2d'; + typeOfFirstFixedSurface = 103; + scaleFactorOfFirstFixedSurface = 0; + scaledValueOfFirstFixedSurface = 2; +} + +# 2Meter temp. +if( indicatorOfParameter == 11 && indicatorOfTypeOfLevel == 105) +{ + productDefinitionTemplateNumber = 1; + shortName = '2t'; + typeOfFirstFixedSurface = 103; + scaleFactorOfFirstFixedSurface = 0; + scaledValueOfFirstFixedSurface = 2; +} + +# Cape +if( indicatorOfParameter == 160) { productDefinitionTemplateNumber=1;shortName = 'cape'; } + +# Mean sea level pressure +if( indicatorOfParameter == 2) { productDefinitionTemplateNumber=1;shortName = 'msl'; } + +# Potential temperature +if( indicatorOfParameter == 13) { productDefinitionTemplateNumber=1;shortName = 'pt'; } + +# Snow depth +if( indicatorOfParameter == 65) { productDefinitionTemplateNumber=1;shortName = 'sd'; } + +# Snow fall +if( indicatorOfParameter == 99) { + productDefinitionTemplateNumber = 11; + shortName = 'sf'; +} + + + +if(indicatorOfParameter == 11 && indicatorOfTypeOfLevel == 1) { productDefinitionTemplateNumber=1;shortName = 'skt'; } +if(indicatorOfParameter == 121) { productDefinitionTemplateNumber = 11;shortName = 'slhf'; } +if(indicatorOfParameter == 1) { productDefinitionTemplateNumber=1;shortName = 'sp'; } +if(indicatorOfParameter == 122) { productDefinitionTemplateNumber = 11;shortName = 'sshf'; } +if(indicatorOfParameter == 111) { productDefinitionTemplateNumber = 11;shortName = 'ssr'; } +if(indicatorOfParameter == 11 && indicatorOfTypeOfLevel == 111) { productDefinitionTemplateNumber=1;shortName = 'st'; } +if(indicatorOfParameter == 112) { productDefinitionTemplateNumber = 11;shortName = 'str'; } +if(indicatorOfParameter == 71) { productDefinitionTemplateNumber=1;shortName = 'tcc'; } +if(indicatorOfParameter == 61) { productDefinitionTemplateNumber = 11;shortName = 'tp'; } +if(indicatorOfParameter == 114) { productDefinitionTemplateNumber = 11;shortName = 'ttr'; } +if(indicatorOfParameter == 167) { productDefinitionTemplateNumber = 1;shortName = 'tcw'; } + +if( indicatorOfParameter == 33 && indicatorOfTypeOfLevel == 117) +{ scaleFactorOfFirstFixedSurface=6;scaledValueOfFirstFixedSurface=2;typeOfFirstFixedSurface=109;productDefinitionTemplateNumber=1;shortName = 'u'; } + +if( indicatorOfParameter == 34 && indicatorOfTypeOfLevel == 117) { scaleFactorOfFirstFixedSurface=6;scaledValueOfFirstFixedSurface=2;typeOfFirstFixedSurface=109;productDefinitionTemplateNumber=1;shortName = 'v'; } diff --git a/data/multi.ok b/data/multi.ok new file mode 100644 index 000000000..71c98a927 --- /dev/null +++ b/data/multi.ok @@ -0,0 +1,22 @@ + step + 0 + 12 + 24 + 36 + 48 + 60 + 72 + 84 + 96 +108 +120 +132 +144 +156 +168 +180 +192 +204 +216 +228 +240 diff --git a/data/multi_level.txt b/data/multi_level.txt new file mode 100644 index 000000000..071939893 --- /dev/null +++ b/data/multi_level.txt @@ -0,0 +1,9 @@ +1 +2 +3 +4 +5 +6 +7 +8 +9 diff --git a/data/multi_step.txt b/data/multi_step.txt new file mode 100644 index 000000000..b9455a85f --- /dev/null +++ b/data/multi_step.txt @@ -0,0 +1,10 @@ +12 +24 +36 +48 +60 +72 +84 +96 +108 +120 diff --git a/data/no_bitmap.diff b/data/no_bitmap.diff new file mode 100644 index 000000000..c6b3b3137 --- /dev/null +++ b/data/no_bitmap.diff @@ -0,0 +1,109 @@ +#============== MESSAGE 1 ( length=10908 ) ============== +1-4 identifier = GRIB +5-7 totalLength = 10908 +8 editionNumber = 1 +====================== SECTION_1 ( length=52, padding=0 ) ====================== +1-3 section1Length = 52 +4 table2Version = 128 +5 centre = 98 [European Center for Medium-Range Weather Forecasts (grib1/0.table) ] +6 generatingProcessIdentifier = 130 +7 gridDefinition = 255 +8 section1Flags = 128 [10000000] +9 indicatorOfParameter = 130 [Temperature (K) (grib1/2.98.128.table) ] +10 indicatorOfTypeOfLevel = 109 [Hybrid level level number (2 octets) (grib1/3.table) ] +11-12 level = 1 +13 yearOfCentury = 8 +14 month = 2 +15 day = 6 +16 hour = 12 +17 minute = 0 +18 unitOfTimeRange = 1 [Hour (grib1/4.table) ] +19 P1 = 0 +20 P2 = 0 +21 timeRangeIndicator = 0 [Forecast product valid at reference time + P1 (P1>0) (grib1/5.table) ] +22-23 numberIncludedInAverage = 0 +24 numberMissingFromAveragesOrAccumulations = 0 +25 centuryOfReferenceTimeOfData = 21 +26 subCentre = 0 [Unknown code table entry (grib1/0.ecmf.table) ] +27-28 decimalScaleFactor = 0 +29-40 reservedNeedNotBePresent = 12 { + 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00 + } # pad reservedNeedNotBePresent +41 localDefinitionNumber = 1 [MARS labelling or ensemble forecast data (grib1/localDefinitionNumber.98.table) ] +42 marsClass = 1 [Operational archive (mars/class.table) ] +43 marsType = 2 [Analysis (mars/type.table) ] +44-45 marsStream = 1025 [Atmospheric model (mars/stream.table) ] +46-49 experimentVersionNumber = 0001 +50 perturbationNumber = 0 +51 numberOfForecastsInEnsemble = 0 +52 padding_local1_1 = 1 { + 00 + } # pad padding_local1_1 +====================== SECTION_2 ( length=896, padding=0 ) ====================== +1-3 section2Length = 896 +4 numberOfVerticalCoordinateValues = 184 +5 pvlLocation = 33 +6 dataRepresentationType = 4 [Gaussian Latitude/Longitude Grid (grib1/6.table) ] +7-8 Ni = MISSING +9-10 Nj = 64 +11-13 latitudeOfFirstGridPoint = 87864 +14-16 longitudeOfFirstGridPoint = 0 +17 resolutionAndComponentFlags = 0 [00000000] +18-20 latitudeOfLastGridPoint = -87864 +21-23 longitudeOfLastGridPoint = 357188 +24-25 iDirectionIncrement = MISSING +26-27 N = 32 +28 scanningMode = 0 [00000000] +29-32 padding_grid4_1 = 4 { + 00, 00, 00, 00 + } # pad padding_grid4_1 +33-768 pv = (184,736) { +0.0000000000e+00, 2.0000400543e+00, 3.9808320999e+00, 7.3871860504e+00, 1.2908319473e+01, 2.1413604736e+01, 3.3952865601e+01, 5.1746597290e+01, +7.6167663574e+01, 1.0871556091e+02, 1.5098602295e+02, 2.0463745117e+02, 2.7135644531e+02, 3.5282446289e+02, 4.5068579102e+02, 5.6651928711e+02, +7.0181323242e+02, 8.5794580078e+02, 1.0361665039e+03, 1.2375854492e+03, 1.4631638184e+03, 1.7137097168e+03, 1.9898745117e+03, 2.2921555176e+03, +2.6208984375e+03, 2.9763022461e+03, 3.3584257812e+03, 3.7671960449e+03, 4.2024179688e+03, 4.6637773438e+03, 5.1508593750e+03, 5.6631562500e+03, +6.1998398438e+03, 6.7597265625e+03, 7.3414687500e+03, 7.9429257812e+03, 8.5646250000e+03, 9.2083046875e+03, 9.8735625000e+03, 1.0558882812e+04, +1.1262484375e+04, 1.1982660156e+04, 1.2713898438e+04, 1.3453226562e+04, 1.4192011719e+04, 1.4922687500e+04, 1.5638054688e+04, 1.6329562500e+04, +1.6990625000e+04, 1.7613281250e+04, 1.8191031250e+04, 1.8716968750e+04, 1.9184546875e+04, 1.9587515625e+04, 1.9919796875e+04, 2.0175394531e+04, +2.0348917969e+04, 2.0434156250e+04, 2.0426218750e+04, 2.0319011719e+04, 2.0107031250e+04, 1.9785359375e+04, 1.9348777344e+04, 1.8798824219e+04, +1.8141296875e+04, 1.7385593750e+04, 1.6544585938e+04, 1.5633566406e+04, 1.4665644531e+04, 1.3653218750e+04, 1.2608382812e+04, 1.1543167969e+04, +1.0471312500e+04, 9.4052226562e+03, 8.3562539062e+03, 7.3351640625e+03, 6.3539218750e+03, 5.4228007812e+03, 4.5502148438e+03, 3.7434643555e+03, +3.0101469727e+03, 2.3562026367e+03, 1.7848544922e+03, 1.2976562500e+03, 8.9519360352e+02, 5.7631420898e+02, 3.3677246094e+02, 1.6204342651e+02, +5.4208343506e+01, 6.5756282806e+00, 3.1600000802e-03, 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, +0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00 +... 84 more values +} # ibmfloat pv +769-896 pl = (64,128) { +2.0000000000e+01, 2.7000000000e+01, 3.6000000000e+01, 4.0000000000e+01, 4.5000000000e+01, 5.0000000000e+01, 6.0000000000e+01, 6.4000000000e+01, +7.2000000000e+01, 7.5000000000e+01, 8.0000000000e+01, 9.0000000000e+01, 9.0000000000e+01, 9.6000000000e+01, 1.0000000000e+02, 1.0800000000e+02, +1.0800000000e+02, 1.2000000000e+02, 1.2000000000e+02, 1.2000000000e+02, 1.2800000000e+02, 1.2800000000e+02, 1.2800000000e+02, 1.2800000000e+02, +1.2800000000e+02, 1.2800000000e+02, 1.2800000000e+02, 1.2800000000e+02, 1.2800000000e+02, 1.2800000000e+02, 1.2800000000e+02, 1.2800000000e+02, +1.2800000000e+02, 1.2800000000e+02, 1.2800000000e+02, 1.2800000000e+02, 1.2800000000e+02, 1.2800000000e+02, 1.2800000000e+02, 1.2800000000e+02, +1.2800000000e+02, 1.2800000000e+02, 1.2800000000e+02, 1.2800000000e+02, 1.2000000000e+02, 1.2000000000e+02, 1.2000000000e+02, 1.0800000000e+02, +1.0800000000e+02, 1.0000000000e+02, 9.6000000000e+01, 9.0000000000e+01, 9.0000000000e+01, 8.0000000000e+01, 7.5000000000e+01, 7.2000000000e+01, +6.4000000000e+01, 6.0000000000e+01, 5.0000000000e+01, 4.5000000000e+01, 4.0000000000e+01, 3.6000000000e+01, 2.7000000000e+01, 2.0000000000e+01 +} # unsigned pl +====================== SECTION_4 ( length=9948, padding=0 ) ====================== +1-3 section4Length = 9948 +4 dataFlag = 14 [00001110] +5-6 binaryScaleFactor = -6 +7-10 referenceValue = 160.252 +11 bitsPerValue = 13 +12-9948 values = (6114,9937) { +1.9907963562e+02, 1.9872026062e+02, 1.9851713562e+02, 1.9839213562e+02, 1.9822026062e+02, 1.9798588562e+02, 1.9770463562e+02, 1.9747026062e+02, +1.9737651062e+02, 1.9740776062e+02, 1.9756401062e+02, 1.9787651062e+02, 1.9839213562e+02, 1.9907963562e+02, 1.9979838562e+02, 2.0034526062e+02, +2.0059526062e+02, 2.0053276062e+02, 2.0015776062e+02, 1.9959526062e+02, 1.9984526062e+02, 1.9959526062e+02, 1.9954838562e+02, 1.9943901062e+02, +1.9940776062e+02, 1.9926713562e+02, 1.9875151062e+02, 1.9789213562e+02, 1.9698588562e+02, 1.9642338562e+02, 1.9637651062e+02, 1.9679838562e+02, +1.9737651062e+02, 1.9782963562e+02, 1.9806401062e+02, 1.9814213562e+02, 1.9843901062e+02, 1.9925151062e+02, 2.0065776062e+02, 2.0222026062e+02, +2.0334526062e+02, 2.0389213562e+02, 2.0420463562e+02, 2.0442338562e+02, 2.0404838562e+02, 2.0265776062e+02, 2.0090776062e+02, 2.0176713562e+02, +2.0101713562e+02, 2.0039213562e+02, 1.9961088562e+02, 1.9925151062e+02, 1.9940776062e+02, 1.9934526062e+02, 1.9872026062e+02, 1.9790776062e+02, +1.9725151062e+02, 1.9670463562e+02, 1.9623588562e+02, 1.9597026062e+02, 1.9595463562e+02, 1.9612651062e+02, 1.9645463562e+02, 1.9692338562e+02, +1.9750151062e+02, 1.9809526062e+02, 1.9845463562e+02, 1.9845463562e+02, 1.9829838562e+02, 1.9837651062e+02, 1.9882963562e+02, 1.9993901062e+02, +2.0181401062e+02, 2.0401713562e+02, 2.0581401062e+02, 2.0700151062e+02, 2.0781401062e+02, 2.0848588562e+02, 2.0926713562e+02, 2.0973588562e+02, +2.0887651062e+02, 2.0640776062e+02, 2.0356401062e+02, 2.0676713562e+02, 2.0443901062e+02, 2.0272026062e+02, 2.0140776062e+02, 2.0081401062e+02, +2.0068901062e+02, 1.9993901062e+02, 1.9834526062e+02, 1.9704838562e+02, 1.9695463562e+02, 1.9770463562e+02, 1.9812651062e+02, 1.9779838562e+02, +1.9726713562e+02, 1.9690776062e+02, 1.9653276062e+02, 1.9626713562e+02 +... 6014 more values +} # data_g1simple_packing values +====================== SECTION_5 ( length=4, padding=0 ) ====================== +1-4 7777 = 7777 diff --git a/data/perf.ksh b/data/perf.ksh new file mode 100755 index 000000000..feba5ccb2 --- /dev/null +++ b/data/perf.ksh @@ -0,0 +1,17 @@ +#!/bin/ksh + +file=collection.grib1 +#file=exp/performance/16bpv.grib +file=x.grib + +set -A versions 1.2.0 1.3.0 1.4.0 1.5.0 1.6.0 + +for version in ${versions[@]} +do + echo ======================= + echo time /usr/local/lib/metaps/lib/grib_api/${version}/bin/grib_dump -O $file + time /usr/local/lib/metaps/lib/grib_api/${version}/bin/grib_dump -O $file 2> /dev/null > /dev/null + echo +done + + diff --git a/data/read_any.ok b/data/read_any.ok new file mode 100644 index 000000000..32a56bf08 --- /dev/null +++ b/data/read_any.ok @@ -0,0 +1,14 @@ +- 1 - ed=1 size= 14156 totalLength= 14156 t regular_gg ml level=1 step=0 +- 2 - ed=1 size= 14156 totalLength= 14156 t regular_gg ml level=1 step=0 +- 3 - ed=2 size= 1552 totalLength= 1552 10u regular_ll sfc level=10 step=96 +- 4 - ed=1 size= 14156 totalLength= 14156 t regular_gg ml level=1 step=0 +- 5 - ed=1 size= 14156 totalLength= 14156 t regular_gg ml level=1 step=0 +- 6 - ed=2 size= 1552 totalLength= 1552 10u regular_ll sfc level=10 step=96 +- 7 - ed=2 size= 1552 totalLength= 1552 10u regular_ll sfc level=10 step=96 +- 8 - ed=1 size=15163284 totalLength=15163284 t regular_ll sfc level=0 step=0 +- 9 - ed=1 size= 14156 totalLength= 14156 t regular_gg ml level=1 step=0 +- 10 - ed=1 size=15163284 totalLength=15163284 t regular_ll sfc level=0 step=0 +- 11 - ed=2 size= 1552 totalLength= 1552 10u regular_ll sfc level=10 step=96 +- 12 - ed=1 size=15163284 totalLength=15163284 t regular_ll sfc level=0 step=0 +- 13 - ed=1 size=11206064 totalLength=11206064 2dsp reduced_ll sfc level=0 step=0 +- 14 - ed=1 size=17706816 totalLength=17706816 2dsp reduced_ll sfc level=0 step=0 diff --git a/data/ret.sh b/data/ret.sh new file mode 100755 index 000000000..708178957 --- /dev/null +++ b/data/ret.sh @@ -0,0 +1,56 @@ +#!/bin/ksh + +set -eu + +set -A files \ + reduced_latlon_surface.grib1 \ + reduced_gaussian_pressure_level.grib1 \ + regular_gaussian_pressure_level.grib1 \ + reduced_gaussian_model_level.grib1 \ + regular_gaussian_model_level.grib1 \ + reduced_gaussian_surface.grib1 \ + regular_gaussian_surface.grib1 \ + regular_latlon_surface.grib1 \ + spherical_pressure_level.grib1 \ + spherical_model_level.grib1 + +set -A rets \ + "ret,stream=wave,levtype=sfc,param=swh," \ + "ret,stream=oper,level=1000,gaussian=reduced,grid=32,param=t," \ + "ret,level=1000,gaussian=regular,grid=32,param=t," \ + "ret,levtype=ml,level=1,gaussian=reduced,grid=32,param=t," \ + "ret,levtype=ml,level=1,gaussian=regular,grid=32,param=t," \ + "ret,levtype=sfc,param=2t,gaussian=reduced,grid=32," \ + "ret,levtype=sfc,param=2t,gaussian=regular,grid=32," \ + "ret,levtype=sfc,param=2t,grid=2/2,area=60/0/0/30," \ + "ret,class=od,type=an,stream=da,expver=0001,levtype=pl,levelist=1000,param=130,time=1200,step=00,domain=g,resol=63,param=t," \ + "ret,class=od,type=an,stream=da,expver=0001,levtype=ml,levelist=1,param=130,time=1200,step=00,domain=g,resol=63,param=t," + +set -A precision 2 2 2 2 2 2 2 -1 -1 -1 + +[[ ${#files[@]} -eq ${#rets[@]} ]] && [[ ${#rets[@]} -eq ${#precision[@]} ]] + +for (( i=0; i< ${#files[@]}; i++ )) +do + + mars << EOF + ${rets[i]} + 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]} + rm -f full_${files[i]} + else + mv full_${files[i]} ${files[i]} + fi + + grib_dump ${files[i]} > /dev/null + grib2=`basename ${files[i]} .grib1`.grib2 + grib_set -s editionNumber=2 ${files[i]} $grib2 + grib_dump ${grib2} > /dev/null + +done + diff --git a/data/sample_grib.txt b/data/sample_grib.txt new file mode 100644 index 000000000..6a4ce6e59 --- /dev/null +++ b/data/sample_grib.txt @@ -0,0 +1,65 @@ +#------ 1 ------- +kindOfProduct = GRIB +editionNumber = 1 +#------ section1 ------- +gribTablesVersionNo = 128 +identificationOfOriginatingGeneratingCentre = 98 +generatingProcessIdentifier = 127 +gridDefinition = 255 +indicatorOfParameter = 129 +indicatorOfTypeOfLevel = 100 +level = 1000 +yearOfCentury = 6 +month = 7 +day = 30 +hour = 12 +minute = 0 +indicatorOfUnitOfTimeRange = 1 +periodOfTime = 0 +periodOfTimeIntervals = 0 +timeRangeIndicator = 0 +numberIncludedInAverage = 0 +numberMissingFromAveragesOrAccumulations = 0 +centuryOfReferenceTimeOfData = 21 +identificationOfOriginatingGeneratingSubCentre = 0 +decimalScaleFactor = 0 +setLocalDefinition = 0 +dataDate = 20060730 +dataTime = 1200 +marsStartStep = 0 +marsEndStep = 0 +marsStep = 0 +localDefinitionNumber = 1 +marsClass = 1 +marsType = 2 +marsStream = 1025 +experimentVersionNumber = 0001 +perturbationNumber = 0 +numberOfForecastsInEnsemble = 0 +spare = 0 +#------ section2 ------- +nvNumberOfVerticalCoordinateParameters = 0 +pvlLocation = 255 +dataRepresentationType = 0 +latitudeOfFirstGridPointInDegrees = 74 +longitudeOfFirstGridPointInDegrees = -27 +resolutionAndComponentFlags = 128 +ijDirectionIncrementGiven = 1 +earthIsOblate = 0 +uvRelativeToGrid = 0 +latitudeOfLastGridPointInDegrees = 33 +longitudeOfLastGridPointInDegrees = 45 +iDirectionIncrementInDegrees = 1 +jDirectionIncrementInDegrees = 1 +scanningMode = 0 +PLPresent = 0 +PVPresent = 0 +missingValue = 9999 +#------ section4 ------- +dataFlag = 8 +numberOfBitsContainingEachPackedValue = 16 +sphericalHarmonics = 0 +complexPacking = 0 +integerPointValues = 0 +additionalFlagPresent = 0 +#------ section5 ------- diff --git a/data/scan_x_regular_gg_5_7_good.dump b/data/scan_x_regular_gg_5_7_good.dump new file mode 100644 index 000000000..e69de29bb diff --git a/data/scan_x_regular_ll_5_4_good.dump b/data/scan_x_regular_ll_5_4_good.dump new file mode 100644 index 000000000..66efea3b9 --- /dev/null +++ b/data/scan_x_regular_ll_5_4_good.dump @@ -0,0 +1,21 @@ +Latitude, Longitude, Value + 20.000 24.000 5 + 20.000 23.000 4 + 20.000 22.000 3 + 20.000 21.000 2 + 20.000 20.000 1 + 19.000 24.000 10 + 19.000 23.000 9 + 19.000 22.000 8 + 19.000 21.000 7 + 19.000 20.000 6 + 18.000 24.000 15 + 18.000 23.000 14 + 18.000 22.000 13 + 18.000 21.000 12 + 18.000 20.000 11 + 17.000 24.000 20 + 17.000 23.000 19 + 17.000 22.000 18 + 17.000 21.000 17 + 17.000 20.000 16 diff --git a/data/scan_x_regular_ll_5_7_good.dump b/data/scan_x_regular_ll_5_7_good.dump new file mode 100644 index 000000000..d34e8db24 --- /dev/null +++ b/data/scan_x_regular_ll_5_7_good.dump @@ -0,0 +1,36 @@ +Latitude, Longitude, Value + 20.000 24.000 5 + 20.000 23.000 4 + 20.000 22.000 3 + 20.000 21.000 2 + 20.000 20.000 1 + 19.000 24.000 10 + 19.000 23.000 9 + 19.000 22.000 8 + 19.000 21.000 7 + 19.000 20.000 6 + 18.000 24.000 15 + 18.000 23.000 14 + 18.000 22.000 13 + 18.000 21.000 12 + 18.000 20.000 11 + 17.000 24.000 20 + 17.000 23.000 19 + 17.000 22.000 18 + 17.000 21.000 17 + 17.000 20.000 16 + 16.000 24.000 25 + 16.000 23.000 24 + 16.000 22.000 23 + 16.000 21.000 22 + 16.000 20.000 21 + 15.000 24.000 30 + 15.000 23.000 29 + 15.000 22.000 28 + 15.000 21.000 27 + 15.000 20.000 26 + 14.000 24.000 35 + 14.000 23.000 34 + 14.000 22.000 33 + 14.000 21.000 32 + 14.000 20.000 31 diff --git a/data/scan_x_regular_ll_8_4_good.dump b/data/scan_x_regular_ll_8_4_good.dump new file mode 100644 index 000000000..bff032c3e --- /dev/null +++ b/data/scan_x_regular_ll_8_4_good.dump @@ -0,0 +1,33 @@ +Latitude, Longitude, Value + 20.000 27.000 8 + 20.000 26.000 7 + 20.000 25.000 6 + 20.000 24.000 5 + 20.000 23.000 4 + 20.000 22.000 3 + 20.000 21.000 2 + 20.000 20.000 1 + 19.000 27.000 16 + 19.000 26.000 15 + 19.000 25.000 14 + 19.000 24.000 13 + 19.000 23.000 12 + 19.000 22.000 11 + 19.000 21.000 10 + 19.000 20.000 9 + 18.000 27.000 24 + 18.000 26.000 23 + 18.000 25.000 22 + 18.000 24.000 21 + 18.000 23.000 20 + 18.000 22.000 19 + 18.000 21.000 18 + 18.000 20.000 17 + 17.000 27.000 32 + 17.000 26.000 31 + 17.000 25.000 30 + 17.000 24.000 29 + 17.000 23.000 28 + 17.000 22.000 27 + 17.000 21.000 26 + 17.000 20.000 25 diff --git a/data/scan_x_regular_ll_8_7_good.dump b/data/scan_x_regular_ll_8_7_good.dump new file mode 100644 index 000000000..c7ebdeec6 --- /dev/null +++ b/data/scan_x_regular_ll_8_7_good.dump @@ -0,0 +1,57 @@ +Latitude, Longitude, Value + 20.000 27.000 8 + 20.000 26.000 7 + 20.000 25.000 6 + 20.000 24.000 5 + 20.000 23.000 4 + 20.000 22.000 3 + 20.000 21.000 2 + 20.000 20.000 1 + 19.000 27.000 16 + 19.000 26.000 15 + 19.000 25.000 14 + 19.000 24.000 13 + 19.000 23.000 12 + 19.000 22.000 11 + 19.000 21.000 10 + 19.000 20.000 9 + 18.000 27.000 24 + 18.000 26.000 23 + 18.000 25.000 22 + 18.000 24.000 21 + 18.000 23.000 20 + 18.000 22.000 19 + 18.000 21.000 18 + 18.000 20.000 17 + 17.000 27.000 32 + 17.000 26.000 31 + 17.000 25.000 30 + 17.000 24.000 29 + 17.000 23.000 28 + 17.000 22.000 27 + 17.000 21.000 26 + 17.000 20.000 25 + 16.000 27.000 40 + 16.000 26.000 39 + 16.000 25.000 38 + 16.000 24.000 37 + 16.000 23.000 36 + 16.000 22.000 35 + 16.000 21.000 34 + 16.000 20.000 33 + 15.000 27.000 48 + 15.000 26.000 47 + 15.000 25.000 46 + 15.000 24.000 45 + 15.000 23.000 44 + 15.000 22.000 43 + 15.000 21.000 42 + 15.000 20.000 41 + 14.000 27.000 56 + 14.000 26.000 55 + 14.000 25.000 54 + 14.000 24.000 53 + 14.000 23.000 52 + 14.000 22.000 51 + 14.000 21.000 50 + 14.000 20.000 49 diff --git a/data/scan_x_rotated_ll_5_4_good.dump b/data/scan_x_rotated_ll_5_4_good.dump new file mode 100644 index 000000000..66efea3b9 --- /dev/null +++ b/data/scan_x_rotated_ll_5_4_good.dump @@ -0,0 +1,21 @@ +Latitude, Longitude, Value + 20.000 24.000 5 + 20.000 23.000 4 + 20.000 22.000 3 + 20.000 21.000 2 + 20.000 20.000 1 + 19.000 24.000 10 + 19.000 23.000 9 + 19.000 22.000 8 + 19.000 21.000 7 + 19.000 20.000 6 + 18.000 24.000 15 + 18.000 23.000 14 + 18.000 22.000 13 + 18.000 21.000 12 + 18.000 20.000 11 + 17.000 24.000 20 + 17.000 23.000 19 + 17.000 22.000 18 + 17.000 21.000 17 + 17.000 20.000 16 diff --git a/data/scan_x_rotated_ll_5_7_good.dump b/data/scan_x_rotated_ll_5_7_good.dump new file mode 100644 index 000000000..d34e8db24 --- /dev/null +++ b/data/scan_x_rotated_ll_5_7_good.dump @@ -0,0 +1,36 @@ +Latitude, Longitude, Value + 20.000 24.000 5 + 20.000 23.000 4 + 20.000 22.000 3 + 20.000 21.000 2 + 20.000 20.000 1 + 19.000 24.000 10 + 19.000 23.000 9 + 19.000 22.000 8 + 19.000 21.000 7 + 19.000 20.000 6 + 18.000 24.000 15 + 18.000 23.000 14 + 18.000 22.000 13 + 18.000 21.000 12 + 18.000 20.000 11 + 17.000 24.000 20 + 17.000 23.000 19 + 17.000 22.000 18 + 17.000 21.000 17 + 17.000 20.000 16 + 16.000 24.000 25 + 16.000 23.000 24 + 16.000 22.000 23 + 16.000 21.000 22 + 16.000 20.000 21 + 15.000 24.000 30 + 15.000 23.000 29 + 15.000 22.000 28 + 15.000 21.000 27 + 15.000 20.000 26 + 14.000 24.000 35 + 14.000 23.000 34 + 14.000 22.000 33 + 14.000 21.000 32 + 14.000 20.000 31 diff --git a/data/scan_x_rotated_ll_8_4_good.dump b/data/scan_x_rotated_ll_8_4_good.dump new file mode 100644 index 000000000..bff032c3e --- /dev/null +++ b/data/scan_x_rotated_ll_8_4_good.dump @@ -0,0 +1,33 @@ +Latitude, Longitude, Value + 20.000 27.000 8 + 20.000 26.000 7 + 20.000 25.000 6 + 20.000 24.000 5 + 20.000 23.000 4 + 20.000 22.000 3 + 20.000 21.000 2 + 20.000 20.000 1 + 19.000 27.000 16 + 19.000 26.000 15 + 19.000 25.000 14 + 19.000 24.000 13 + 19.000 23.000 12 + 19.000 22.000 11 + 19.000 21.000 10 + 19.000 20.000 9 + 18.000 27.000 24 + 18.000 26.000 23 + 18.000 25.000 22 + 18.000 24.000 21 + 18.000 23.000 20 + 18.000 22.000 19 + 18.000 21.000 18 + 18.000 20.000 17 + 17.000 27.000 32 + 17.000 26.000 31 + 17.000 25.000 30 + 17.000 24.000 29 + 17.000 23.000 28 + 17.000 22.000 27 + 17.000 21.000 26 + 17.000 20.000 25 diff --git a/data/scan_x_rotated_ll_8_7_good.dump b/data/scan_x_rotated_ll_8_7_good.dump new file mode 100644 index 000000000..c7ebdeec6 --- /dev/null +++ b/data/scan_x_rotated_ll_8_7_good.dump @@ -0,0 +1,57 @@ +Latitude, Longitude, Value + 20.000 27.000 8 + 20.000 26.000 7 + 20.000 25.000 6 + 20.000 24.000 5 + 20.000 23.000 4 + 20.000 22.000 3 + 20.000 21.000 2 + 20.000 20.000 1 + 19.000 27.000 16 + 19.000 26.000 15 + 19.000 25.000 14 + 19.000 24.000 13 + 19.000 23.000 12 + 19.000 22.000 11 + 19.000 21.000 10 + 19.000 20.000 9 + 18.000 27.000 24 + 18.000 26.000 23 + 18.000 25.000 22 + 18.000 24.000 21 + 18.000 23.000 20 + 18.000 22.000 19 + 18.000 21.000 18 + 18.000 20.000 17 + 17.000 27.000 32 + 17.000 26.000 31 + 17.000 25.000 30 + 17.000 24.000 29 + 17.000 23.000 28 + 17.000 22.000 27 + 17.000 21.000 26 + 17.000 20.000 25 + 16.000 27.000 40 + 16.000 26.000 39 + 16.000 25.000 38 + 16.000 24.000 37 + 16.000 23.000 36 + 16.000 22.000 35 + 16.000 21.000 34 + 16.000 20.000 33 + 15.000 27.000 48 + 15.000 26.000 47 + 15.000 25.000 46 + 15.000 24.000 45 + 15.000 23.000 44 + 15.000 22.000 43 + 15.000 21.000 42 + 15.000 20.000 41 + 14.000 27.000 56 + 14.000 26.000 55 + 14.000 25.000 54 + 14.000 24.000 53 + 14.000 23.000 52 + 14.000 22.000 51 + 14.000 21.000 50 + 14.000 20.000 49 diff --git a/data/scan_y_regular_ll_5_4_good.dump b/data/scan_y_regular_ll_5_4_good.dump new file mode 100644 index 000000000..dcccfb8a3 --- /dev/null +++ b/data/scan_y_regular_ll_5_4_good.dump @@ -0,0 +1,21 @@ +Latitude, Longitude, Value + 17.000 20.000 16 + 17.000 21.000 17 + 17.000 22.000 18 + 17.000 23.000 19 + 17.000 24.000 20 + 18.000 20.000 11 + 18.000 21.000 12 + 18.000 22.000 13 + 18.000 23.000 14 + 18.000 24.000 15 + 19.000 20.000 6 + 19.000 21.000 7 + 19.000 22.000 8 + 19.000 23.000 9 + 19.000 24.000 10 + 20.000 20.000 1 + 20.000 21.000 2 + 20.000 22.000 3 + 20.000 23.000 4 + 20.000 24.000 5 diff --git a/data/scan_y_regular_ll_5_7_good.dump b/data/scan_y_regular_ll_5_7_good.dump new file mode 100644 index 000000000..8d5be97b9 --- /dev/null +++ b/data/scan_y_regular_ll_5_7_good.dump @@ -0,0 +1,36 @@ +Latitude, Longitude, Value + 14.000 20.000 31 + 14.000 21.000 32 + 14.000 22.000 33 + 14.000 23.000 34 + 14.000 24.000 35 + 15.000 20.000 26 + 15.000 21.000 27 + 15.000 22.000 28 + 15.000 23.000 29 + 15.000 24.000 30 + 16.000 20.000 21 + 16.000 21.000 22 + 16.000 22.000 23 + 16.000 23.000 24 + 16.000 24.000 25 + 17.000 20.000 16 + 17.000 21.000 17 + 17.000 22.000 18 + 17.000 23.000 19 + 17.000 24.000 20 + 18.000 20.000 11 + 18.000 21.000 12 + 18.000 22.000 13 + 18.000 23.000 14 + 18.000 24.000 15 + 19.000 20.000 6 + 19.000 21.000 7 + 19.000 22.000 8 + 19.000 23.000 9 + 19.000 24.000 10 + 20.000 20.000 1 + 20.000 21.000 2 + 20.000 22.000 3 + 20.000 23.000 4 + 20.000 24.000 5 diff --git a/data/scan_y_regular_ll_8_4_good.dump b/data/scan_y_regular_ll_8_4_good.dump new file mode 100644 index 000000000..7b2ca02fc --- /dev/null +++ b/data/scan_y_regular_ll_8_4_good.dump @@ -0,0 +1,33 @@ +Latitude, Longitude, Value + 17.000 20.000 25 + 17.000 21.000 26 + 17.000 22.000 27 + 17.000 23.000 28 + 17.000 24.000 29 + 17.000 25.000 30 + 17.000 26.000 31 + 17.000 27.000 32 + 18.000 20.000 17 + 18.000 21.000 18 + 18.000 22.000 19 + 18.000 23.000 20 + 18.000 24.000 21 + 18.000 25.000 22 + 18.000 26.000 23 + 18.000 27.000 24 + 19.000 20.000 9 + 19.000 21.000 10 + 19.000 22.000 11 + 19.000 23.000 12 + 19.000 24.000 13 + 19.000 25.000 14 + 19.000 26.000 15 + 19.000 27.000 16 + 20.000 20.000 1 + 20.000 21.000 2 + 20.000 22.000 3 + 20.000 23.000 4 + 20.000 24.000 5 + 20.000 25.000 6 + 20.000 26.000 7 + 20.000 27.000 8 diff --git a/data/scan_y_regular_ll_8_7_good.dump b/data/scan_y_regular_ll_8_7_good.dump new file mode 100644 index 000000000..e225cd92a --- /dev/null +++ b/data/scan_y_regular_ll_8_7_good.dump @@ -0,0 +1,57 @@ +Latitude, Longitude, Value + 14.000 20.000 49 + 14.000 21.000 50 + 14.000 22.000 51 + 14.000 23.000 52 + 14.000 24.000 53 + 14.000 25.000 54 + 14.000 26.000 55 + 14.000 27.000 56 + 15.000 20.000 41 + 15.000 21.000 42 + 15.000 22.000 43 + 15.000 23.000 44 + 15.000 24.000 45 + 15.000 25.000 46 + 15.000 26.000 47 + 15.000 27.000 48 + 16.000 20.000 33 + 16.000 21.000 34 + 16.000 22.000 35 + 16.000 23.000 36 + 16.000 24.000 37 + 16.000 25.000 38 + 16.000 26.000 39 + 16.000 27.000 40 + 17.000 20.000 25 + 17.000 21.000 26 + 17.000 22.000 27 + 17.000 23.000 28 + 17.000 24.000 29 + 17.000 25.000 30 + 17.000 26.000 31 + 17.000 27.000 32 + 18.000 20.000 17 + 18.000 21.000 18 + 18.000 22.000 19 + 18.000 23.000 20 + 18.000 24.000 21 + 18.000 25.000 22 + 18.000 26.000 23 + 18.000 27.000 24 + 19.000 20.000 9 + 19.000 21.000 10 + 19.000 22.000 11 + 19.000 23.000 12 + 19.000 24.000 13 + 19.000 25.000 14 + 19.000 26.000 15 + 19.000 27.000 16 + 20.000 20.000 1 + 20.000 21.000 2 + 20.000 22.000 3 + 20.000 23.000 4 + 20.000 24.000 5 + 20.000 25.000 6 + 20.000 26.000 7 + 20.000 27.000 8 diff --git a/data/scan_y_rotated_ll_5_4_good.dump b/data/scan_y_rotated_ll_5_4_good.dump new file mode 100644 index 000000000..dcccfb8a3 --- /dev/null +++ b/data/scan_y_rotated_ll_5_4_good.dump @@ -0,0 +1,21 @@ +Latitude, Longitude, Value + 17.000 20.000 16 + 17.000 21.000 17 + 17.000 22.000 18 + 17.000 23.000 19 + 17.000 24.000 20 + 18.000 20.000 11 + 18.000 21.000 12 + 18.000 22.000 13 + 18.000 23.000 14 + 18.000 24.000 15 + 19.000 20.000 6 + 19.000 21.000 7 + 19.000 22.000 8 + 19.000 23.000 9 + 19.000 24.000 10 + 20.000 20.000 1 + 20.000 21.000 2 + 20.000 22.000 3 + 20.000 23.000 4 + 20.000 24.000 5 diff --git a/data/scan_y_rotated_ll_5_7_good.dump b/data/scan_y_rotated_ll_5_7_good.dump new file mode 100644 index 000000000..8d5be97b9 --- /dev/null +++ b/data/scan_y_rotated_ll_5_7_good.dump @@ -0,0 +1,36 @@ +Latitude, Longitude, Value + 14.000 20.000 31 + 14.000 21.000 32 + 14.000 22.000 33 + 14.000 23.000 34 + 14.000 24.000 35 + 15.000 20.000 26 + 15.000 21.000 27 + 15.000 22.000 28 + 15.000 23.000 29 + 15.000 24.000 30 + 16.000 20.000 21 + 16.000 21.000 22 + 16.000 22.000 23 + 16.000 23.000 24 + 16.000 24.000 25 + 17.000 20.000 16 + 17.000 21.000 17 + 17.000 22.000 18 + 17.000 23.000 19 + 17.000 24.000 20 + 18.000 20.000 11 + 18.000 21.000 12 + 18.000 22.000 13 + 18.000 23.000 14 + 18.000 24.000 15 + 19.000 20.000 6 + 19.000 21.000 7 + 19.000 22.000 8 + 19.000 23.000 9 + 19.000 24.000 10 + 20.000 20.000 1 + 20.000 21.000 2 + 20.000 22.000 3 + 20.000 23.000 4 + 20.000 24.000 5 diff --git a/data/scan_y_rotated_ll_8_4_good.dump b/data/scan_y_rotated_ll_8_4_good.dump new file mode 100644 index 000000000..7b2ca02fc --- /dev/null +++ b/data/scan_y_rotated_ll_8_4_good.dump @@ -0,0 +1,33 @@ +Latitude, Longitude, Value + 17.000 20.000 25 + 17.000 21.000 26 + 17.000 22.000 27 + 17.000 23.000 28 + 17.000 24.000 29 + 17.000 25.000 30 + 17.000 26.000 31 + 17.000 27.000 32 + 18.000 20.000 17 + 18.000 21.000 18 + 18.000 22.000 19 + 18.000 23.000 20 + 18.000 24.000 21 + 18.000 25.000 22 + 18.000 26.000 23 + 18.000 27.000 24 + 19.000 20.000 9 + 19.000 21.000 10 + 19.000 22.000 11 + 19.000 23.000 12 + 19.000 24.000 13 + 19.000 25.000 14 + 19.000 26.000 15 + 19.000 27.000 16 + 20.000 20.000 1 + 20.000 21.000 2 + 20.000 22.000 3 + 20.000 23.000 4 + 20.000 24.000 5 + 20.000 25.000 6 + 20.000 26.000 7 + 20.000 27.000 8 diff --git a/data/scan_y_rotated_ll_8_7_good.dump b/data/scan_y_rotated_ll_8_7_good.dump new file mode 100644 index 000000000..e225cd92a --- /dev/null +++ b/data/scan_y_rotated_ll_8_7_good.dump @@ -0,0 +1,57 @@ +Latitude, Longitude, Value + 14.000 20.000 49 + 14.000 21.000 50 + 14.000 22.000 51 + 14.000 23.000 52 + 14.000 24.000 53 + 14.000 25.000 54 + 14.000 26.000 55 + 14.000 27.000 56 + 15.000 20.000 41 + 15.000 21.000 42 + 15.000 22.000 43 + 15.000 23.000 44 + 15.000 24.000 45 + 15.000 25.000 46 + 15.000 26.000 47 + 15.000 27.000 48 + 16.000 20.000 33 + 16.000 21.000 34 + 16.000 22.000 35 + 16.000 23.000 36 + 16.000 24.000 37 + 16.000 25.000 38 + 16.000 26.000 39 + 16.000 27.000 40 + 17.000 20.000 25 + 17.000 21.000 26 + 17.000 22.000 27 + 17.000 23.000 28 + 17.000 24.000 29 + 17.000 25.000 30 + 17.000 26.000 31 + 17.000 27.000 32 + 18.000 20.000 17 + 18.000 21.000 18 + 18.000 22.000 19 + 18.000 23.000 20 + 18.000 24.000 21 + 18.000 25.000 22 + 18.000 26.000 23 + 18.000 27.000 24 + 19.000 20.000 9 + 19.000 21.000 10 + 19.000 22.000 11 + 19.000 23.000 12 + 19.000 24.000 13 + 19.000 25.000 14 + 19.000 26.000 15 + 19.000 27.000 16 + 20.000 20.000 1 + 20.000 21.000 2 + 20.000 22.000 3 + 20.000 23.000 4 + 20.000 24.000 5 + 20.000 25.000 6 + 20.000 26.000 7 + 20.000 27.000 8 diff --git a/data/spherical_model_level.grib1.good b/data/spherical_model_level.grib1.good new file mode 100644 index 000000000..f2fbbfe3c --- /dev/null +++ b/data/spherical_model_level.grib1.good @@ -0,0 +1,521 @@ +195.092 0 9.39185 0 -3.94459 0 3.23379 0 +-1.1253 0 -1.44356 0 -1.01892 0 -0.320277 0 +0.324408 0 0.48513 0 -0.0238971 0 -0.205653 0 +-0.133815 0 -0.0223142 0 -0.0218931 0 -0.117258 0 +0.00719868 0 0.00706737 0 -0.0347602 0 -0.0297971 0 +0.0183887 0 0.0408559 -5.62587e-06 0.00382669 -4.95987e-06 -0.029847 -4.39676e-06 +0.00532962 -3.91723e-06 -0.000591302 -3.50617e-06 0.0212029 -3.15168e-06 0.0208744 -2.84424e-06 +0.00110634 -2.57622e-06 -0.00703083 -2.34145e-06 -0.0215584 -2.13486e-06 -0.00668502 -1.95231e-06 +0.00706794 -1.79037e-06 -0.00242576 -1.64618e-06 -0.0110807 -1.51735e-06 -0.0117014 -1.40186e-06 +-0.0204946 -1.29802e-06 -0.00102711 -1.20437e-06 -0.00799654 -1.11968e-06 -0.00901462 -1.0429e-06 +0.00515108 -9.73105e-07 -0.009471 -9.09521e-07 0.00677177 -8.5146e-07 0.0112976 -7.98331e-07 +0.00716242 -7.49613e-07 0.00963462 -7.04855e-07 0.00132392 -6.63657e-07 -0.0016973 -6.25668e-07 +0.000364669 -5.90579e-07 -0.00332593 -5.58115e-07 -0.00806445 -5.28032e-07 -0.00564058 -5.00114e-07 +-0.00592587 -4.74168e-07 -0.0040316 -4.50019e-07 0.000171002 -4.27514e-07 0.000125764 -4.06514e-07 +0.00224433 -3.86893e-07 0.000836223 -3.6854e-07 0.00137192 -3.51351e-07 -0.00294784 -3.35235e-07 +-0.000402082 -3.20108e-07 -0.00420892 -3.05896e-07 -0.00398192 -2.92529e-07 -0.00740343 -2.79945e-07 +-0.426161 -1.59447 0.622337 1.0468 1.59486 0.124171 0.556063 0.512123 +0.494767 0.762743 0.500085 0.361946 -0.0177802 0.272408 -0.322158 -0.379181 +-0.235812 -0.221134 0.0436339 0.250612 0.055499 0.134785 0.0495504 0.0275194 +0.0345857 -0.0391556 -0.00786455 -0.0415737 -0.00785392 0.0278489 -0.00111343 -0.0301168 +-0.0426352 0.0283876 -0.0253411 -0.00281604 -0.0228137 -0.0442467 -0.00470369 -0.0327455 +0.00237775 -0.00349784 -0.0175002 -0.0220622 -0.000870987 0.00790448 0.0142839 0.0200257 +0.00754253 0.0127135 0.00383821 0.00536619 0.00630542 0.0105002 -0.0198113 0.0166778 +-0.0106379 0.0203723 -0.0195754 0.00789103 -0.00680886 0.00126743 0.0048006 -0.00382261 +-0.0126593 0.004455 0.00700075 0.00263507 0.00386684 0.000649658 0.00817662 -0.0033948 +0.00544211 -0.00119355 -0.000138097 -0.00186046 0.00654118 -0.00478544 0.010808 -0.0123729 +0.00374715 -0.0146449 0.00420045 -0.0175873 -0.000201554 -0.0150104 -0.000927988 -0.000892325 +0.00267879 -0.00246622 -0.00570797 -0.000920809 -0.00227562 0.0113021 -0.00393148 0.0121306 +-0.00573462 0.00390771 -0.00649975 0.00672957 -0.00168074 -0.00265286 -0.00391278 -0.00624706 +0.00177044 -0.00583206 0.00296811 -0.00510263 0.0077006 -0.00263525 0.00435232 -0.00324432 +0.0040515 0.00189824 0.000485992 0.00384821 0.000655087 0.00622732 -0.00149278 0.00569106 +0.0010787 0.00234759 -0.000165973 0.00422588 -0.0020101 0.00210911 0.852979 0.588097 +0.0846904 -0.076237 -0.0160079 0.022346 -0.2096 0.467232 0.0441515 0.492023 +0.203224 0.0722975 -0.112033 0.0224663 0.155199 -0.126581 -0.00669932 0.0725406 +-0.0153894 0.0789894 -0.0627445 -0.0355943 -0.0547212 0.0818934 0.112838 0.0565594 +0.053946 0.115537 0.000151794 0.0859026 -0.0648094 -0.00934742 -0.0237199 0.0097614 +-0.0132002 0.011723 -0.0205309 -0.0361138 -0.0160265 -0.00243998 -0.00384785 0.00307384 +0.0175067 0.0163313 0.010885 -0.0205127 0.0043017 -0.0328804 -0.00307339 -0.0098279 +0.0018078 0.00335426 -0.00892643 0.00819173 -0.0167593 0.0120442 -0.0168573 0.0065223 +-0.00559255 -0.00391626 0.00660149 -0.000176201 -0.00380937 -0.00360425 -0.00965069 0.00784982 +-0.0230521 0.00765569 -0.0307721 -0.0026067 -0.0211878 -0.000186741 -0.0102516 -0.00963774 +-0.00537847 -0.0131965 -0.00293744 -0.013839 0.00199778 -0.0100912 0.00892064 -0.00146687 +0.009791 -0.00382962 0.00869763 0.00193015 0.0101137 0.00539182 0.00260641 0.0070177 +0.00359968 0.00440195 0.00567632 -0.00260156 0.00336275 -0.00156083 0.00297455 -0.00615523 +-0.00443394 -0.00293271 -0.00751679 -0.00187714 -0.00743066 -0.00672108 -0.00122077 -0.00376703 +-0.00411338 -0.00152366 -0.00247388 0.000958506 -0.000664966 0.00244679 -0.000489879 0.00684747 +0.00274515 0.00538431 0.00344729 0.00566786 -0.000577578 0.0041203 -0.00504758 0.001911 +-0.00617179 0.00308199 -0.0881302 -0.279588 -0.223583 0.352675 -0.177135 -0.193486 +0.0617988 -0.234554 -0.0145331 -0.0539485 0.0217477 0.0448694 -0.0781573 -0.0477737 +0.0636683 -0.0509251 -0.0331275 -0.0314981 0.108562 0.0133003 0.0329148 -0.00799893 +-0.0556672 0.0324276 -0.0529993 0.113072 -0.0239315 0.0990462 0.00472048 0.0625662 +-0.0313796 0.0563817 -0.0065781 0.0189573 -0.035002 -0.0073391 -0.020054 0.00246697 +5.12227e-05 0.0104675 -0.0306139 -0.000920791 -0.00193854 -0.0285796 0.00475447 -0.00345085 +0.00794376 -0.0122127 -0.00133667 -0.00300555 -0.007158 -0.0234999 -0.00672316 -0.000840455 +-0.000756629 -0.00150145 -0.0143588 -0.000913079 -0.0121659 0.0123206 -0.0126928 0.0111381 +-0.0079766 0.016588 -0.0129559 -0.00489546 -0.0103318 -0.00837918 -0.00733262 -0.00299162 +-0.00581505 0.00283736 -0.00261651 0.00075501 0.0023579 -0.00150669 0.00375952 -0.000752995 +-0.00409413 -0.0165784 -0.00825166 -0.0111852 -0.00812512 -0.00123537 -0.00423392 0.000122252 +-0.0103012 0.00528716 -0.0134025 0.00189733 -0.00470749 -0.00108433 0.000536813 -0.000172517 +-0.00102811 0.00351525 0.000647577 -0.000340401 -0.00144637 -0.00225634 0.00789466 -0.00497261 +0.00731584 -0.00842856 0.00815923 -0.000954513 0.00744287 -0.00108813 0.00332095 0.00269392 +0.00183677 0.00149132 5.58655e-05 0.00261908 -0.00272345 0.00199471 0.0015742 0.00225196 +-0.00234367 0.000348962 -0.00422286 -0.00150653 0.168608 -0.0346078 -0.0853367 0.118238 +-0.163532 -0.00279233 0.267348 0.0624858 -0.0192543 0.0405403 0.122463 -0.121667 +-0.0345464 -0.0707399 0.0957083 0.00911359 -0.0259646 -0.0353649 0.0348334 0.0664461 +0.0712085 -0.020054 0.0111171 0.0229208 -0.011299 -0.0228084 0.00790771 0.0019371 +-0.0144496 0.0255238 -0.00392216 0.00693947 -0.00859402 -0.0253595 0.0249115 0.0168564 +-0.0205004 0.00396153 0.0254156 -0.00853084 0.0263176 -0.0153656 0.0193223 -0.0198774 +-0.00249504 -0.0123555 0.00227174 -0.00733564 -0.0200856 0.0025596 0.000114358 -0.00894045 +-0.00104682 -0.00732943 -0.0152169 -0.00319532 0.00573755 0.00110552 -0.0120551 0.00555144 +-0.0204996 -0.00197466 -0.0231728 0.00174534 -0.0074617 0.0149136 0.000339855 0.0134775 +0.00257609 0.000303275 -0.00152969 0.00510232 0.0036123 0.0065179 0.0161308 0.00447039 +0.0123002 0.00699553 0.0057994 0.00294904 -0.00146973 0.00484093 -0.00631461 0.00841304 +-0.00217172 0.00640577 -0.00181779 0.000319716 0.00061219 -0.00111109 0.00207812 -0.00348398 +-0.00373402 -0.00239901 -0.0036567 -0.00196626 -0.00167196 -0.00564335 0.00292351 -0.00552519 +0.00473471 -0.0053467 0.00695463 -0.0047166 0.00660143 0.000107423 0.00479709 0.000926394 +0.00374076 0.00355131 0.000789513 0.00528102 0.00118901 0.00430303 -0.00422139 0.00100594 +-0.0060231 0.00227748 -0.00580712 0.00315365 -0.0527447 0.304066 -0.100348 -0.0012669 +0.0669954 -0.00361623 -0.0132171 0.269949 -0.13568 0.0513211 0.0878713 0.0320568 +0.0235205 -0.0105659 -0.00324995 0.0212958 0.105897 0.0217917 0.0254647 -0.0132147 +0.00571737 0.0110323 0.0269048 -0.000935704 0.00511157 -0.00252774 -0.0199635 -0.0185074 +-0.0616348 0.00248663 -0.0192043 -0.0220465 0.012026 -0.0279561 -0.00647719 -0.00798288 +-0.00582151 0.015913 0.00235668 0.0123493 -0.0175897 0.0117206 -0.00531537 -0.00720035 +0.00351535 0.00200755 -0.00736227 0.00288644 0.00393891 0.00923282 -0.0116242 0.0109767 +-0.0125277 0.00492078 0.00672317 0.00744515 0.0060027 0.000863576 0.010593 -0.0006959 +-0.00274538 0.0105743 -0.0130048 0.000354519 -0.00148822 -0.00555911 -0.0019949 0.00670316 +0.00438879 0.0118737 0.00132837 0.00273488 0.00448275 0.000495673 0.00128191 -0.00616778 +-0.00917767 -0.00419315 -0.00781265 -0.0027502 -0.00215005 0.00718347 -0.00208302 0.00462111 +-0.0043947 0.00636511 -0.00291866 0.00171867 -0.00579278 0.00313389 -0.000943173 0.0063695 +0.00132398 0.00121295 0.000210073 -0.00173319 0.00275325 -0.00502767 0.00376327 -0.00230552 +0.00308202 -9.80275e-05 -0.00170255 0.00407885 -0.00397376 -0.000221623 -0.00438063 -0.00075494 +-0.0032053 0.000917104 -0.00192138 -0.00514272 -0.00246809 -0.00435722 -0.00330462 -0.00577856 +-0.00391971 -0.00789494 0.0697809 -0.0941824 0.0328707 -0.01393 -0.0882676 0.0362097 +-0.0673864 -0.159907 -0.0663171 -0.114813 0.010378 -0.0284483 0.045121 0.036175 +0.0887953 -0.0664885 0.104395 -0.0912833 0.113541 -0.00373413 0.0263955 -0.0464344 +0.0228578 -0.0290342 -0.00751342 -0.0126795 -0.0107268 -0.00142864 -0.0142697 0.0170499 +-0.0119735 0.0185006 -0.00852224 0.0176476 -0.000133887 0.0115003 -0.00951731 0.0168131 +0.00600155 0.00526283 -0.00373741 -0.0216019 -0.0121232 -0.00477109 -0.0150838 0.00824425 +-0.0195548 0.0155134 -0.0141102 0.00720909 -0.000196562 -0.00936532 -0.00249627 -0.00500293 +0.0204952 0.0111567 0.0024632 0.00417509 -0.00177991 0.017266 0.00635048 0.00384506 +0.0108227 0.00421975 0.0149218 0.00906983 0.0087928 0.00750987 -0.00177785 0.0100606 +-0.000332651 0.00604462 0.000699365 0.00810855 -0.00193601 0.00138459 -0.00410539 0.00022172 +-0.00625712 -0.00450698 -0.0119776 -0.000289337 -0.0109929 -0.00272637 -0.00379635 -0.00114587 +0.00627846 -0.000431719 -0.000431178 -0.0056887 -0.00226197 -0.00119015 4.35689e-05 -0.00261513 +0.00300303 -0.00258593 0.00315988 -0.00154232 -0.00445229 -0.00254776 -0.00468617 -0.00132215 +-0.00263872 -0.00150657 -0.00242809 -0.00166793 0.000671796 -0.00554522 -0.00322239 -0.00563224 +-0.00321238 -0.00683818 -0.00338614 -0.0071093 0.000573681 -0.00388356 -0.0885141 0.0228278 +-0.0983286 0.0953518 -0.0382954 0.0103998 0.0650207 -0.0163772 -0.0545351 0.0174806 +0.0850431 -0.0625257 0.0646964 -0.0978542 0.160654 -0.0350258 0.0763091 -0.044681 +-0.03087 -0.0033198 0.0813852 -0.00408029 -0.00398751 -0.000874023 -0.0105522 0.0592334 +-0.0128003 0.0216367 -0.0141784 0.0115034 -0.0219723 0.0190522 -0.0148958 0.0201264 +-0.00485823 0.0391412 -0.00764486 0.003142 -0.0022023 0.0138272 -0.0137148 0.0140119 +-0.00652767 0.0159074 -0.011179 0.0103309 -0.0215197 0.000273546 -0.00913533 0.00119224 +0.00441121 0.0107265 -0.00383175 0.00976567 -0.0066944 0.0151958 -0.000423797 0.012988 +0.00391563 -0.00306544 0.00905734 -0.000186741 0.0175396 0.017877 0.00504798 0.00255536 +0.00307438 -0.000320634 -0.00111564 -0.00528199 -0.00172921 -0.00239663 -0.00731119 0.00083297 +-0.00663916 0.00666144 -0.00341155 -0.00272491 -0.00645822 -0.00208903 -1.90524e-05 -0.00231531 +-0.00140544 0.00236624 -0.0021905 0.00013094 -0.00493147 -0.00228178 0.00322969 -0.00203197 +0.00637395 -0.00164081 0.00594433 0.00128312 0.000635896 0.00160733 -0.00017815 -0.000270246 +-0.00267284 -0.00217674 -0.00497984 -0.00358135 -0.00235884 -0.000945976 -0.00356832 -0.00433083 +-0.00319121 -0.0032398 -0.000604605 -0.00762543 0.00331928 -0.00541539 0.00281055 -0.00719224 +-0.0171948 0.060262 0.0835689 0.0127645 0.00805496 0.0769907 -0.0792333 0.0440958 +0.0160431 0.012394 0.00556695 0.0559246 0.0286308 -0.0167093 -0.0513099 -0.0429741 +0.0454425 -0.0215862 -0.0560837 -0.00504079 -0.0404643 0.0173244 -0.0470356 -0.0336551 +0.0146359 0.00143275 0.000759094 -0.0210736 -0.0177587 -0.000375765 0.0228457 -0.0303649 +-0.0336469 -0.0105734 0.0069309 -0.0360259 -0.0426937 -0.0137906 -0.0260671 0.00629898 +-0.0187899 -0.00820855 -0.0230027 -0.0189607 0.00741706 -0.0151887 -0.00278398 -0.0226165 +-0.00700257 0.000553891 -0.00256375 -0.0188463 -0.00948568 -0.0148929 -0.00877959 -0.00630874 +-0.00120696 0.00698566 -0.0033927 0.00749665 0.00512285 0.0065535 0.00433681 0.0118076 +0.00422737 0.015464 0.00108292 -0.00415901 0.0134364 -0.00119103 -0.00453317 -0.00618081 +-0.00513962 -0.0143933 -0.00920967 -0.00615652 -0.00252505 -0.012167 -0.00577103 0.00152312 +0.00387411 -0.00215201 0.000240943 -0.000229415 0.00606087 2.3397e-05 0.00452698 0.00372368 +0.00354338 0.00312658 0.000976243 0.0012403 0.00360153 0.00463689 -0.000213147 -0.000571397 +-0.00376847 -0.00247475 -0.000759312 0.00139645 -0.000540026 -0.00145699 -0.000705123 -0.00398755 +-6.99395e-05 -0.00643431 -0.00223802 -0.00680006 -0.00302429 -0.00350874 -0.000564728 -0.0030242 +-0.0642532 -0.144904 0.0807672 0.0554082 0.0235144 -0.0350288 -0.0129314 0.00769701 +0.00905192 -0.000968665 -0.0105137 -0.0748051 -0.0246445 -0.0238896 -0.0483392 -0.0231843 +-0.0670742 -0.0299122 -0.00325633 -0.0330151 -0.0266528 0.00865556 0.0283792 0.0189327 +0.0196222 0.0175574 -0.00388156 0.0191196 -0.0122562 -0.0113996 0.0106365 0.00243655 +-0.0185429 0.00561233 -0.0178891 -0.0240652 -0.0121232 -0.0048613 -0.0177336 -0.015755 +-0.0151786 0.00163145 0.0177768 -0.00619769 0.00772935 -0.00480969 -0.015066 -0.00327504 +0.0052419 0.00504424 -0.000661525 0.0130783 0.0137439 0.00979625 0.00666219 0.00405678 +0.00319657 0.0112483 0.00351971 0.00230974 -0.00908313 0.00193634 -0.0175074 0.0146483 +-0.00861383 0.00272926 -0.00990227 -0.00413464 0.000807649 0.000981275 -0.00762584 -0.00667143 +0.00821503 -0.00584673 0.00850917 -0.00512762 0.00618793 -0.00645141 0.0040253 -0.00171584 +0.00898681 0.00319079 0.00370665 0.00425334 0.000754079 -0.00350374 -0.00268602 0.00213937 +-0.00143083 0.00191318 -0.00330311 -9.63118e-05 -0.00491553 -0.00296219 -0.00421286 -0.00322591 +-0.00626729 -0.00132121 -0.00706149 -0.00084409 -0.00649304 -0.000582849 -0.00591361 -0.00318686 +-0.00225049 -0.00159421 0.00173272 -0.00362935 0.00553639 -0.0022327 -0.0408712 0.138281 +-0.00491057 -0.10968 0.0704596 0.00642389 -0.0540581 -0.0199689 -0.000919856 -0.00930004 +-0.0277735 -0.00249907 0.0417084 0.0619686 0.0438669 0.00759702 -0.00163659 -0.0447288 +-0.0553165 0.00185854 -0.0338678 0.0271692 -0.0365082 0.0256125 0.00437728 0.00654593 +-0.000452633 0.00882088 -0.0221634 -0.00475174 0.0168599 0.00492922 -0.00233796 0.0138058 +0.00516491 0.000757498 0.00735712 0.00867615 0.00535522 0.0123943 0.00137627 0.000849089 +0.0153678 0.0200119 0.0192645 0.0061756 -0.00399211 0.00385829 -0.0053297 0.00218476 +0.00225666 0.00684266 -0.00375943 0.00810604 5.06367e-05 0.0109809 0.00895315 0.00378352 +-0.00458462 -0.000610611 -0.00720767 0.00146506 -0.0059125 -0.00260539 -0.012869 -0.0147864 +-0.00633092 -0.00588058 -0.000562867 -0.00913388 0.00506447 -0.00948273 0.0034995 -0.00868341 +0.00528643 -0.00365054 0.0016986 -0.00439575 0.00945716 -0.00750478 0.0069772 -0.00784195 +0.0040953 0.00116649 -0.00112948 -0.000937194 0.00246269 3.21744e-05 -0.00136121 -0.00447793 +-0.00670494 -0.000585211 -0.00678101 -0.00106972 -0.00431858 0.00354471 -0.00165201 0.0020676 +-0.00197268 0.00306564 0.000413045 -0.0024544 -0.00137037 -0.0035665 -0.000582824 -0.00428942 +0.0007798 -0.0020824 0.00269084 -0.0409431 -0.0153616 0.0121075 -0.092298 -0.0363628 +0.104945 0.0127341 -0.0234942 0.0226426 0.0511818 -0.0266313 0.0362525 0.0240263 +0.00786594 -0.0100086 0.0290614 0.0304286 0.0310729 -0.0138015 0.00841903 0.00394542 +0.0198837 -0.0180733 0.0448192 -0.0234123 0.0115772 0.0212592 0.00822564 0.0171776 +-0.0339828 0.0124848 0.00599613 0.0161448 0.00087872 0.0302533 -0.000909414 -0.0118208 +-0.00812745 0.0183911 0.0133598 0.0230327 -0.00383883 0.0233815 0.00520088 0.00659568 +-0.00205373 -0.00139716 -0.00588952 -0.00975459 0.0117642 -0.00455635 -0.0115372 -0.0144676 +-0.00645935 -0.0076541 -0.00524616 -0.00213453 -0.0116653 -0.00441009 -0.00826148 -0.00313494 +-0.00129519 -0.00994663 0.00602005 0.00135385 0.0015922 -0.00802493 0.00974959 -0.0111355 +0.0110125 -0.0079933 0.00651536 -0.00593829 0.0103806 -0.00296147 0.00918279 -0.00264695 +-0.000383328 0.002319 -0.0055828 0.00800982 0.00623752 0.00224572 0.00366776 -0.00307224 +-0.000409146 0.000945825 -0.00118015 0.00266207 0.00189812 0.00415336 -0.00112918 0.00228231 +3.38758e-05 0.00116735 -0.00479411 -0.000778792 -0.00120851 0.000860494 0.00299209 0.00172527 +0.00651492 0.00164061 0.00567464 0.00398701 -0.0388478 0.0905123 0.025072 -0.125388 +-0.00553334 0.139127 -0.0285605 -0.0357995 0.0604791 0.060441 -0.00601046 0.0370104 +0.0124732 -0.00405892 0.0125755 0.0337579 -0.0141943 0.0358354 -0.00407138 0.00978278 +0.0349294 0.00243336 -0.0173063 0.0253957 -0.013848 0.00350148 -0.0445569 -0.00180661 +-0.0283279 0.00340981 -0.0299333 0.00530667 -0.00121655 -0.0146811 -0.00660116 -0.0183719 +0.0064159 -0.00138054 0.00689342 -0.00395606 -0.00311685 -0.0111925 -0.0031157 -0.0177947 +0.000166922 -0.0158176 -0.00211655 -0.0212005 -0.0120432 -0.00768813 0.00735477 -0.0047242 +-0.0102643 -0.00692863 -0.000114451 -0.00144463 -0.000168519 -0.011425 0.00236249 -0.00349553 +0.00196284 -0.00674068 0.00235763 -0.00904926 -0.000763259 0.0039069 0.0118941 0.00489041 +0.00511276 -0.00159588 0.0129038 0.0106897 0.0106736 0.00484011 0.0093067 0.00606478 +-0.00243849 0.00692576 0.000322405 0.00324555 -0.000829772 0.00141427 -0.0036187 3.31939e-05 +-0.000198976 -0.00585228 -0.000636785 -0.00471016 -0.000993464 -0.00422074 -0.0064685 -0.000108908 +0.000879207 -0.00340396 0.00229174 -0.00113726 -0.000536969 0.000888052 0.00133511 0.00106553 +0.000311849 0.00635189 -0.0032874 0.00787472 -0.0155617 0.0291163 0.00444829 0.0317752 +-0.0726721 -0.0173369 0.0158332 0.0213481 -0.0355475 0.0193115 -0.018291 -0.0139656 +-0.0431956 -0.0315562 0.00702343 0.0222374 -0.0430976 -0.00946266 0.00809657 0.0212995 +-0.000701653 -0.00716621 -0.0200868 -0.00786666 0.000925847 -0.0269071 0.000489514 0.00264582 +-0.0163309 0.0262676 0.0164969 -0.00865795 0.000358366 0.0089729 -0.00350376 0.0320107 +0.00175396 0.0102062 -0.00661724 0.0204489 0.00755041 0.0307734 0.00543323 0.0139205 +-0.00457152 0.0141441 0.0125788 -0.00183038 0.00921286 -0.00572828 -0.00680687 0.00703546 +-0.0068386 -0.00544463 -0.00419184 0.0108719 -0.000307925 0.00628364 0.00722894 0.0132184 +0.00322033 -0.000930422 -0.00435503 0.00794021 -0.000783156 -0.000709701 0.00643885 0.000169232 +0.00831834 0.00221625 0.00638008 0.00223245 -0.00596727 0.00308458 -0.00242772 0.0101688 +-0.00106099 0.0023958 -0.00451757 0.00326193 -0.00181212 0.00147275 -0.000524401 0.0023531 +0.00120236 0.00170151 -0.00547327 -3.63235e-05 -0.00447471 -0.00225299 -0.0044459 -0.00170693 +-0.00431185 0.000544964 0.000254226 -0.000217881 0.000872186 0.00482092 -0.00212829 0.00476003 +-0.00141901 0.00367942 0.0455943 0.0188541 -0.0532947 -0.0276613 -0.0214724 -0.00312822 +-0.0237809 0.00438924 0.0092844 -0.00860649 0.00359711 0.00127063 0.0222336 -0.0046964 +-0.016154 -0.0172755 0.0208612 0.0280189 -0.00643908 0.0139407 0.00233006 -0.0109816 +0.00666877 0.0289971 -0.0174178 0.00755105 0.00765857 -0.00878545 0.0154522 0.0127383 +0.00177998 0.0124898 -0.00466452 -0.00539967 -0.00218246 -0.00580043 -0.0112979 -0.0207486 +0.00558501 -0.0090753 0.0110089 0.00868514 -0.0150552 0.0113175 -0.00783222 0.0146254 +-0.00613482 0.0089673 0.00210681 0.00201296 0.00310823 0.000440776 -0.00340481 -0.00497886 +-0.00367891 -0.000845717 0.00206122 -0.00290974 -0.0133266 -0.00467062 0.0042856 -0.00632839 +-0.00214526 0.00290874 -0.0114965 0.00738455 0.00095473 0.00603343 0.00155411 0.00320781 +0.000554514 -0.00160508 -0.00723545 -0.0040606 0.00121748 -0.0026166 -0.0063706 -0.00514706 +-0.00530803 -0.000496953 -0.000423674 -0.00407212 0.00208831 0.0023867 0.00264314 -0.000621827 +0.0027532 -0.00249428 0.00369459 -0.00189001 0.00499546 -0.000577532 0.00288308 -0.000855333 +-0.00331148 -0.00083399 -0.00424105 0.00109784 -0.00435985 0.0018161 0.00510109 -0.0373914 +0.0145974 -0.0256105 0.0392482 0.0349547 0.0100257 -0.0461079 -0.0147043 0.0288724 +-0.00412851 -6.67248e-05 -0.0382161 -0.0195187 0.0115462 0.0235355 -0.00260417 0.0173971 +-0.00357144 0.0266283 -0.0114417 0.00641459 -0.00138833 0.0195464 -0.00323752 -0.0118075 +0.00600891 -0.00382542 0.00878194 0.0126224 -0.0133896 -0.00209634 0.0362175 -0.00692386 +0.00897024 0.0127748 0.0180524 0.00113582 0.00630293 0.00313008 0.00856082 -0.0125208 +0.00783844 -0.0118991 -0.00585106 -0.0205958 0.00204593 -0.0119156 0.000537645 0.00213245 +-0.00243039 0.00397605 -0.00420846 0.00287144 0.000456315 -0.00086696 0.001891 -0.0010317 +-0.00181107 -0.00239866 -0.0104456 -0.00115841 -0.00624021 -0.0072641 -0.000726356 -0.00299568 +-0.00736466 -0.00550625 -0.00363065 -0.00163543 -0.0019241 -0.0079508 -0.00260074 -0.00520325 +0.00086105 -0.00734492 0.00563643 -0.00122998 0.00346206 0.0014175 0.00493037 0.00319162 +0.00387551 0.00462404 0.00393545 0.00774436 0.00792363 0.00272747 0.00710299 0.00363904 +0.00201356 0.00184459 -0.0014376 0.000145225 0.000394689 0.000608086 0.000637103 -0.00315358 +0.0113137 -0.00796971 0.00673989 -0.0166955 -0.0347299 0.00191787 -0.00361096 -0.00209137 +0.0347773 0.00717385 -0.0220678 -0.0158608 0.0348956 0.00259067 -0.0155632 0.0208535 +-0.00235564 0.00650992 0.0298073 -0.028313 -0.0145832 -0.00350893 -0.00741296 -0.000975825 +-0.0216031 -0.00627087 0.0159112 0.00853263 0.0021356 -0.0208281 -0.00939628 -0.00950243 +0.0179625 -0.00980937 -0.000713963 0.00118058 0.00736856 0.00800107 0.0027394 -0.00276443 +0.003204 0.011379 0.0069837 0.00472452 0.00735254 -0.00313892 0.0056859 0.0132157 +-0.00184398 -0.00409263 0.000907774 -0.00790914 0.000523829 0.00302378 -0.00542119 0.0102721 +-0.0118188 0.00208299 -0.0184474 0.0028752 -0.00823686 0.00367992 0.0019923 -0.00135287 +0.00440661 0.00530304 -0.00425148 -0.00449551 0.00198405 0.0068157 -0.000259958 -0.00482482 +-0.000967272 0.00183644 -0.00109847 0.00143502 -0.000221252 -0.00164111 -0.00263157 0.0057141 +0.00153262 -0.000670034 0.00180807 0.00426858 0.0033961 0.00584055 0.00739614 0.00713336 +0.00260533 0.00722341 -0.00171618 0.00969482 -0.00418405 0.000861245 -0.00460656 0.00333758 +-0.0505571 0.00195319 -0.0284861 -0.00952 -0.00291356 0.0233461 -0.0110739 0.0143203 +-0.0132608 -0.0339209 0.0273559 0.0418173 -0.00177742 -0.0360027 0.0146123 0.0344111 +0.0042461 0.00425404 -0.0336686 0.0264151 0.00478474 0.0259455 0.00296815 0.00766061 +0.0103149 0.0302387 0.0067738 -0.0171717 0.00027227 -0.0144738 0.0112497 0.00422869 +-0.00487971 -0.0258092 0.00548136 -0.00706909 -0.00440638 -0.0110789 -0.0107964 0.00496838 +-0.0137527 0.00760852 0.000693914 0.00946047 -0.00755685 0.00379104 0.00335216 -0.00632585 +-0.0149252 0.00647114 -0.0109806 0.0107551 -0.00203729 -0.00126863 -0.0111531 -3.81109e-05 +-0.000237037 -0.00205424 -0.00759787 -0.0072641 -0.00322672 -0.00119269 -0.00593038 -0.00641739 +-0.0134917 -0.0059306 -0.00598058 0.00163833 -0.00373374 -0.00200138 -0.0070205 -0.000184166 +0.00307746 -0.00340052 -0.00751718 -0.00103385 0.00546084 0.00355447 0.00752701 0.00386411 +0.00616636 0.0061146 0.000718419 0.00488776 0.000983178 0.00908748 -0.00687378 0.0040347 +-0.0125076 0.00298446 -0.00581766 -0.000908221 -0.00698992 0.00259808 0.0622121 0.000600997 +-0.00012413 0.0190451 -0.000934484 -0.0180916 0.0448962 0.00799844 -0.0183542 0.0270076 +0.000364153 -0.0240697 -0.00217815 0.0047439 -0.00464233 0.00164868 -0.0244436 -0.00257358 +-0.00413962 0.00204621 -0.0224844 0.0078182 -0.00913142 0.00573715 -0.0187436 -0.0268205 +-0.0127135 -0.00421702 0.00047277 -0.00940376 -0.00682646 -0.00993679 0.00282758 0.011143 +0.000449576 -0.0154903 0.00516246 0.0033922 0.00907644 -0.00848404 -0.00967578 -0.0079864 +-0.00679843 -0.0132792 0.000272392 0.0056956 -0.00719002 -0.00616183 0.00263412 -0.0107896 +0.00326193 -0.00845965 -0.0127579 0.00181127 -0.00569823 -0.00818291 -0.00246942 -0.0114544 +0.00234241 -0.00056335 0.00442802 -0.0102359 0.00563235 -0.00126622 0.0175425 -0.00164537 +0.0027391 0.00320929 0.00354875 0.0034381 0.00630014 0.00418975 -0.00200722 0.0132791 +0.000224306 0.0121129 0.00310944 0.00111014 -0.000740109 -0.00056394 -0.00506915 0.00357838 +-0.00354706 -0.0028643 -0.00761421 -0.00368724 0.00154994 -0.000841613 -0.00510258 -0.00371021 +0.00410561 -0.00580966 -0.0343888 -0.00892321 0.021618 -0.00143115 0.00927297 -0.00535866 +-0.00335344 0.00825388 0.00630079 -0.0567013 -0.00191192 0.0376414 0.0207521 -0.0252629 +-0.00712895 -0.00847843 -0.0210862 0.00801941 0.0134328 -0.0123174 -0.0305776 0.0180808 +0.00316577 0.00225167 -0.000143486 0.0177562 -0.00330343 0.0217631 -0.00338049 0.0150987 +-0.0113798 0.00497604 0.01436 0.0156844 -0.00852033 0.000925003 -0.00278152 0.014457 +0.000361617 0.00797147 0.0045589 0.0109027 -0.00172053 0.00959987 -0.0103385 0.00299919 +0.00576099 0.0165266 -0.00286563 -0.0114348 0.00327006 0.00715053 -0.00311294 -0.00656052 +-0.00508702 0.000548116 0.00388317 -0.00204316 0.00290008 0.00393432 0.0111211 0.00958108 +0.000254273 0.0189493 0.00753283 0.0133961 0.0091218 0.0117579 -0.000495933 0.011102 +0.00201992 0.00775167 -0.00159826 -0.0013275 -0.00814572 -0.00199092 -0.00480952 -0.000950509 +0.00191637 -0.00725253 0.00237756 -0.00421008 0.00555762 -0.000856783 0.00385765 -0.00132117 +0.00593371 -0.00263196 0.00323039 -0.000784165 0.00976772 0.00348808 0.00943866 0.00213559 +-0.0534346 -0.00618504 0.0319598 0.000832311 0.0145058 -0.0172913 -0.0173594 0.0325159 +0.0425874 0.0113924 -0.0222268 -0.0138308 0.0391772 0.0214462 -0.0240636 -0.0302699 +0.00374615 0.00259507 0.000851676 -0.00255399 -0.0163924 -0.0149971 -0.00595751 0.00366063 +0.00469416 -0.0168661 0.0018692 0.0131722 0.00401267 -0.0152985 0.000416253 0.00748574 +-0.00124914 -0.00372488 0.000698306 -0.00915401 -0.0091587 -0.000428657 0.00968141 -0.00200166 +0.00185482 0.00454188 0.00395463 0.00479925 0.0035146 -0.00152067 0.003787 -0.00410139 +0.00613664 0.00364233 0.00595405 0.00279315 0.00605764 -0.00613642 -0.0112297 0.00364598 +-0.00576526 0.0038167 -0.00100207 0.00124807 -0.00870918 0.0059174 0.00105576 0.00435491 +-0.00151714 0.00353373 -0.00266472 -0.0059691 -0.00655925 -0.00142383 -0.000791874 -0.000715896 +0.00255713 0.00132257 0.00275426 -0.00644899 0.00135436 0.00462792 0.00425612 -0.00223178 +0.00680519 0.0027785 0.00550658 0.00232411 -0.0323278 -0.00359981 -0.00961218 -0.00953352 +0.0115003 0.0155345 -0.0145225 0.0140177 0.00898819 0.012094 -0.00661487 0.00174617 +0.0191346 0.00197534 -0.0108583 -0.0256535 0.00543479 -0.00380568 -0.0326679 0.00174384 +-0.00526525 -0.00715385 -0.000289771 0.0284029 0.0112239 -0.0234484 -0.00566658 0.0143193 +-0.000468259 0.0122607 3.1049e-05 -0.00462986 -0.0312286 0.00647347 0.00953403 -0.00557154 +-0.000395608 0.0124715 0.000669212 0.00299943 0.00623212 -0.00668107 -0.00113702 -6.63838e-06 +-0.0104835 -0.00168642 -0.00308815 -0.00678012 0.00281452 -0.00161032 0.0102487 0.00211477 +-0.00176959 -0.00975405 0.00490165 0.00374433 -0.00601658 0.000301634 -0.00839461 -0.00606551 +-0.00849688 -0.00679398 -0.00783906 -0.00406962 -0.00474016 -0.00520608 -0.000956365 -0.00243337 +0.00196491 -0.00791599 0.000219615 0.000976036 0.00829458 -0.00674904 0.00373837 -0.00263027 +0.00473648 0.00280818 0.00595068 0.00190333 0.00294843 0.00333166 -0.00237085 0.00492837 +0.00351896 0.00197973 0.019232 -0.0138483 -0.00773398 -0.0254144 0.0254568 -0.00551494 +-0.042023 0.010974 0.0167046 -0.0332973 0.0147658 -0.0116657 0.00050519 -0.00600823 +0.0189878 -0.0133114 -0.0174764 0.0107059 0.0206709 -0.00737058 -0.00489747 -0.0077286 +0.00633462 0.00392915 -0.000630587 -0.00853692 0.0139726 0.00261872 0.00972045 0.0126493 +0.0243068 -0.00669143 0.016251 0.0143587 0.0131874 0.00118502 0.0130765 0.00157749 +0.000926319 0.00913744 -0.0106854 0.00331891 -0.0020192 0.00845987 -0.00983185 -0.00441787 +0.00172867 0.00599063 -0.009796 -0.0129519 0.00292639 -0.0087831 0.00499798 -0.00711981 +0.00118166 -0.012044 0.000320067 -0.00983609 -0.000617986 -0.00593743 0.00765764 -0.00551874 +0.00537442 -0.00268585 0.0013652 -0.00252635 0.0050501 0.00379484 0.00835443 0.00112592 +0.00120609 0.00494571 0.00307452 0.000537731 0.00226288 0.00737791 -0.000259217 0.00615592 +-0.0012789 -9.59404e-05 0.00235237 -0.00513837 -0.00274959 0.00139625 -0.0253845 0.021232 +-0.00415715 0.00802744 -0.0121645 -0.00986101 -0.000474397 0.000917919 0.0296956 0.0336198 +-0.0388613 0.00431636 0.0312254 0.0429377 0.0022952 -0.0299642 0.00575672 0.0049827 +0.011266 0.0066745 -0.0112607 -0.0196817 0.00400321 0.00470103 0.00650602 -0.00267869 +-0.012549 -0.00499156 -0.000568728 -0.00978552 -0.0134807 -0.00963774 -0.00365373 0.0116847 +0.00693677 -0.00511995 -0.0130789 -0.0126524 0.0126339 0.00788479 -0.00927353 -0.0167485 +0.00675484 -0.013697 0.00203207 -0.010955 0.00393401 -0.0172399 0.00272795 -0.00138688 +0.0127353 0.0105304 0.00607363 -0.000296428 -0.000138097 0.00221253 0.00707283 0.00159137 +0.000511929 0.00387102 0.00226898 0.00130147 0.00402381 -0.00180092 -0.00435928 0.000460991 +-0.0017569 0.00295868 -0.000300105 -0.00640088 -0.00367221 0.00124297 -0.00344225 0.00277097 +-0.000968464 -0.000803843 -0.00254432 0.00407456 0.00198456 0.00304094 -0.00464017 -0.00229042 +-0.0144781 -0.0174333 0.0020935 -0.00195753 0.00288858 0.0243017 -0.00672994 0.0274661 +0.0109523 -0.029418 -0.00357759 0.0290452 -0.0108311 -0.00525941 -0.00657002 0.0281501 +-0.00210689 -0.00817072 -0.00116522 -0.00864641 -0.00477282 0.0124767 0.00528965 -0.00332022 +-0.00241556 -0.00694121 0.0197666 0.00857713 0.0117105 0.00486412 -0.00105715 -0.00842159 +0.0152017 0.000686849 0.000168052 0.0108023 0.0029852 -0.00890113 0.00673265 -0.00729853 +-0.00297606 -0.00155294 -0.00373411 -0.00799767 0.00153291 -0.00404509 -0.00242303 0.00498452 +-0.0117438 -0.00455764 -0.00242062 0.0046537 -0.0122274 -0.00625811 -0.000730153 0.00235161 +0.00506877 -0.00278056 -0.00241568 -0.00569137 -0.000243528 0.00367223 -0.00280931 -0.00197585 +-0.0020777 -0.00418218 -0.00106155 7.72791e-05 0.00267016 0.00185189 -0.00221115 0.00194087 +-0.00425653 0.000128041 -0.000353045 0.00385349 -0.00613245 -0.000874422 0.00128273 -0.00483868 +0.00919471 0.0111964 0.00558753 -0.00243792 -0.0274396 -0.00114336 0.0210493 -0.0151364 +-0.0126112 0.00504225 0.00334472 -0.00588815 0.0039212 -0.0214621 -0.00841002 -0.000443902 +0.00583115 -0.0101195 -0.00154841 0.02369 -0.00794115 -0.00991656 -0.00628838 0.0199598 +-0.000167641 0.000498107 -0.0181709 -0.0126259 0.000762098 0.0238973 0.0099526 -0.00310719 +-0.00314936 0.00158568 0.00478107 0.00675634 -0.013701 -0.0181701 0.00170768 -0.00655425 +0.00144763 -0.0104073 -0.00414282 -0.00811358 -0.0015017 -0.00661725 0.00756149 0.0037082 +-0.00881976 -0.0149964 0.00495434 -0.00411682 -0.00199572 -0.00572329 -0.00758447 0.00440383 +-0.00113313 0.00392875 0.000653329 0.0091725 0.000532825 -0.00104937 -0.00380265 -0.00208734 +-0.00276396 0.00287009 0.00172135 -0.000797923 -0.000745375 -0.00225064 0.00380119 -0.00673382 +-0.00283053 7.31525e-05 0.000258169 -0.00101956 -5.35537e-05 -0.000194983 0.00880057 0.0041381 +-0.000279918 -0.0067686 0.030049 0.0274051 0.00489373 0.00855384 0.0152619 0.0147395 +0.0190477 -0.0032882 -0.0267921 0.0134684 0.0116714 -0.00446948 -0.020943 -0.0137414 +0.000983127 0.0154494 -0.000942302 -0.00932606 -0.0196108 -0.00026041 -0.00894017 0.0101149 +-0.00763246 0.00397296 -0.0109179 -0.00583643 -0.00432385 0.00244491 -0.000404007 -0.00240242 +0.00655359 -0.00154354 -0.00334628 0.00994414 -0.00268339 -0.000976373 0.00632458 0.00555178 +-0.000115438 0.00754725 -0.00406929 0.00044227 0.00592569 0.00376862 0.0033394 0.0083158 +-0.00377566 -0.00328847 -0.00818711 0.00147873 -0.00249622 0.0018673 0.00102428 -0.00465808 +-0.00431046 -0.00553625 -0.00295946 -0.000191464 -0.000700033 0.00328171 0.0031382 0.00653942 +0.00255224 0.00837434 0.0118212 0.00426894 0.00452224 0.0035153 0.00223242 0.00192292 +-0.00373325 -0.00147546 -0.00271559 -0.00720677 -0.0175059 0.0144425 -0.00499389 -0.012521 +-0.000311671 -0.0242378 -0.0210065 -0.00279725 0.00405834 -0.0187692 -0.0193125 0.00112836 +-0.00324312 0.0173168 -0.0234713 -0.0220866 -0.0112257 0.0162957 0.00109019 -0.0113953 +-0.0214153 -0.0146552 0.0116304 0.00656481 -0.00924468 0.000821327 -0.00105589 0.0216818 +-0.00374499 -0.00312 0.00510309 0.00802037 -0.00723694 0.00115745 0.00175103 -0.00300117 +0.00905795 0.00636217 -0.00348753 0.00488672 0.00516657 0.00152735 0.0149282 -0.0109161 +0.00111677 -0.00755963 0.00212614 -0.00382325 0.00939573 -0.000637487 0.00996223 0.00476373 +-0.00431038 0.00619815 0.00741418 0.00421848 -0.00828684 0.00695553 -0.0022079 -0.000203254 +-0.00442361 0.00455663 -0.00193622 -0.00135523 -0.00385332 0.00448288 -0.00404398 0.00626999 +-0.00513903 -0.000133499 0.00292787 0.00751513 0.0122013 -0.0100879 -0.0108183 -0.0126536 +-0.00460165 0.0165629 -0.0191798 -0.0121341 0.0183479 0.0170986 -0.00208266 -0.0252274 +0.00883639 -0.00788723 -0.000357103 -0.0163255 0.0149283 -0.0202417 -0.00104894 -0.00372558 +-0.00900612 -0.0159844 0.0256504 -0.0111977 -0.020327 0.000378211 -0.00504297 -0.0187309 +0.00591723 -0.00481942 -0.00832763 0.0068285 0.00998489 -0.00466751 -0.00827872 -0.00527666 +0.0110456 0.0063757 -7.57501e-05 -0.0129149 0.0028198 0.00190866 0.00991867 -0.000897019 +-0.00213105 -0.00126496 -0.0106167 0.0145586 0.00454133 -0.00841054 -0.0150393 1.28036e-05 +-0.0022048 -0.000723918 -0.00268775 0.00223198 0.00144058 -0.00426282 -0.000983906 0.00437796 +-0.00664519 -0.00249018 0.00737867 0.000456106 0.000168652 0.00180108 0.000889511 -0.00718606 +0.00425769 0.00490318 -0.00344024 0.00399525 -0.0094709 0.0249978 0.00826828 -0.0103136 +0.00208568 0.00271373 0.0196945 0.00598903 -0.00266817 0.00601016 -0.0112045 0.00923171 +0.0190286 0.0242561 -0.0174422 0.000563305 0.00615151 0.0138922 0.0146529 -0.00104874 +0.012462 0.00859906 0.00330145 -0.00019277 0.00274369 -0.00472771 0.0140652 -0.0095782 +-0.018955 -0.00222358 -0.00068514 -0.0119258 -0.00513774 -0.0109135 -0.0154552 0.00485716 +-0.0132991 -0.00624446 -0.00701412 0.00102963 -0.0122261 -0.00241809 0.00150794 0.0034028 +0.000828857 -0.00706363 0.00962024 0.00655012 -0.000579533 -0.0100416 0.00959188 0.00749598 +0.00105593 -0.0045407 0.0124547 -0.00237045 -0.00321482 0.00338524 0.00129152 -0.00410681 +-0.00486778 0.00546861 -0.001355 0.00475193 -0.00380143 0.0025049 0.00152132 0.00115218 +0.000592708 0.00122438 0.0121713 -0.0189177 -0.0190825 0.00356736 0.00536845 0.0192037 +-0.00301874 -0.00447694 0.00346352 0.0062548 -0.00102404 0.00475927 -0.00861443 -0.012993 +0.00241896 0.0190845 0.00111246 -0.00834406 -0.030177 0.00645613 0.00306997 0.0116545 +-0.000322349 -0.00257654 -0.0019549 0.0124661 0.0111692 0.00139726 0.0117799 -0.00845798 +-0.00467465 0.00130391 0.00155997 -0.0133819 0.00402208 -0.00532596 0.000728591 0.00286931 +0.0057373 0.00178731 -0.000953939 0.00650946 0.000868512 0.0040885 -0.00837939 0.000534487 +-0.0103271 0.00586175 -0.00701645 0.00857783 0.000462833 0.00553544 -0.00680905 0.00811252 +-0.00628065 -0.00335926 -0.00223865 -0.00179608 -0.00802034 0.00223934 -0.00111786 -0.00885648 +0.00117295 0.00231294 -0.00341529 0.0029972 0.0044132 0.00208754 -0.00262918 0.0162302 +0.00871876 -0.0240867 -0.0181676 -0.00734112 -0.00232186 -0.00856099 -0.00803325 -0.0161159 +0.00287171 -0.00449459 -0.00982645 -0.02599 -0.0115123 0.000600059 0.00280108 -0.0049461 +0.00374898 0.00548837 -0.000413011 -0.00740843 0.00894186 0.000631851 -0.00302117 -0.0175443 +-0.00917124 -0.00902859 -0.00420997 0.00130232 -0.00345121 -0.00129518 0.0105536 -0.00458322 +0.00984002 -0.00822496 -0.00379882 -0.00908149 0.00118376 -0.0116951 0.00612111 -0.0102066 +-0.00550478 -0.00495048 0.00122908 -0.00408462 0.00574295 -0.00384258 -0.0018902 0.00624181 +-0.00150709 0.00300514 0.00487474 0.00721502 0.000695335 0.00123581 0.00720703 0.00875407 +0.00301797 0.00622118 0.00734415 -0.000973976 0.00616765 0.0028176 0.00071955 -0.00155093 +-0.00177429 -0.0291487 0.00368674 0.0178212 0.00633386 -0.00888411 -0.00916705 0.00453378 +0.00780904 0.0116936 -0.00656865 -0.0140965 0.0102823 0.00431621 0.0128022 -0.00173288 +-0.00328135 -0.0151419 0.0192834 0.00408508 -0.00230212 -0.0132278 0.00912543 0.000914357 +0.00300174 -0.0149928 0.0042884 -0.00382833 -0.00480737 -0.00793165 0.00569607 -0.0176634 +0.00149657 0.010909 0.00899187 -0.0127887 0.0115672 -0.0016047 -0.0109782 -0.00359891 +0.00949241 0.00496565 -0.00450975 0.00488403 -0.00194523 -0.000889537 -0.00246395 0.00459883 +-0.0129402 0.00170704 -0.00720741 -0.00601347 -0.0053573 0.00298855 -0.0129326 -0.0014289 +0.0020636 -0.00460825 -0.00260323 0.00711338 0.000907636 -0.00102353 0.00290314 -0.000165175 +0.00664043 0.0303557 -0.00377593 -0.0262299 -0.00750923 0.0117558 0.0133198 0.00734442 +-0.00502706 0.00782134 -0.00328097 0.0199595 -0.00766081 0.0037745 -0.00247008 0.0113371 +0.00754879 0.00450954 -0.0131892 0.00245859 0.0105651 -0.0033847 0.00876726 -0.0135799 +0.00902623 0.0010053 0.0071921 -0.013012 0.00809297 0.00126232 0.00762705 -0.00328258 +0.00769332 -0.000177574 0.00275444 0.000213601 0.00705244 -0.00908038 -0.00369794 0.00474113 +0.0140627 -0.00578924 0.00613423 0.000985534 0.00838118 -0.00773272 0.00817825 -0.00347659 +0.00302372 0.000460508 0.00651554 -0.00161221 0.00500305 -0.00359111 0.00649604 -0.00515578 +-0.00597885 0.0049914 -0.00267901 -0.00275059 -0.00475813 0.00173809 -0.0185642 -0.00331874 +0.00544209 0.011543 0.00604466 -0.00776752 -0.0124785 0.00389233 0.00668033 0.00350956 +-0.00540682 -0.00940682 0.0200362 -0.023647 -0.0123969 0.0100976 0.00702832 -0.0271974 +-0.00201016 0.0146923 -0.00327326 0.0119769 -0.00870348 6.15719e-05 -0.00026077 0.0104111 +-0.00280858 0.00927795 -0.00506205 -0.00155395 -0.00410101 0.00340195 -0.0026263 -0.000828333 +-0.0133994 -0.00292138 0.00776506 0.00459289 -0.0088386 -0.0036656 -0.0012169 0.00543108 +0.00207542 -0.000955434 -0.0052445 -0.000540312 0.00176466 0.00561114 -0.0048033 0.00229207 +0.00488078 0.00114798 -0.00255448 -0.000386853 -0.00380906 -0.00492063 -0.00613643 -0.00687271 +0.000864785 -0.0034561 0.00894511 0.00413362 -0.000395344 -0.000307124 -0.00904065 0.005805 +0.0137347 0.00469924 -0.00519418 -0.0057187 0.0172254 0.0159953 -0.00804925 0.000724389 +0.00872196 0.000346364 0.00551726 -0.000917762 0.00296607 0.0152681 0.0140435 -0.0101486 +-0.00619961 0.000309058 -0.00114025 0.0145877 -0.00833601 -0.00935017 0.0043199 0.0125727 +0.000574868 -0.00379144 0.00722692 -0.0063929 0.00600549 5.32368e-05 0.0079283 -0.00566588 +0.00832698 0.00269014 0.00460251 0.00835079 0.00609919 -0.000413219 -4.54315e-06 0.00915204 +-0.000956323 0.00656648 0.00413802 -0.00451842 -0.00122011 0.00465837 -0.000253252 -0.0014071 +0.00266981 -0.00381359 -0.000748015 0.00241163 4.58326e-06 0.00532126 -0.00730261 -0.00711162 +0.00815411 0.00246701 -0.00651964 -0.00212744 -0.000360316 0.0111739 -0.00594341 -0.0220174 +0.00981955 0.0112007 -0.0102484 -0.00458743 -0.0068922 0.0120652 0.00619982 -0.00365108 +-0.00726861 0.0145187 0.0100533 -0.0030538 -0.00196068 -0.0064776 -0.0043501 0.00170512 +0.00644606 -0.0038692 -0.00883792 -0.00327374 -0.00135292 -0.00327577 -0.00127586 -0.00311812 +-0.00509973 0.00106689 -0.00169864 -0.00676388 -0.0026071 0.00476954 -0.00242748 -0.00505164 +0.00240032 -0.00083613 -0.00851551 -0.000400576 0.00481212 -0.00304036 -0.00133503 0.00520623 +0.00355256 -0.00447697 0.00323864 -0.0029056 0.00227435 -0.00433403 0.000407276 0.0045724 +-0.00419478 0.00294993 0.00272606 0.00723659 -0.00203257 -0.00575591 0.0117196 0.00378958 +-0.000442098 0.00505245 -0.00851911 -0.0133285 0.012255 0.00894958 -0.0101418 -0.00573353 +-0.0012012 -0.000978661 0.00688717 0.00141362 -0.00595842 0.00797276 0.00851079 0.000101153 +0.00798377 0.00288979 0.00607639 0.00480559 0.014287 0.00533058 0.00957638 -0.00146194 +0.00366591 0.00301111 0.0045846 0.000833167 0.000751896 -9.1375e-05 -0.00144426 0.00383468 +0.00621061 0.00076597 -0.0012687 0.00888993 -0.00293864 -0.000182566 0.00428089 0.002247 +-0.00210459 0.00749039 0.000437715 0.00202057 0.0024136 0.000717208 -0.000247883 -0.00729365 +-0.00176264 0.00339275 0.00499519 -0.00227318 -0.00269381 0.00628411 0.0062216 0.00640501 +0.00162328 0.000309082 0.00235533 0.00133595 0.000233252 0.00152171 0.0039584 0.00547697 +-0.00415159 0.000863028 -0.00421611 -0.00101734 -0.000224835 0.00577554 -0.00899277 0.00636643 +-0.00547625 -0.0025737 0.00377199 0.0047134 -0.0122657 -0.00263709 0.000201209 -0.00893457 +-0.00403805 0.00200094 -0.00277593 -0.00905224 -0.00236305 0.00503647 -0.00860194 -0.00467279 +-0.00116663 -0.00182291 -0.00739891 0.00502711 -0.0020583 -0.00177227 0.0043817 -0.00369389 +-0.00426238 0.00630847 -0.000468645 -0.00335542 0.00386095 0.00691258 0.00156365 -0.00495638 +-0.00188579 -0.00268397 0.00966177 0.00229236 -0.000965914 -0.0107748 0.00060037 -0.00563496 +0.00204915 0.013886 -0.0159295 -0.00637693 0.01106 0.0167159 -0.00533921 0.0104005 +-0.00203182 0.00291711 0.0101753 0.00750826 0.00105139 0.00189498 0.000447176 0.00753206 +-0.00136072 0.00286928 0.00539239 0.00275571 0.00489731 0.000754238 -0.00152155 -0.0030048 +0.00544232 -0.00269807 -0.000980213 0.00139194 -0.00205141 -0.000374067 0.000250868 0.00216302 +-0.00621782 0.00161497 0.00658653 -0.0042538 0.00610435 -0.00332254 -0.00533981 -0.00571238 +-0.00481695 -0.0110529 0.000947817 -0.00134365 -0.0113311 -0.0141216 -0.00755134 -0.00600633 +-0.00533365 0.00490567 0.0022387 -0.0117873 0.000540177 0.00462058 -0.00302335 0.000632848 +-0.00148934 -0.0124066 0.00104965 0.0118565 -0.0122397 -0.00297672 -0.00434086 -0.00229542 +-0.00180072 0.00248011 -0.00373581 0.00224807 0.000766177 -0.000528086 0.00244592 0.00339677 +-0.00406435 -0.000169292 -0.000375221 -0.00785204 0.00129665 -0.00114415 0.00173048 -0.00792475 +0.0083462 -0.00036768 -0.00502197 0.00427568 -0.00155077 -0.00685723 0.000957057 0.00151748 +0.00625731 0.00374388 -0.0116378 -0.002719 0.00714895 0.00463866 0.00335498 0.00218695 +-0.00923195 -0.0039202 -0.000169199 0.00749757 -0.00583546 -0.00516699 0.000301382 0.00267111 +-0.000982241 -0.0016857 -0.00459609 -0.00347938 0.00188202 0.00170059 -0.0043119 -0.00176303 +-0.00369072 -0.00293512 -0.00940326 -0.000118156 -0.00210634 0.00267983 -0.00972165 -0.00462711 +0.00142382 0.00216048 0.00754479 -0.00105866 -0.00246356 -0.00212552 -0.00860985 7.82364e-05 +0.00665849 0.00397452 0.00056816 -0.00502754 -0.000719282 0.00398181 -0.00345572 0.00147879 +0.00307381 0.00129633 0.00534451 0.0083763 -0.00404791 4.11671e-05 0.0159586 0.00988289 +-0.000342667 0.00432983 0.00130363 -0.00335634 0.00452313 -0.00108011 -0.00532346 -0.00609441 +0.00239407 -0.00950556 0.00138712 -0.00175865 -0.00420921 -0.0102039 0.00218939 -0.00317472 +-0.00131194 -0.00136055 0.00203387 -0.0090066 0.00064696 -0.00381529 -0.000275322 -0.00875153 +-0.00343327 -0.00314026 0.00284776 -0.00133555 -0.000114532 -0.00289455 0.00577506 -0.00305386 +-0.00794669 -0.000738885 0.0089491 -0.00416791 -0.00365453 0.000733943 0.00587259 -0.00806491 +0.00129501 0.00157254 -0.00593516 2.89579e-05 0.00405471 -0.0103656 0.00327728 0.00546822 +-0.00669877 -0.00410311 0.00906361 0.00140036 -0.00868126 0.00408762 0.00273233 0.00220716 +-0.0055738 0.0022069 0.00309223 0.0021839 0.00046671 0.00046961 0.00956939 -6.61413e-05 +0.00300979 -0.0018135 0.00151295 -0.00167206 0.00443675 0.00174164 -0.00343071 0.00256861 +-0.00502387 0.000103078 0.00193135 -0.00172707 -0.00725361 0.00721095 0.00336528 -0.00149761 +-0.009037 0.00102346 -0.00187788 0.00852647 0.00873401 -0.0110563 -0.0100997 0.00677727 +-0.0049128 -0.00627455 0.00498471 -0.00615053 -0.010479 0.0111592 0.000413752 -0.00937737 +0.00340804 0.00859464 -0.00274506 -0.00406274 0.00273587 0.00296285 -0.00152907 -0.00605785 +-0.00258822 0.00440216 0.00343715 -0.00662589 0.00336383 -0.00240714 -0.00343317 -0.000197623 +0.00878043 0.00406035 -0.00983719 0.00428887 0.00625949 -0.00661211 0.000141826 0.00383345 +-0.00879373 -0.00477384 0.0114088 -0.00366464 -0.0110489 -0.00511229 -7.20986e-05 -0.000129242 +0.000496908 0.00137734 -0.00600793 -0.000399195 0.00899841 0.000579902 0.00289622 -0.00229039 +-0.00988332 -0.00231368 0.010101 0.000314417 -0.00901144 -0.00369956 -0.00524639 0.00651492 +-0.00120401 -0.00548938 0.000761613 -0.00545839 -0.00403183 0.00668545 0.000367345 -0.00590228 +0.00354482 -0.0012814 -0.000398879 0.000388253 -0.000543208 0.00482949 0.008922 -0.00369149 +0.00194886 0.00110674 0.00446449 -0.000335538 0.00867497 -6.30313e-05 -0.00450561 -0.000868124 +0.0123264 0.00148412 -0.00558256 -0.000345807 -0.00267139 0.00350158 0.00454814 0.00189608 +-0.00687768 0.00430186 0.00223308 -0.000724647 0.00363883 -0.00471057 -0.00075187 0.00551322 +0.000791475 -0.00367861 -0.000596091 0.00788299 -0.00284521 0.00131295 -0.00225178 -0.00250783 +0.0026174 0.00398811 -0.00303452 0.00502065 -0.00735446 0.00031047 0.00885824 0.00420006 +-0.00479135 0.00762518 0.00239252 0.000741042 -0.00319701 0.00646062 -0.00579053 -0.00109321 +0.00371126 -0.00142317 -0.00290815 -0.00104743 -0.000318399 -0.00708279 0.00293866 -0.000712499 +0.00204781 0.00258834 -0.00502655 -0.00103863 0.0068815 -0.00308326 -0.00281035 -0.00044577 +0.00951175 0.00452414 -0.00305797 -0.00248296 0.00489839 -0.00727601 0.000814637 0.00451871 +-0.00336353 -0.00461342 -0.00141473 -0.00295683 0.00338654 -0.00225377 -0.00304125 -0.00194002 +0.00355317 -0.00196417 -0.00367808 -0.00179934 0.00515435 -0.000953948 0.00291012 0.000871127 +-0.00136232 -0.000622644 0.0052534 -0.00159633 -0.0050163 0.000407381 0.00746536 -0.00194374 +-0.00317011 -0.00241466 0.000655266 0.00258651 0.00805517 0.00217304 -0.00820795 -0.00458712 +0.00482381 -0.00247925 0.00135441 0.00170543 -0.00212381 -0.00345137 0.00333416 -0.00431962 +0.00348481 0.00442314 0.00142058 -0.00636639 -0.000121414 0.00606912 0.0038502 0.00310015 +-0.00592383 -0.000927296 0.00607532 -0.000721276 -0.0016439 -0.000782416 0.00816427 -0.00174668 +-0.00292351 0.00151456 0.00173947 -0.00736563 -0.000455401 0.00883059 -0.0025244 0.00363807 +0.00318564 -0.00697151 -0.00421664 0.00258212 0.00354441 0.00452501 -0.00346964 -0.000856528 +0.00369717 0.00120282 -0.00495738 -0.000817395 0.00601194 -5.3111e-05 -0.00551295 -0.00202112 +0.00114825 -0.000295829 -0.00854224 -0.000867944 -0.000961033 -0.0033048 -0.00230976 -0.000649937 +0.000732746 0.00116258 0.00323804 -0.00420856 -0.000331012 0.00846858 0.00141065 -7.65363e-05 +0.00511061 -0.0037566 -0.000728355 0.00568796 0.00349074 -0.00611279 -0.00281329 0.00634092 +0.00213905 -0.00128373 0.00417243 -0.00262604 0.00121707 0.00424451 0.00293855 0.000691781 +0.000334756 -0.00104229 0.00444104 -0.00330327 -0.00380473 -0.000708117 0.00224295 -0.00577649 +-0.00367442 -0.00210708 -0.00325188 -0.000317386 -0.00360035 0.00575674 0.00362187 -0.00733703 +-0.000261036 0.00508694 -0.00265619 -0.00566347 0.00464179 0.00189407 -0.00617238 -0.00668738 +0.00481546 0.00343095 -0.00665042 -0.00206714 0.00450838 -0.00120059 0.000649174 0.00870124 +-0.000111267 -0.0081759 0.00338264 -0.00416897 -0.00211676 0.00180927 -0.000347482 0.00276498 +0.0012996 -0.00535555 -0.00449048 0.00343112 0.00152012 -0.000500066 -0.00120488 -0.000507236 +0.0043081 -0.00350691 -0.00115674 0.00385674 0.0014045 -0.0123737 0.000821083 0.00324503 +-0.000680552 -0.000914579 0.00235912 0.000202517 -0.00288976 0.00211377 0.00280667 -0.000381589 +-0.00503539 -0.00457489 -0.00264134 0.00657838 -0.00134429 -0.00145231 -0.0017951 0.00182371 +0.0018727 -0.000911072 0.00215373 0.00257286 -0.00231029 -0.00400254 0.000498636 0.00694046 +0.000661064 -0.00548284 -0.00131493 0.00979045 0.00127213 -0.00447167 -0.001823 0.00192645 +0.000765254 -0.00237488 -0.00140128 0.00386174 0.005079 -0.000603354 -0.0030817 -0.000405708 +-0.000563718 0.00282854 0.00145703 -0.00330396 0.000836245 0.00253403 0.000642801 0.00189169 +-0.000321591 -0.00293569 -0.000907547 0.00152188 0.00207732 0.00414524 0.00152529 -0.000244837 +0.00175141 0.000272431 -0.00363516 -0.00348099 0.00301289 0.00570992 -0.000966353 -0.00600103 +0.00311914 0.00250546 -0.00101946 -0.00495093 0.004026 0.00247987 -0.00229415 -0.00494004 +0.00035095 0.00374607 -0.00121923 -0.00493001 -0.00261154 -0.000408485 0.00164723 0.000484819 +0.00014876 -0.00404211 0.00551885 0.000317814 -0.00473277 -0.00163972 -0.00124841 -0.00159215 + diff --git a/data/spherical_model_level.grib1_32.good b/data/spherical_model_level.grib1_32.good new file mode 100644 index 000000000..2e35c82c2 --- /dev/null +++ b/data/spherical_model_level.grib1_32.good @@ -0,0 +1,521 @@ +195.092 0 9.39185 0 -3.94459 0 3.23379 0 +-1.1253 0 -1.44356 0 -1.01892 0 -0.320277 0 +0.324408 0 0.48513 0 -0.0238971 0 -0.205653 0 +-0.133815 0 -0.0223142 0 -0.0218931 0 -0.117258 0 +0.00719868 0 0.00706737 0 -0.0347602 0 -0.0297971 0 +0.0183887 0 0.0408559 -5.62587e-06 0.00382669 -4.95987e-06 -0.029847 -4.39676e-06 +0.00532962 -3.91723e-06 -0.000591302 -3.50617e-06 0.0212029 -3.15168e-06 0.0208744 -2.84424e-06 +0.00110634 -2.57622e-06 -0.00703083 -2.34145e-06 -0.0215584 -2.13486e-06 -0.00668502 -1.95231e-06 +0.00706794 -1.79037e-06 -0.00242576 -1.64618e-06 -0.0110807 -1.51735e-06 -0.0117014 -1.40186e-06 +-0.0204946 -1.29802e-06 -0.00102711 -1.20437e-06 -0.00799654 -1.11968e-06 -0.00901462 -1.0429e-06 +0.00515108 -9.73105e-07 -0.009471 -9.09521e-07 0.00677177 -8.5146e-07 0.0112976 -7.98331e-07 +0.00716242 -7.49613e-07 0.00963462 -7.04855e-07 0.00132392 -6.63657e-07 -0.0016973 -6.25668e-07 +0.000364669 -5.90579e-07 -0.00332593 -5.58115e-07 -0.00806445 -5.28032e-07 -0.00564058 -5.00114e-07 +-0.00592587 -4.74168e-07 -0.0040316 -4.50019e-07 0.000171002 -4.27514e-07 0.000125764 -4.06514e-07 +0.00224433 -3.86893e-07 0.000836223 -3.6854e-07 0.00137192 -3.51351e-07 -0.00294784 -3.35235e-07 +-0.000402082 -3.20108e-07 -0.00420892 -3.05896e-07 -0.00398192 -2.92529e-07 -0.00740343 -2.79945e-07 +-0.426161 -1.59447 0.622337 1.0468 1.59486 0.124171 0.556063 0.512123 +0.494767 0.762743 0.500085 0.361946 -0.0177802 0.272408 -0.322158 -0.379181 +-0.235812 -0.221134 0.0436339 0.250612 0.055499 0.134785 0.0495504 0.0275194 +0.0345857 -0.0391556 -0.00786455 -0.0415737 -0.00785392 0.0278489 -0.00111343 -0.0301168 +-0.0426352 0.0283876 -0.0253411 -0.00281604 -0.0228137 -0.0442467 -0.00470369 -0.0327455 +0.00237775 -0.00349784 -0.0175002 -0.0220622 -0.000870987 0.00790448 0.0142839 0.0200257 +0.00754253 0.0127135 0.00383821 0.00536619 0.00630542 0.0105002 -0.0198113 0.0166778 +-0.0106379 0.0203723 -0.0195754 0.00789103 -0.00680886 0.00126743 0.0048006 -0.00382261 +-0.0126593 0.004455 0.00700075 0.00263507 0.00386684 0.000649658 0.00817662 -0.0033948 +0.00544211 -0.00119355 -0.000138097 -0.00186046 0.00654118 -0.00478544 0.010808 -0.0123729 +0.00374715 -0.0146449 0.00420045 -0.0175873 -0.000201554 -0.0150104 -0.000927988 -0.000892325 +0.00267879 -0.00246622 -0.00570797 -0.000920809 -0.00227562 0.0113021 -0.00393148 0.0121306 +-0.00573462 0.00390771 -0.00649975 0.00672957 -0.00168074 -0.00265286 -0.00391278 -0.00624706 +0.00177044 -0.00583206 0.00296811 -0.00510263 0.0077006 -0.00263525 0.00435232 -0.00324432 +0.0040515 0.00189824 0.000485992 0.00384821 0.000655087 0.00622732 -0.00149278 0.00569106 +0.0010787 0.00234759 -0.000165973 0.00422588 -0.0020101 0.00210911 0.852979 0.588097 +0.0846904 -0.076237 -0.0160079 0.022346 -0.2096 0.467232 0.0441515 0.492023 +0.203224 0.0722975 -0.112033 0.0224663 0.155199 -0.126581 -0.00669932 0.0725406 +-0.0153894 0.0789894 -0.0627445 -0.0355943 -0.0547212 0.0818934 0.112838 0.0565594 +0.053946 0.115537 0.000151794 0.0859026 -0.0648094 -0.00934742 -0.0237199 0.0097614 +-0.0132002 0.011723 -0.0205309 -0.0361138 -0.0160265 -0.00243998 -0.00384785 0.00307384 +0.0175067 0.0163313 0.010885 -0.0205127 0.0043017 -0.0328804 -0.00307339 -0.0098279 +0.0018078 0.00335426 -0.00892643 0.00819173 -0.0167593 0.0120442 -0.0168573 0.0065223 +-0.00559255 -0.00391626 0.00660149 -0.000176201 -0.00380937 -0.00360425 -0.00965069 0.00784982 +-0.0230521 0.00765569 -0.0307721 -0.0026067 -0.0211878 -0.000186741 -0.0102516 -0.00963774 +-0.00537847 -0.0131965 -0.00293744 -0.013839 0.00199778 -0.0100912 0.00892064 -0.00146687 +0.009791 -0.00382962 0.00869763 0.00193015 0.0101137 0.00539182 0.00260641 0.0070177 +0.00359968 0.00440195 0.00567632 -0.00260156 0.00336275 -0.00156083 0.00297455 -0.00615523 +-0.00443394 -0.00293271 -0.00751679 -0.00187714 -0.00743066 -0.00672108 -0.00122077 -0.00376703 +-0.00411338 -0.00152366 -0.00247388 0.000958506 -0.000664966 0.00244679 -0.000489879 0.00684747 +0.00274515 0.00538431 0.00344729 0.00566786 -0.000577578 0.0041203 -0.00504758 0.001911 +-0.00617179 0.00308199 -0.0881302 -0.279588 -0.223583 0.352675 -0.177135 -0.193486 +0.0617988 -0.234554 -0.0145331 -0.0539485 0.0217477 0.0448694 -0.0781573 -0.0477737 +0.0636683 -0.0509251 -0.0331275 -0.0314981 0.108562 0.0133003 0.0329148 -0.00799893 +-0.0556672 0.0324276 -0.0529993 0.113072 -0.0239315 0.0990462 0.00472048 0.0625662 +-0.0313796 0.0563817 -0.0065781 0.0189573 -0.035002 -0.0073391 -0.020054 0.00246697 +5.12227e-05 0.0104675 -0.0306139 -0.000920791 -0.00193854 -0.0285796 0.00475447 -0.00345085 +0.00794376 -0.0122127 -0.00133667 -0.00300555 -0.007158 -0.0234999 -0.00672316 -0.000840455 +-0.000756629 -0.00150145 -0.0143588 -0.000913079 -0.0121659 0.0123206 -0.0126928 0.0111381 +-0.0079766 0.016588 -0.0129559 -0.00489546 -0.0103318 -0.00837918 -0.00733262 -0.00299162 +-0.00581505 0.00283736 -0.00261651 0.00075501 0.0023579 -0.00150669 0.00375952 -0.000752995 +-0.00409413 -0.0165784 -0.00825166 -0.0111852 -0.00812512 -0.00123537 -0.00423392 0.000122252 +-0.0103012 0.00528716 -0.0134025 0.00189733 -0.00470749 -0.00108433 0.000536813 -0.000172517 +-0.00102811 0.00351525 0.000647577 -0.000340401 -0.00144637 -0.00225634 0.00789466 -0.00497261 +0.00731584 -0.00842856 0.00815923 -0.000954513 0.00744287 -0.00108813 0.00332095 0.00269392 +0.00183677 0.00149132 5.58655e-05 0.00261908 -0.00272345 0.00199471 0.0015742 0.00225196 +-0.00234367 0.000348962 -0.00422286 -0.00150653 0.168608 -0.0346078 -0.0853367 0.118238 +-0.163532 -0.00279233 0.267348 0.0624858 -0.0192543 0.0405403 0.122463 -0.121667 +-0.0345464 -0.0707399 0.0957083 0.00911359 -0.0259646 -0.0353649 0.0348334 0.0664461 +0.0712085 -0.020054 0.0111171 0.0229208 -0.011299 -0.0228084 0.00790771 0.0019371 +-0.0144496 0.0255238 -0.00392216 0.00693947 -0.00859402 -0.0253595 0.0249115 0.0168564 +-0.0205004 0.00396153 0.0254156 -0.00853084 0.0263176 -0.0153656 0.0193223 -0.0198774 +-0.00249504 -0.0123555 0.00227174 -0.00733564 -0.0200856 0.0025596 0.000114358 -0.00894045 +-0.00104682 -0.00732943 -0.0152169 -0.00319532 0.00573755 0.00110552 -0.0120551 0.00555144 +-0.0204996 -0.00197466 -0.0231728 0.00174534 -0.0074617 0.0149136 0.000339855 0.0134775 +0.00257609 0.000303275 -0.00152969 0.00510232 0.0036123 0.0065179 0.0161308 0.00447039 +0.0123002 0.00699553 0.0057994 0.00294904 -0.00146973 0.00484093 -0.00631461 0.00841304 +-0.00217173 0.00640577 -0.00181779 0.000319716 0.00061219 -0.00111109 0.00207812 -0.00348398 +-0.00373402 -0.00239901 -0.0036567 -0.00196626 -0.00167196 -0.00564335 0.00292351 -0.00552519 +0.00473471 -0.0053467 0.00695463 -0.0047166 0.00660143 0.000107423 0.00479709 0.000926394 +0.00374076 0.00355131 0.000789513 0.00528102 0.00118901 0.00430303 -0.00422139 0.00100594 +-0.0060231 0.00227748 -0.00580712 0.00315365 -0.0527447 0.304066 -0.100348 -0.0012669 +0.0669954 -0.00361623 -0.0132171 0.269949 -0.13568 0.0513211 0.0878713 0.0320568 +0.0235205 -0.0105659 -0.00324995 0.0212958 0.105897 0.0217917 0.0254647 -0.0132147 +0.00571737 0.0110323 0.0269048 -0.000935704 0.00511157 -0.00252774 -0.0199635 -0.0185074 +-0.0616348 0.00248663 -0.0192043 -0.0220465 0.012026 -0.0279561 -0.00647719 -0.00798288 +-0.00582151 0.015913 0.00235668 0.0123493 -0.0175897 0.0117206 -0.00531537 -0.00720035 +0.00351535 0.00200755 -0.00736227 0.00288644 0.00393891 0.00923282 -0.0116242 0.0109767 +-0.0125277 0.00492078 0.00672317 0.00744516 0.0060027 0.000863576 0.010593 -0.0006959 +-0.00274538 0.0105743 -0.0130048 0.000354519 -0.00148822 -0.00555911 -0.0019949 0.00670316 +0.00438879 0.0118737 0.00132837 0.00273488 0.00448275 0.000495673 0.00128191 -0.00616778 +-0.00917767 -0.00419315 -0.00781265 -0.0027502 -0.00215005 0.00718347 -0.00208302 0.00462111 +-0.0043947 0.00636511 -0.00291866 0.00171867 -0.00579278 0.00313389 -0.000943173 0.0063695 +0.00132398 0.00121295 0.000210073 -0.00173319 0.00275325 -0.00502767 0.00376327 -0.00230552 +0.00308202 -9.80275e-05 -0.00170255 0.00407885 -0.00397376 -0.000221623 -0.00438063 -0.00075494 +-0.0032053 0.000917104 -0.00192138 -0.00514272 -0.00246809 -0.00435722 -0.00330462 -0.00577856 +-0.00391971 -0.00789494 0.0697809 -0.0941824 0.0328707 -0.01393 -0.0882676 0.0362097 +-0.0673864 -0.159907 -0.0663171 -0.114813 0.010378 -0.0284483 0.045121 0.036175 +0.0887953 -0.0664885 0.104395 -0.0912833 0.113541 -0.00373413 0.0263955 -0.0464344 +0.0228578 -0.0290342 -0.00751342 -0.0126795 -0.0107268 -0.00142864 -0.0142697 0.0170499 +-0.0119735 0.0185006 -0.00852224 0.0176476 -0.000133887 0.0115003 -0.00951731 0.0168131 +0.00600155 0.00526283 -0.00373741 -0.0216019 -0.0121232 -0.00477109 -0.0150838 0.00824425 +-0.0195548 0.0155134 -0.0141102 0.00720909 -0.000196562 -0.00936532 -0.00249627 -0.00500293 +0.0204952 0.0111567 0.0024632 0.00417509 -0.00177991 0.017266 0.00635048 0.00384506 +0.0108227 0.00421975 0.0149218 0.00906983 0.0087928 0.00750987 -0.00177785 0.0100606 +-0.000332651 0.00604462 0.000699365 0.00810855 -0.00193601 0.00138459 -0.00410539 0.00022172 +-0.00625712 -0.00450698 -0.0119776 -0.000289337 -0.0109929 -0.00272637 -0.00379635 -0.00114587 +0.00627846 -0.000431719 -0.000431178 -0.0056887 -0.00226197 -0.00119015 4.35689e-05 -0.00261513 +0.00300303 -0.00258593 0.00315988 -0.00154232 -0.00445229 -0.00254776 -0.00468617 -0.00132215 +-0.00263872 -0.00150657 -0.00242809 -0.00166793 0.000671796 -0.00554522 -0.00322239 -0.00563224 +-0.00321238 -0.00683818 -0.00338614 -0.0071093 0.000573681 -0.00388356 -0.0885141 0.0228278 +-0.0983286 0.0953518 -0.0382954 0.0103998 0.0650207 -0.0163772 -0.0545351 0.0174806 +0.0850431 -0.0625257 0.0646964 -0.0978542 0.160654 -0.0350258 0.0763091 -0.044681 +-0.03087 -0.0033198 0.0813852 -0.00408029 -0.00398751 -0.000874023 -0.0105522 0.0592334 +-0.0128003 0.0216367 -0.0141784 0.0115034 -0.0219723 0.0190522 -0.0148958 0.0201264 +-0.00485823 0.0391412 -0.00764486 0.003142 -0.0022023 0.0138272 -0.0137148 0.0140119 +-0.00652767 0.0159074 -0.011179 0.0103309 -0.0215197 0.000273546 -0.00913533 0.00119224 +0.00441121 0.0107265 -0.00383175 0.00976567 -0.0066944 0.0151958 -0.000423797 0.012988 +0.00391563 -0.00306544 0.00905734 -0.000186741 0.0175396 0.017877 0.00504798 0.00255536 +0.00307438 -0.000320634 -0.00111564 -0.00528199 -0.00172921 -0.00239663 -0.00731119 0.00083297 +-0.00663916 0.00666144 -0.00341155 -0.00272491 -0.00645822 -0.00208903 -1.90524e-05 -0.00231531 +-0.00140544 0.00236624 -0.0021905 0.00013094 -0.00493147 -0.00228178 0.00322969 -0.00203197 +0.00637395 -0.00164081 0.00594433 0.00128312 0.000635896 0.00160733 -0.00017815 -0.000270246 +-0.00267284 -0.00217674 -0.00497984 -0.00358135 -0.00235884 -0.000945976 -0.00356832 -0.00433083 +-0.00319121 -0.0032398 -0.000604605 -0.00762543 0.00331928 -0.00541539 0.00281055 -0.00719224 +-0.0171948 0.060262 0.0835689 0.0127645 0.00805496 0.0769907 -0.0792333 0.0440958 +0.0160431 0.012394 0.00556695 0.0559246 0.0286308 -0.0167093 -0.0513099 -0.0429741 +0.0454425 -0.0215862 -0.0560837 -0.00504079 -0.0404643 0.0173244 -0.0470356 -0.0336551 +0.0146359 0.00143275 0.000759094 -0.0210736 -0.0177587 -0.000375765 0.0228457 -0.0303649 +-0.0336469 -0.0105734 0.0069309 -0.0360259 -0.0426937 -0.0137906 -0.0260671 0.00629898 +-0.0187899 -0.00820855 -0.0230027 -0.0189607 0.00741706 -0.0151887 -0.00278398 -0.0226165 +-0.00700257 0.000553891 -0.00256375 -0.0188463 -0.00948568 -0.0148929 -0.00877959 -0.00630874 +-0.00120696 0.00698566 -0.0033927 0.00749665 0.00512285 0.0065535 0.00433681 0.0118076 +0.00422737 0.015464 0.00108292 -0.00415901 0.0134364 -0.00119103 -0.00453317 -0.00618081 +-0.00513962 -0.0143933 -0.00920967 -0.00615652 -0.00252505 -0.012167 -0.00577103 0.00152312 +0.00387411 -0.00215201 0.000240943 -0.000229415 0.00606087 2.3397e-05 0.00452698 0.00372368 +0.00354338 0.00312658 0.000976243 0.0012403 0.00360153 0.00463689 -0.000213147 -0.000571397 +-0.00376847 -0.00247475 -0.000759312 0.00139645 -0.000540026 -0.00145699 -0.000705123 -0.00398755 +-6.99395e-05 -0.00643431 -0.00223802 -0.00680006 -0.00302429 -0.00350874 -0.000564728 -0.0030242 +-0.0642532 -0.144904 0.0807672 0.0554082 0.0235144 -0.0350288 -0.0129314 0.00769701 +0.00905192 -0.000968665 -0.0105137 -0.0748051 -0.0246445 -0.0238896 -0.0483392 -0.0231843 +-0.0670742 -0.0299122 -0.00325633 -0.0330151 -0.0266528 0.00865556 0.0283792 0.0189327 +0.0196222 0.0175574 -0.00388156 0.0191196 -0.0122562 -0.0113996 0.0106365 0.00243655 +-0.0185429 0.00561233 -0.0178891 -0.0240652 -0.0121232 -0.0048613 -0.0177336 -0.015755 +-0.0151786 0.00163145 0.0177768 -0.00619769 0.00772935 -0.00480969 -0.015066 -0.00327504 +0.0052419 0.00504424 -0.000661525 0.0130783 0.0137439 0.00979625 0.00666219 0.00405678 +0.00319657 0.0112483 0.00351971 0.00230974 -0.00908313 0.00193634 -0.0175074 0.0146483 +-0.00861383 0.00272926 -0.00990226 -0.00413464 0.000807649 0.000981275 -0.00762584 -0.00667143 +0.00821503 -0.00584673 0.00850917 -0.00512762 0.00618793 -0.00645141 0.0040253 -0.00171584 +0.00898681 0.00319079 0.00370665 0.00425334 0.000754079 -0.00350374 -0.00268602 0.00213937 +-0.00143083 0.00191318 -0.00330311 -9.63118e-05 -0.00491553 -0.00296219 -0.00421286 -0.00322591 +-0.00626729 -0.00132121 -0.00706149 -0.00084409 -0.00649304 -0.000582849 -0.00591361 -0.00318686 +-0.00225049 -0.00159421 0.00173272 -0.00362935 0.00553639 -0.0022327 -0.0408712 0.138281 +-0.00491057 -0.10968 0.0704596 0.00642389 -0.0540581 -0.0199689 -0.000919856 -0.00930004 +-0.0277735 -0.00249907 0.0417084 0.0619686 0.0438669 0.00759702 -0.00163659 -0.0447288 +-0.0553165 0.00185854 -0.0338678 0.0271692 -0.0365082 0.0256125 0.00437728 0.00654593 +-0.000452633 0.00882088 -0.0221634 -0.00475174 0.0168599 0.00492922 -0.00233796 0.0138058 +0.00516491 0.000757498 0.00735712 0.00867615 0.00535522 0.0123943 0.00137627 0.000849089 +0.0153678 0.0200119 0.0192645 0.00617561 -0.00399211 0.00385829 -0.0053297 0.00218476 +0.00225666 0.00684266 -0.00375943 0.00810604 5.06367e-05 0.0109809 0.00895315 0.00378352 +-0.00458462 -0.000610611 -0.00720767 0.00146506 -0.0059125 -0.00260539 -0.012869 -0.0147864 +-0.00633092 -0.00588058 -0.000562867 -0.00913388 0.00506447 -0.00948273 0.0034995 -0.0086834 +0.00528643 -0.00365054 0.0016986 -0.00439575 0.00945716 -0.00750478 0.0069772 -0.00784195 +0.0040953 0.00116649 -0.00112948 -0.000937194 0.00246269 3.21744e-05 -0.00136121 -0.00447793 +-0.00670494 -0.000585211 -0.00678101 -0.00106972 -0.00431858 0.00354471 -0.00165201 0.00206761 +-0.00197268 0.00306564 0.000413045 -0.0024544 -0.00137037 -0.0035665 -0.000582824 -0.00428942 +0.0007798 -0.0020824 0.00269084 -0.0409431 -0.0153616 0.0121075 -0.092298 -0.0363628 +0.104945 0.0127341 -0.0234942 0.0226426 0.0511818 -0.0266313 0.0362525 0.0240263 +0.00786594 -0.0100086 0.0290614 0.0304286 0.0310729 -0.0138015 0.00841903 0.00394542 +0.0198837 -0.0180733 0.0448192 -0.0234123 0.0115772 0.0212592 0.00822564 0.0171776 +-0.0339828 0.0124848 0.00599613 0.0161448 0.00087872 0.0302533 -0.000909414 -0.0118208 +-0.00812745 0.0183911 0.0133598 0.0230327 -0.00383883 0.0233815 0.00520088 0.00659568 +-0.00205373 -0.00139716 -0.00588952 -0.00975459 0.0117642 -0.00455635 -0.0115372 -0.0144676 +-0.00645935 -0.0076541 -0.00524616 -0.00213453 -0.0116653 -0.00441009 -0.00826148 -0.00313494 +-0.00129519 -0.00994663 0.00602006 0.00135385 0.0015922 -0.00802493 0.00974959 -0.0111355 +0.0110125 -0.0079933 0.00651536 -0.00593829 0.0103806 -0.00296147 0.00918279 -0.00264695 +-0.000383328 0.002319 -0.0055828 0.00800982 0.00623752 0.00224572 0.00366776 -0.00307224 +-0.000409146 0.000945825 -0.00118015 0.00266207 0.00189812 0.00415336 -0.00112918 0.00228231 +3.38758e-05 0.00116735 -0.00479411 -0.000778792 -0.00120851 0.000860494 0.00299209 0.00172527 +0.00651492 0.00164061 0.00567464 0.00398701 -0.0388478 0.0905123 0.025072 -0.125388 +-0.00553334 0.139127 -0.0285605 -0.0357995 0.0604791 0.060441 -0.00601046 0.0370104 +0.0124732 -0.00405892 0.0125755 0.0337579 -0.0141943 0.0358354 -0.00407138 0.00978278 +0.0349294 0.00243336 -0.0173063 0.0253957 -0.013848 0.00350148 -0.0445569 -0.00180661 +-0.0283279 0.00340981 -0.0299333 0.00530667 -0.00121655 -0.0146811 -0.00660116 -0.0183719 +0.0064159 -0.00138054 0.00689342 -0.00395606 -0.00311685 -0.0111925 -0.0031157 -0.0177947 +0.000166922 -0.0158176 -0.00211655 -0.0212005 -0.0120432 -0.00768813 0.00735477 -0.0047242 +-0.0102643 -0.00692863 -0.000114451 -0.00144463 -0.000168519 -0.011425 0.00236249 -0.00349553 +0.00196284 -0.00674068 0.00235763 -0.00904926 -0.000763259 0.0039069 0.0118941 0.00489041 +0.00511276 -0.00159588 0.0129038 0.0106897 0.0106736 0.00484011 0.0093067 0.00606478 +-0.00243849 0.00692576 0.000322405 0.00324555 -0.000829772 0.00141427 -0.0036187 3.31939e-05 +-0.000198976 -0.00585228 -0.000636785 -0.00471016 -0.000993464 -0.00422074 -0.0064685 -0.000108908 +0.000879207 -0.00340396 0.00229174 -0.00113726 -0.000536969 0.000888052 0.00133511 0.00106553 +0.000311849 0.00635189 -0.0032874 0.00787472 -0.0155617 0.0291163 0.00444829 0.0317752 +-0.0726721 -0.0173369 0.0158332 0.0213481 -0.0355475 0.0193115 -0.018291 -0.0139656 +-0.0431956 -0.0315562 0.00702343 0.0222374 -0.0430976 -0.00946266 0.00809657 0.0212995 +-0.000701653 -0.00716621 -0.0200868 -0.00786666 0.000925847 -0.0269071 0.000489514 0.00264582 +-0.0163309 0.0262676 0.0164969 -0.00865795 0.000358366 0.0089729 -0.00350376 0.0320107 +0.00175396 0.0102062 -0.00661724 0.0204489 0.00755041 0.0307734 0.00543323 0.0139205 +-0.00457152 0.0141441 0.0125788 -0.00183038 0.00921286 -0.00572828 -0.00680687 0.00703546 +-0.0068386 -0.00544463 -0.00419184 0.0108719 -0.000307925 0.00628364 0.00722894 0.0132184 +0.00322033 -0.000930422 -0.00435503 0.00794021 -0.000783156 -0.000709701 0.00643885 0.000169232 +0.00831834 0.00221625 0.00638008 0.00223245 -0.00596727 0.00308458 -0.00242772 0.0101688 +-0.00106099 0.0023958 -0.00451757 0.00326193 -0.00181212 0.00147275 -0.000524401 0.0023531 +0.00120236 0.00170151 -0.00547327 -3.63235e-05 -0.00447471 -0.00225299 -0.0044459 -0.00170693 +-0.00431185 0.000544964 0.000254226 -0.000217881 0.000872186 0.00482092 -0.00212829 0.00476003 +-0.00141901 0.00367941 0.0455943 0.0188541 -0.0532947 -0.0276613 -0.0214724 -0.00312822 +-0.0237809 0.00438924 0.0092844 -0.00860649 0.00359711 0.00127063 0.0222336 -0.0046964 +-0.016154 -0.0172755 0.0208612 0.0280189 -0.00643908 0.0139407 0.00233006 -0.0109816 +0.00666877 0.0289971 -0.0174178 0.00755105 0.00765857 -0.00878545 0.0154522 0.0127383 +0.00177998 0.0124898 -0.00466452 -0.00539967 -0.00218246 -0.00580043 -0.0112979 -0.0207486 +0.00558501 -0.0090753 0.0110089 0.00868514 -0.0150552 0.0113175 -0.00783222 0.0146254 +-0.00613482 0.0089673 0.00210681 0.00201296 0.00310823 0.000440776 -0.00340481 -0.00497886 +-0.00367891 -0.000845717 0.00206122 -0.00290974 -0.0133266 -0.00467062 0.0042856 -0.00632839 +-0.00214526 0.00290874 -0.0114965 0.00738455 0.00095473 0.00603343 0.00155411 0.00320781 +0.000554514 -0.00160508 -0.00723545 -0.0040606 0.00121748 -0.0026166 -0.0063706 -0.00514706 +-0.00530803 -0.000496953 -0.000423674 -0.00407212 0.00208831 0.0023867 0.00264314 -0.000621827 +0.0027532 -0.00249428 0.00369459 -0.00189001 0.00499546 -0.000577532 0.00288308 -0.000855333 +-0.00331148 -0.00083399 -0.00424105 0.00109784 -0.00435985 0.0018161 0.00510109 -0.0373914 +0.0145974 -0.0256105 0.0392482 0.0349547 0.0100257 -0.0461079 -0.0147043 0.0288724 +-0.00412851 -6.67248e-05 -0.0382161 -0.0195187 0.0115462 0.0235355 -0.00260417 0.0173971 +-0.00357144 0.0266283 -0.0114417 0.00641459 -0.00138833 0.0195464 -0.00323752 -0.0118075 +0.00600891 -0.00382542 0.00878194 0.0126224 -0.0133896 -0.00209634 0.0362175 -0.00692386 +0.00897024 0.0127748 0.0180524 0.00113582 0.00630293 0.00313008 0.00856082 -0.0125208 +0.00783844 -0.0118991 -0.00585106 -0.0205958 0.00204593 -0.0119156 0.000537645 0.00213245 +-0.00243039 0.00397605 -0.00420847 0.00287144 0.000456315 -0.00086696 0.001891 -0.0010317 +-0.00181107 -0.00239866 -0.0104456 -0.00115841 -0.00624021 -0.0072641 -0.000726356 -0.00299568 +-0.00736466 -0.00550625 -0.00363065 -0.00163543 -0.0019241 -0.0079508 -0.00260074 -0.00520325 +0.00086105 -0.00734492 0.00563644 -0.00122998 0.00346206 0.0014175 0.00493037 0.00319162 +0.00387551 0.00462404 0.00393545 0.00774436 0.00792363 0.00272747 0.00710299 0.00363904 +0.00201356 0.00184459 -0.0014376 0.000145225 0.000394689 0.000608086 0.000637103 -0.00315358 +0.0113137 -0.00796971 0.00673989 -0.0166955 -0.0347299 0.00191787 -0.00361096 -0.00209137 +0.0347773 0.00717385 -0.0220678 -0.0158608 0.0348956 0.00259067 -0.0155632 0.0208535 +-0.00235564 0.00650992 0.0298073 -0.028313 -0.0145832 -0.00350893 -0.00741296 -0.000975825 +-0.0216031 -0.00627087 0.0159112 0.00853263 0.0021356 -0.0208281 -0.00939628 -0.00950243 +0.0179625 -0.00980937 -0.000713963 0.00118058 0.00736856 0.00800107 0.0027394 -0.00276443 +0.003204 0.011379 0.0069837 0.00472452 0.00735254 -0.00313892 0.0056859 0.0132157 +-0.00184398 -0.00409263 0.000907774 -0.00790914 0.000523829 0.00302378 -0.00542119 0.0102721 +-0.0118188 0.00208299 -0.0184474 0.0028752 -0.00823686 0.00367992 0.0019923 -0.00135287 +0.00440661 0.00530304 -0.00425148 -0.00449551 0.00198405 0.0068157 -0.000259958 -0.00482482 +-0.000967272 0.00183644 -0.00109847 0.00143502 -0.000221252 -0.00164111 -0.00263157 0.0057141 +0.00153262 -0.000670034 0.00180807 0.00426858 0.0033961 0.00584055 0.00739614 0.00713336 +0.00260533 0.00722341 -0.00171618 0.00969482 -0.00418405 0.000861245 -0.00460656 0.00333758 +-0.0505571 0.00195319 -0.0284861 -0.00952 -0.00291356 0.0233461 -0.0110739 0.0143203 +-0.0132608 -0.0339209 0.0273559 0.0418173 -0.00177742 -0.0360027 0.0146123 0.0344111 +0.0042461 0.00425404 -0.0336686 0.0264151 0.00478474 0.0259455 0.00296815 0.00766061 +0.0103149 0.0302387 0.0067738 -0.0171717 0.00027227 -0.0144738 0.0112497 0.00422869 +-0.00487971 -0.0258092 0.00548136 -0.0070691 -0.00440637 -0.0110789 -0.0107964 0.00496838 +-0.0137527 0.00760852 0.000693914 0.00946047 -0.00755685 0.00379104 0.00335216 -0.00632585 +-0.0149252 0.00647114 -0.0109806 0.0107551 -0.00203729 -0.00126863 -0.0111531 -3.81109e-05 +-0.000237037 -0.00205424 -0.00759787 -0.0072641 -0.00322672 -0.00119269 -0.00593038 -0.00641739 +-0.0134917 -0.0059306 -0.00598058 0.00163833 -0.00373374 -0.00200138 -0.0070205 -0.000184166 +0.00307746 -0.00340052 -0.00751718 -0.00103385 0.00546084 0.00355447 0.00752701 0.00386411 +0.00616636 0.0061146 0.000718419 0.00488776 0.000983178 0.00908748 -0.00687378 0.0040347 +-0.0125076 0.00298446 -0.00581766 -0.000908221 -0.00698992 0.00259808 0.0622121 0.000600997 +-0.00012413 0.0190451 -0.000934484 -0.0180916 0.0448962 0.00799844 -0.0183542 0.0270076 +0.000364153 -0.0240697 -0.00217815 0.0047439 -0.00464233 0.00164868 -0.0244436 -0.00257358 +-0.00413962 0.00204621 -0.0224844 0.0078182 -0.00913142 0.00573715 -0.0187436 -0.0268205 +-0.0127135 -0.00421702 0.00047277 -0.00940376 -0.00682646 -0.00993679 0.00282758 0.011143 +0.000449576 -0.0154903 0.00516246 0.0033922 0.00907644 -0.00848404 -0.00967578 -0.0079864 +-0.00679844 -0.0132792 0.000272392 0.0056956 -0.00719002 -0.00616183 0.00263412 -0.0107896 +0.00326193 -0.00845965 -0.0127579 0.00181127 -0.00569823 -0.00818291 -0.00246942 -0.0114544 +0.00234241 -0.00056335 0.00442802 -0.0102359 0.00563235 -0.00126622 0.0175425 -0.00164537 +0.0027391 0.00320929 0.00354875 0.0034381 0.00630014 0.00418975 -0.00200722 0.0132791 +0.000224306 0.0121129 0.00310944 0.00111014 -0.000740109 -0.00056394 -0.00506915 0.00357838 +-0.00354706 -0.0028643 -0.00761421 -0.00368724 0.00154994 -0.000841613 -0.00510258 -0.00371021 +0.00410561 -0.00580966 -0.0343888 -0.00892321 0.021618 -0.00143115 0.00927297 -0.00535866 +-0.00335344 0.00825388 0.00630079 -0.0567013 -0.00191192 0.0376414 0.0207521 -0.0252629 +-0.00712895 -0.00847843 -0.0210862 0.00801941 0.0134328 -0.0123174 -0.0305776 0.0180808 +0.00316577 0.00225167 -0.000143486 0.0177562 -0.00330343 0.0217631 -0.00338049 0.0150987 +-0.0113798 0.00497604 0.01436 0.0156844 -0.00852033 0.000925003 -0.00278152 0.014457 +0.000361617 0.00797147 0.0045589 0.0109027 -0.00172053 0.00959987 -0.0103385 0.00299919 +0.00576099 0.0165266 -0.00286563 -0.0114348 0.00327006 0.00715053 -0.00311294 -0.00656052 +-0.00508702 0.000548116 0.00388317 -0.00204316 0.00290008 0.00393432 0.0111211 0.00958108 +0.000254273 0.0189493 0.00753283 0.0133961 0.0091218 0.0117579 -0.000495933 0.011102 +0.00201992 0.00775167 -0.00159826 -0.0013275 -0.00814572 -0.00199092 -0.00480952 -0.000950509 +0.00191637 -0.00725253 0.00237756 -0.00421008 0.00555762 -0.000856783 0.00385765 -0.00132117 +0.00593371 -0.00263196 0.00323039 -0.000784165 0.00976772 0.00348808 0.00943866 0.00213559 +-0.0534346 -0.00618504 0.0319598 0.000832311 0.0145058 -0.0172913 -0.0173594 0.0325159 +0.0425874 0.0113924 -0.0222268 -0.0138308 0.0391772 0.0214462 -0.0240636 -0.0302699 +0.00374615 0.00259507 0.000851676 -0.00255399 -0.0163924 -0.0149971 -0.00595751 0.00366063 +0.00469416 -0.0168661 0.0018692 0.0131722 0.00401267 -0.0152985 0.000416253 0.00748574 +-0.00124914 -0.00372488 0.000698306 -0.00915401 -0.0091587 -0.000428657 0.00968141 -0.00200166 +0.00185482 0.00454188 0.00395463 0.00479924 0.0035146 -0.00152067 0.003787 -0.00410139 +0.00613664 0.00364233 0.00595405 0.00279315 0.00605764 -0.00613642 -0.0112297 0.00364598 +-0.00576526 0.0038167 -0.00100207 0.00124807 -0.00870918 0.0059174 0.00105576 0.00435491 +-0.00151714 0.00353373 -0.00266472 -0.0059691 -0.00655925 -0.00142383 -0.000791874 -0.000715896 +0.00255713 0.00132257 0.00275426 -0.00644899 0.00135436 0.00462792 0.00425612 -0.00223178 +0.00680519 0.0027785 0.00550658 0.00232411 -0.0323278 -0.00359981 -0.00961218 -0.00953352 +0.0115003 0.0155345 -0.0145225 0.0140177 0.00898819 0.012094 -0.00661487 0.00174617 +0.0191346 0.00197534 -0.0108583 -0.0256535 0.00543479 -0.00380568 -0.0326679 0.00174384 +-0.00526525 -0.00715385 -0.000289771 0.0284029 0.0112239 -0.0234484 -0.00566658 0.0143193 +-0.000468259 0.0122607 3.1049e-05 -0.00462986 -0.0312286 0.00647347 0.00953403 -0.00557154 +-0.000395608 0.0124715 0.000669212 0.00299943 0.00623212 -0.00668107 -0.00113702 -6.63838e-06 +-0.0104835 -0.00168642 -0.00308815 -0.00678012 0.00281452 -0.00161032 0.0102487 0.00211477 +-0.00176959 -0.00975405 0.00490165 0.00374433 -0.00601658 0.000301634 -0.00839461 -0.00606551 +-0.00849688 -0.00679398 -0.00783906 -0.00406962 -0.00474016 -0.00520608 -0.000956365 -0.00243337 +0.00196491 -0.00791599 0.000219615 0.000976036 0.00829457 -0.00674904 0.00373837 -0.00263027 +0.00473648 0.00280818 0.00595068 0.00190333 0.00294843 0.00333166 -0.00237085 0.00492836 +0.00351896 0.00197973 0.019232 -0.0138483 -0.00773398 -0.0254144 0.0254568 -0.00551494 +-0.042023 0.010974 0.0167046 -0.0332973 0.0147658 -0.0116657 0.00050519 -0.00600823 +0.0189878 -0.0133114 -0.0174764 0.0107059 0.0206709 -0.00737058 -0.00489747 -0.0077286 +0.00633462 0.00392915 -0.000630587 -0.00853692 0.0139726 0.00261872 0.00972045 0.0126493 +0.0243068 -0.00669143 0.016251 0.0143587 0.0131874 0.00118502 0.0130765 0.00157749 +0.000926319 0.00913744 -0.0106854 0.00331891 -0.0020192 0.00845987 -0.00983185 -0.00441787 +0.00172867 0.00599063 -0.009796 -0.0129519 0.00292639 -0.0087831 0.00499798 -0.00711981 +0.00118166 -0.012044 0.000320067 -0.00983609 -0.000617986 -0.00593743 0.00765764 -0.00551874 +0.00537442 -0.00268585 0.0013652 -0.00252635 0.0050501 0.00379484 0.00835443 0.00112592 +0.00120609 0.00494571 0.00307452 0.000537731 0.00226288 0.00737791 -0.000259217 0.00615592 +-0.0012789 -9.59404e-05 0.00235237 -0.00513837 -0.00274959 0.00139625 -0.0253845 0.021232 +-0.00415715 0.00802744 -0.0121645 -0.00986101 -0.000474397 0.000917919 0.0296956 0.0336198 +-0.0388613 0.00431636 0.0312253 0.0429377 0.0022952 -0.0299642 0.00575672 0.0049827 +0.011266 0.0066745 -0.0112607 -0.0196817 0.00400321 0.00470103 0.00650602 -0.00267869 +-0.012549 -0.00499156 -0.000568728 -0.00978552 -0.0134807 -0.00963774 -0.00365373 0.0116847 +0.00693677 -0.00511995 -0.0130789 -0.0126524 0.0126339 0.00788479 -0.00927353 -0.0167485 +0.00675484 -0.013697 0.00203207 -0.010955 0.00393401 -0.0172399 0.00272795 -0.00138688 +0.0127353 0.0105304 0.00607363 -0.000296428 -0.000138097 0.00221253 0.00707283 0.00159137 +0.000511929 0.00387102 0.00226898 0.00130147 0.00402381 -0.00180092 -0.00435928 0.000460991 +-0.0017569 0.00295868 -0.000300105 -0.00640088 -0.00367221 0.00124297 -0.00344225 0.00277097 +-0.000968464 -0.000803843 -0.00254432 0.00407456 0.00198456 0.00304094 -0.00464017 -0.00229042 +-0.0144781 -0.0174333 0.0020935 -0.00195753 0.00288858 0.0243017 -0.00672994 0.0274661 +0.0109523 -0.029418 -0.00357759 0.0290452 -0.0108311 -0.00525941 -0.00657002 0.0281501 +-0.00210689 -0.00817072 -0.00116522 -0.00864641 -0.00477282 0.0124767 0.00528965 -0.00332022 +-0.00241556 -0.00694121 0.0197666 0.00857713 0.0117105 0.00486412 -0.00105715 -0.00842159 +0.0152017 0.000686849 0.000168052 0.0108023 0.0029852 -0.00890113 0.00673265 -0.00729853 +-0.00297606 -0.00155294 -0.00373411 -0.00799767 0.00153291 -0.00404509 -0.00242303 0.00498452 +-0.0117438 -0.00455764 -0.00242062 0.0046537 -0.0122274 -0.00625811 -0.000730153 0.00235161 +0.00506877 -0.00278056 -0.00241568 -0.00569137 -0.000243528 0.00367223 -0.00280931 -0.00197585 +-0.0020777 -0.00418218 -0.00106155 7.72791e-05 0.00267016 0.00185189 -0.00221115 0.00194087 +-0.00425653 0.000128041 -0.000353045 0.00385349 -0.00613245 -0.000874422 0.00128273 -0.00483868 +0.00919471 0.0111964 0.00558753 -0.00243792 -0.0274396 -0.00114336 0.0210493 -0.0151364 +-0.0126112 0.00504225 0.00334472 -0.00588815 0.0039212 -0.0214621 -0.00841002 -0.000443902 +0.00583115 -0.0101195 -0.00154841 0.02369 -0.00794115 -0.00991656 -0.00628838 0.0199598 +-0.000167641 0.000498107 -0.0181709 -0.0126259 0.000762098 0.0238973 0.0099526 -0.00310719 +-0.00314936 0.00158568 0.00478107 0.00675634 -0.013701 -0.0181701 0.00170768 -0.00655425 +0.00144763 -0.0104073 -0.00414282 -0.00811358 -0.0015017 -0.00661725 0.00756149 0.0037082 +-0.00881976 -0.0149964 0.00495434 -0.00411682 -0.00199572 -0.00572329 -0.00758447 0.00440383 +-0.00113313 0.00392875 0.000653329 0.0091725 0.000532825 -0.00104937 -0.00380265 -0.00208734 +-0.00276396 0.00287009 0.00172135 -0.000797923 -0.000745375 -0.00225064 0.00380119 -0.00673382 +-0.00283053 7.31525e-05 0.000258169 -0.00101956 -5.35537e-05 -0.000194983 0.00880057 0.0041381 +-0.000279918 -0.0067686 0.030049 0.0274052 0.00489373 0.00855384 0.0152619 0.0147395 +0.0190477 -0.0032882 -0.0267921 0.0134684 0.0116714 -0.00446948 -0.020943 -0.0137414 +0.000983127 0.0154494 -0.000942302 -0.00932606 -0.0196108 -0.00026041 -0.00894016 0.0101149 +-0.00763246 0.00397296 -0.0109179 -0.00583643 -0.00432385 0.00244491 -0.000404007 -0.00240242 +0.00655359 -0.00154354 -0.00334628 0.00994414 -0.00268339 -0.000976373 0.00632458 0.00555178 +-0.000115438 0.00754725 -0.00406929 0.00044227 0.00592569 0.00376862 0.0033394 0.0083158 +-0.00377566 -0.00328847 -0.00818711 0.00147873 -0.00249622 0.0018673 0.00102428 -0.00465808 +-0.00431046 -0.00553625 -0.00295946 -0.000191464 -0.000700033 0.00328171 0.0031382 0.00653942 +0.00255224 0.00837434 0.0118212 0.00426894 0.00452224 0.0035153 0.00223242 0.00192292 +-0.00373325 -0.00147546 -0.00271559 -0.00720677 -0.0175059 0.0144425 -0.00499389 -0.012521 +-0.000311671 -0.0242378 -0.0210065 -0.00279725 0.00405834 -0.0187692 -0.0193125 0.00112836 +-0.00324312 0.0173168 -0.0234713 -0.0220866 -0.0112257 0.0162957 0.00109019 -0.0113953 +-0.0214153 -0.0146552 0.0116304 0.00656481 -0.00924468 0.000821327 -0.00105589 0.0216818 +-0.00374499 -0.00312 0.00510309 0.00802037 -0.00723694 0.00115745 0.00175103 -0.00300117 +0.00905795 0.00636217 -0.00348753 0.00488672 0.00516657 0.00152735 0.0149282 -0.0109161 +0.00111677 -0.00755963 0.00212614 -0.00382325 0.00939573 -0.000637487 0.00996223 0.00476373 +-0.00431038 0.00619815 0.00741418 0.00421848 -0.00828684 0.00695553 -0.0022079 -0.000203254 +-0.00442361 0.00455663 -0.00193622 -0.00135523 -0.00385332 0.00448288 -0.00404398 0.00626999 +-0.00513903 -0.000133499 0.00292787 0.00751513 0.0122013 -0.0100879 -0.0108183 -0.0126536 +-0.00460165 0.0165629 -0.0191798 -0.0121341 0.0183479 0.0170986 -0.00208266 -0.0252274 +0.00883639 -0.00788723 -0.000357103 -0.0163255 0.0149283 -0.0202417 -0.00104894 -0.00372558 +-0.00900612 -0.0159844 0.0256504 -0.0111977 -0.020327 0.000378211 -0.00504297 -0.0187309 +0.00591723 -0.00481942 -0.00832763 0.0068285 0.00998489 -0.00466751 -0.00827872 -0.00527666 +0.0110456 0.0063757 -7.57501e-05 -0.0129149 0.0028198 0.00190866 0.00991867 -0.000897019 +-0.00213105 -0.00126496 -0.0106167 0.0145586 0.00454133 -0.00841054 -0.0150393 1.28036e-05 +-0.0022048 -0.000723918 -0.00268775 0.00223198 0.00144058 -0.00426282 -0.000983906 0.00437796 +-0.00664519 -0.00249018 0.00737867 0.000456106 0.000168652 0.00180108 0.000889511 -0.00718606 +0.00425769 0.00490318 -0.00344024 0.00399525 -0.0094709 0.0249978 0.00826828 -0.0103136 +0.00208568 0.00271373 0.0196945 0.00598903 -0.00266817 0.00601016 -0.0112045 0.00923171 +0.0190286 0.0242561 -0.0174422 0.000563305 0.00615151 0.0138922 0.0146529 -0.00104874 +0.012462 0.00859906 0.00330145 -0.00019277 0.00274369 -0.00472771 0.0140652 -0.0095782 +-0.018955 -0.00222358 -0.00068514 -0.0119258 -0.00513774 -0.0109135 -0.0154552 0.00485716 +-0.0132991 -0.00624446 -0.00701412 0.00102963 -0.0122261 -0.00241809 0.00150794 0.0034028 +0.000828857 -0.00706363 0.00962024 0.00655012 -0.000579533 -0.0100416 0.00959188 0.00749598 +0.00105593 -0.0045407 0.0124547 -0.00237045 -0.00321482 0.00338524 0.00129152 -0.00410681 +-0.00486778 0.00546861 -0.001355 0.00475193 -0.00380143 0.0025049 0.00152132 0.00115218 +0.000592708 0.00122438 0.0121713 -0.0189177 -0.0190825 0.00356736 0.00536845 0.0192037 +-0.00301874 -0.00447694 0.00346352 0.0062548 -0.00102404 0.00475927 -0.00861443 -0.012993 +0.00241896 0.0190845 0.00111246 -0.00834406 -0.030177 0.00645613 0.00306997 0.0116545 +-0.000322349 -0.00257654 -0.0019549 0.0124661 0.0111692 0.00139725 0.0117799 -0.00845798 +-0.00467465 0.00130391 0.00155997 -0.0133819 0.00402208 -0.00532596 0.000728591 0.00286931 +0.0057373 0.00178731 -0.000953939 0.00650946 0.000868512 0.0040885 -0.00837939 0.000534487 +-0.0103271 0.00586175 -0.00701645 0.00857783 0.000462833 0.00553544 -0.00680905 0.00811252 +-0.00628065 -0.00335926 -0.00223865 -0.00179608 -0.00802034 0.00223934 -0.00111786 -0.00885648 +0.00117295 0.00231294 -0.00341529 0.0029972 0.0044132 0.00208754 -0.00262918 0.0162302 +0.00871876 -0.0240867 -0.0181676 -0.00734112 -0.00232186 -0.00856099 -0.00803325 -0.0161159 +0.00287171 -0.00449459 -0.00982645 -0.02599 -0.0115123 0.000600059 0.00280108 -0.0049461 +0.00374898 0.00548837 -0.000413011 -0.00740843 0.00894186 0.000631851 -0.00302117 -0.0175443 +-0.00917124 -0.00902859 -0.00420997 0.00130232 -0.00345121 -0.00129518 0.0105536 -0.00458322 +0.00984002 -0.00822496 -0.00379882 -0.00908149 0.00118376 -0.0116951 0.00612111 -0.0102066 +-0.00550478 -0.00495048 0.00122908 -0.00408462 0.00574295 -0.00384258 -0.0018902 0.00624181 +-0.00150709 0.00300514 0.00487474 0.00721502 0.000695335 0.00123581 0.00720703 0.00875407 +0.00301797 0.00622118 0.00734415 -0.000973976 0.00616765 0.0028176 0.00071955 -0.00155093 +-0.00177429 -0.0291487 0.00368674 0.0178212 0.00633386 -0.00888412 -0.00916705 0.00453378 +0.00780904 0.0116936 -0.00656865 -0.0140965 0.0102823 0.00431621 0.0128022 -0.00173288 +-0.00328135 -0.0151419 0.0192834 0.00408508 -0.00230212 -0.0132278 0.00912543 0.000914357 +0.00300174 -0.0149928 0.0042884 -0.00382833 -0.00480737 -0.00793165 0.00569607 -0.0176634 +0.00149657 0.010909 0.00899187 -0.0127887 0.0115672 -0.0016047 -0.0109782 -0.00359891 +0.00949241 0.00496565 -0.00450975 0.00488403 -0.00194523 -0.000889537 -0.00246395 0.00459883 +-0.0129402 0.00170704 -0.00720741 -0.00601347 -0.0053573 0.00298855 -0.0129326 -0.0014289 +0.0020636 -0.00460825 -0.00260323 0.00711338 0.000907636 -0.00102353 0.00290314 -0.000165175 +0.00664043 0.0303557 -0.00377593 -0.0262299 -0.00750923 0.0117558 0.0133198 0.00734442 +-0.00502706 0.00782134 -0.00328097 0.0199595 -0.00766081 0.0037745 -0.00247008 0.0113371 +0.00754879 0.00450954 -0.0131892 0.00245859 0.0105651 -0.0033847 0.00876726 -0.0135799 +0.00902622 0.0010053 0.0071921 -0.013012 0.00809297 0.00126232 0.00762705 -0.00328258 +0.00769332 -0.000177574 0.00275444 0.000213601 0.00705244 -0.00908038 -0.00369794 0.00474113 +0.0140627 -0.00578924 0.00613423 0.000985534 0.00838118 -0.00773272 0.00817825 -0.00347659 +0.00302372 0.000460508 0.00651554 -0.00161221 0.00500305 -0.00359111 0.00649604 -0.00515578 +-0.00597885 0.0049914 -0.00267901 -0.00275059 -0.00475813 0.00173809 -0.0185642 -0.00331874 +0.00544209 0.011543 0.00604466 -0.00776752 -0.0124785 0.00389233 0.00668033 0.00350956 +-0.00540682 -0.00940682 0.0200362 -0.023647 -0.0123969 0.0100976 0.00702832 -0.0271974 +-0.00201016 0.0146923 -0.00327326 0.0119769 -0.00870348 6.15719e-05 -0.00026077 0.0104111 +-0.00280858 0.00927795 -0.00506205 -0.00155395 -0.00410101 0.00340195 -0.0026263 -0.000828333 +-0.0133994 -0.00292138 0.00776506 0.00459289 -0.0088386 -0.0036656 -0.0012169 0.00543108 +0.00207542 -0.000955434 -0.0052445 -0.000540312 0.00176466 0.00561114 -0.0048033 0.00229207 +0.00488078 0.00114798 -0.00255448 -0.000386853 -0.00380906 -0.00492063 -0.00613643 -0.00687271 +0.000864785 -0.0034561 0.00894511 0.00413362 -0.000395344 -0.000307124 -0.00904065 0.005805 +0.0137347 0.00469924 -0.00519418 -0.0057187 0.0172254 0.0159953 -0.00804925 0.000724389 +0.00872196 0.000346364 0.00551726 -0.000917762 0.00296607 0.0152681 0.0140435 -0.0101486 +-0.00619962 0.000309058 -0.00114025 0.0145877 -0.00833601 -0.00935017 0.0043199 0.0125726 +0.000574868 -0.00379144 0.00722692 -0.0063929 0.00600549 5.32368e-05 0.0079283 -0.00566588 +0.00832698 0.00269014 0.00460251 0.00835079 0.00609919 -0.000413219 -4.54315e-06 0.00915204 +-0.000956323 0.00656648 0.00413802 -0.00451842 -0.00122011 0.00465837 -0.000253252 -0.0014071 +0.00266981 -0.00381359 -0.000748015 0.00241163 4.58326e-06 0.00532126 -0.00730261 -0.00711162 +0.00815411 0.00246701 -0.00651964 -0.00212744 -0.000360316 0.0111739 -0.00594341 -0.0220174 +0.00981955 0.0112007 -0.0102484 -0.00458743 -0.0068922 0.0120652 0.00619982 -0.00365108 +-0.00726861 0.0145187 0.0100533 -0.0030538 -0.00196068 -0.0064776 -0.0043501 0.00170512 +0.00644606 -0.0038692 -0.00883792 -0.00327374 -0.00135292 -0.00327577 -0.00127586 -0.00311812 +-0.00509973 0.00106689 -0.00169864 -0.00676388 -0.0026071 0.00476954 -0.00242748 -0.00505164 +0.00240032 -0.00083613 -0.00851551 -0.000400576 0.00481212 -0.00304036 -0.00133503 0.00520623 +0.00355256 -0.00447697 0.00323864 -0.0029056 0.00227435 -0.00433403 0.000407276 0.0045724 +-0.00419478 0.00294993 0.00272606 0.00723659 -0.00203257 -0.00575591 0.0117196 0.00378958 +-0.000442098 0.00505245 -0.00851911 -0.0133285 0.012255 0.00894958 -0.0101418 -0.00573353 +-0.0012012 -0.000978661 0.00688717 0.00141362 -0.00595842 0.00797276 0.00851079 0.000101153 +0.00798377 0.00288979 0.00607639 0.00480559 0.014287 0.00533058 0.00957638 -0.00146194 +0.00366591 0.00301111 0.0045846 0.000833167 0.000751896 -9.1375e-05 -0.00144426 0.00383468 +0.00621061 0.00076597 -0.0012687 0.00888993 -0.00293864 -0.000182566 0.00428089 0.00224699 +-0.00210459 0.00749039 0.000437715 0.00202057 0.0024136 0.000717208 -0.000247883 -0.00729365 +-0.00176264 0.00339275 0.00499519 -0.00227318 -0.00269381 0.00628411 0.0062216 0.00640501 +0.00162328 0.000309082 0.00235533 0.00133595 0.000233252 0.00152171 0.0039584 0.00547697 +-0.00415159 0.000863028 -0.00421611 -0.00101734 -0.000224835 0.00577554 -0.00899277 0.00636643 +-0.00547625 -0.0025737 0.00377199 0.0047134 -0.0122657 -0.00263709 0.000201209 -0.00893457 +-0.00403805 0.00200094 -0.00277593 -0.00905224 -0.00236305 0.00503647 -0.00860194 -0.00467279 +-0.00116663 -0.00182291 -0.00739891 0.00502711 -0.0020583 -0.00177227 0.0043817 -0.00369389 +-0.00426238 0.00630847 -0.000468645 -0.00335542 0.00386095 0.00691258 0.00156365 -0.00495638 +-0.00188579 -0.00268397 0.00966177 0.00229236 -0.000965914 -0.0107748 0.00060037 -0.00563496 +0.00204915 0.013886 -0.0159295 -0.00637693 0.01106 0.0167159 -0.00533921 0.0104005 +-0.00203182 0.00291711 0.0101753 0.00750826 0.00105139 0.00189498 0.000447176 0.00753206 +-0.00136072 0.00286928 0.00539239 0.00275571 0.00489731 0.000754238 -0.00152155 -0.0030048 +0.00544232 -0.00269807 -0.000980214 0.00139194 -0.00205141 -0.000374067 0.000250868 0.00216302 +-0.00621782 0.00161497 0.00658653 -0.0042538 0.00610434 -0.00332254 -0.00533981 -0.00571238 +-0.00481695 -0.0110529 0.000947817 -0.00134365 -0.0113311 -0.0141216 -0.00755134 -0.00600633 +-0.00533365 0.00490567 0.0022387 -0.0117873 0.000540177 0.00462058 -0.00302335 0.000632848 +-0.00148934 -0.0124066 0.00104965 0.0118565 -0.0122397 -0.00297672 -0.00434086 -0.00229542 +-0.00180072 0.00248011 -0.00373581 0.00224807 0.000766177 -0.000528086 0.00244592 0.00339677 +-0.00406435 -0.000169292 -0.000375221 -0.00785204 0.00129665 -0.00114415 0.00173048 -0.00792475 +0.0083462 -0.00036768 -0.00502197 0.00427568 -0.00155077 -0.00685723 0.000957057 0.00151748 +0.00625731 0.00374388 -0.0116378 -0.002719 0.00714895 0.00463866 0.00335498 0.00218695 +-0.00923195 -0.0039202 -0.000169199 0.00749757 -0.00583546 -0.00516699 0.000301382 0.00267111 +-0.000982241 -0.0016857 -0.00459609 -0.00347938 0.00188202 0.00170059 -0.0043119 -0.00176303 +-0.00369072 -0.00293512 -0.00940326 -0.000118156 -0.00210635 0.00267983 -0.00972165 -0.00462711 +0.00142382 0.00216048 0.00754479 -0.00105866 -0.00246356 -0.00212552 -0.00860985 7.82364e-05 +0.00665849 0.00397452 0.00056816 -0.00502754 -0.000719282 0.00398181 -0.00345572 0.00147879 +0.00307381 0.00129633 0.00534451 0.0083763 -0.00404791 4.11671e-05 0.0159586 0.00988289 +-0.000342667 0.00432983 0.00130363 -0.00335634 0.00452313 -0.00108011 -0.00532346 -0.00609441 +0.00239407 -0.00950556 0.00138712 -0.00175865 -0.00420921 -0.0102039 0.00218939 -0.00317472 +-0.00131194 -0.00136055 0.00203387 -0.0090066 0.00064696 -0.00381529 -0.000275322 -0.00875153 +-0.00343327 -0.00314026 0.00284776 -0.00133555 -0.000114532 -0.00289455 0.00577506 -0.00305386 +-0.00794669 -0.000738885 0.0089491 -0.00416791 -0.00365453 0.000733943 0.00587259 -0.00806491 +0.00129501 0.00157254 -0.00593516 2.89579e-05 0.00405471 -0.0103656 0.00327728 0.00546822 +-0.00669877 -0.00410311 0.00906361 0.00140036 -0.00868126 0.00408762 0.00273233 0.00220716 +-0.0055738 0.0022069 0.00309223 0.0021839 0.00046671 0.00046961 0.00956939 -6.61413e-05 +0.00300979 -0.0018135 0.00151295 -0.00167206 0.00443675 0.00174164 -0.00343071 0.00256861 +-0.00502387 0.000103078 0.00193135 -0.00172707 -0.00725361 0.00721095 0.00336528 -0.00149761 +-0.009037 0.00102346 -0.00187788 0.00852647 0.00873401 -0.0110563 -0.0100997 0.00677727 +-0.0049128 -0.00627455 0.00498471 -0.00615053 -0.010479 0.0111592 0.000413752 -0.00937737 +0.00340804 0.00859464 -0.00274506 -0.00406274 0.00273587 0.00296285 -0.00152907 -0.00605785 +-0.00258822 0.00440216 0.00343715 -0.00662589 0.00336383 -0.00240714 -0.00343317 -0.000197623 +0.00878043 0.00406035 -0.00983719 0.00428887 0.00625949 -0.00661211 0.000141826 0.00383345 +-0.00879373 -0.00477384 0.0114088 -0.00366464 -0.0110489 -0.00511229 -7.20986e-05 -0.000129242 +0.000496908 0.00137734 -0.00600793 -0.000399195 0.00899841 0.000579902 0.00289622 -0.00229039 +-0.00988332 -0.00231368 0.010101 0.000314417 -0.00901144 -0.00369956 -0.00524639 0.00651492 +-0.00120401 -0.00548938 0.000761613 -0.00545839 -0.00403183 0.00668545 0.000367345 -0.00590228 +0.00354482 -0.0012814 -0.000398879 0.000388253 -0.000543208 0.00482949 0.008922 -0.00369149 +0.00194886 0.00110674 0.00446449 -0.000335538 0.00867497 -6.30313e-05 -0.00450561 -0.000868124 +0.0123264 0.00148412 -0.00558256 -0.000345807 -0.00267139 0.00350158 0.00454814 0.00189608 +-0.00687768 0.00430186 0.00223308 -0.000724647 0.00363883 -0.00471057 -0.00075187 0.00551322 +0.000791475 -0.00367861 -0.000596091 0.00788299 -0.00284521 0.00131295 -0.00225178 -0.00250783 +0.0026174 0.00398811 -0.00303452 0.00502065 -0.00735446 0.00031047 0.00885824 0.00420006 +-0.00479135 0.00762518 0.00239252 0.000741042 -0.00319701 0.00646062 -0.00579053 -0.00109321 +0.00371126 -0.00142317 -0.00290815 -0.00104743 -0.000318399 -0.00708279 0.00293866 -0.000712499 +0.00204781 0.00258834 -0.00502655 -0.00103863 0.0068815 -0.00308326 -0.00281035 -0.00044577 +0.00951175 0.00452414 -0.00305797 -0.00248296 0.00489839 -0.00727601 0.000814637 0.00451871 +-0.00336353 -0.00461342 -0.00141473 -0.00295683 0.00338654 -0.00225377 -0.00304125 -0.00194002 +0.00355317 -0.00196417 -0.00367808 -0.00179934 0.00515435 -0.000953948 0.00291012 0.000871127 +-0.00136232 -0.000622644 0.0052534 -0.00159633 -0.0050163 0.000407381 0.00746536 -0.00194374 +-0.00317011 -0.00241466 0.000655266 0.00258651 0.00805517 0.00217304 -0.00820795 -0.00458712 +0.00482381 -0.00247925 0.00135441 0.00170543 -0.00212381 -0.00345137 0.00333416 -0.00431962 +0.00348481 0.00442314 0.00142058 -0.00636639 -0.000121414 0.00606912 0.0038502 0.00310015 +-0.00592383 -0.000927296 0.00607532 -0.000721276 -0.0016439 -0.000782416 0.00816427 -0.00174668 +-0.00292351 0.00151456 0.00173947 -0.00736563 -0.000455401 0.00883059 -0.0025244 0.00363807 +0.00318564 -0.00697151 -0.00421664 0.00258212 0.00354441 0.00452501 -0.00346964 -0.000856528 +0.00369717 0.00120282 -0.00495738 -0.000817395 0.00601194 -5.3111e-05 -0.00551295 -0.00202112 +0.00114825 -0.000295829 -0.00854224 -0.000867944 -0.000961033 -0.0033048 -0.00230976 -0.000649937 +0.000732746 0.00116258 0.00323804 -0.00420856 -0.000331012 0.00846858 0.00141065 -7.65363e-05 +0.00511061 -0.0037566 -0.000728355 0.00568796 0.00349074 -0.00611279 -0.00281329 0.00634092 +0.00213905 -0.00128373 0.00417243 -0.00262604 0.00121707 0.00424451 0.00293855 0.000691781 +0.000334756 -0.00104229 0.00444104 -0.00330327 -0.00380473 -0.000708117 0.00224295 -0.00577649 +-0.00367442 -0.00210708 -0.00325188 -0.000317386 -0.00360035 0.00575674 0.00362187 -0.00733703 +-0.000261036 0.00508694 -0.00265619 -0.00566347 0.00464179 0.00189407 -0.00617238 -0.00668738 +0.00481546 0.00343095 -0.00665042 -0.00206714 0.00450838 -0.00120059 0.000649174 0.00870124 +-0.000111267 -0.0081759 0.00338264 -0.00416897 -0.00211676 0.00180927 -0.000347482 0.00276498 +0.0012996 -0.00535555 -0.00449048 0.00343112 0.00152012 -0.000500066 -0.00120488 -0.000507236 +0.0043081 -0.00350691 -0.00115674 0.00385674 0.0014045 -0.0123737 0.000821083 0.00324503 +-0.000680552 -0.000914579 0.00235912 0.000202517 -0.00288976 0.00211377 0.00280667 -0.000381589 +-0.00503539 -0.00457489 -0.00264134 0.00657838 -0.00134429 -0.00145231 -0.0017951 0.00182371 +0.0018727 -0.000911072 0.00215373 0.00257286 -0.00231029 -0.00400254 0.000498636 0.00694046 +0.000661064 -0.00548284 -0.00131493 0.00979045 0.00127213 -0.00447167 -0.001823 0.00192645 +0.000765254 -0.00237488 -0.00140128 0.00386174 0.005079 -0.000603354 -0.0030817 -0.000405708 +-0.000563718 0.00282854 0.00145703 -0.00330396 0.000836245 0.00253403 0.000642801 0.00189169 +-0.000321591 -0.00293569 -0.000907547 0.00152188 0.00207732 0.00414524 0.00152529 -0.000244837 +0.00175141 0.000272431 -0.00363516 -0.00348099 0.00301289 0.00570992 -0.000966353 -0.00600103 +0.00311914 0.00250546 -0.00101946 -0.00495093 0.004026 0.00247987 -0.00229415 -0.00494004 +0.00035095 0.00374607 -0.00121923 -0.00493001 -0.00261154 -0.000408485 0.00164723 0.000484819 +0.00014876 -0.00404211 0.00551885 0.000317814 -0.00473277 -0.00163972 -0.00124841 -0.00159215 + diff --git a/data/statistics.out.good b/data/statistics.out.good new file mode 100644 index 000000000..a564714b9 --- /dev/null +++ b/data/statistics.out.good @@ -0,0 +1,4 @@ +values=2 2 2 2 +max=2 min=2 average=2 +values=2 5 2 2 +max=5 min=2 average=2.75 diff --git a/data/step.log b/data/step.log new file mode 100644 index 000000000..13e0f5cdb --- /dev/null +++ b/data/step.log @@ -0,0 +1,58 @@ +6 6 6 6 6 0 0 1 +0 0 0 0 0 0 0 1 +6 6 6 6 6 0 0 1 +0 0 0 0 0 0 0 1 +6 6 6 6 6 0 0 1 +0 0 0 0 0 0 0 1 +6 6 6 6 6 0 0 1 +1200 1200 1200 1200 200 0 0 11 +6 6 6 6 6 0 0 1 +1200 1200 1200 1200 200 0 0 11 +6 6 6 6 6 0 0 1 +1200 1200 1200 1200 200 0 0 11 +6 6 6 6 6 0 0 1 +600 600 600 600 200 0 0 10 +6 6 6 6 6 0 0 1 +600 600 600 600 200 0 0 10 +6 6 6 6 6 0 0 1 +600 600 600 600 200 0 0 10 +6 6 6 6 6 0 0 1 +6000 6000 6000 6000 250 0 0 2 +6 6 6 6 6 0 0 1 +6000 6000 6000 6000 250 0 0 2 +6 6 6 6 6 0 0 1 +6000 6000 6000 6000 250 0 0 2 +1536 1536 1536 1536 6 0 10 1 +0 0 0 0 0 0 10 1 +1536 1536 1536 1536 6 0 10 1 +0 0 0 0 0 0 10 1 +1536 1536 1536 1536 6 0 10 1 +0 0 0 0 0 0 10 1 +1536 1536 1536 1536 6 0 10 1 +1200 1200 1200 1200 4 176 10 1 +1536 1536 1536 1536 6 0 10 1 +1200 1200 1200 1200 4 176 10 1 +1536 1536 1536 1536 6 0 10 1 +1200 1200 1200 1200 4 176 10 1 +1536 1536 1536 1536 6 0 10 1 +600 600 600 600 2 88 10 1 +1536 1536 1536 1536 6 0 10 1 +600 600 600 600 2 88 10 1 +1536 1536 1536 1536 6 0 10 1 +600 600 600 600 2 88 10 1 +1536 1536 1536 1536 6 0 10 1 +6000 6000 6000 6000 23 112 10 1 +1536 1536 1536 1536 6 0 10 1 +6000 6000 6000 6000 23 112 10 1 +1536 1536 1536 1536 6 0 10 1 +6000 6000 6000 6000 23 112 10 1 +2400 0-2400 0 2400 0 200 5 12 +24 0-24 0 24 0 24 5 1 +2400 0-2400 0 2400 0 200 5 12 +1200 600-1200 600 1200 50 100 5 12 +2400 0-2400 0 2400 0 200 5 12 +48 24-48 24 48 24 48 5 1 +2400 0-2400 0 2400 0 200 5 12 +66 36-66 36 66 36 66 5 1 +0 0 0 0 0 0 0 1 +6 3-6 3 6 3 6 2 1 diff --git a/data/step_grib1.filter b/data/step_grib1.filter new file mode 100644 index 000000000..cccbb8c3d --- /dev/null +++ b/data/step_grib1.filter @@ -0,0 +1,131 @@ +set indicatorOfUnitOfTimeRange="h"; + +set stepUnits="s"; +set stepType="instant"; +print "--- stepType=[stepType] ---"; +set startStep=21600; +print "stepRange=[stepRange] step=[step] startStep=[startStep] endStep=[endStep] stepUnits=[stepUnits:s]"; +print "indicatorOfUnitOfTimeRange=[indicatorOfUnitOfTimeRange:s] timeRangeIndicator=[timeRangeIndicator] P1=[P1] P2=[P2]"; +set startStep=21600; +print "stepRange=[stepRange] step=[step] startStep=[startStep] endStep=[endStep] stepUnits=[stepUnits:s]"; +print "indicatorOfUnitOfTimeRange=[indicatorOfUnitOfTimeRange:s] timeRangeIndicator=[timeRangeIndicator] P1=[P1] P2=[P2]"; +set endStep=21600; +print "stepRange=[stepRange] step=[step] startStep=[startStep] endStep=[endStep] stepUnits=[stepUnits:s]"; +print "indicatorOfUnitOfTimeRange=[indicatorOfUnitOfTimeRange:s] timeRangeIndicator=[timeRangeIndicator] P1=[P1] P2=[P2]"; +set stepRange="21600"; +print "stepRange=[stepRange] step=[step] startStep=[startStep] endStep=[endStep] stepUnits=[stepUnits:s]"; +print "indicatorOfUnitOfTimeRange=[indicatorOfUnitOfTimeRange:s] timeRangeIndicator=[timeRangeIndicator] P1=[P1] P2=[P2]"; +transient mytimeRangeIndicator=timeRangeIndicator; +set stepRange="16200"; +print "stepRange=[stepRange] step=[step] startStep=[startStep] endStep=[endStep] stepUnits=[stepUnits:s]"; +print "indicatorOfUnitOfTimeRange=[indicatorOfUnitOfTimeRange:s] timeRangeIndicator=[timeRangeIndicator] P1=[P1] P2=[P2]"; +set timeRangeIndicator=mytimeRangeIndicator; + +print ""; +set stepUnits="m"; +set startStep=28800; +print "stepRange=[stepRange] step=[step] startStep=[startStep] endStep=[endStep] stepUnits=[stepUnits:s]"; +print "indicatorOfUnitOfTimeRange=[indicatorOfUnitOfTimeRange:s] timeRangeIndicator=[timeRangeIndicator] P1=[P1] P2=[P2]"; +set startStep=28800; +print "stepRange=[stepRange] step=[step] startStep=[startStep] endStep=[endStep] stepUnits=[stepUnits:s]"; +print "indicatorOfUnitOfTimeRange=[indicatorOfUnitOfTimeRange:s] timeRangeIndicator=[timeRangeIndicator] P1=[P1] P2=[P2]"; +set endStep=28800; +print "stepRange=[stepRange] step=[step] startStep=[startStep] endStep=[endStep] stepUnits=[stepUnits:s]"; +print "indicatorOfUnitOfTimeRange=[indicatorOfUnitOfTimeRange:s] timeRangeIndicator=[timeRangeIndicator] P1=[P1] P2=[P2]"; +set stepRange="28800"; +print "stepRange=[stepRange] step=[step] startStep=[startStep] endStep=[endStep] stepUnits=[stepUnits:s]"; +print "indicatorOfUnitOfTimeRange=[indicatorOfUnitOfTimeRange:s] timeRangeIndicator=[timeRangeIndicator] P1=[P1] P2=[P2]"; +print ""; +set stepUnits="s"; +print "stepRange=[stepRange] step=[step] startStep=[startStep] endStep=[endStep] stepUnits=[stepUnits:s]"; +print "indicatorOfUnitOfTimeRange=[indicatorOfUnitOfTimeRange:s] timeRangeIndicator=[timeRangeIndicator] P1=[P1] P2=[P2]"; +set stepUnits="h"; +print "stepRange=[stepRange] step=[step] startStep=[startStep] endStep=[endStep] stepUnits=[stepUnits:s]"; +print "indicatorOfUnitOfTimeRange=[indicatorOfUnitOfTimeRange:s] timeRangeIndicator=[timeRangeIndicator] P1=[P1] P2=[P2]"; +set stepUnits="D"; +print "stepRange=[stepRange] step=[step] startStep=[startStep] endStep=[endStep] stepUnits=[stepUnits:s]"; +print "indicatorOfUnitOfTimeRange=[indicatorOfUnitOfTimeRange:s] timeRangeIndicator=[timeRangeIndicator] P1=[P1] P2=[P2]"; +write "x.grib"; +set stepUnits="m"; +set step=225; +print "set stepUnits=m; set step=225;"; +print "stepRange=[stepRange] step=[step] startStep=[startStep] endStep=[endStep] stepUnits=[stepUnits:s]"; +print "indicatorOfUnitOfTimeRange=[indicatorOfUnitOfTimeRange:s] timeRangeIndicator=[timeRangeIndicator] P1=[P1] P2=[P2]"; +set step=240; +print "set step=240;"; +set stepUnits="h"; +print "set stepUnits=h;"; +print "stepRange=[stepRange] step=[step] startStep=[startStep] endStep=[endStep] stepUnits=[stepUnits:s]"; +print "indicatorOfUnitOfTimeRange=[indicatorOfUnitOfTimeRange:s] timeRangeIndicator=[timeRangeIndicator] P1=[P1] P2=[P2]"; +set mytimeRangeIndicator=timeRangeIndicator; +set step=275; +print "set set step=275;"; +print "stepRange=[stepRange] step=[step] startStep=[startStep] endStep=[endStep] stepUnits=[stepUnits:s]"; +print "indicatorOfUnitOfTimeRange=[indicatorOfUnitOfTimeRange:s] timeRangeIndicator=[timeRangeIndicator] P1=[P1] P2=[P2]"; +set timeRangeIndicator=mytimeRangeIndicator; + + +print ""; +set stepUnits="h"; +set indicatorOfUnitOfTimeRange="h"; +set step=528; +print "stepRange=[stepRange] step=[step] startStep=[startStep] endStep=[endStep] stepUnits=[stepUnits:s]"; +print "indicatorOfUnitOfTimeRange=[indicatorOfUnitOfTimeRange:s] timeRangeIndicator=[timeRangeIndicator] P1=[P1] P2=[P2]"; +set startStep=528; +print "stepRange=[stepRange] step=[step] startStep=[startStep] endStep=[endStep] stepUnits=[stepUnits:s]"; +print "indicatorOfUnitOfTimeRange=[indicatorOfUnitOfTimeRange:s] timeRangeIndicator=[timeRangeIndicator] P1=[P1] P2=[P2]"; +set endStep=528; +print "stepRange=[stepRange] step=[step] startStep=[startStep] endStep=[endStep] stepUnits=[stepUnits:s]"; +print "indicatorOfUnitOfTimeRange=[indicatorOfUnitOfTimeRange:s] timeRangeIndicator=[timeRangeIndicator] P1=[P1] P2=[P2]"; +set stepRange="528"; +print "stepRange=[stepRange] step=[step] startStep=[startStep] endStep=[endStep] stepUnits=[stepUnits:s]"; +print "indicatorOfUnitOfTimeRange=[indicatorOfUnitOfTimeRange:s] timeRangeIndicator=[timeRangeIndicator] P1=[P1] P2=[P2]"; +print ""; +set stepUnits="s"; +print "stepRange=[stepRange] step=[step] startStep=[startStep] endStep=[endStep] stepUnits=[stepUnits:s]"; +print "indicatorOfUnitOfTimeRange=[indicatorOfUnitOfTimeRange:s] timeRangeIndicator=[timeRangeIndicator] P1=[P1] P2=[P2]"; +set stepUnits="h"; +print "stepRange=[stepRange] step=[step] startStep=[startStep] endStep=[endStep] stepUnits=[stepUnits:s]"; +print "indicatorOfUnitOfTimeRange=[indicatorOfUnitOfTimeRange:s] timeRangeIndicator=[timeRangeIndicator] P1=[P1] P2=[P2]"; +set stepUnits="D"; +print "stepRange=[stepRange] step=[step] startStep=[startStep] endStep=[endStep] stepUnits=[stepUnits:s]"; +print "indicatorOfUnitOfTimeRange=[indicatorOfUnitOfTimeRange:s] timeRangeIndicator=[timeRangeIndicator] P1=[P1] P2=[P2]"; + +print ""; +set stepType="diff"; +set stepUnits="h"; +print "--- stepType=[stepType] ---"; +set stepRange="72-528"; +print "stepRange=[stepRange] step=[step] startStep=[startStep] endStep=[endStep] stepUnits=[stepUnits:s]"; +print "indicatorOfUnitOfTimeRange=[indicatorOfUnitOfTimeRange:s] timeRangeIndicator=[timeRangeIndicator] P1=[P1] P2=[P2]"; +write "x.grib"; +set startStep=72; +set endStep=528; +print "stepRange=[stepRange] step=[step] startStep=[startStep] endStep=[endStep] stepUnits=[stepUnits:s]"; +print "indicatorOfUnitOfTimeRange=[indicatorOfUnitOfTimeRange:s] timeRangeIndicator=[timeRangeIndicator] P1=[P1] P2=[P2]"; +print ""; +set stepUnits="s"; +print "stepRange=[stepRange] step=[step] startStep=[startStep] endStep=[endStep] stepUnits=[stepUnits:s]"; +print "indicatorOfUnitOfTimeRange=[indicatorOfUnitOfTimeRange:s] timeRangeIndicator=[timeRangeIndicator] P1=[P1] P2=[P2]"; +set stepUnits="h"; +print "stepRange=[stepRange] step=[step] startStep=[startStep] endStep=[endStep] stepUnits=[stepUnits:s]"; +print "indicatorOfUnitOfTimeRange=[indicatorOfUnitOfTimeRange:s] timeRangeIndicator=[timeRangeIndicator] P1=[P1] P2=[P2]"; +set stepUnits="D"; +print "stepRange=[stepRange] step=[step] startStep=[startStep] endStep=[endStep] stepUnits=[stepUnits:s]"; +print "indicatorOfUnitOfTimeRange=[indicatorOfUnitOfTimeRange:s] timeRangeIndicator=[timeRangeIndicator] P1=[P1] P2=[P2]"; + +print ""; +set timeRangeIndicator=10; +set stepUnits="h"; +set step=65700; +print "--- stepType=[stepType] ---"; +print "stepRange=[stepRange] step=[step] startStep=[startStep] endStep=[endStep] stepUnits=[stepUnits:s]"; +print "indicatorOfUnitOfTimeRange=[indicatorOfUnitOfTimeRange:s] timeRangeIndicator=[timeRangeIndicator] P1=[P1] P2=[P2]"; +set stepUnits="m"; +print "stepRange=[stepRange] step=[step] startStep=[startStep] endStep=[endStep] stepUnits=[stepUnits:s]"; +print "indicatorOfUnitOfTimeRange=[indicatorOfUnitOfTimeRange:s] timeRangeIndicator=[timeRangeIndicator] P1=[P1] P2=[P2]"; +set stepUnits="s"; +print "stepRange=[stepRange] step=[step] startStep=[startStep] endStep=[endStep] stepUnits=[stepUnits:s]"; +print "indicatorOfUnitOfTimeRange=[indicatorOfUnitOfTimeRange:s] timeRangeIndicator=[timeRangeIndicator] P1=[P1] P2=[P2]"; +print ""; + diff --git a/data/step_grib1.log b/data/step_grib1.log new file mode 100644 index 000000000..919b737ea --- /dev/null +++ b/data/step_grib1.log @@ -0,0 +1,75 @@ +--- stepType=instant --- +stepRange=21600 step=21600 startStep=21600 endStep=21600 stepUnits=s +indicatorOfUnitOfTimeRange=h timeRangeIndicator=0 P1=6 P2=0 +stepRange=21600 step=21600 startStep=21600 endStep=21600 stepUnits=s +indicatorOfUnitOfTimeRange=h timeRangeIndicator=0 P1=6 P2=0 +stepRange=21600 step=21600 startStep=21600 endStep=21600 stepUnits=s +indicatorOfUnitOfTimeRange=h timeRangeIndicator=0 P1=6 P2=0 +stepRange=21600 step=21600 startStep=21600 endStep=21600 stepUnits=s +indicatorOfUnitOfTimeRange=h timeRangeIndicator=0 P1=6 P2=0 +stepRange=16200 step=16200 startStep=16200 endStep=16200 stepUnits=s +indicatorOfUnitOfTimeRange=15m timeRangeIndicator=0 P1=18 P2=0 + +stepRange=28800 step=28800 startStep=28800 endStep=28800 stepUnits=m +indicatorOfUnitOfTimeRange=3h timeRangeIndicator=0 P1=160 P2=0 +stepRange=28800 step=28800 startStep=28800 endStep=28800 stepUnits=m +indicatorOfUnitOfTimeRange=3h timeRangeIndicator=0 P1=160 P2=0 +stepRange=28800 step=28800 startStep=28800 endStep=28800 stepUnits=m +indicatorOfUnitOfTimeRange=3h timeRangeIndicator=0 P1=160 P2=0 +stepRange=28800 step=28800 startStep=28800 endStep=28800 stepUnits=m +indicatorOfUnitOfTimeRange=3h timeRangeIndicator=0 P1=160 P2=0 + +stepRange=1728000 step=1728000 startStep=1728000 endStep=1728000 stepUnits=s +indicatorOfUnitOfTimeRange=3h timeRangeIndicator=0 P1=160 P2=0 +stepRange=480 step=480 startStep=480 endStep=480 stepUnits=h +indicatorOfUnitOfTimeRange=3h timeRangeIndicator=0 P1=160 P2=0 +stepRange=20 step=20 startStep=20 endStep=20 stepUnits=D +indicatorOfUnitOfTimeRange=3h timeRangeIndicator=0 P1=160 P2=0 +set stepUnits=m; set step=225; +stepRange=225 step=225 startStep=225 endStep=225 stepUnits=m +indicatorOfUnitOfTimeRange=m timeRangeIndicator=0 P1=225 P2=0 +set step=240; +set stepUnits=h; +stepRange=4 step=4 startStep=4 endStep=4 stepUnits=h +indicatorOfUnitOfTimeRange=h timeRangeIndicator=0 P1=4 P2=0 +set set step=275; +stepRange=275 step=275 startStep=275 endStep=275 stepUnits=h +indicatorOfUnitOfTimeRange=h timeRangeIndicator=10 P1=1 P2=19 + +stepRange=528 step=528 startStep=528 endStep=528 stepUnits=h +indicatorOfUnitOfTimeRange=3h timeRangeIndicator=0 P1=176 P2=0 +stepRange=528 step=528 startStep=528 endStep=528 stepUnits=h +indicatorOfUnitOfTimeRange=3h timeRangeIndicator=0 P1=176 P2=0 +stepRange=528 step=528 startStep=528 endStep=528 stepUnits=h +indicatorOfUnitOfTimeRange=3h timeRangeIndicator=0 P1=176 P2=0 +stepRange=528 step=528 startStep=528 endStep=528 stepUnits=h +indicatorOfUnitOfTimeRange=3h timeRangeIndicator=0 P1=176 P2=0 + +stepRange=1900800 step=1900800 startStep=1900800 endStep=1900800 stepUnits=s +indicatorOfUnitOfTimeRange=3h timeRangeIndicator=0 P1=176 P2=0 +stepRange=528 step=528 startStep=528 endStep=528 stepUnits=h +indicatorOfUnitOfTimeRange=3h timeRangeIndicator=0 P1=176 P2=0 +stepRange=22 step=22 startStep=22 endStep=22 stepUnits=D +indicatorOfUnitOfTimeRange=3h timeRangeIndicator=0 P1=176 P2=0 + +--- stepType=diff --- +stepRange=72-528 step=528 startStep=72 endStep=528 stepUnits=h +indicatorOfUnitOfTimeRange=3h timeRangeIndicator=5 P1=24 P2=176 +stepRange=72-528 step=528 startStep=72 endStep=528 stepUnits=h +indicatorOfUnitOfTimeRange=3h timeRangeIndicator=5 P1=24 P2=176 + +stepRange=259200-1900800 step=1900800 startStep=259200 endStep=1900800 stepUnits=s +indicatorOfUnitOfTimeRange=3h timeRangeIndicator=5 P1=24 P2=176 +stepRange=72-528 step=528 startStep=72 endStep=528 stepUnits=h +indicatorOfUnitOfTimeRange=3h timeRangeIndicator=5 P1=24 P2=176 +stepRange=3-22 step=22 startStep=3 endStep=22 stepUnits=D +indicatorOfUnitOfTimeRange=3h timeRangeIndicator=5 P1=24 P2=176 + +--- stepType=instant --- +stepRange=65700 step=65700 startStep=65700 endStep=65700 stepUnits=h +indicatorOfUnitOfTimeRange=3h timeRangeIndicator=10 P1=85 P2=140 +stepRange=3942000 step=3942000 startStep=3942000 endStep=3942000 stepUnits=m +indicatorOfUnitOfTimeRange=3h timeRangeIndicator=10 P1=85 P2=140 +stepRange=236520000 step=236520000 startStep=236520000 endStep=236520000 stepUnits=s +indicatorOfUnitOfTimeRange=3h timeRangeIndicator=10 P1=85 P2=140 + diff --git a/data/typeOfProcessedData.ok b/data/typeOfProcessedData.ok new file mode 100644 index 000000000..20bc63a81 --- /dev/null +++ b/data/typeOfProcessedData.ok @@ -0,0 +1,42 @@ +missing 4g +missing 4g +missing 4g +missing 4g +missing 4g +missing 4g +fc fc +fc fc +fc fc +fc fc +fc fc +fc fc +an an +an an +an an +an an +an an +an an +an an +an an +an an +an an +an an +an an +pf pf +pf pf +pf pf +pf pf +pf pf +pf pf +cf cf +cf cf +cf cf +cf cf +cf cf +cf cf +ep ep +ep ep +ep ep +ep ep +ep ep +ep ep From 408c4195171d0fcdd44b5d8d1d6cc69c13668366 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 26 Mar 2013 15:37:22 +0000 Subject: [PATCH 4/7] Added rule for libtool extension .la --- html/Makefile.am | 0 html/annotated.html | 0 html/clone_8f90-example.html | 101 ++ html/copy__message_8f90-example.html | 76 + html/doxygen.css | 322 ++++ html/doxygen.png | Bin 0 -> 1281 bytes html/examples.html | 58 + html/files.html | 30 + html/get_8c-example.html | 128 ++ html/get_8f90-example.html | 134 ++ html/get__data_8f90-example.html | 90 + html/get__fortran_8_f-example.html | 151 ++ html/get__pl_8f90-example.html | 70 + html/get__pv_8f90-example.html | 70 + html/globals.html | 360 ++++ html/globals_defs.html | 162 ++ html/globals_func.html | 210 +++ html/globals_type.html | 73 + html/grib__api_8h.html | 1602 +++++++++++++++++ html/grib_compare.html | 281 +++ html/grib_convert.html | 59 + html/grib_copy.html | 82 + html/grib_debug.html | 649 +++++++ html/grib_dump.html | 242 +++ html/grib_dump_examples.html | 21 + html/grib_examples.html | 34 + html/grib_filter.html | 124 ++ html/grib_get.html | 80 + html/grib_get_data.html | 67 + html/grib_keys.html | 153 ++ html/grib_ls.html | 95 + html/grib_set.html | 103 ++ html/group__context.html | 1016 +++++++++++ html/group__get__set.html | 938 ++++++++++ html/group__grib__handle.html | 625 +++++++ html/group__handling__coded__messages.html | 124 ++ html/group__iterators.html | 559 ++++++ html/group__keys__iterator.html | 364 ++++ html/index.html | 64 + html/installation.html | 37 + ...rfacegrib__api_1_1grib__find__nearest.html | 0 html/interfacegrib__api_1_1grib__get.html | 0 ...interfacegrib__api_1_1grib__get__data.html | 0 ...erfacegrib__api_1_1grib__get__element.html | 0 html/interfacegrib__api_1_1grib__set.html | 0 html/iterator_8c-example.html | 103 ++ html/iterator__fortran_8_f-example.html | 103 ++ html/keys.html | 88 + html/keys__iterator_8c-example.html | 115 ++ html/keys__iterator_8f90-example.html | 86 + html/keys__iterator__fortran_8_f-example.html | 99 + html/modules.html | 30 + html/multi_8c-example.html | 85 + html/multi_8f90-example.html | 72 + html/multi__fortran_8_f-example.html | 99 + html/namespacegrib__api.html | 0 html/namespacemembers.html | 0 html/namespacemembers_func.html | 0 html/namespaces.html | 0 html/nearest_8c-example.html | 107 ++ html/nearest_8f90-example.html | 104 ++ html/pages.html | 59 + html/precision_8c-example.html | 138 ++ html/precision_8f90-example.html | 119 ++ html/precision__fortran_8_f-example.html | 118 ++ html/print__data_8c-example.html | 94 + html/print__data_8f90-example.html | 88 + html/print__data__fortran_8_f-example.html | 101 ++ html/set_8c-example.html | 100 + html/set_8f90-example.html | 107 ++ html/set__bitmap_8f90-example.html | 102 ++ html/set__fortran_8_f-example.html | 89 + html/set__missing_8f90-example.html | 69 + html/set__pv_8f90-example.html | 96 + html/tab_b.gif | Bin 0 -> 35 bytes html/tab_l.gif | Bin 0 -> 706 bytes html/tab_r.gif | Bin 0 -> 2585 bytes html/tabs.css | 102 ++ html/tools.html | 26 + 79 files changed, 11853 insertions(+) create mode 100644 html/Makefile.am create mode 100644 html/annotated.html create mode 100644 html/clone_8f90-example.html create mode 100644 html/copy__message_8f90-example.html create mode 100644 html/doxygen.css create mode 100644 html/doxygen.png create mode 100644 html/examples.html create mode 100644 html/files.html create mode 100644 html/get_8c-example.html create mode 100644 html/get_8f90-example.html create mode 100644 html/get__data_8f90-example.html create mode 100644 html/get__fortran_8_f-example.html create mode 100644 html/get__pl_8f90-example.html create mode 100644 html/get__pv_8f90-example.html create mode 100644 html/globals.html create mode 100644 html/globals_defs.html create mode 100644 html/globals_func.html create mode 100644 html/globals_type.html create mode 100644 html/grib__api_8h.html create mode 100644 html/grib_compare.html create mode 100644 html/grib_convert.html create mode 100644 html/grib_copy.html create mode 100644 html/grib_debug.html create mode 100644 html/grib_dump.html create mode 100644 html/grib_dump_examples.html create mode 100644 html/grib_examples.html create mode 100644 html/grib_filter.html create mode 100644 html/grib_get.html create mode 100644 html/grib_get_data.html create mode 100644 html/grib_keys.html create mode 100644 html/grib_ls.html create mode 100644 html/grib_set.html create mode 100644 html/group__context.html create mode 100644 html/group__get__set.html create mode 100644 html/group__grib__handle.html create mode 100644 html/group__handling__coded__messages.html create mode 100644 html/group__iterators.html create mode 100644 html/group__keys__iterator.html create mode 100644 html/index.html create mode 100644 html/installation.html create mode 100644 html/interfacegrib__api_1_1grib__find__nearest.html create mode 100644 html/interfacegrib__api_1_1grib__get.html create mode 100644 html/interfacegrib__api_1_1grib__get__data.html create mode 100644 html/interfacegrib__api_1_1grib__get__element.html create mode 100644 html/interfacegrib__api_1_1grib__set.html create mode 100644 html/iterator_8c-example.html create mode 100644 html/iterator__fortran_8_f-example.html create mode 100644 html/keys.html create mode 100644 html/keys__iterator_8c-example.html create mode 100644 html/keys__iterator_8f90-example.html create mode 100644 html/keys__iterator__fortran_8_f-example.html create mode 100644 html/modules.html create mode 100644 html/multi_8c-example.html create mode 100644 html/multi_8f90-example.html create mode 100644 html/multi__fortran_8_f-example.html create mode 100644 html/namespacegrib__api.html create mode 100644 html/namespacemembers.html create mode 100644 html/namespacemembers_func.html create mode 100644 html/namespaces.html create mode 100644 html/nearest_8c-example.html create mode 100644 html/nearest_8f90-example.html create mode 100644 html/pages.html create mode 100644 html/precision_8c-example.html create mode 100644 html/precision_8f90-example.html create mode 100644 html/precision__fortran_8_f-example.html create mode 100644 html/print__data_8c-example.html create mode 100644 html/print__data_8f90-example.html create mode 100644 html/print__data__fortran_8_f-example.html create mode 100644 html/set_8c-example.html create mode 100644 html/set_8f90-example.html create mode 100644 html/set__bitmap_8f90-example.html create mode 100644 html/set__fortran_8_f-example.html create mode 100644 html/set__missing_8f90-example.html create mode 100644 html/set__pv_8f90-example.html create mode 100644 html/tab_b.gif create mode 100644 html/tab_l.gif create mode 100644 html/tab_r.gif create mode 100644 html/tabs.css create mode 100644 html/tools.html diff --git a/html/Makefile.am b/html/Makefile.am new file mode 100644 index 000000000..e69de29bb diff --git a/html/annotated.html b/html/annotated.html new file mode 100644 index 000000000..e69de29bb diff --git a/html/clone_8f90-example.html b/html/clone_8f90-example.html new file mode 100644 index 000000000..0ab81ef05 --- /dev/null +++ b/html/clone_8f90-example.html @@ -0,0 +1,101 @@ + + +grib_api: clone.f90 + + + + + +

clone.f90

How to clone a message.

+

00001 ! Copyright 2005-2012 ECMWF
+00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
+00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+00004 ! 
+00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+00007 !
+00008 !
+00009 !  Description: how to create a new GRIB message by cloning 
+00010 !               an existing message.
+00011 !
+00012 !
+00013 !  Author: Anne Fouilloux
+00014 !
+00015 !
+00016 program clone
+00017   use grib_api
+00018   implicit none
+00019   integer                                       :: err,i,iret
+00020   integer                                       :: nx, ny
+00021   integer                                       :: infile,outfile
+00022   integer                                       :: igrib_in
+00023   integer                                       :: igrib_out
+00024   character(len=2)                              :: step
+00025   double precision, dimension(:,:), allocatable :: field2D
+00026 
+00027   
+00028   call grib_open_file(infile,'../../data/constant_field.grib1','r')
+00029   call grib_open_file(outfile,'out.grib1','w')
+00030 
+00031   !     a new grib message is loaded from file
+00032   !     igrib is the grib id to be used in subsequent calls
+00033   call grib_new_from_file(infile,igrib_in)
+00034 
+00035   call grib_get(igrib_in,"numberOfPointsAlongAParallel", nx)
+00036   
+00037   call grib_get(igrib_in,"numberOfPointsAlongAMeridian",ny)
+00038 
+00039   allocate(field2D(nx,ny),stat=err)
+00040 
+00041   if (err .ne. 0) then
+00042      print*, 'Failed to allocate ', nx*ny, ' values'
+00043      STOP
+00044   end if
+00045   ! clone the constant field to create 4 new GRIB messages
+00046   do i=0,18,6
+00047     call grib_clone(igrib_in, igrib_out)
+00048     write(step,'(i2)') i
+00049 ! Careful: stepRange is a string (could be 0-6, 12-24, etc.)
+00050 ! use adjustl to remove blank from the left.
+00051     call grib_set(igrib_out,'stepRange',adjustl(step))
+00052 
+00053     call generate_field(field2D)
+00054 
+00055 ! use pack to create 1D values
+00056     call grib_set(igrib_out,'values',pack(field2D, mask=.true.))
+00057  
+00058   !     write cloned messages to a file
+00059     call grib_write(igrib_out,outfile)
+00060     call grib_release(igrib_out)
+00061   end do
+00062 
+00063   call grib_release(igrib_in)
+00064 
+00065   call grib_close_file(infile)
+00066 
+00067   call grib_close_file(outfile)
+00068   deallocate(field2D)
+00069 
+00070 contains
+00071 !======================================
+00072 subroutine generate_field(gfield2D)
+00073  double precision, dimension(:,:) :: gfield2D
+00074 
+00075  call random_number(gfield2D)
+00076 end subroutine generate_field
+00077 !======================================
+00078 
+00079 end program clone
+

Generated on Tue Sep 22 15:18:21 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/copy__message_8f90-example.html b/html/copy__message_8f90-example.html new file mode 100644 index 000000000..9372b4fc0 --- /dev/null +++ b/html/copy__message_8f90-example.html @@ -0,0 +1,76 @@ + + +grib_api: copy_message.f90 + + + + + +

copy_message.f90

How to copy a message in memory and create a new message.

+

00001 ! Copyright 2005-2012 ECMWF
+00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
+00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+00004 ! 
+00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+00007 !
+00008 !
+00009 !  Description: how to copy a message in memory
+00010 !
+00011 !
+00012 !  Author: Anne Fouilloux
+00013 !
+00014 !
+00015 program copy
+00016   use grib_api
+00017   implicit none
+00018   integer                            :: err, centre
+00019   integer(kind=kindOfSize)           :: byte_size
+00020   integer                            :: infile,outfile
+00021   integer                            :: igrib_in,iret
+00022   integer                            :: igrib_out
+00023   character(len=1), dimension(:), allocatable :: message
+00024 
+00025   
+00026   call grib_open_file(infile,'../../data/constant_field.grib1','r')
+00027   call grib_open_file(outfile,'out.grib1','w')
+00028 
+00029   !     a new grib message is loaded from file
+00030   !     igrib is the grib id to be used in subsequent calls
+00031   call grib_new_from_file(infile,igrib_in)
+00032 
+00033   call grib_get_message_size(igrib_in, byte_size)
+00034   allocate(message(byte_size), stat=err)
+00035 
+00036   call grib_copy_message(igrib_in,message)
+00037 
+00038   call grib_new_from_message(igrib_out, message)
+00039 
+00040   centre=80
+00041   call grib_set(igrib_out,"centre",centre)
+00042 
+00043 !  write messages to a file
+00044   call grib_write(igrib_out,outfile)
+00045 
+00046   call grib_release(igrib_out)
+00047 
+00048   call grib_release(igrib_in)
+00049 
+00050   call grib_close_file(infile)
+00051   call grib_close_file(outfile)
+00052   deallocate(message)
+00053 
+00054 end program copy
+

Generated on Tue Sep 22 15:18:21 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/doxygen.css b/html/doxygen.css new file mode 100644 index 000000000..8402fd217 --- /dev/null +++ b/html/doxygen.css @@ -0,0 +1,322 @@ + +CAPTION { font-weight: bold } +DIV.qindex { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.nav { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.navtab { + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} +TD.navtab { + font-size: 70%; +} +A.qindex { + text-decoration: none; + font-weight: bold; + color: #1A419D; +} +A.qindex:visited { + text-decoration: none; + font-weight: bold; + color: #1A419D +} +A.qindexHL { + text-decoration: none; + font-weight: bold; + background-color: #6666cc; + color: #ffffff; + border: 1px double #9295C2; +} +A.el { text-decoration: none; font-weight: bold } +A.elRef { font-weight: bold } +A.code:link { text-decoration: none; font-weight: normal; color: #0000FF} +A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF} +A.codeRef:link { font-weight: normal; color: #0000FF} +A.codeRef:visited { font-weight: normal; color: #0000FF} +DL.el { margin-left: -1cm } +.fragment { + font-family: monospace, fixed; + font-size: 95%; +} +PRE.fragment { + border: 1px solid #CCCCCC; + background-color: #f5f5f5; + margin-top: 4px; + margin-bottom: 4px; + margin-left: 2px; + margin-right: 8px; + padding-left: 6px; + padding-right: 6px; + padding-top: 4px; + padding-bottom: 4px; +} +DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px } + +DIV.groupHeader { + margin-left: 16px; + margin-top: 12px; + margin-bottom: 6px; + font-weight: bold; +} +DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% } + +TD.indexkey { + background-color: #e8eef2; + font-weight: bold; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TD.indexvalue { + background-color: #e8eef2; + font-style: italic; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TR.memlist { + background-color: #f0f0f0; +} +P.formulaDsp { text-align: center; } +IMG.formulaDsp { } +IMG.formulaInl { vertical-align: middle; } +SPAN.keyword { color: #008000 } +SPAN.keywordtype { color: #604020 } +SPAN.keywordflow { color: #e08000 } +SPAN.comment { color: #800000 } +SPAN.preprocessor { color: #806020 } +SPAN.stringliteral { color: #002080 } +SPAN.charliteral { color: #008080 } +.mdescLeft { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.mdescRight { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.memItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplParams { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + color: #606060; + background-color: #FAFAFA; + font-size: 80%; +} +.search { color: #003399; + font-weight: bold; +} +FORM.search { + margin-bottom: 0px; + margin-top: 0px; +} +INPUT.search { font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +TD.tiny { font-size: 75%; +} + +.dirtab { padding: 4px; + border-collapse: collapse; + border: 1px solid #84b0c7; +} +TH.dirtab { background: #e8eef2; + font-weight: bold; +} +HR { height: 1px; + border: none; + border-top: 1px solid black; +} + +/* Style for detailed member documentation */ +.memtemplate { + font-size: 80%; + color: #606060; + font-weight: normal; +} +.memnav { + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} +.memitem { + padding: 4px; + background-color: #eef3f5; + border-width: 1px; + border-style: solid; + border-color: #dedeee; + -moz-border-radius: 8px 8px 8px 8px; +} +.memname { + white-space: nowrap; + font-weight: bold; +} +.memdoc{ + padding-left: 10px; +} +.memproto { + background-color: #d5e1e8; + width: 100%; + border-width: 1px; + border-style: solid; + border-color: #84b0c7; + font-weight: bold; + -moz-border-radius: 8px 8px 8px 8px; +} +.paramkey { + text-align: right; +} +.paramtype { + white-space: nowrap; +} +.paramname { + color: #602020; + font-style: italic; + white-space: nowrap; +} +/* End Styling for detailed member documentation */ + +/* for the tree view */ +.ftvtree { + font-family: sans-serif; + margin:0.5em; +} +.directory { font-size: 9pt; font-weight: bold; } +.directory h3 { margin: 0px; margin-top: 1em; font-size: 11pt; } +.directory > h3 { margin-top: 0; } +.directory p { margin: 0px; white-space: nowrap; } +.directory div { display: none; margin: 0px; } +.directory img { vertical-align: -30%; } diff --git a/html/doxygen.png b/html/doxygen.png new file mode 100644 index 0000000000000000000000000000000000000000..f0a274bbaffdd67f6d784c894d9cf28729db0e14 GIT binary patch literal 1281 zcmaJ>ZA?>F7(Vx-ms?uoS`b@hdRtpo6o^%HU>M$hfGrBvQnk$LE?p^P!kn&ikhyq! zX~V@&tPF5Qt@V?oTL96Bi%aRiwbe1)9DWQI#?)=HxS7QSw`J`5fAJ*eJbB;uNuKA& zdERDo*{Y<(If(#(B$Lr#;nB(8Y#ia=ZCeW?JfPLuQY`=@cW$k}Rivq|vbxGrRq1Tl9;+(gNt?}UtVKM2`T5t1jLzuL@0UIs`S#vlhl4)^ zLgSYrPj@$+`|j?eSbXTmiHGkWxV8V}BzNR?pl9k_s4pDu9vd5a_UzZEPk)}Ad{AV_ zzddrjrh4=Imr`E06;LY{)YYt?o}L~H@7C}F^WB!Ra=v`Q0bj{>5&$66CWF>mf6vjP z2N>RRY6ZYa=K`76>+|_)Xdwko+7wv}7cN|btOhWb(*{sta~6b?S8Omrxw}!4`NhGr zZVpNqpu1@BE`QGWNTpEpcJVW5izu~2B^GlM?1(OPg)zwW;QcP@Ltcclm>XbJL9C|j z=9!2?ua=uIlf0%AndzHsRC}IyTL$EhAee(fdKB`?27KeS^2M8M_7b~PiCFO&r5LC7 z7gl1*a<8;SjNaw#h=843_AV9iZbWQOAp5YOC^&_F*9K0> zB|6%IDb?aM#3viTxkLU4aXg&@+CkNTOnQ1iMP*^?b|^lJy$4C)Zk4isV!|RZ*XhXh zw8q3$=*0LeGC!XI_Wc?dkT~3+*Gu%%yIqP+Wr3H$=&ROMQU6q}Ag^P~>c5vAEO;a- z_dK-3PPeKar%)6$j~vI2#*-YH!1h6HYVtwCX5_wM`iF#UKz&&@9Oo5w3%XGYrX zW>dY~)SG-((Yim%`InwgTvyRC?e=Wh^8KCao!R6Eg&TpVWUY1sN~4G}V?nFnEGo-; zHZ_$eW9-GnC%^WS9b z@p;-$oH#MtC0v>Q$HX%4^JdFdO$0cbv-W)Q TtK}Eh@>>I#ipmV1>S*>q-hkC} literal 0 HcmV?d00001 diff --git a/html/examples.html b/html/examples.html new file mode 100644 index 000000000..9452426a1 --- /dev/null +++ b/html/examples.html @@ -0,0 +1,58 @@ + + +grib_api: Examples + + + + + +

grib_api Examples

Here is a list of all examples: +
Generated on Tue Sep 22 15:18:22 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/files.html b/html/files.html new file mode 100644 index 000000000..ab0eaf2bf --- /dev/null +++ b/html/files.html @@ -0,0 +1,30 @@ + + +grib_api: File Index + + + + + +
+ +
+

grib_api File List

Here is a list of all documented files with brief descriptions: + +
grib_api.hCopyright 2005-2012 ECMWF
+
Generated on Tue Sep 22 15:18:22 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/get_8c-example.html b/html/get_8c-example.html new file mode 100644 index 000000000..78753a05c --- /dev/null +++ b/html/get_8c-example.html @@ -0,0 +1,128 @@ + + +grib_api: get.c + + + + + +

get.c

get.c How to get values through the key names.

+

00001 
+00010 /*
+00011  * C Implementation: get
+00012  *
+00013  * Description: how to get values using keys.
+00014  *
+00015  * Author: Enrico Fucile
+00016  *
+00017  *
+00018  */
+00019 #include <stdio.h>
+00020 #include <stdlib.h>
+00021 
+00022 #include "grib_api.h"
+00023 
+00024 int main(int argc, char** argv) {
+00025   int err = 0;
+00026   double *values = NULL;
+00027   size_t values_len= 0;
+00028 
+00029   size_t i = 0;
+00030 
+00031   double latitudeOfFirstGridPointInDegrees;
+00032   double longitudeOfFirstGridPointInDegrees;
+00033   double latitudeOfLastGridPointInDegrees;
+00034   double longitudeOfLastGridPointInDegrees;
+00035 
+00036   double jDirectionIncrementInDegrees;
+00037   double iDirectionIncrementInDegrees;
+00038 
+00039   long numberOfPointsAlongAParallel;
+00040   long numberOfPointsAlongAMeridian;
+00041 
+00042   double average = 0;
+00043 
+00044   FILE* in = NULL;
+00045   char* filename = "../../data/regular_latlon_surface.grib1";
+00046   grib_handle *h = NULL;
+00047 
+00048   in = fopen(filename,"r");
+00049   if(!in) {
+00050     printf("ERROR: unable to open file %s\n",filename);
+00051     return 1;
+00052   }
+00053 
+00054   /* create new handle from a message in a file*/
+00055   h = grib_handle_new_from_file(0,in,&err);
+00056   if (h == NULL) {
+00057     printf("Error: unable to create handle from file %s\n",filename);
+00058   }
+00059 
+00060   /* get as a long*/
+00061   GRIB_CHECK(grib_get_long(h,"numberOfPointsAlongAParallel",&numberOfPointsAlongAParallel),0);
+00062   printf("numberOfPointsAlongAParallel=%ld\n",numberOfPointsAlongAParallel);
+00063 
+00064   /* get as a long*/
+00065   GRIB_CHECK(grib_get_long(h,"numberOfPointsAlongAMeridian",&numberOfPointsAlongAMeridian),0);
+00066   printf("numberOfPointsAlongAMeridian=%ld\n",numberOfPointsAlongAMeridian);
+00067 
+00068   /* get as a double*/
+00069   GRIB_CHECK(grib_get_double(h,"latitudeOfFirstGridPointInDegrees",&latitudeOfFirstGridPointInDegrees),0);
+00070   printf("latitudeOfFirstGridPointInDegrees=%g\n",latitudeOfFirstGridPointInDegrees);
+00071 
+00072   /* get as a double*/
+00073   GRIB_CHECK(grib_get_double(h,"longitudeOfFirstGridPointInDegrees",&longitudeOfFirstGridPointInDegrees),0);
+00074   printf("longitudeOfFirstGridPointInDegrees=%g\n",longitudeOfFirstGridPointInDegrees);
+00075 
+00076   /* get as a double*/
+00077   GRIB_CHECK(grib_get_double(h,"latitudeOfLastGridPointInDegrees",&latitudeOfLastGridPointInDegrees),0);
+00078   printf("latitudeOfLastGridPointInDegrees=%g\n",latitudeOfLastGridPointInDegrees);
+00079 
+00080   /* get as a double*/
+00081   GRIB_CHECK(grib_get_double(h,"longitudeOfLastGridPointInDegrees",&longitudeOfLastGridPointInDegrees),0);
+00082   printf("longitudeOfLastGridPointInDegrees=%g\n",longitudeOfLastGridPointInDegrees);
+00083 
+00084   /* get as a double*/
+00085   GRIB_CHECK(grib_get_double(h,"jDirectionIncrementInDegrees",&jDirectionIncrementInDegrees),0);
+00086   printf("jDirectionIncrementInDegrees=%g\n",jDirectionIncrementInDegrees);
+00087 
+00088   /* get as a double*/
+00089   GRIB_CHECK(grib_get_double(h,"iDirectionIncrementInDegrees",&iDirectionIncrementInDegrees),0);
+00090   printf("iDirectionIncrementInDegrees=%g\n",iDirectionIncrementInDegrees);
+00091 
+00092   /* get the size of the values array*/
+00093   GRIB_CHECK(grib_get_size(h,"values",&values_len),0);
+00094 
+00095   values = malloc(values_len*sizeof(double));
+00096 
+00097   /* get data values*/
+00098   GRIB_CHECK(grib_get_double_array(h,"values",values,&values_len),0);
+00099 
+00100   average = 0;
+00101   for(i = 0; i < values_len; i++)
+00102     average += values[i];
+00103 
+00104   average /=(double)values_len;
+00105 
+00106   free(values);
+00107 
+00108   printf("There are %d values, average is %g\n",(int)values_len,average);
+00109 
+00110   grib_handle_delete(h);
+00111 
+00112   fclose(in);
+00113   return 0;
+00114 }
+

Generated on Tue Sep 22 15:18:21 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/get_8f90-example.html b/html/get_8f90-example.html new file mode 100644 index 000000000..51869bf6a --- /dev/null +++ b/html/get_8f90-example.html @@ -0,0 +1,134 @@ + + +grib_api: get.f90 + + + + + +

get.f90

How to get values through the key names.

+

00001 ! Copyright 2005-2012 ECMWF
+00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
+00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+00004 ! 
+00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+00007 !
+00008 !
+00009 !  Description: how to get values using keys.
+00010 !
+00011 !  Author: Enrico Fucile 
+00012 !
+00013 !
+00014 program get
+00015   use grib_api
+00016   implicit none
+00017   
+00018   integer                            ::  ifile
+00019   integer                            ::  iret
+00020   integer                            ::  igrib
+00021   real                               ::  latitudeOfFirstPointInDegrees
+00022   real                               ::  longitudeOfFirstPointInDegrees
+00023   real                               ::  latitudeOfLastPointInDegrees
+00024   real                               ::  longitudeOfLastPointInDegrees
+00025   integer                            ::  numberOfPointsAlongAParallel
+00026   integer                            ::  numberOfPointsAlongAMeridian
+00027   real, dimension(:), allocatable    ::  values
+00028   integer                            ::  numberOfValues
+00029   real                               ::  average,min_val, max_val
+00030   integer                            ::  is_missing
+00031   
+00032   call grib_open_file(ifile, &
+00033        '../../data/reduced_latlon_surface.grib1','r')
+00034   
+00035   ! Loop on all the messages in a file.
+00036   
+00037   !     a new grib message is loaded from file
+00038   !     igrib is the grib id to be used in subsequent calls
+00039   call  grib_new_from_file(ifile,igrib, iret) 
+00040   
+00041   LOOP: DO WHILE (iret /= GRIB_END_OF_FILE)
+00042 
+00043      !check if the value of the key is MISSING
+00044      is_missing=0;
+00045      call grib_is_missing(igrib,'numberOfPointsAlongAParallel', &
+00046           is_missing);
+00047      if ( is_missing /= 1 ) then
+00048         !     get as a integer
+00049         call grib_get(igrib,'numberOfPointsAlongAParallel', &
+00050              numberOfPointsAlongAParallel) 
+00051         write(*,*) 'numberOfPointsAlongAParallel=', &
+00052              numberOfPointsAlongAParallel
+00053      else
+00054         write(*,*) 'numberOfPointsAlongAParallel is missing'
+00055      endif     
+00056      !     get as a integer
+00057      call grib_get(igrib,'numberOfPointsAlongAMeridian', &
+00058           numberOfPointsAlongAMeridian) 
+00059      write(*,*) 'numberOfPointsAlongAMeridian=', &
+00060           numberOfPointsAlongAMeridian
+00061      
+00062      !     get as a real
+00063      call grib_get(igrib, 'latitudeOfFirstGridPointInDegrees', &
+00064           latitudeOfFirstPointInDegrees) 
+00065      write(*,*) 'latitudeOfFirstGridPointInDegrees=', &
+00066           latitudeOfFirstPointInDegrees
+00067      
+00068      !     get as a real
+00069      call grib_get(igrib, 'longitudeOfFirstGridPointInDegrees', &
+00070           longitudeOfFirstPointInDegrees) 
+00071      write(*,*) 'longitudeOfFirstGridPointInDegrees=', &
+00072           longitudeOfFirstPointInDegrees
+00073      
+00074      !     get as a real
+00075      call grib_get(igrib, 'latitudeOfLastGridPointInDegrees', &
+00076           latitudeOfLastPointInDegrees) 
+00077      write(*,*) 'latitudeOfLastGridPointInDegrees=', &
+00078           latitudeOfLastPointInDegrees
+00079      
+00080      !     get as a real
+00081      call grib_get(igrib, 'longitudeOfLastGridPointInDegrees', &
+00082           longitudeOfLastPointInDegrees) 
+00083      write(*,*) 'longitudeOfLastGridPointInDegrees=', &
+00084           longitudeOfLastPointInDegrees
+00085      
+00086      
+00087      !     get the size of the values array
+00088      call grib_get_size(igrib,'values',numberOfValues)
+00089      write(*,*) 'numberOfValues=',numberOfValues
+00090      
+00091      allocate(values(numberOfValues), stat=iret)
+00092      !     get data values
+00093      call grib_get(igrib,'values',values)
+00094      call grib_get(igrib,'min',min_val) ! can also be obtained through minval(values)
+00095      call grib_get(igrib,'max',max_val) ! can also be obtained through maxval(values)
+00096      call grib_get(igrib,'average',average) ! can also be obtained through maxval(values)
+00097           
+00098      write(*,*)'There are ',numberOfValues, &
+00099           ' average is ',average, &
+00100           ' min is ',  min_val, &
+00101           ' max is ',  max_val
+00102      
+00103      call grib_release(igrib)
+00104      
+00105      call grib_new_from_file(ifile,igrib, iret)
+00106      
+00107   end do LOOP
+00108   
+00109   call grib_close_file(ifile)
+00110   
+00111   deallocate(values)
+00112 end program get
+

Generated on Tue Sep 22 15:18:21 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/get__data_8f90-example.html b/html/get__data_8f90-example.html new file mode 100644 index 000000000..a29b4893f --- /dev/null +++ b/html/get__data_8f90-example.html @@ -0,0 +1,90 @@ + + +grib_api: get_data.f90 + + + + + +

get_data.f90

How to get latitude/longitude/values.

+

00001 ! Copyright 2005-2012 ECMWF
+00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
+00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+00004 ! 
+00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+00007 !
+00008 !
+00009 !  Description: how to get lat/lon/values.
+00010 !
+00011 !
+00012 !  Author: Enrico Fucile
+00013 !
+00014 !
+00015 program get_data
+00016 use grib_api
+00017 implicit none
+00018   integer            :: ifile
+00019   integer            :: iret,i
+00020   real(kind=8),dimension(:),allocatable     :: lats,lons,values
+00021   integer(4)        :: numberOfPoints
+00022   real(8)  :: missingValue=9999
+00023   integer           :: count=0
+00024   character(len=256) :: filename
+00025 
+00026 !     Message identifier.
+00027   integer            :: igrib
+00028 
+00029   ifile=5
+00030 
+00031   call grib_open_file(ifile, &
+00032        '../../data/reduced_latlon_surface.grib1','R')
+00033 
+00034 ! Loop on all the messages in a file.
+00035 
+00036   call grib_new_from_file(ifile,igrib,iret)
+00037 
+00038   do while (iret/=GRIB_END_OF_FILE)
+00039     count=count+1
+00040     print *, "===== Message #",count
+00041     call grib_get(igrib,'numberOfPoints',numberOfPoints)
+00042     call grib_set(igrib,'missingValue',missingValue)
+00043 
+00044     allocate(lats(numberOfPoints))
+00045     allocate(lons(numberOfPoints))
+00046     allocate(values(numberOfPoints))
+00047 
+00048     call grib_get_data(igrib,lats,lons,values)
+00049 
+00050     do i=1,numberOfPoints
+00051       if (values(i) /= missingValue) then
+00052         print *, lats(i),lons(i),values(i)
+00053       end if
+00054     enddo
+00055 
+00056     deallocate(lats)
+00057     deallocate(lons)
+00058     deallocate(values)
+00059 
+00060     call grib_release(igrib)
+00061     call grib_new_from_file(ifile,igrib, iret)
+00062 
+00063   end do 
+00064 
+00065 
+00066   call grib_close_file(ifile)
+00067 
+00068 end program 
+

Generated on Tue Sep 22 15:18:21 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/get__fortran_8_f-example.html b/html/get__fortran_8_f-example.html new file mode 100644 index 000000000..9a1b20a7f --- /dev/null +++ b/html/get__fortran_8_f-example.html @@ -0,0 +1,151 @@ + + +grib_api: get_fortran.F + + + + + +

get_fortran.F

get_fortran.F How to get values through the key names.

+

00001 C Copyright 2005-2012 ECMWF
+00002 C This software is licensed under the terms of the Apache Licence Version 2.0
+00003 C which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+00004 C 
+00005 C In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+00006 C virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+00007 C
+00008 C  Fortran 77  Implementation: get_fortran
+00009 C
+00010 C  Description: how to get values using keys.
+00011 C
+00012 C  Author: Enrico Fucile
+00013 C
+00014 C
+00015 C
+00016       program get
+00017       implicit none
+00018       integer maxNumberOfValues
+00019       parameter( maxNumberOfValues = 10000 )
+00020       include 'grib_api_f77.h'
+00021       integer ifile
+00022       integer iret
+00023       integer igrib
+00024       integer i
+00025       real*8 latitudeOfFirstPointInDegrees
+00026       real*8 longitudeOfFirstPointInDegrees
+00027       real*8 latitudeOfLastPointInDegrees
+00028       real*8 longitudeOfLastPointInDegrees
+00029       real*8 jDirectionIncrementInDegrees
+00030       real*8 iDirectionIncrementInDegrees
+00031       integer*4 numberOfPointsAlongAParallel
+00032       integer*4 numberOfPointsAlongAMeridian
+00033       real*8 values(maxNumberOfValues)
+00034       integer*4 numberOfValues
+00035       real*8 average
+00036       character*256 error
+00037       integer*4 size
+00038 
+00039       size=maxNumberOfValues
+00040       ifile=5
+00041 
+00042       iret=grib_open_file(ifile
+00043      X,'../../data/regular_latlon_surface.grib1','r')
+00044       call grib_check(iret)
+00045 
+00046 C     a new grib message is loaded from file
+00047 C     igrib is the grib id to be used in subsequent calls
+00048       call grib_check( grib_new_from_file(ifile,igrib) )
+00049 
+00050 C     get as a integer
+00051       call grib_check(grib_get_int(igrib,'numberOfPointsAlongAParallel'
+00052      X,numberOfPointsAlongAParallel) )
+00053       write(*,*) 'numberOfPointsAlongAParallel='
+00054      X,numberOfPointsAlongAParallel
+00055 
+00056 C     get as a integer
+00057       call grib_check( grib_get_int(igrib,'numberOfPointsAlongAMeridian'
+00058      X,numberOfPointsAlongAMeridian) )
+00059       write(*,*) 'numberOfPointsAlongAMeridian='
+00060      X,numberOfPointsAlongAMeridian
+00061 
+00062 C     get as a real8
+00063       call grib_check( grib_get_real8(igrib
+00064      X,'latitudeOfFirstGridPointInDegrees'
+00065      X,latitudeOfFirstPointInDegrees) )
+00066        write(*,*) 'latitudeOfFirstGridPointInDegrees='
+00067      X,latitudeOfFirstPointInDegrees
+00068 
+00069 C     get as a real8
+00070       call grib_check( grib_get_real8(igrib
+00071      X,'longitudeOfFirstGridPointInDegrees'
+00072      X,longitudeOfFirstPointInDegrees) )
+00073        write(*,*) 'longitudeOfFirstGridPointInDegrees='
+00074      X,longitudeOfFirstPointInDegrees
+00075 
+00076 C     get as a real8
+00077       call grib_check( grib_get_real8(igrib
+00078      X,'latitudeOfLastGridPointInDegrees'
+00079      X,latitudeOfLastPointInDegrees) )
+00080        write(*,*) 'latitudeOfLastGridPointInDegrees='
+00081      X,latitudeOfLastPointInDegrees
+00082 
+00083 C     get as a real8
+00084       call grib_check( grib_get_real8(igrib
+00085      X,'longitudeOfLastGridPointInDegrees'
+00086      X,longitudeOfLastPointInDegrees) )
+00087       write(*,*) 'longitudeOfLastGridPointInDegrees='
+00088      X,longitudeOfLastPointInDegrees
+00089 
+00090 C     get as a real8
+00091       call grib_check( grib_get_real8(igrib
+00092      X,'jDirectionIncrementInDegrees'
+00093      X,jDirectionIncrementInDegrees) )
+00094       write(*,*) 'jDirectionIncrementInDegrees='
+00095      X,jDirectionIncrementInDegrees
+00096 
+00097 C     get as a real8
+00098       call grib_check( grib_get_real8(igrib
+00099      X,'iDirectionIncrementInDegrees'
+00100      X,iDirectionIncrementInDegrees) )
+00101       write(*,*) 'iDirectionIncrementInDegrees='
+00102      X,iDirectionIncrementInDegrees
+00103 
+00104 C     get the size of the values array
+00105       call grib_check(grib_get_size(igrib,'values',numberOfValues))
+00106       write(*,*) 'numberOfValues=',numberOfValues
+00107 
+00108 C     get data values
+00109       call grib_check(grib_get_real8_array(igrib,'values',values,size))
+00110       if ( size .ne. numberOfValues ) then
+00111         write(*,*) 'ERROR: wrong numberOfValues'
+00112         stop
+00113       endif
+00114 
+00115       average = 0
+00116       do i=1,numberOfValues
+00117         average = average + values(i);
+00118       enddo
+00119 
+00120       average =average / numberOfValues
+00121 
+00122       write(*,*)'There are ',numberOfValues
+00123      X,' average is ',average
+00124 
+00125       call grib_check(grib_release(igrib))
+00126 
+00127       call grib_check(grib_close_file(ifile))
+00128 
+00129       end
+

Generated on Tue Sep 22 15:18:21 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/get__pl_8f90-example.html b/html/get__pl_8f90-example.html new file mode 100644 index 000000000..848b0c06a --- /dev/null +++ b/html/get__pl_8f90-example.html @@ -0,0 +1,70 @@ + + +grib_api: get_pl.f90 + + + + + +

get_pl.f90

How to get the list of number of points for each parallel in reduced grids.

+

00001 ! Copyright 2005-2012 ECMWF
+00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
+00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+00004 ! 
+00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+00007 !
+00008 !
+00009 !  Description: how to get PL values.
+00010 !
+00011 !
+00012 !  Author: Anne Fouilloux
+00013 !
+00014 !
+00015 program get_pl
+00016   use grib_api
+00017   implicit none
+00018   integer                         :: infile
+00019   integer                         :: igrib
+00020   integer                         :: PLPresent, nb_pl
+00021   real, dimension(:), allocatable :: pl
+00022 
+00023 
+00024   call grib_open_file(infile, &
+00025        '../../data/reduced_gaussian_surface.grib1','r')
+00026   
+00027   !     a new grib message is loaded from file
+00028   !     igrib is the grib id to be used in subsequent calls
+00029   call grib_new_from_file(infile,igrib)
+00030   
+00031   !     set PVPresent as an integer 
+00032   call grib_get(igrib,'PLPresent',PLPresent)
+00033   print*, "PLPresent= ", PLPresent
+00034   if (PLPresent == 1) then
+00035      call grib_get_size(igrib,'pl',nb_pl)
+00036      print*, "there are ", nb_pl, " PL values"
+00037      allocate(pl(nb_pl))
+00038      call grib_get(igrib,'pl',pl)
+00039      print*, "pl = ", pl
+00040      deallocate(pl)
+00041   else
+00042      print*, "There is no PL values in your GRIB message!"
+00043   end if
+00044   call grib_release(igrib)
+00045      
+00046   call grib_close_file(infile)
+00047 
+00048 end program get_pl
+

Generated on Tue Sep 22 15:18:21 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/get__pv_8f90-example.html b/html/get__pv_8f90-example.html new file mode 100644 index 000000000..b645ce622 --- /dev/null +++ b/html/get__pv_8f90-example.html @@ -0,0 +1,70 @@ + + +grib_api: get_pv.f90 + + + + + +

get_pv.f90

How to get the list of levels.

+

00001 ! Copyright 2005-2012 ECMWF
+00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
+00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+00004 ! 
+00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+00007 !
+00008 !
+00009 !  Description: how to get PV values.
+00010 !
+00011 !
+00012 !  Author: Anne Fouilloux
+00013 !
+00014 !
+00015 program get_pv
+00016   use grib_api
+00017   implicit none
+00018   integer                         :: infile
+00019   integer                         :: igrib
+00020   integer                         :: PVPresent, nb_pv
+00021   real, dimension(:), allocatable :: pv
+00022   
+00023 
+00024   call grib_open_file(infile, &
+00025        '../../data/reduced_gaussian_model_level.grib1','r')
+00026   
+00027   !     a new grib message is loaded from file
+00028   !     igrib is the grib id to be used in subsequent calls
+00029   call grib_new_from_file(infile,igrib)
+00030   
+00031   !     set PVPresent as an integer 
+00032   call grib_get(igrib,'PVPresent',PVPresent)
+00033   print*, "PVPresent = ", PVPresent
+00034   if (PVPresent == 1) then
+00035      call grib_get_size(igrib,'pv',nb_pv)
+00036      print*, "There are ", nb_pv, " PV values"
+00037      allocate(pv(nb_pv))
+00038      call grib_get(igrib,'pv',pv)
+00039      print*, "pv = ", pv
+00040      deallocate(pv)
+00041   else
+00042      print*, "There is no PV values in your GRIB message!"
+00043   end if
+00044   call grib_release(igrib)
+00045   
+00046   call grib_close_file(infile)
+00047   
+00048 end program get_pv
+

Generated on Tue Sep 22 15:18:21 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/globals.html b/html/globals.html new file mode 100644 index 000000000..62d1ebea1 --- /dev/null +++ b/html/globals.html @@ -0,0 +1,360 @@ + + +grib_api: Data Fields + + + + + +
+ +
+
+ +
+
+
    +
  • g
  • +
+
+ +

+Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: +

+

- g -

+
Generated on Tue Sep 22 15:18:22 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/globals_defs.html b/html/globals_defs.html new file mode 100644 index 000000000..c0beeb580 --- /dev/null +++ b/html/globals_defs.html @@ -0,0 +1,162 @@ + + +grib_api: Data Fields + + + + + +
+ +
+
+ +
+
+
    +
  • g
  • +
+
+ +

+  +

+

- g -

+
Generated on Tue Sep 22 15:18:22 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/globals_func.html b/html/globals_func.html new file mode 100644 index 000000000..ab4bfe44a --- /dev/null +++ b/html/globals_func.html @@ -0,0 +1,210 @@ + + +grib_api: Data Fields + + + + + +
+ +
+
+ +
+
+
    +
  • g
  • +
+
+ +

+  +

+

- g -

+
Generated on Tue Sep 22 15:18:22 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/globals_type.html b/html/globals_type.html new file mode 100644 index 000000000..5bc06efe5 --- /dev/null +++ b/html/globals_type.html @@ -0,0 +1,73 @@ + + +grib_api: Data Fields + + + + + +
+ +
+
+ +
+  +

+

+
Generated on Tue Sep 22 15:18:22 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/grib__api_8h.html b/html/grib__api_8h.html new file mode 100644 index 000000000..e2db9d6f6 --- /dev/null +++ b/html/grib__api_8h.html @@ -0,0 +1,1602 @@ + + +grib_api: grib_api.h File Reference + + + + + +

grib_api.h File Reference

Copyright 2005-2012 ECMWF. More... +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Defines

#define GRIB_KEYS_ITERATOR_ALL_KEYS   0
#define GRIB_KEYS_ITERATOR_SKIP_READ_ONLY   (1<<0)
#define GRIB_KEYS_ITERATOR_SKIP_OPTIONAL   (1<<1)
#define GRIB_KEYS_ITERATOR_SKIP_EDITION_SPECIFIC   (1<<2)
#define GRIB_KEYS_ITERATOR_SKIP_CODED   (1<<3)
#define GRIB_KEYS_ITERATOR_SKIP_COMPUTED   (1<<4)
#define GRIB_KEYS_ITERATOR_SKIP_DUPLICATES   (1<<5)
#define GRIB_KEYS_ITERATOR_SKIP_FUNCTION   (1<<6)
#define GRIB_SUCCESS   0
 No error.
#define GRIB_END_OF_FILE   -1
 End of ressource reached.
#define GRIB_INTERNAL_ERROR   -2
 Internal error.
#define GRIB_BUFFER_TOO_SMALL   -3
 Passed buffer is too small.
#define GRIB_NOT_IMPLEMENTED   -4
 Function not yet implemented.
#define GRIB_7777_NOT_FOUND   -5
 Missing 7777 at end of message.
#define GRIB_ARRAY_TOO_SMALL   -6
 Passed array is too small.
#define GRIB_FILE_NOT_FOUND   -7
 File not found.
#define GRIB_CODE_NOT_FOUND_IN_TABLE   -8
 Code not found in code table.
#define GRIB_STRING_TOO_SMALL_FOR_CODE_NAME   -9
 Code cannot unpack because of string too small.
#define GRIB_WRONG_ARRAY_SIZE   -10
 Array size mismatch.
#define GRIB_NOT_FOUND   -11
 Key/value not found.
#define GRIB_IO_PROBLEM   -12
 Input output problem.
#define GRIB_INVALID_MESSAGE   -13
 Message invalid.
#define GRIB_DECODING_ERROR   -14
 Decoding invalid.
#define GRIB_ENCODING_ERROR   -15
 Encoding invalid.
#define GRIB_NO_MORE_IN_SET   -16
 Code cannot unpack because of string too small.
#define GRIB_GEOCALCULUS_PROBLEM   -17
 Problem with calculation of geographic attributes.
#define GRIB_OUT_OF_MEMORY   -18
 Out of memory.
#define GRIB_READ_ONLY   -19
 Value is read only.
#define GRIB_INVALID_ARGUMENT   -20
 Invalid argument.
#define GRIB_NULL_HANDLE   -21
 Null handle.
#define GRIB_INVALID_SECTION_NUMBER   -22
 Invalid section number.
#define GRIB_VALUE_CANNOT_BE_MISSING   -23
 Value cannot be missing.
#define GRIB_WRONG_LENGTH   -24
 Wrong message length.
#define GRIB_INVALID_TYPE   -25
 Invalid key type.
#define GRIB_WRONG_STEP   -26
 Unable to set step.
#define GRIB_WRONG_STEP_UNIT   -27
 Wrong units for step (step must be integer).
#define GRIB_INVALID_FILE   -28
 Invalid file id.
#define GRIB_INVALID_GRIB   -29
 Invalid grib id.
#define GRIB_INVALID_INDEX   -30
 Invalid index id.
#define GRIB_INVALID_ITERATOR   -31
 Invalid iterator id.
#define GRIB_INVALID_KEYS_ITERATOR   -32
 Invalid keys iterator id.
#define GRIB_INVALID_NEAREST   -33
 Invalid nearest id.
#define GRIB_INVALID_ORDERBY   -34
 Invalid order by.
#define GRIB_MISSING_KEY   -35
 Missing a key from the fieldset.
#define GRIB_OUT_OF_AREA   -36
 The point is out of the grid area.
#define GRIB_CONCEPT_NO_MATCH   -37
 Concept no match.
#define GRIB_NO_DEFINITIONS   -38
 Definitions files not found.
#define GRIB_WRONG_TYPE   -39
 Wrong type while packing.
#define GRIB_END   -40
 End of resource.
#define GRIB_NO_VALUES   -41
 Unable to code a field without values.
#define GRIB_WRONG_GRID   -42
 Grid description is wrong or inconsistent.
#define GRIB_END_OF_INDEX   -43
 End of index reached.
#define GRIB_NULL_INDEX   -44
 Null index.
#define GRIB_PREMATURE_END_OF_FILE   -45
 End of ressource reached when reading message.
#define GRIB_INTERNAL_ARRAY_TOO_SMALL   -46
 An internal array is too small.
#define GRIB_MESSAGE_TOO_LARGE   -47
 Message is too large for the current architecture.
#define GRIB_CONSTANT_FIELD   -48
 Constant field.
#define GRIB_SWITCH_NO_MATCH   -49
 Switch unable to find a matching case.

Typedefs

typedef struct
+grib_handle 
grib_handle
typedef struct
+grib_multi_handle 
grib_multi_handle
typedef struct
+grib_context 
grib_context
typedef struct
+grib_iterator 
grib_iterator
typedef struct
+grib_nearest 
grib_nearest
typedef struct
+grib_keys_iterator 
grib_keys_iterator
typedef struct grib_index grib_index
typedef void(* grib_free_proc )(const grib_context *c, void *data)
 Grib free procedure, format of a procedure referenced in the context that is used to free memory.
typedef void *(* grib_malloc_proc )(const grib_context *c, size_t length)
 Grib malloc procedure, format of a procedure referenced in the context that is used to allocate memory.
typedef void *(* grib_realloc_proc )(const grib_context *c, void *data, size_t length)
 Grib realloc procedure, format of a procedure referenced in the context that is used to reallocate memory.
typedef void(* grib_log_proc )(const grib_context *c, int level, const char *mesg)
 Grib loc proc, format of a procedure referenced in the context that is used to log internal messages.
typedef void(* grib_print_proc )(const grib_context *c, void *descriptor, const char *mesg)
 Grib print proc, format of a procedure referenced in the context that is used to print external messages.
typedef size_t(* grib_data_read_proc )(const grib_context *c, void *ptr, size_t size, void *stream)
 Grib data read proc, format of a procedure referenced in the context that is used to read from a stream in a resource.
typedef size_t(* grib_data_write_proc )(const grib_context *c, const void *ptr, size_t size, void *stream)
 Grib data read write, format of a procedure referenced in the context that is used to write to a stream from a resource.
typedef off_t(* grib_data_tell_proc )(const grib_context *c, void *stream)
 Grib data tell, format of a procedure referenced in the context that is used to tell the current position in a stream.
typedef off_t(* grib_data_seek_proc )(const grib_context *c, off_t offset, int whence, void *stream)
 Grib data seek, format of a procedure referenced in the context that is used to seek the current position in a stream.
typedef int(* grib_data_eof_proc )(const grib_context *c, void *stream)
 Grib data eof, format of a procedure referenced in the context that is used to test end of file.

Functions

grib_indexgrib_index_new_from_file (grib_context *c, char *filename, const char *keys, int *err)
 Create a new index form a file.
int grib_index_get_size (grib_index *index, const char *key, size_t *size)
 Get the number of distinct values of the key in argument contained in the index.
int grib_index_get_long (grib_index *index, const char *key, long *values, size_t *size)
 Get the distinct values of the key in argument contained in the index.
int grib_index_get_double (grib_index *index, const char *key, double *values, size_t *size)
 Get the distinct values of the key in argument contained in the index.
int grib_index_get_string (grib_index *index, const char *key, char **values, size_t *size)
 Get the distinct values of the key in argument contained in the index.
int grib_index_select_long (grib_index *index, const char *key, long value)
 Select the message subset with key==value.
int grib_index_select_double (grib_index *index, const char *key, double value)
 Select the message subset with key==value.
int grib_index_select_string (grib_index *index, const char *key, char *value)
 Select the message subset with key==value.
grib_handlegrib_handle_new_from_index (grib_index *index, int *err)
 Create a new handle from an index after having selected the key values.
void grib_index_delete (grib_index *index)
 Delete the index.
int grib_count_in_file (grib_context *c, FILE *f, int *n)
 Counts the messages contained in a file resource.
grib_handlegrib_handle_new_from_file (grib_context *c, FILE *f, int *error)
 Create a handle from a file resource.
grib_handlegrib_handle_new_from_message (grib_context *c, void *data, size_t data_len)
 Create a handle from a user message in memory.
grib_handlegrib_handle_new_from_multi_message (grib_context *c, void **data, size_t *data_len, int *error)
 Create a handle from a user message in memory.
grib_handlegrib_handle_new_from_message_copy (grib_context *c, const void *data, size_t data_len)
 Create a handle from a user message.
grib_handlegrib_handle_new_from_template (grib_context *c, const char *res_name)
 Create a handle from a read_only template resource.
grib_handlegrib_handle_new_from_samples (grib_context *c, const char *res_name)
 Create a handle from a message contained in a samples directory.
grib_handlegrib_handle_clone (grib_handle *h)
 Clone an existing handle using the context of the original handle, The message is copied and reparsed.
int grib_handle_delete (grib_handle *h)
 Frees a handle, also frees the message if it is not a user message.
grib_multi_handlegrib_multi_handle_new (grib_context *c)
 Create an empty multi field handle.
int grib_multi_handle_append (grib_handle *h, int start_section, grib_multi_handle *mh)
 Append the sections starting with start_section of the message pointed by h at the end of the multi field handle mh.
int grib_multi_handle_delete (grib_multi_handle *mh)
 Delete multi field handle.
int grib_multi_handle_write (grib_multi_handle *mh, FILE *f)
 Write a multi field handle in a file.
int grib_get_message (grib_handle *h, const void **message, size_t *message_length)
 getting the message attached to a handle
int grib_get_message_copy (grib_handle *h, void *message, size_t *message_length)
 getting a copy of the message attached to a handle
grib_iteratorgrib_iterator_new (grib_handle *h, unsigned long flags, int *error)
 Create a new iterator from a handle, using current geometry and values.
int grib_iterator_next (grib_iterator *i, double *lat, double *lon, double *value)
 Get the next value from an iterator.
int grib_iterator_previous (grib_iterator *i, double *lat, double *lon, double *value)
 Get the previous value from an iterator.
int grib_iterator_has_next (grib_iterator *i)
 Test procedure for values in an iterator.
int grib_iterator_reset (grib_iterator *i)
 Test procedure for values in an iterator.
int grib_iterator_delete (grib_iterator *i)
 Frees an iterator from memory.
grib_nearestgrib_nearest_new (grib_handle *h, int *error)
 Create a new nearest from a handle, using current geometry .
int grib_nearest_find (grib_nearest *nearest, grib_handle *h, double inlat, double inlon, unsigned long flags, double *outlats, double *outlons, double *values, double *distances, int *indexes, size_t *len)
 Find the 4 nearest points of a latitude longitude point.
int grib_nearest_delete (grib_nearest *nearest)
 Frees an nearest from memory.
int grib_nearest_find_multiple (grib_handle *h, int is_lsm, double *inlats, double *inlons, long npoints, double *outlats, double *outlons, double *values, double *distances, int *indexes)
 Find the nearest point of a set of points whose latitudes and longitudes are given in the inlats, inlons arrays respectively.
int grib_get_offset (grib_handle *h, const char *key, size_t *offset)
 Get the number offset of a key, in a message if several keys of the same name are present, the offset of the last one is returned.
int grib_get_size (grib_handle *h, const char *key, size_t *size)
 Get the number of coded value from a key, if several keys of the same name are present, the total sum is returned.
int grib_get_long (grib_handle *h, const char *key, long *value)
 Get a long value from a key, if several keys of the same name are present, the last one is returned.
int grib_get_double (grib_handle *h, const char *key, double *value)
 Get a double value from a key, if several keys of the same name are present, the last one is returned.
int grib_get_double_element (grib_handle *h, const char *key, int i, double *value)
 Get as double the i-th element of the "key" array.
int grib_get_double_elements (grib_handle *h, const char *key, int *i, long size, double *value)
 Get as double array the elements of the "key" array whose indexes are listed in the input array i.
int grib_get_string (grib_handle *h, const char *key, char *mesg, size_t *length)
 Get a string value from a key, if several keys of the same name are present, the last one is returned.
int grib_get_bytes (grib_handle *h, const char *key, unsigned char *bytes, size_t *length)
 Get raw bytes values from a key.
int grib_get_double_array (grib_handle *h, const char *key, double *vals, size_t *length)
 Get double array values from a key.
int grib_get_long_array (grib_handle *h, const char *key, long *vals, size_t *length)
 Get long array values from a key.
int grib_copy_namespace (grib_handle *dest, const char *name, grib_handle *src)
 Copy the keys belonging to a given namespace from a source handle to a destination handle.
int grib_set_long (grib_handle *h, const char *key, long val)
 Set a long value from a key.
int grib_set_double (grib_handle *h, const char *key, double val)
 Set a double value from a key.
int grib_set_string (grib_handle *h, const char *key, const char *mesg, size_t *length)
 Set a string value from a key.
int grib_set_bytes (grib_handle *h, const char *key, const unsigned char *bytes, size_t *length)
 Set a bytes array from a key.
int grib_set_double_array (grib_handle *h, const char *key, const double *vals, size_t length)
 Set a double array from a key.
int grib_set_long_array (grib_handle *h, const char *key, const long *vals, size_t length)
 Set a long array from a key.
void grib_dump_content (grib_handle *h, FILE *out, const char *mode, unsigned long option_flags, void *arg)
 Print all keys, with the context print procedure and dump mode to a resource.
void grib_get_all_names (grib_handle *h, char *names)
 Gather all names available in a handle to a string, using a space as separator.
void grib_dump_action_tree (grib_context *c, FILE *f)
 Print all keys from the parsed definition files available in a context.
grib_contextgrib_get_context (grib_handle *h)
 Retreive the context from a handle.
grib_contextgrib_context_get_default (void)
 Get the static default context.
grib_contextgrib_context_new (grib_context *c)
 Create and allocate a new context from a parent context.
void grib_context_delete (grib_context *c)
 Frees the cached definition files of the context.
void grib_gts_header_on (grib_context *c)
 Set the gts header mode on.
void grib_gts_header_off (grib_context *c)
 Set the gts header mode off.
void grib_gribex_mode_on (grib_context *c)
 Set the gribex mode on.
void grib_gribex_mode_off (grib_context *c)
 Set the gribex mode off.
void grib_context_set_user_data (grib_context *c, void *udata)
 Sets user data in a context.
void * grib_context_get_user_data (grib_context *c)
 get userData from a context
void grib_context_set_memory_proc (grib_context *c, grib_malloc_proc griballoc, grib_free_proc gribfree, grib_realloc_proc gribrealloc)
 Sets memory procedures of the context.
void grib_context_set_persistent_memory_proc (grib_context *c, grib_malloc_proc griballoc, grib_free_proc gribfree)
 Sets memory procedures of the context for persistent data.
void grib_context_set_buffer_memory_proc (grib_context *c, grib_malloc_proc griballoc, grib_free_proc gribfree, grib_realloc_proc gribrealloc)
 Sets memory procedures of the context for large buffers.
void grib_context_set_path (grib_context *c, const char *path)
 Sets the context search path for definition files.
void grib_context_set_dump_mode (grib_context *c, int mode)
 Sets context dump mode.
void grib_context_set_print_proc (grib_context *c, grib_print_proc printp)
 Sets the context printing procedure used for user interaction.
void grib_context_set_logging_proc (grib_context *c, grib_log_proc logp)
 Sets the context logging procedure used for system (warning, errors, infos .
void grib_multi_support_on (grib_context *c)
 Turn on support for multiple fields in single grib messages.
void grib_multi_support_off (grib_context *c)
 Turn off support for multiple fields in single grib messages.
long grib_get_api_version (void)
 Get the api version.
void grib_print_api_version (FILE *out)
 Prints the api version.
grib_keys_iteratorgrib_keys_iterator_new (grib_handle *h, unsigned long filter_flags, char *name_space)
int grib_keys_iterator_next (grib_keys_iterator *kiter)
const char * grib_keys_iterator_get_name (grib_keys_iterator *kiter)
int grib_keys_iterator_delete (grib_keys_iterator *kiter)
int grib_keys_iterator_rewind (grib_keys_iterator *kiter)
const char * grib_get_error_message (int code)
 Convert an error code into a string.
+


Detailed Description

+Copyright 2005-2012 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.

+grib_api C header file

+This is the only file that must be included to use the grib_api library from C.


Define Documentation

+ +
+
+ + + + +
#define GRIB_7777_NOT_FOUND   -5
+
+
+ +

+Missing 7777 at end of message. +

+ +

+

+ +

+
+ + + + +
#define GRIB_ARRAY_TOO_SMALL   -6
+
+
+ +

+Passed array is too small. +

+ +

+

+ +

+
+ + + + +
#define GRIB_BUFFER_TOO_SMALL   -3
+
+
+ +

+Passed buffer is too small. +

+ +

+

+ +

+
+ + + + +
#define GRIB_CODE_NOT_FOUND_IN_TABLE   -8
+
+
+ +

+Code not found in code table. +

+ +

+

+ +

+
+ + + + +
#define GRIB_CONCEPT_NO_MATCH   -37
+
+
+ +

+Concept no match. +

+ +

+

+ +

+
+ + + + +
#define GRIB_CONSTANT_FIELD   -48
+
+
+ +

+Constant field. +

+ +

+

+ +

+
+ + + + +
#define GRIB_DECODING_ERROR   -14
+
+
+ +

+Decoding invalid. +

+ +

+

+ +

+
+ + + + +
#define GRIB_ENCODING_ERROR   -15
+
+
+ +

+Encoding invalid. +

+ +

+

+ +

+
+ + + + +
#define GRIB_END   -40
+
+
+ +

+End of resource. +

+ +

+

+ +

+
+ + + + +
#define GRIB_END_OF_FILE   -1
+
+
+ +

+End of ressource reached. +

+

Examples:
+get.f90, get_data.f90, keys_iterator.f90, multi.f90, and samples.f90.
+
+

+ +

+
+ + + + +
#define GRIB_END_OF_INDEX   -43
+
+
+ +

+End of index reached. +

+

Examples:
+index.f90.
+
+

+ +

+
+ + + + +
#define GRIB_FILE_NOT_FOUND   -7
+
+
+ +

+File not found. +

+ +

+

+ +

+
+ + + + +
#define GRIB_GEOCALCULUS_PROBLEM   -17
+
+
+ +

+Problem with calculation of geographic attributes. +

+ +

+

+ +

+
+ + + + +
#define GRIB_INTERNAL_ARRAY_TOO_SMALL   -46
+
+
+ +

+An internal array is too small. +

+ +

+

+ +

+
+ + + + +
#define GRIB_INTERNAL_ERROR   -2
+
+
+ +

+Internal error. +

+ +

+

+ +

+
+ + + + +
#define GRIB_INVALID_ARGUMENT   -20
+
+
+ +

+Invalid argument. +

+ +

+

+ +

+
+ + + + +
#define GRIB_INVALID_FILE   -28
+
+
+ +

+Invalid file id. +

+ +

+

+ +

+
+ + + + +
#define GRIB_INVALID_GRIB   -29
+
+
+ +

+Invalid grib id. +

+ +

+

+ +

+
+ + + + +
#define GRIB_INVALID_INDEX   -30
+
+
+ +

+Invalid index id. +

+ +

+

+ +

+
+ + + + +
#define GRIB_INVALID_ITERATOR   -31
+
+
+ +

+Invalid iterator id. +

+ +

+

+ +

+
+ + + + +
#define GRIB_INVALID_KEYS_ITERATOR   -32
+
+
+ +

+Invalid keys iterator id. +

+ +

+

+ +

+
+ + + + +
#define GRIB_INVALID_MESSAGE   -13
+
+
+ +

+Message invalid. +

+ +

+

+ +

+
+ + + + +
#define GRIB_INVALID_NEAREST   -33
+
+
+ +

+Invalid nearest id. +

+ +

+

+ +

+
+ + + + +
#define GRIB_INVALID_ORDERBY   -34
+
+
+ +

+Invalid order by. +

+ +

+

+ +

+
+ + + + +
#define GRIB_INVALID_SECTION_NUMBER   -22
+
+
+ +

+Invalid section number. +

+ +

+

+ +

+
+ + + + +
#define GRIB_INVALID_TYPE   -25
+
+
+ +

+Invalid key type. +

+ +

+

+ +

+
+ + + + +
#define GRIB_IO_PROBLEM   -12
+
+
+ +

+Input output problem. +

+ +

+

+ +

+
+ + + + +
#define GRIB_MESSAGE_TOO_LARGE   -47
+
+
+ +

+Message is too large for the current architecture. +

+ +

+

+ +

+
+ + + + +
#define GRIB_MISSING_KEY   -35
+
+
+ +

+Missing a key from the fieldset. +

+ +

+

+ +

+
+ + + + +
#define GRIB_NO_DEFINITIONS   -38
+
+
+ +

+Definitions files not found. +

+ +

+

+ +

+
+ + + + +
#define GRIB_NO_MORE_IN_SET   -16
+
+
+ +

+Code cannot unpack because of string too small. +

+ +

+

+ +

+
+ + + + +
#define GRIB_NO_VALUES   -41
+
+
+ +

+Unable to code a field without values. +

+ +

+

+ +

+
+ + + + +
#define GRIB_NOT_FOUND   -11
+
+
+ +

+Key/value not found. +

+ +

+

+ +

+
+ + + + +
#define GRIB_NOT_IMPLEMENTED   -4
+
+
+ +

+Function not yet implemented. +

+ +

+

+ +

+
+ + + + +
#define GRIB_NULL_HANDLE   -21
+
+
+ +

+Null handle. +

+ +

+

+ +

+
+ + + + +
#define GRIB_NULL_INDEX   -44
+
+
+ +

+Null index. +

+ +

+

+ +

+
+ + + + +
#define GRIB_OUT_OF_AREA   -36
+
+
+ +

+The point is out of the grid area. +

+ +

+

+ +

+
+ + + + +
#define GRIB_OUT_OF_MEMORY   -18
+
+
+ +

+Out of memory. +

+ +

+

+ +

+
+ + + + +
#define GRIB_PREMATURE_END_OF_FILE   -45
+
+
+ +

+End of ressource reached when reading message. +

+ +

+

+ +

+
+ + + + +
#define GRIB_READ_ONLY   -19
+
+
+ +

+Value is read only. +

+ +

+

+ +

+
+ + + + +
#define GRIB_STRING_TOO_SMALL_FOR_CODE_NAME   -9
+
+
+ +

+Code cannot unpack because of string too small. +

+ +

+

+ +

+
+ + + + +
#define GRIB_SUCCESS   0
+
+
+ +

+No error. +

+

Examples:
+iterator.c.
+
+

+ +

+
+ + + + +
#define GRIB_SWITCH_NO_MATCH   -49
+
+
+ +

+Switch unable to find a matching case. +

+ +

+

+ +

+
+ + + + +
#define GRIB_VALUE_CANNOT_BE_MISSING   -23
+
+
+ +

+Value cannot be missing. +

+ +

+

+ +

+
+ + + + +
#define GRIB_WRONG_ARRAY_SIZE   -10
+
+
+ +

+Array size mismatch. +

+ +

+

+ +

+
+ + + + +
#define GRIB_WRONG_GRID   -42
+
+
+ +

+Grid description is wrong or inconsistent. +

+ +

+

+ +

+
+ + + + +
#define GRIB_WRONG_LENGTH   -24
+
+
+ +

+Wrong message length. +

+ +

+

+ +

+
+ + + + +
#define GRIB_WRONG_STEP   -26
+
+
+ +

+Unable to set step. +

+ +

+

+ +

+
+ + + + +
#define GRIB_WRONG_STEP_UNIT   -27
+
+
+ +

+Wrong units for step (step must be integer). +

+ +

+

+ +

+
+ + + + +
#define GRIB_WRONG_TYPE   -39
+
+
+ +

+Wrong type while packing. +

+ +

+

+


Typedef Documentation

+ +
+
+ + + + +
typedef struct grib_context grib_context
+
+
+ +

+Grib context, structure containing the memory methods, the parsers and the formats. +

+

+ +

+
+ + + + +
typedef struct grib_iterator grib_iterator
+
+
+ +

+Grib iterator, structure supporting a geographic iteration of values on a grib message.

Examples:
+iterator.c.
+
+

+ +

+
+ + + + +
typedef struct grib_nearest grib_nearest
+
+
+ +

+Grib nearest, structure used to find the nearest points of a latitude longitude point.

Examples:
+nearest.c.
+
+

+


Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
void grib_dump_action_tree (grib_context c,
FILE *  f 
)
+
+
+ +

+Print all keys from the parsed definition files available in a context. +

+

Parameters:
+ + + +
f : the File used to print the keys on
c : the context that containd the cached definition files to be printed
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void grib_dump_content (grib_handle h,
FILE *  out,
const char *  mode,
unsigned long  option_flags,
void *  arg 
)
+
+
+ +

+Print all keys, with the context print procedure and dump mode to a resource. +

+

Parameters:
+ + + + + + +
h : the handle to be printed
out : output file handle
mode : available dump modes are: debug wmo c_code
option_flags : all the GRIB_DUMP_FLAG_x flags can be used
arg : used to provide a format to output data (experimental)
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void grib_get_all_names (grib_handle h,
char *  names 
)
+
+
+ +

+Gather all names available in a handle to a string, using a space as separator. +

+

Parameters:
+ + + +
h : the handle used to gather the keys
names : the sting to be filled with the names
+
+ +
+

+ +

+
+ + + + + + + + + +
long grib_get_api_version (void   ) 
+
+
+ +

+Get the api version. +

+

Returns:
api version
+ +
+

+ +

+
+ + + + + + + + + +
const char* grib_get_error_message (int  code  ) 
+
+
+ +

+Convert an error code into a string. +

+

Parameters:
+ + +
code : the error code
+
+
Returns:
the error message
+ +
+

+ +

+
+ + + + + + + + + +
void grib_print_api_version (FILE *  out  ) 
+
+
+ +

+Prints the api version. +

+ +

+

+


Generated on Tue Sep 22 15:18:22 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/grib_compare.html b/html/grib_compare.html new file mode 100644 index 000000000..59f34c162 --- /dev/null +++ b/html/grib_compare.html @@ -0,0 +1,281 @@ + + +grib_api: grib_compare + + + + + +

grib_compare

+DESCRIPTION

+Compare grib messages contained in two files. If some differences are found it fails returning an error code. Floating point values are compared exactly by default, different tolerance can be defined see -P -A -R. Default behaviour: absolute error=0, bit-by-bit compare, same order in files.

+USAGE

+grib_compare [options] grib_file grib_file

+OPTIONS

+-r
+ Compare files in which the messages are not in the same order. This option is time expensive.
+
+ -b key,key,...
+ All the keys in this list are skipped in the comparison. Bit-by-bit compare on.
+
+ -e
+ edition independent compare. It is used to compare grib edition 1 and 2.
+
+ -c key[:l/d/s/n],key[:l/d/s/n],...
+ Only the listed keys or namespaces (:n) are compared. The optional letter after the colon is used to force the type in the comparison: l->integer, d->float, s->string, n->namespace. See -a option. Incompatible with -H option.
+
+ -a
+ -c option modifier. The keys listed with the option -c will be added to the list of keys compared without -c.
+
+ -H
+ Compare only message headers. Bit-by-bit compare on. Incompatible with -c option.
+
+ -R key1=relative_error1,key2=relative_error2,...
+ Compare floating point values using the relative error as tolerance. key1=relative_error will compare key1 using relative_error1. all=relative_error will compare all the floating point keys using relative_error. Default all=0.
+
+ -A absolute error
+ Compare floating point values using the absolute error as tolerance. Default is absolute error=0
+
+ -P
+ Compare data values using the packing error as tolerance.
+
+ -T factor
+ Compare data values using factor multipied by the tolerance specified in options -P -R -A.
+
+ -w key[:{s/d/l}]{=/!=}value,key[:{s/d/l}]{=/!=}value,...
+ Where clause. Grib 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) type can be specified. Default type is string.
+
+ -f
+ Force. Force the execution not to fail on error.
+
+ -V
+ Version.
+
+ -7
+ Does not fail when the message has wrong length
+
+ -v
+ Verbose.
+
+

+grib_compare examples

+
    +
  1. The default behaviour for grib_compare without any option is to perform a bit by bit comparison of the two messages. If the messages are found to be bitwise different then grib_compare switches to a "key based" mode to find out which coded keys are different. To see how grib_compare works we first set the shortName=2d (2 metre dew point temperature) in the file regular_latlon_surface.grib1
    +
    +>grib_set -s shortName=2d regular_latlon_surface.grib1 2d.grib1
    +
    Then we can compare the two fields with grib_compare.
    +
    +>grib_compare regular_latlon_surface.grib1 2d.grib1
    +
    +-- GRIB #1 -- shortName=2t paramId=167 stepRange=0 levelType=sfc level=0 packingType=grid_simple gridType=regular_ll --
    +long [indicatorOfParameter]: [167] != [168]
    +
    In the output we see that the only "coded" key with different values in the two messages is indicatorOfParameter which is the relevant key for the parameter information. The comparison can be forced to be successful listing the keys with different values in the -b option.
    +>grib_compare -b indicatorOfParameter regular_latlon_surface.grib1 2d.grib1
    +

    +
    +
  2. Two grib messages can be very different because they have different edition, but they can contain the same identical information in the header and the same data. To see how grib_compare can help in comparing messages with different edition we do
    +>grib_set edition=2 reduced_gaussian_model_level.grib1 reduced_gaussian_model_level.grib2
    +
    Then we compare the two fields with grib_compare.
    +
    +>grib_compare reduced_gaussian_model_level.grib1 reduced_gaussian_model_level.grib2
    +
    +-- GRIB #1 -- shortName=t paramId=130 stepRange=0 levelType=ml level=1 packingType=grid_simple gridType=reduced_gg --
    +long [totalLength]: [10908] != [10996]
    +long [editionNumber]: [1] != [2]
    +long [section1Length]: [52] != [21]
    +[table2Version] not found in 2nd field
    +[gridDefinition] not found in 2nd field
    +[indicatorOfParameter] not found in 2nd field
    +[indicatorOfTypeOfLevel] not found in 2nd field
    +[yearOfCentury] not found in 2nd field
    +[unitOfTimeRange] not found in 2nd field
    +[P1] not found in 2nd field
    +[P2] not found in 2nd field
    +[numberIncludedInAverage] not found in 2nd field
    +[numberMissingFromAveragesOrAccumulations] not found in 2nd field
    +[centuryOfReferenceTimeOfData] not found in 2nd field
    +[reservedNeedNotBePresent] not found in 2nd field
    +[localDefinitionNumber] not found in 2nd field
    +[perturbationNumber] not found in 2nd field
    +[numberOfForecastsInEnsemble] not found in 2nd field
    +[padding_local1_1] not found in 2nd field
    +long [section2Length]: [896] != [17]
    +[pvlLocation] not found in 2nd field
    +[dataRepresentationType] not found in 2nd field
    +long [latitudeOfFirstGridPoint]: [87864] != [87864000]
    +long [latitudeOfLastGridPoint]: [-87864] != [-87864000]
    +long [longitudeOfLastGridPoint]: [357188] != [357188000]
    +[padding_grid4_1] not found in 2nd field
    +long [section4Length]: [9948] != [770]
    +[dataFlag] not found in 2nd field
    +
    It is clear that the two messages are coded in a very different way. If we now add the -e option, the tool will compare only the higher level information common between the two messages.
    +>grib_compare -e reduced_gaussian_model_level.grib1 reduced_gaussian_model_level.grib2
    +
    The comparison is successful because the two messages contain the same information coded in two different ways. We can display the list of keys used by grib_compare adding the option -v (verbose).
    +>grib_compare -ve reduced_gaussian_model_level.grib1 reduced_gaussian_model_level.grib2
    +reduced_gaussian_model_level.grib2
    +  comparing centre as string
    +  comparing paramId as string
    +  comparing shortName as string
    +  comparing typeOfLevel as string
    +  comparing level as long
    +  comparing pv as double  (184 values) tolerance=0
    +  comparing latitudeOfFirstGridPointInDegrees as double  (1 values) tolerance=0.0005
    +  comparing longitudeOfFirstGridPointInDegrees as double  (1 values) tolerance=0.0005
    +  comparing latitudeOfLastGridPointInDegrees as double  (1 values) tolerance=0.0005
    +  comparing longitudeOfLastGridPointInDegrees as double  (1 values) tolerance=0.0005
    +  comparing iDirectionIncrementInDegrees is set to missing in both fields
    +  comparing N as long
    +  comparing iScansNegatively as long
    +  comparing jScansPositively as long
    +  comparing jPointsAreConsecutive as long
    +  comparing pl as long
    +  comparing gridType as string
    +  comparing packedValues as double  (6114 values) tolerance=0
    +  comparing param as string
    +  comparing levtype as string
    +  comparing levelist as long
    +  comparing date as long
    +  comparing time as long
    +  comparing step as long
    +  comparing class as long
    +  comparing type as long
    +  comparing stream as long
    +  comparing expver as string
    +  comparing domain as string
    +
    +1 of 1 grib messages in reduced_gaussian_model_level.grib2
    +
    +1 of 1 total grib messages in 1 files
    +
    For each key the type used in the comparison is reported and for the floating point keys also the tolerance used is printed.
    +
    +
  3. Some options are provided to compare only a set of keys in the messages. The option -H is used to compare only the headers coded in the message, it doesn't compare the data values. The option "-c key1:[l/d/s/n],key2:[l/d/s/n],... " can be used to compare a set of keys or namespaces. The letter after the colon is optional and it is used to force the type used in the comparison which is otherwise assumed to be the native type of the key. The possible types are:
      +
    • :l -> integer (C type long)
    • :d -> floating point (C type double)
    • :s -> string
    • :n -> namespace.
    +When the type "n" is used all the set of keys belonging to the specified namespace are compared assuming their own native type. To illustrate how these options work we change the values coded in a message using grib_filter with the following rules file (see grib_filter).
    +set bitsPerValue=10;
    +set values={1,2.5,3,4,5,6,70};
    +write "first.grib1";
    +set values={1,2.5,5,4,5,6,70};
    +write "second.grib1";
    +
    We first compare the two files using the -H option (only headers are compared).
    +>grib_compare -H first.grib1 second.grib1
    +
    The comparison is successful because the data are not compared. To compare only the data we have to compare the "data namespace".
    +>grib_compare -c data:n first.grib1 second.grib1
    +
    +-- GRIB #1 -- shortName=t paramId=130 stepRange=0 levelType=ml level=1 packingType=grid_simple gridType=reduced_gg --
    +double [packedValues]: 1 out of 7 different,  max absolute diff. = 2, relative diff. = 0.4
    +	max diff. element 2: 3.00000000000000000000e+00 5.00000000000000000000e+00
    +	tolerance=0 packingError: [0.04] [0.04]
    +	values max= [70.04]  [70.04]         min= [1] [1]
    +
    The comparison is showing that one of seven values is different in a comparison with the (default) absolute tolerance=0. We can change the tolerance with the -A option:
    +>grib_compare -A 2 -c data:n first.grib1 second.grib1
    +
    and we see that the comparison is successful if the absolute tolerance is set to 2. We can also set the relative tolerance for each key with the option -R:
    +>grib_compare -R packedValues=0.4 -c data:n first.grib1 second.grib1
    +
    and we get again a successful comparison because the relative tolerance is bigger than the relative absolute difference of two corresponding values. Another possible choice for the tolerance is to be equal to the packingError, which is the error due to the packing algorithm. If we change the decimalPrecision of a packed field we introduce a packing error sometimes bigger than the original packing error.
    +>grib_set -s changeDecimalPrecision=0 first.grib1 third.grib1
    +
    and we compare the two fields using the -P option (tolerance=packingError).
    +>grib_compare -P -c data:n first.grib1 third.grib1
    +
    the comparison is successful because their difference is within the biggest of the two packing error. With the option -P the comparison is failing only if the original data coded are different, not if the packing precision is changed. If we try again to compare the fields without the -P option:
    +>grib_compare -c data:n first.grib1 third.grib1
    +
    +-- GRIB #1 -- shortName=t paramId=130 stepRange=0 levelType=ml level=1 packingType=grid_simple gridType=reduced_gg --
    +double [packedValues]: 4 out of 7 different,  max absolute diff. = 0.48, relative diff. = 0.16
    +	max diff. element 1: 2.52000000000000001776e+00 3.00000000000000000000e+00
    +	tolerance=0 packingError: [0.04] [0.5]
    +	values max= [70.04]  [70]         min= [1] [1]
    +
    we see that some values are different and that the maximum absolute differenc is close to the biggest packing error (max diff=0.48 packingError=0.5). The packing error was chosen to be 0.5 by setting decimalPrecision to 0 which means that we don't need to preserve any decimal figure.
    +
    +
  4. When we already know that the fields are not numerically identical, but have similar statistical characteristics we can compare their statistics namespaces:
    +>grib_compare -c statistics:n first.grib1 third.grib1
    +
    +-- GRIB #1 -- shortName=t paramId=130 stepRange=0 levelType=ml level=1 packingType=grid_simple gridType=reduced_gg --
    +double [max]: [7.00400000000000062528e+01] != [7.00000000000000000000e+01]
    +	absolute diff. = 0.04, relative diff. = 0.000571102
    +	tolerance=0
    +double [avg]: [1.30914285714285707485e+01] != [1.31428571428571423496e+01]
    +	absolute diff. = 0.0514286, relative diff. = 0.00391304
    +	tolerance=0
    +double [sd]: [2.32994686809877009637e+01] != [2.32589679873534969090e+01]
    +	absolute diff. = 0.0405007, relative diff. = 0.00173827
    +	tolerance=0
    +double [skew]: [-1.41592875700515623549e+01] != [-1.41669971380493855406e+01]
    +	absolute diff. = 0.00770957, relative diff. = 0.000544192
    +	tolerance=0
    +double [kurt]: [7.32364710785659567271e-01] != [7.32723797489455375143e-01]
    +	absolute diff. = 0.000359087, relative diff. = 0.000490071
    +	tolerance=0
    +
    and we see that maximum, minimum, average, standard deviation, skewness and kurtosis are compared. While the values are different by 0.48 the statistics comparison shows that the difference in the statistical values is never bigger than 0.052
    +>grib_compare -A 0.052 -c statistics:n first.grib1 third.grib1
    +
    The statistics namespace is available also for spherical harmonics data and provides information about the field in the geographic space computing them in the spectral space for performance reasons.
    +
    +
  5. When a file contains several fields and some keys are different, it is useful to have a summary report of the keys found different in the messages. This can be obtained with the option -f. We change few keys in a file:
    +>grib_set -w typeOfLevel=surface -s step=48 tigge_pf_ecmwf.grib2 out.grib2
    +
    and comparing with the -f option:
    +>grib_compare -f tigge_pf_ecmwf.grib2 out.grib2
    +
    +-- GRIB #9 -- shortName=skt paramId=235 stepRange=96 levelType=sfc level=0 packingType=grid_simple gridType=regular_ll --
    +long [forecastTime]: [96] != [48]
    +
    +-- GRIB #10 -- shortName=sd paramId=228141 stepRange=96 levelType=sfc level=0 packingType=grid_simple gridType=regular_ll --
    +long [forecastTime]: [96] != [48]
    +
    +-- GRIB #11 -- shortName=sf paramId=228144 stepRange=0-96 levelType=sfc level=0 packingType=grid_simple gridType=regular_ll --
    +long [dayOfEndOfOverallTimeInterval]: [26] != [24]
    +long [lengthOfTimeRange]: [96] != [48]
    +
    +...  output deleted 
    +
    +## ERRORS SUMMARY #######
    +##
    +## Summary of different key values 
    +## forecastTime ( 3 different )
    +## dayOfEndOfOverallTimeInterval ( 11 different )
    +## lengthOfTimeRange ( 11 different )
    +##
    +## 14 different messages out of 38
    +
    +
    we get a list of all the different messages in the files and a summary report of the different keys.
    +
    +
  6. We can change the order of the messages in a file using grib_copy with the -B option:
    +>grib_copy -B typeOfLevel tigge_pf_ecmwf.grib2 out.grib2
    +
    If we now compare the two files:
    +>grib_compare -f tigge_pf_ecmwf.grib2 out.grib2
    +
    +-- GRIB #1 -- shortName=10u paramId=165 stepRange=96 levelType=sfc level=10 packingType=grid_simple gridType=regular_ll --
    +long [discipline]: [0] != [2]
    +long [totalLength]: [1555] != [990]
    +long [parameterCategory]: [2] != [0]
    +long [parameterNumber]: [2] != [22]
    +long [scaledValueOfFirstFixedSurface]: [10] != [0]
    +long [typeOfSecondFixedSurface]: [255] != [106]
    +scaleFactorOfSecondFixedSurface is set to missing in 1st field is not missing in 2nd field
    +scaledValueOfSecondFixedSurface is set to missing in 1st field is not missing in 2nd field
    +long [numberOfValues]: [684] != [239]
    +double [referenceValue]: [-1.57229328155517578125e+01] != [4.15843811035156250000e+01]
    +	absolute diff. = 57.3073, relative diff. = 1.3781
    +	tolerance=3.8147e-06
    +long [binaryScaleFactor]: [-10] != [-15]
    +long [bitsPerValue]: [16] != [24]
    +long [section6Length]: [6] != [92]
    +long [bitMapIndicator]: [255] != [0]
    +long [section7Length]: [1373] != [722]
    +[codedValues] has different size: 1st field: 684, 2nd field: 239
    +...    very long output 
    +
    the comparison is failing because of the different order of the messages. We can use the -r option to compare the files assuming that the messages are not in the same order:
    +>grib_compare -r tigge_pf_ecmwf.grib2 out.grib2
    +
    and we have a successful comparison because for each message in the first file an identical message is found in the second file. This option should be used carefully as it is very time expensive.
+

+
+
+


Generated on Tue Sep 22 15:18:22 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/grib_convert.html b/html/grib_convert.html new file mode 100644 index 000000000..8847a8f2d --- /dev/null +++ b/html/grib_convert.html @@ -0,0 +1,59 @@ + + +grib_api: grib_convert + + + + + +

grib_convert

+DESCRIPTION

+It converts grib messages applying the rules from a conversion_rules file. The rules are of the type "keyname = value;" and if blocks are allowed as if ( keyname1 == value1 || keyname2 != value2 && keyname3 == value3 ) { keyname4 = value4; }

+USAGE

+grib_convert [options] conversion_rules grib_file grib_file ... output_grib_file

+OPTIONS

+-f
+ Force. Force the execution not to fail on error.
+
+ -M
+ Multi-grib support off. Turn off support for multiple fields in single grib message
+
+ -g
+ Copy GTS header.
+
+ -G
+ GRIBEX compatibility mode.
+
+ -V
+ Version.
+
+ -7
+ Does not fail when the message has wrong length
+
+ -v
+ Verbose.
+
+

+grib_convert examples

+The following grib_convert rules convert all the grib messages contained in the input files in grib edition 2 and if a 2 metre temperature is found also the keys contained in the culy bracket are changed.
+
editionNumber = 2;
+if( indicatorOfParameter == 11 && indicatorOfTypeOfLevel == 105)
+{
+    productDefinitionTemplateNumber = 1;
+    typeOfFirstFixedSurface         = 103;
+    scaleFactorOfFirstFixedSurface  = 0;
+    scaledValueOfFirstFixedSurface  = 2;
+}
+

Generated on Tue Sep 22 15:18:22 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/grib_copy.html b/html/grib_copy.html new file mode 100644 index 000000000..587f91816 --- /dev/null +++ b/html/grib_copy.html @@ -0,0 +1,82 @@ + + +grib_api: grib_copy + + + + + +

grib_copy

+DESCRIPTION

+Copies the content of grib files printing values of some keys.

+USAGE

+grib_copy [options] grib_file grib_file ... output_grib_file

+OPTIONS

+-f
+ Force. Force the execution not to fail on error.
+
+ -r
+ 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.
+
+ -p key[:{s/d/l}],key[:{s/d/l}],...
+ Declaration of keys to print. For each key a string (key:s) or a double (key:d) or a long (key:l) type can be requested. Default type is string.
+
+ -P key[:{s/d/l}],key[:{s/d/l}],...
+ As -p adding the declared keys to the default list.
+
+ -w key[:{s/d/l}]=value,key[:{s/d/l}]=value,...
+ 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) type can be defined. Default type is string.
+
+ -B order by directive
+ Order by. The output will be ordered according the order by directive. Order by example: "step asc, centre desc" (step ascending and centre discending)
+
+ -V
+ Version.
+
+ -W width
+ Minimum width of each column in output. Default is 10.
+
+ -M
+ Multi-grib support off. Turn off support for multiple fields in single grib message
+
+ -g
+ Copy GTS header.
+
+ -G
+ GRIBEX compatibility mode.
+
+ -7
+ Does not fail when the message has wrong length
+
+ -v
+ Verbose.
+
+

+grib_copy examples

+
    +
  1. To copy only the pressure levels from a file
    +
    +> grib_copy -w levtype=pl ../data/tigge_pf_ecmwf.grib2 out.grib
    +

    +
  2. To copy only the fields that are not on pressure levels from a file
    +
    +> grib_copy -w levtype!=pl ../data/tigge_pf_ecmwf.grib2 out.grib
    +

    +
  3. A grib_file with multi field messages can be converted in single field messages with a simple grib_copy.
    +
    +> grib_copy multi.grib simple.grib
    +

    +
+
Generated on Tue Sep 22 15:18:22 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/grib_debug.html b/html/grib_debug.html new file mode 100644 index 000000000..1a8a948df --- /dev/null +++ b/html/grib_debug.html @@ -0,0 +1,649 @@ + + +grib_api: grib_debug + + + + + +

grib_debug

+DESCRIPTION

+Dump the content of a grib file in debug mode.

+USAGE

+grib_debug [options] grib_file grib_file ...

+OPTIONS

+-V
+ Version.
+
+

+grib_debug examples

+Dumping in a WMO documentation style with hexadecimal octet values (-H)
+ and with the aliases of each key listed in square brackets (-a).
+
+ grib_dump -Ha ../data/reduced_gaussian_model_level.grib1
+
+***** FILE: ../data/reduced_gaussian_model_level.grib1 
+======================   MESSAGE 1 ( length=10142 )            ======================
+======================   SECTION_0 ( length=0, padding=0 )     ======================
+1-4       identifier = GRIB
+5-7       totalLength = 10142 ( 0x00 0x27 0x9E )
+8         editionNumber = 1 ( 0x01 ) [ls.edition]
+======================   SECTION_1 ( length=52, padding=0 )    ======================
+1-3       section1Length = 52 ( 0x00 0x00 0x34 )
+4         gribTablesVersionNo = 128 ( 0x80 ) [table2Version]
+5         identificationOfOriginatingGeneratingCentre = 98 ( 0x62 ) [European Center for Medium-Range Weather Forecasts (grib1/0.table) ] [ls.centre, identificationOfCentre, originatingCentre]
+6         generatingProcessIdentifier = 128 ( 0x80 ) [generatingProcessIdentificationNumber, process]
+7         gridDefinition = 255 ( 0xFF )
+8         section1Flags = 128 [10000000]
+9         indicatorOfParameter = 130 ( 0x82 ) [T Temperature K (grib1/2.98.128.table) ]
+10        indicatorOfTypeOfLevel = 109 ( 0x6D ) [Hybrid level level number (2 octets) (grib1/3.table) ] [ls.levelType, typeOfLevel, typeOfFirstFixedSurface, mars.levtype]
+11-12     lev = 1 ( 0x00 0x01 ) [topLevel, bottomLevel, ls.level, mars.levelist]
+13        yearOfCentury = 7 ( 0x07 )
+14        month = 3 ( 0x03 )
+15        day = 18 ( 0x12 )
+16        hour = 12 ( 0x0C )
+17        minute = 0 ( 0x00 )
+18        indicatorOfUnitOfTimeRange = 1 ( 0x01 ) [Hour (grib1/4.table) ]
+19        periodOfTime = 0 ( 0x00 ) [P1]
+20        periodOfTimeIntervals = 0 ( 0x00 ) [P2]
+21        timeRangeIndicator = 0 ( 0x00 ) [Forecast product valid at reference time + P1 (P1>0) (grib1/5.table) ]
+22-23     numberIncludedInAverage = 0 ( 0x00 0x00 )
+24        numberMissingFromAveragesOrAccumulations = 0 ( 0x00 )
+25        centuryOfReferenceTimeOfData = 21 ( 0x15 )
+26        identificationOfOriginatingGeneratingSubCentre = 0 ( 0x00 ) [Absent (grib1/0.table) ] [subCentre]
+27-28     decimalScaleFactor = 2 ( 0x00 0x02 )
+29-40     reservedNeedNotBePresent = 12 {
+               00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00
+            } # pad reservedNeedNotBePresent 
+41        localDefinitionNumber = 1 ( 0x01 )
+42        marsClass = 1 ( 0x01 ) [Operational archive (mars/class.table) ] [mars.class]
+43        marsType = 2 ( 0x02 ) [Analysis (mars/type.table) ] [ls.dataType, mars.type]
+44-45     marsStream = 1025 ( 0x04 0x01 ) [Atmospheric model (mars/stream.table) ] [mars.stream]
+46-49     experimentVersionNumber = 0001 [mars.expver]
+50        perturbationNumber = 0 ( 0x00 )
+51        numberOfForecastsInEnsemble = 0 ( 0x00 )
+52        padding_local1_1 = 1 {
+                     00
+                  } # pad padding_local1_1 
+======================   SECTION_2 ( length=896, padding=0 )   ======================
+1-3       section2Length = 896 ( 0x00 0x03 0x80 )
+4         numberOfVerticalCoordinateValues = 184 ( 0xB8 ) [NV, numberOfCoordinatesValues]
+5         pvlLocation = 33 ( 0x21 )
+6         dataRepresentationType = 4 ( 0x04 ) [Gaussian Latitude/Longitude Grid (grib1/6.table) ]
+7-8       numberOfPointsAlongAParallel = MISSING ( 0xFF 0xFF ) [geography.Ni]
+9-10      numberOfPointsAlongAMeridian = 64 ( 0x00 0x40 ) [geography.Nj]
+11-13     latitudeOfFirstGridPoint = 87864 ( 0x01 0x57 0x38 ) [La1]
+14-16     longitudeOfFirstGridPoint = 0 ( 0x00 0x00 0x00 ) [Lo1]
+17        resolutionAndComponentFlags = 0 [00000000]
+18-20     latitudeOfLastGridPoint = -87864 ( 0x81 0x57 0x38 ) [La2]
+21-23     longitudeOfLastGridPoint = 357188 ( 0x05 0x73 0x44 ) [Lo2]
+24-25     iDirectionIncrement = MISSING ( 0xFF 0xFF ) [Di]
+26-27     numberOfParallelsBetweenAPoleAndTheEquator = 32 ( 0x00 0x20 )
+28        scanningMode = 0 [00000000]
+29-32     padding_grid4_1 = 4 {
+                  00, 00, 00, 00
+               } # pad padding_grid4_1 
+33-768    pv = (184,736) {
+         0,    2.00004,    3.98083,    7.38719,    12.9083,    21.4136,    33.9529,    51.7466, 
+   76.1677,    108.716,    150.986,    204.637,    271.356,    352.824,    450.686,    566.519, 
+   701.813,    857.946,    1036.17,    1237.59,    1463.16,    1713.71,    1989.87,    2292.16, 
+    2620.9,     2976.3,    3358.43,     3767.2,    4202.42,    4663.78,    5150.86,    5663.16, 
+   6199.84,    6759.73,    7341.47,    7942.93,    8564.62,     9208.3,    9873.56,    10558.9, 
+   11262.5,    11982.7,    12713.9,    13453.2,      14192,    14922.7,    15638.1,    16329.6, 
+   16990.6,    17613.3,      18191,      18717,    19184.5,    19587.5,    19919.8,    20175.4, 
+   20348.9,    20434.2,    20426.2,      20319,      20107,    19785.4,    19348.8,    18798.8, 
+   18141.3,    17385.6,    16544.6,    15633.6,    14665.6,    13653.2,    12608.4,    11543.2, 
+   10471.3,    9405.22,    8356.25,    7335.16,    6353.92,     5422.8,    4550.21,    3743.46, 
+   3010.15,     2356.2,    1784.85,    1297.66,    895.194,    576.314,    336.772,    162.043, 
+   54.2083,    6.57563,    0.00316,          0,          0,          0,          0,          0, 
+         0,          0,          0,          0
+... 84 more values
+} # ibmfloat pv 
+769-896   pl = (64,128) {
+        20,         27,         36,         40,         45,         50,         60,         64, 
+        72,         75,         80,         90,         90,         96,        100,        108, 
+       108,        120,        120,        120,        128,        128,        128,        128, 
+       128,        128,        128,        128,        128,        128,        128,        128, 
+       128,        128,        128,        128,        128,        128,        128,        128, 
+       128,        128,        128,        128,        120,        120,        120,        108, 
+       108,        100,         96,         90,         90,         80,         75,         72, 
+        64,         60,         50,         45,         40,         36,         27,         20
+} # unsigned pl 
+======================   SECTION_4 ( length=9182, padding=0 )   ======================
+1-3       section4Length = 9182 ( 0x00 0x23 0xDE )
+4         dataFlag = 0 [00000000]
+5-6       binaryScaleFactor = 0 ( 0x00 0x00 )
+7-10      referenceValue = 17402.8
+11        numberOfBitsContainingEachPackedValue = 12 ( 0x0C ) [nbp, numberOfBits, bitsPerValue]
+12-9182   values = (6114,9171) {
+   203.778,    203.468,    202.958,    202.348,    201.758,    201.278,    200.888,    200.558, 
+   200.268,    200.078,    200.068,    200.318,    200.808,    201.458,    202.138,    202.758, 
+   203.248,    203.588,    203.798,    203.878,    205.968,    205.418,    204.438,    203.218, 
+   202.008,    201.128,    200.708,    200.598,    200.478,    200.228,    199.908,    199.528, 
+   199.108,    198.708,    198.528,    198.748,    199.458,    200.488,    201.548,    202.478, 
+   203.358,    204.178,    204.808,    205.198,    205.508,    205.838,    206.068,    207.338, 
+   206.488,    205.198,    203.798,    202.548,    201.528,    200.848,    200.638,    200.818, 
+   201.028,    200.888,    200.308,    199.638,    199.228,    199.018,    198.738,    198.328, 
+   197.868,    197.358,    196.928,    196.858,    197.348,    198.368,    199.638,    200.758, 
+   201.538,    202.288,    203.338,    204.438,    205.158,    205.558,    205.938,    206.438, 
+   207.008,    207.468,    207.638,    207.178,    206.658,    205.398,    203.788,    202.468, 
+   201.338,    200.298,    199.938,    200.318,    200.608,    200.478,    200.008,    199.208, 
+   198.278,    197.708,    197.558,    197.318
+... 6014 more values
+} # data_g1simple_packing values 
+======================   SECTION_5 ( length=4, padding=0 )     ======================
+1-4       7777 = 7777
+

+
+
+ How to obtain all the key names available in a grib file.
+
+ grib_dump -D ../data/regular_latlon_surface.grib1
+***** FILE: ../data/regular_latlon_surface.grib1 
+======================   MESSAGE 1 ( length=1100 )             ======================
+0-0 constant oneConstant = 1
+0-0 constant oneMillionConstant = 1000000
+0-0 offset_file offset = 0
+0-0 count_file count = 1
+0-0 count_total countTotal = 1
+0-0 lookup kindOfProduct = 1196575042 [GRIB 1196575042 0-4]
+0-0 lookup GRIBEditionNumber = 1 [? 1 7-1]
+======> section GRIB (1100,1100,0)
+   0-0 constant grib1divider = 1000
+   0-0 constant ieeeFloats = 0
+   0-0 transient dummy = 1
+   ======> section section_0 (0,0,0)
+      ----> label empty 
+   <===== section section_0
+   0-4 ascii identifier = GRIB
+   4-7 g1_message_length totalLength = 1100
+   7-8 unsigned editionNumber = 1 [ls.edition]
+   ======> section section_1 (52,52,0)
+      8-8 constant ECMWF = 98
+      8-8 position offsetSection1 = 8
+      8-11 section_length section1Length = 52
+      11-12 unsigned gribTablesVersionNo = 128 [table2Version]
+      12-13 codetable identificationOfOriginatingGeneratingCentre = 98 [European Center for Medium-Range Weather Forecasts (grib1/0.table) ] [ls.centre, identificationOfCentre, originatingCentre]
+      13-14 unsigned generatingProcessIdentifier = 128 [generatingProcessIdentificationNumber, process]
+      14-15 unsigned gridDefinition = 255
+      15-16 codeflag section1Flags = 128 [10000000:(1=1)  Section 2 included;(2=0)  Section 3 omited:grib1/1.table]
+      16-17 codetable indicatorOfParameter = 167 [2T 2 metre temperature K (grib1/2.98.128.table) ]
+      17-17 sprintf marsParam = 167.128 [mars.param, ls.param]
+      17-18 codetable indicatorOfTypeOfLevel = 1 [Surface (of the Earth, which includes sea surface) (grib1/3.table) ] [ls.levelType, typeOfLevel, typeOfFirstFixedSurface, mars.levtype]
+      18-20 unsigned lev = 0 [topLevel, bottomLevel, ls.level, mars.levelist]
+      20-21 unsigned yearOfCentury = 7
+      21-22 unsigned month = 3
+      22-23 unsigned day = 18
+      23-24 unsigned hour = 12
+      24-25 unsigned minute = 0
+      25-25 constant second = 0
+      25-26 codetable indicatorOfUnitOfTimeRange = 1 [Hour (grib1/4.table) ]
+      26-27 unsigned periodOfTime = 0 [P1]
+      27-28 unsigned periodOfTimeIntervals = 0 [P2]
+      28-29 codetable timeRangeIndicator = 0 [Forecast product valid at reference time + P1 (P1>0) (grib1/5.table) ]
+      29-31 unsigned numberIncludedInAverage = 0
+      31-32 unsigned numberMissingFromAveragesOrAccumulations = 0
+      32-33 unsigned centuryOfReferenceTimeOfData = 21
+      33-34 codetable identificationOfOriginatingGeneratingSubCentre = 0 [Absent (grib1/0.table) ] [subCentre]
+      34-36 signed decimalScaleFactor = 0
+      36-36 transient setLocalDefinition = 0
+      36-48 pad reservedNeedNotBePresent = 12 {
+         00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00
+      } # pad reservedNeedNotBePresent 
+      48-48 g1date dataDate = 20070318 [mars.date, ls.date]
+      48-48 evaluate year = 2007
+      48-48 g1monthlydate monthlyDate = 20070301
+      48-48 time dataTime = 1200 [mars.time]
+      48-48 g1startstep marsStartStep = 0 [mars.startStep]
+      48-48 g1endstep marsEndStep = 0 [mars.endStep]
+      48-48 g1step marsStep = 0 [mars.step, ls.step, forecastTime]
+      48-48 g1verificationdate verificationDate = 20070318
+      48-48 g1monthlydate monthlyVerificationDate = 20070301
+      48-48 g1day_of_the_year_date dayOfTheYearDate = 2007-078
+      48-48 constant wrongPadding = 0
+      48-48 constant localUsePresent = 1
+      48-48 g1param parameter = 167
+      48-49 unsigned localDefinitionNumber = 1
+      ======> section localDefinition (11,11,0)
+         ======> section mars_labeling (8,8,0)
+            49-50 codetable marsClass = 1 [Operational archive (mars/class.table) ] [mars.class]
+            50-51 codetable marsType = 2 [Analysis (mars/type.table) ] [ls.dataType, mars.type]
+            51-53 codetable marsStream = 1025 [Atmospheric model (mars/stream.table) ] [mars.stream]
+            53-57 ksec1expver experimentVersionNumber = 0001 [mars.expver]
+            57-57 constant SimulationsOf30Days = s3
+            57-57 constant TYPE_S3 = 22
+         <===== section mars_labeling
+         57-58 unsigned perturbationNumber = 0
+         58-59 unsigned numberOfForecastsInEnsemble = 0
+         59-60 pad padding_local1_1 = 1 {
+            00
+         } # pad padding_local1_1 
+      <===== section localDefinition
+      60-60 transient centreForTableNumber = 98
+      60-60 section_padding localExtensionPadding = 0 {}
+      60-60 section_padding section1Padding = 0 {}
+      60-60 padtoeven evenpadding_sec1 = 0 {}
+      60-60 concept grib1_short_name = 2T [ls.short_name]
+      60-60 concept grib1_name = 2_metre_temperature [name]
+      60-60 concept grib1_units = K [units]
+   <===== section section_1
+   60-60 bit gridDescriptionSectionPresent = 1 [GDSPresent]
+   60-60 bit bitmapPresent = 0 [bitmapSectionPresent]
+   ======> section section_2 (32,32,0)
+      60-60 position offsetSection2 = 60
+      60-63 section_length section2Length = 32
+      63-64 unsigned numberOfVerticalCoordinateValues = 0 [NV, numberOfCoordinatesValues]
+      64-64 constant neitherPresent = 255
+      64-65 unsigned pvlLocation = 255
+      65-66 codetable dataRepresentationType = 0 [Latitude/Longitude Grid (grib1/6.table) ]
+      ======> section dataRepresentation (22,22,0)
+         66-66 constant gridDefinitionTemplateNumber = 0
+         66-68 unsigned numberOfPointsAlongAParallel = 16 [Ni]
+         68-70 unsigned numberOfPointsAlongAMeridian = 31 [Nj]
+         70-73 signed latitudeOfFirstGridPoint = 60000 [La1]
+         73-73 scale latitudeOfFirstGridPointInDegrees = 60 [geography.laFirst]
+         73-76 signed longitudeOfFirstGridPoint = 0 [Lo1]
+         76-76 scale longitudeOfFirstGridPointInDegrees = 0 [geography.loFirst]
+         76-77 codeflag resolutionAndComponentFlags = 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:grib1/7.table]
+         77-77 bit ijDirectionIncrementGiven = 1 [iDirectionIncrementGiven, jDirectionIncrementGiven, DiGiven, DjGiven]
+         77-77 bit earthIsOblate = 0
+         77-77 bit resolutionAndComponentFlags3 = 0
+         77-77 bit resolutionAndComponentFlags4 = 0
+         77-77 bit uvRelativeToGrid = 0
+         77-77 bit resolutionAndComponentFlags6 = 0
+         77-77 bit resolutionAndComponentFlags7 = 0
+         77-77 bit resolutionAndComponentFlags8 = 0
+         77-80 signed latitudeOfLastGridPoint = 0 [La2]
+         80-80 scale latitudeOfLastGridPointInDegrees = 0 [geography.laLast]
+         80-83 signed longitudeOfLastGridPoint = 30000 [Lo2]
+         83-83 transient longitudeOfLastGridPointG1to2 = 30000
+         83-83 scale longitudeOfLastGridPointInDegrees = 30 [geography.loLast]
+         83-85 unsigned iDirectionIncrement = 2000 [Di]
+         85-87 unsigned jDirectionIncrement = 2000 [Dj]
+         87-88 codeflag scanningMode = 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 :grib1/8.table]
+         88-88 bit iScansNegatively = 0
+         88-88 bit jScansPositively = 0
+         88-88 bit jPointsAreConsecutive = 0
+         88-88 constant iScansPositively = 1
+         88-88 bit scanningMode4 = 0
+         88-88 bit scanningMode5 = 0
+         88-88 bit scanningMode6 = 0
+         88-88 bit scanningMode7 = 0
+         88-88 bit scanningMode8 = 0
+         88-88 latlon_increment jDirectionIncrementInDegrees = 2 [geography.jInc, geography.gridNorthSouth]
+         88-88 latlon_increment iDirectionIncrementInDegrees = 2 [geography.iInc, geography.gridWestEast]
+         ----> iterator ITERATOR 
+      <===== section dataRepresentation
+      88-88 position endGridDefinition = 88
+      88-88 transient PVPresent = 0
+      88-88 position offsetBeforePV = 88
+      88-88 position offsetBeforePL = 88
+      88-88 transient PLPresent = 0 [reducedGrid]
+      88-92 padto padding_sec2_1 = 4 {
+         00, 00, 00, 00
+      } # padto padding_sec2_1 
+      92-92 padtoeven padding_sec2_3 = 0 {}
+   <===== section section_2
+   92-92 position endOfHeadersMaker = 92
+   92-92 transient missingValue = 9999
+   92-92 constant tableReference = 0
+   ======> section section_4 (1004,1004,0)
+      92-92 position offsetSection4 = 92
+      92-95 g1_section4_length section4Length = 1004
+      95-95 g1_half_byte_codeflag halfByte = 8
+      95-96 codeflag dataFlag = 8 [00001000:(1=0)  Grid-point data;(2=0)  Simple packing;(3=0)  Floating point values are represented;(4=0)  No additional flags at octet 14:grib1/11.table]
+      96-98 signed binaryScaleFactor = -10
+      98-102 ibmfloat referenceValue = 269.587
+      102-103 unsigned numberOfBitsContainingEachPackedValue = 16 [nbp, numberOfBits, bitsPerValue]
+      103-103 bit sphericalHarmonics = 0
+      103-103 bit complexPacking = 0
+      103-103 bit integerPointValues = 0
+      103-103 bit additionalFlagPresent = 0
+      ======> section dataValues (993,993,0)
+         103-103 constant dataRepresentationTemplateNumber = 0
+         103-103 position offsetBeforeData = 103
+         103-103 constant bitMapIndicator = 255
+         103-1096 data_g1simple_packing values = (496,993) {
+               277.704,    277.797,    278.103,    274.598,    269.587,    278.345,    277.213,     278.19, 
+               277.853,    276.747,    274.361,    273.636,    274.593,    273.782,    273.016,    274.316, 
+               278.492,    278.792,    278.836,    278.333,    277.389,    278.525,    278.175,    277.255, 
+               277.383,    278.047,    277.877,    276.213,     273.99,    278.333,     278.58,    277.642, 
+               278.865,    278.997,    278.509,    278.983,    279.527,    279.414,      278.8,    278.749, 
+               278.895,    279.056,    278.699,    278.426,    276.601,    277.491,    279.646,    279.198, 
+               279.108,    279.156,    279.406,    279.527,    280.344,    280.869,    279.951,    281.621, 
+               281.221,    280.676,    281.049,    280.354,    279.025,    278.192,     280.05,    280.375, 
+                280.68,    281.269,    281.406,    281.483,    279.454,    280.641,    282.984,    282.578, 
+               281.797,    281.542,    281.854,      281.5,    279.917,    280.529,    282.008,    281.102, 
+               282.223,    282.727,    280.315,    278.539,    280.066,    280.789,    280.517,    282.883, 
+               283.897,    285.161,    285.779,    285.847,    281.973,    282.869,    281.926,    280.816, 
+                282.48,    281.894,    281.035,    281.722
+            ... 396 more values
+         } # data_g1simple_packing values 
+      <===== section dataValues
+      1096-1096 size valuesCount = 496
+      1096-1096 concept typeOfGrid = regular_ll [ls.gridType]
+      1096-1096 concept typeOfPacking = grid_simple [ls.packingType, dataRepresentation]
+      1096-1096 padtoeven padding_sec4_1 = 0 {}
+   <===== section section_4
+   ======> section section_5 (4,4,0)
+      ----> label gribSection5 
+      1096-1096 position offsetSection5 = 1096
+      1096-1100 ascii 7777 = 7777
+   <===== section section_5
+<===== section GRIB
+

+
+
+ How to obtain a C code example from a grib file.
+
+ 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* v          = 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_template(NULL,"GRIB2");
+    if(!h) {
+        fprintf(stderr,"Cannot create grib handle\n");
+        exit(1);
+    }
+
+
+    /* empty */
+
+    GRIB_CHECK(grib_set_long(h,"editionNumber",1),0);
+    GRIB_CHECK(grib_set_long(h,"gribTablesVersionNo",128),0);
+
+    /* 98 = European Center for Medium-Range Weather Forecasts (grib1/0.table)  */
+    GRIB_CHECK(grib_set_long(h,"identificationOfOriginatingGeneratingCentre",98),0);
+
+    GRIB_CHECK(grib_set_long(h,"generatingProcessIdentifier",128),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 = 2T 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,"lev",0),0);
+    GRIB_CHECK(grib_set_long(h,"yearOfCentury",7),0);
+    GRIB_CHECK(grib_set_long(h,"month",3),0);
+    GRIB_CHECK(grib_set_long(h,"day",18),0);
+    GRIB_CHECK(grib_set_long(h,"hour",12),0);
+    GRIB_CHECK(grib_set_long(h,"minute",0),0);
+
+    /* 1 = Hour (grib1/4.table)  */
+    GRIB_CHECK(grib_set_long(h,"indicatorOfUnitOfTimeRange",1),0);
+
+    GRIB_CHECK(grib_set_long(h,"periodOfTime",0),0);
+    GRIB_CHECK(grib_set_long(h,"periodOfTimeIntervals",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 = Absent (grib1/0.table)  */
+    GRIB_CHECK(grib_set_long(h,"identificationOfOriginatingGeneratingSubCentre",0),0);
+
+    GRIB_CHECK(grib_set_long(h,"decimalScaleFactor",0),0);
+    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);
+    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,"numberOfPointsAlongAParallel",16),0);
+    GRIB_CHECK(grib_set_long(h,"numberOfPointsAlongAMeridian",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,"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);
+
+
+    /* ITERATOR */
+
+
+    /* 8 = 00001000
+    (1=0)  Grid-point data
+    (2=0)  Simple packing
+    (3=0)  Floating point values are represented
+    (4=0)  No additional flags at octet 14
+    See grib1/11.table */
+    GRIB_CHECK(grib_set_long(h,"dataFlag",8),0);
+
+    GRIB_CHECK(grib_set_long(h,"numberOfBitsContainingEachPackedValue",16),0);
+    size = 496;
+    v    = (double*)calloc(size,sizeof(double));
+    if(!v) {
+        fprintf(stderr,"failed to allocate %d bytes\n",size*sizeof(double));
+        exit(1);
+    }
+
+    v[   0] = 277.704; v[   1] = 277.797; v[   2] = 278.103; v[   3] = 274.598;
+    v[   4] = 269.587; v[   5] = 278.345; v[   6] = 277.213; v[   7] =  278.19;
+    v[   8] = 277.853; v[   9] = 276.747; v[  10] = 274.361; v[  11] = 273.636;
+    v[  12] = 274.593; v[  13] = 273.782; v[  14] = 273.016; v[  15] = 274.316;
+    v[  16] = 278.492; v[  17] = 278.792; v[  18] = 278.836; v[  19] = 278.333;
+    v[  20] = 277.389; v[  21] = 278.525; v[  22] = 278.175; v[  23] = 277.255;
+    v[  24] = 277.383; v[  25] = 278.047; v[  26] = 277.877; v[  27] = 276.213;
+    v[  28] =  273.99; v[  29] = 278.333; v[  30] =  278.58; v[  31] = 277.642;
+    v[  32] = 278.865; v[  33] = 278.997; v[  34] = 278.509; v[  35] = 278.983;
+    v[  36] = 279.527; v[  37] = 279.414; v[  38] =   278.8; v[  39] = 278.749;
+    v[  40] = 278.895; v[  41] = 279.056; v[  42] = 278.699; v[  43] = 278.426;
+    v[  44] = 276.601; v[  45] = 277.491; v[  46] = 279.646; v[  47] = 279.198;
+    v[  48] = 279.108; v[  49] = 279.156; v[  50] = 279.406; v[  51] = 279.527;
+    v[  52] = 280.344; v[  53] = 280.869; v[  54] = 279.951; v[  55] = 281.621;
+    v[  56] = 281.221; v[  57] = 280.676; v[  58] = 281.049; v[  59] = 280.354;
+    v[  60] = 279.025; v[  61] = 278.192; v[  62] =  280.05; v[  63] = 280.375;
+    v[  64] =  280.68; v[  65] = 281.269; v[  66] = 281.406; v[  67] = 281.483;
+    v[  68] = 279.454; v[  69] = 280.641; v[  70] = 282.984; v[  71] = 282.578;
+    v[  72] = 281.797; v[  73] = 281.542; v[  74] = 281.854; v[  75] =   281.5;
+    v[  76] = 279.917; v[  77] = 280.529; v[  78] = 282.008; v[  79] = 281.102;
+    v[  80] = 282.223; v[  81] = 282.727; v[  82] = 280.315; v[  83] = 278.539;
+    v[  84] = 280.066; v[  85] = 280.789; v[  86] = 280.517; v[  87] = 282.883;
+    v[  88] = 283.897; v[  89] = 285.161; v[  90] = 285.779; v[  91] = 285.847;
+    v[  92] = 281.973; v[  93] = 282.869; v[  94] = 281.926; v[  95] = 280.816;
+    v[  96] =  282.48; v[  97] = 281.894; v[  98] = 281.035; v[  99] = 281.722;
+    v[ 100] = 279.978; v[ 101] = 284.138; v[ 102] = 287.234; v[ 103] = 287.831;
+    v[ 104] = 288.452; v[ 105] = 289.882; v[ 106] = 287.776; v[ 107] = 287.946;
+    v[ 108] = 281.466; v[ 109] = 284.771; v[ 110] = 283.343; v[ 111] = 282.477;
+    v[ 112] = 284.723; v[ 113] = 280.869; v[ 114] = 285.693; v[ 115] = 284.132;
+    v[ 116] = 276.881; v[ 117] = 283.388; v[ 118] = 287.295; v[ 119] = 286.764;
+    v[ 120] = 291.798; v[ 121] = 291.607; v[ 122] = 290.086; v[ 123] = 286.769;
+    v[ 124] =  284.24; v[ 125] = 280.884; v[ 126] = 286.866; v[ 127] = 284.694;
+    v[ 128] = 285.417; v[ 129] = 283.823; v[ 130] = 289.898; v[ 131] = 290.317;
+    v[ 132] = 287.031; v[ 133] = 287.949; v[ 134] = 289.263; v[ 135] = 289.869;
+    v[ 136] = 289.926; v[ 137] = 289.535; v[ 138] = 289.817; v[ 139] = 287.768;
+    v[ 140] = 290.394; v[ 141] = 290.294; v[ 142] = 287.069; v[ 143] = 281.759;
+    v[ 144] = 289.132; v[ 145] = 287.316; v[ 146] = 287.548; v[ 147] = 287.181;
+    v[ 148] = 287.645; v[ 149] = 289.492; v[ 150] = 288.956; v[ 151] = 286.634;
+    v[ 152] =   289.7; v[ 153] = 289.189; v[ 154] = 287.704; v[ 155] = 291.151;
+    v[ 156] = 286.208; v[ 157] = 291.093; v[ 158] = 284.818; v[ 159] = 282.097;
+    v[ 160] = 289.244; v[ 161] = 288.263; v[ 162] = 289.545; v[ 163] = 290.018;
+    v[ 164] = 289.881; v[ 165] = 290.215; v[ 166] = 289.999; v[ 167] = 289.447;
+    v[ 168] = 284.105; v[ 169] = 290.686; v[ 170] = 288.128; v[ 171] = 290.241;
+    v[ 172] = 289.116; v[ 173] = 289.576; v[ 174] =   291.8; v[ 175] =  286.35;
+    v[ 176] = 289.239; v[ 177] = 289.525; v[ 178] =  289.45; v[ 179] = 290.114;
+    v[ 180] = 290.301; v[ 181] = 289.429; v[ 182] = 290.005; v[ 183] = 287.195;
+    v[ 184] = 289.823; v[ 185] = 290.313; v[ 186] = 290.792; v[ 187] = 286.693;
+    v[ 188] = 291.941; v[ 189] = 290.783; v[ 190] = 290.818; v[ 191] = 287.234;
+    v[ 192] = 287.001; v[ 193] =  287.49; v[ 194] = 286.791; v[ 195] =  286.71;
+    v[ 196] = 287.182; v[ 197] =  290.49; v[ 198] = 290.322; v[ 199] = 289.957;
+    v[ 200] = 290.056; v[ 201] = 289.915; v[ 202] = 289.917; v[ 203] = 290.251;
+    v[ 204] = 290.502; v[ 205] = 290.782; v[ 206] = 291.367; v[ 207] = 291.025;
+    v[ 208] = 290.326; v[ 209] = 285.912; v[ 210] = 290.003; v[ 211] = 294.341;
+    v[ 212] = 294.048; v[ 213] = 291.771; v[ 214] = 290.675; v[ 215] = 291.203;
+    v[ 216] = 291.478; v[ 217] = 290.939; v[ 218] = 290.555; v[ 219] = 289.821;
+    v[ 220] = 290.126; v[ 221] = 291.021; v[ 222] = 291.243; v[ 223] = 290.761;
+    v[ 224] =  291.05; v[ 225] = 291.556; v[ 226] = 292.386; v[ 227] = 293.149;
+    v[ 228] = 293.301; v[ 229] = 291.821; v[ 230] = 290.157; v[ 231] = 293.427;
+    v[ 232] = 292.629; v[ 233] =  292.25; v[ 234] =  294.59; v[ 235] = 296.421;
+    v[ 236] =  296.16; v[ 237] = 290.221; v[ 238] = 290.882; v[ 239] = 290.864;
+    v[ 240] =  294.69; v[ 241] = 294.224; v[ 242] = 294.332; v[ 243] = 293.917;
+    v[ 244] = 292.863; v[ 245] = 293.005; v[ 246] = 292.814; v[ 247] = 295.443;
+    v[ 248] = 296.665; v[ 249] = 298.566; v[ 250] = 298.846; v[ 251] = 298.165;
+    v[ 252] = 297.105; v[ 253] = 294.729; v[ 254] = 294.968; v[ 255] = 293.305;
+    v[ 256] = 298.003; v[ 257] = 296.402; v[ 258] =  295.03; v[ 259] = 295.649;
+    v[ 260] = 295.811; v[ 261] = 297.203; v[ 262] = 298.222; v[ 263] =  297.12;
+    v[ 264] = 299.167; v[ 265] = 298.919; v[ 266] = 298.372; v[ 267] = 297.932;
+    v[ 268] =  296.47; v[ 269] = 295.208; v[ 270] = 294.647; v[ 271] = 294.034;
+    v[ 272] = 300.407; v[ 273] = 301.659; v[ 274] = 300.621; v[ 275] = 297.093;
+    v[ 276] = 295.676; v[ 277] = 298.434; v[ 278] = 298.906; v[ 279] = 302.369;
+    v[ 280] = 300.815; v[ 281] = 299.277; v[ 282] = 298.643; v[ 283] = 298.381;
+    v[ 284] = 296.632; v[ 285] = 294.887; v[ 286] = 295.411; v[ 287] = 293.665;
+    v[ 288] = 303.051; v[ 289] = 304.741; v[ 290] = 304.555; v[ 291] = 301.901;
+    v[ 292] = 301.846; v[ 293] = 300.793; v[ 294] = 302.141; v[ 295] = 300.521;
+    v[ 296] =  300.74; v[ 297] = 301.164; v[ 298] = 299.811; v[ 299] = 298.146;
+    v[ 300] = 298.443; v[ 301] = 293.905; v[ 302] = 295.545; v[ 303] = 296.185;
+    v[ 304] = 306.254; v[ 305] = 307.698; v[ 306] = 307.503; v[ 307] =  304.62;
+    v[ 308] = 304.458; v[ 309] = 303.097; v[ 310] =  303.69; v[ 311] = 303.482;
+    v[ 312] = 303.514; v[ 313] = 304.001; v[ 314] = 299.346; v[ 315] = 298.529;
+    v[ 316] = 297.935; v[ 317] = 295.495; v[ 318] = 295.846; v[ 319] = 296.122;
+    v[ 320] = 309.596; v[ 321] = 308.059; v[ 322] = 305.473; v[ 323] = 305.581;
+    v[ 324] =  306.11; v[ 325] = 303.994; v[ 326] = 304.602; v[ 327] = 304.286;
+    v[ 328] =  304.18; v[ 329] = 305.511; v[ 330] = 300.083; v[ 331] =  299.69;
+    v[ 332] = 297.061; v[ 333] = 296.252; v[ 334] = 296.508; v[ 335] = 298.427;
+    v[ 336] = 309.837; v[ 337] = 309.568; v[ 338] = 308.175; v[ 339] = 306.983;
+    v[ 340] = 307.399; v[ 341] = 303.002; v[ 342] = 303.582; v[ 343] = 303.765;
+    v[ 344] = 304.829; v[ 345] = 303.815; v[ 346] = 302.952; v[ 347] = 301.263;
+    v[ 348] = 296.397; v[ 349] = 298.184; v[ 350] = 297.765; v[ 351] = 299.807;
+    v[ 352] = 311.829; v[ 353] =  309.43; v[ 354] = 307.672; v[ 355] = 307.068;
+    v[ 356] = 306.384; v[ 357] = 304.862; v[ 358] = 304.397; v[ 359] = 303.944;
+    v[ 360] = 304.673; v[ 361] = 304.326; v[ 362] = 303.948; v[ 363] = 302.827;
+    v[ 364] = 297.377; v[ 365] = 296.722; v[ 366] = 298.711; v[ 367] = 300.744;
+    v[ 368] = 310.353; v[ 369] = 309.716; v[ 370] =  309.28; v[ 371] = 308.163;
+    v[ 372] = 306.711; v[ 373] =  305.75; v[ 374] =  304.74; v[ 375] = 305.384;
+    v[ 376] = 304.885; v[ 377] = 305.735; v[ 378] =  307.71; v[ 379] = 303.764;
+    v[ 380] = 303.073; v[ 381] =  300.87; v[ 382] = 300.858; v[ 383] = 302.205;
+    v[ 384] = 311.264; v[ 385] = 311.085; v[ 386] = 310.432; v[ 387] =  308.94;
+    v[ 388] = 305.619; v[ 389] =     307; v[ 390] = 306.413; v[ 391] = 307.649;
+    v[ 392] = 308.429; v[ 393] = 309.358; v[ 394] = 309.365; v[ 395] = 307.933;
+    v[ 396] =  306.15; v[ 397] = 305.126; v[ 398] = 305.611; v[ 399] = 303.336;
+    v[ 400] = 309.947; v[ 401] = 309.562; v[ 402] = 309.339; v[ 403] = 310.316;
+    v[ 404] = 308.055; v[ 405] = 307.565; v[ 406] = 310.605; v[ 407] =   308.4;
+    v[ 408] = 309.219; v[ 409] = 310.801; v[ 410] = 310.525; v[ 411] =  309.65;
+    v[ 412] = 306.611; v[ 413] = 306.033; v[ 414] = 307.988; v[ 415] = 308.941;
+    v[ 416] =   308.4; v[ 417] = 307.615; v[ 418] = 307.404; v[ 419] = 308.381;
+    v[ 420] = 309.778; v[ 421] = 311.715; v[ 422] = 308.409; v[ 423] = 307.156;
+    v[ 424] = 308.715; v[ 425] = 307.201; v[ 426] = 310.448; v[ 427] =  309.24;
+    v[ 428] = 306.716; v[ 429] = 307.307; v[ 430] = 309.062; v[ 431] = 309.776;
+    v[ 432] = 303.033; v[ 433] =  302.76; v[ 434] = 303.071; v[ 435] = 306.578;
+    v[ 436] = 309.819; v[ 437] = 305.046; v[ 438] = 309.764; v[ 439] = 307.857;
+    v[ 440] = 301.171; v[ 441] = 302.783; v[ 442] = 301.107; v[ 443] = 300.429;
+    v[ 444] = 303.189; v[ 445] = 304.585; v[ 446] = 303.709; v[ 447] = 307.132;
+    v[ 448] = 302.315; v[ 449] = 302.922; v[ 450] = 302.593; v[ 451] = 302.476;
+    v[ 452] = 302.132; v[ 453] = 305.953; v[ 454] = 300.132; v[ 455] = 301.361;
+    v[ 456] = 302.355; v[ 457] = 304.042; v[ 458] = 302.175; v[ 459] = 297.057;
+    v[ 460] = 296.072; v[ 461] = 296.644; v[ 462] = 296.895; v[ 463] =  296.22;
+    v[ 464] = 300.897; v[ 465] = 300.839; v[ 466] = 300.899; v[ 467] = 301.941;
+    v[ 468] = 302.709; v[ 469] = 301.495; v[ 470] = 302.248; v[ 471] = 301.468;
+    v[ 472] = 303.598; v[ 473] = 304.599; v[ 474] = 299.779; v[ 475] =   297.9;
+    v[ 476] = 295.564; v[ 477] = 296.015; v[ 478] = 293.688; v[ 479] = 294.294;
+    v[ 480] = 300.801; v[ 481] = 300.724; v[ 482] = 301.204; v[ 483] = 302.463;
+    v[ 484] = 302.885; v[ 485] = 305.413; v[ 486] = 305.523; v[ 487] = 303.672;
+    v[ 488] = 304.547; v[ 489] = 303.334; v[ 490] = 301.616; v[ 491] = 298.654;
+    v[ 492] = 297.975; v[ 493] = 295.379; v[ 494] =  293.83; v[ 495] = 300.082;
+   
+    GRIB_CHECK(grib_set_double_array(h,"values",v,size),0);
+    free(v);
+
+    /* gribSection5 */
+
+/* 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;
+}
+

+
Generated on Tue Sep 22 15:18:22 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/grib_dump.html b/html/grib_dump.html new file mode 100644 index 000000000..c6a795a00 --- /dev/null +++ b/html/grib_dump.html @@ -0,0 +1,242 @@ + + +grib_api: grib_dump + + + + + +

grib_dump

+DESCRIPTION

+Dump the content of a grib file in different formats.

+USAGE

+grib_dump [options] grib_file grib_file ...

+OPTIONS

+-O
+ Octet mode. WMO documentation style dump.
+
+ -D
+ Debug mode.
+
+ -P key[:{s/d/l}],key[:{s/d/l}],...
+ As -p adding the declared keys to the default list.
+
+ -d
+ Print all data values. Available only in C mode
+
+ -C
+ C code mode. A C code program generating the grib message is dumped.
+
+ -t
+ Print type information.
+
+ -H
+ Print octet content in hexadecimal format.
+
+ -a
+ Dump aliases.
+
+ -w key[:{s/d/l}]{=/!=}value,key[:{s/d/l}]{=/!=}value,...
+ Where clause. Grib 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) type can be specified. Default type is string.
+
+ -M
+ Multi-grib support off. Turn off support for multiple fields in single grib message
+
+ -7
+ Does not fail when the message has wrong length
+
+ -V
+ Version.
+
+ -G
+ GRIBEX compatibility mode.
+
+

+grib_dump examples

+
    +
  1. To dump in a WMO documentation style with hexadecimal octet values (-H)
    +
    +>grib_dump -H ../data/reduced_gaussian_model_level.grib1
    +

    +
  2. To obtain all the key names available in a grib file.
    +
    +> grib_dump -D ../data/regular_latlon_surface.grib1
    +

    +
  3. To obtain a C code example from a grib file.
    +
    >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,"editionNumber",1),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);
    +
    +    /* 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);
    +
    +    /* 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);
    +    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,"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);
    +
    +
    +    /* ITERATOR */
    +
    +
    +    /* NEAREST */
    +
    +    GRIB_CHECK(grib_set_long(h,"bitsPerValue",16),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);
    +
    +    /* gribSection5 */
    +
    +/* 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;
    +}
    +

    +
+
Generated on Tue Sep 22 15:18:22 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/grib_dump_examples.html b/html/grib_dump_examples.html new file mode 100644 index 000000000..e44ec3c88 --- /dev/null +++ b/html/grib_dump_examples.html @@ -0,0 +1,21 @@ + + +grib_api: grib_dump examples + + + + + +

grib_dump examples

With the -O option you can get only the keys actually coded into the message, with the -a option the aliases of each key are printed. grib_dump -Oa "grib_file"
Generated on Tue Sep 22 15:18:22 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/grib_examples.html b/html/grib_examples.html new file mode 100644 index 000000000..fe57c0be9 --- /dev/null +++ b/html/grib_examples.html @@ -0,0 +1,34 @@ + + +grib_api: Grib API examples + + + + + +

Grib API examples

The main features of the grib_api are explained here through some simple examples that can be taken as a starting point to write more complex programs.
+

+Fortran 90

+ +

+C

+
    +
  • get.c is an example showing how to get values through the key names.
  • set.c is an example illustrating how to set values through the key names.
  • keys_iterator.c explains how to get the names of all the keys defined in a message and how to iterate through them.
  • iterator.c shows how to use an iterator on latitude, longitude, values.
  • precision.c illustrates how to control precision when coding a grib field.
  • multi.c is an example describing how to decode a grib message containing many fields.
  • print_data.c is an example on how to print all the data contained in a grib file.
  • nearest.c is an example on how to find the nearest grid points.
  • multi_write.c how to encode a grib message containing many fields.
  • multi.c how to decode a grib message containing many fields.
+

+Fortran 77

+
    +
  • get_fortran.F is an example showing how to get values through the key names.
  • set_fortran.F is an example illustrating how to set values through the key names.
  • keys_iterator_fortran.F explains how to get the names of all the keys defined in a message and how to iterate through them.
  • iterator_fortran.F shows how to use an iterator on latitude, longitude, values.
  • precision_fortran.F illustrates how to control precision when coding a grib field.
  • multi_fortran.F is an example describing how to decode a grib message containing many fields.
  • print_data_fortran.F is an example on how to print all the data contained in a grib file.
+
Generated on Tue Sep 22 15:18:22 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/grib_filter.html b/html/grib_filter.html new file mode 100644 index 000000000..d054d9845 --- /dev/null +++ b/html/grib_filter.html @@ -0,0 +1,124 @@ + + +grib_api: grib_filter + + + + + +

grib_filter

+DESCRIPTION

+Apply the rules defined in rules_file to each grib message in the grib files provided as arguments.

+USAGE

+grib_filter [options] rules_file grib_file grib_file ...

+OPTIONS

+-f
+ Force. Force the execution not to fail on error.
+
+ -o output_grib_file
+ Output grib is written to ouput_grib_file. If an ouput grib file is required and -o is not used, theouput grib is written to filtered.out
+
+ -M
+ Multi-grib support off. Turn off support for multiple fields in single grib message
+
+ -V
+ Version.
+
+ -g
+ Copy GTS header.
+
+ -G
+ GRIBEX compatibility mode.
+
+ -7
+ Does not fail when the message has wrong length
+
+ -v
+ Verbose.
+
+

+grib_filter examples

+
    +
  1. The rules accepted by grib_filter are different from the grib_convert rules due to the kind of work grib_filter it is supposed to do.
    + The main difference between grib_filter and grib_convert is that the convert is a 1 field in input 1 field in output tool, while the filter is a 1 field in input as many field you need in output. At this aim the filter syntax allows a write in the form: write "filename". So that it is possible repeating as many write you need or using a parametrised write to send the output to many files.
    + The grib_filter processes sequentially all the grib messages contained in the input file and it applies the rules to each one.
    + Since the filename used in the write statement can contain some key values, taken from the grib processed when applying the "write rule", several files are produced in output containing fields with the same value of the keys used in the file name.
    + Indeed if we write a rules_file containing the only statement:
    +
    +
    +write "../data/split/[centre]_[date]_[dataType]_[levelType].grib[editionNumber]";
    +

    + Applying this rules_file to the ../data/tigge_pf_ecmwf.grib2 grib file we obtain several files in the ../data/split directory containting fields splitted according their keys values
    +
    +>grib_filter rules_file ../data/tigge_pf_ecmwf.grib2
    +>ls ../data/split
    +ecmf_20060619_pf_sfc.grib2
    +ecmf_20060630_pf_sfc.grib2
    +ecmf_20070122_pf_pl.grib2
    +ecmf_20070122_pf_pt.grib2
    +ecmf_20070122_pf_pv.grib2
    +ecmf_20070122_pf_sfc.grib2
    +

    +
  2. 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
    • :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.
    +
    +write "../data/split/[centre:l]_[date]_[dataType:l]_[levelType].grib[editionNumber]";
    +

    + Running the same command again we obtain a different list of files.
    +
    +>grib_filter rules_file ../data/tigge_pf_ecmwf.grib2
    +>ls ../data/split
    +98_20060619_4_sfc.grib2
    +98_20060630_4_sfc.grib2
    +98_20070122_4_pl.grib2
    +98_20070122_4_pt.grib2
    +98_20070122_4_pv.grib2
    +98_20070122_4_sfc.grib2
    +

    +
  3. Other statements are allowed in the grib_filter syntax:
      +
    • if ( condition ) { statement;}
      + The condition can be made using ==,!= and joining single block conditions with || and &&
      + The statement can be any valid statement also another nested condition
      +
    • 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.
    +# Temperature
    +if ( level == 850 && indicatorOfParameter == 11 ) {
    +    print "found indicatorOfParameter=[indicatorOfParameter] level=[level] date=[date]";
    +    transient oldtype = type ;
    +    set identificationOfOriginatingGeneratingSubCentre=98;
    +    set gribTablesVersionNo = 128;
    +    set indicatorOfParameter = 130;
    +    set localDefinitionNumber=1;
    +    set marsClass="od";
    +    set marsStream="kwbc";
    +    # Negatively/Positively Perturbed Forecast
    +    if ( oldtype == 2 || oldtype == 3 ) {
    +      set marsType="pf";
    +      set experimentVersionNumber="4001";
    +    }
    +    # Control Forecast
    +    if ( oldtype == 1 ) {
    +      set marsType="cf";
    +      set experimentVersionNumber="0001";
    +    }
    +    set numberOfForecastsInEnsemble=11;
    +    write;
    +    print "indicatorOfParameter=[indicatorOfParameter] level=[level] date=[date]";
    +    print;
    +}
    +

    +
+
Generated on Tue Sep 22 15:18:22 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/grib_get.html b/html/grib_get.html new file mode 100644 index 000000000..ee8b0aaaf --- /dev/null +++ b/html/grib_get.html @@ -0,0 +1,80 @@ + + +grib_api: grib_get + + + + + +

grib_get

+DESCRIPTION

+Get values of some keys from a grib file. It is similar to grib_ls, but fails returning an error code when an error occurs (e.g. key not found).

+USAGE

+grib_get [options] grib_file grib_file ...

+OPTIONS

+-f
+ Force. Force the execution not to fail on error.
+
+ -p key[:{s/d/l}],key[:{s/d/l}],...
+ Declaration of keys to print. For each key a string (key:s) or a double (key:d) or a long (key:l) type can be requested. Default type is string.
+
+ -F format
+ C style format for floating point values.
+
+ -l Latitude,Longitude[,MODE,file]
+ 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)
+
+ -P key[:{s/d/l}],key[:{s/d/l}],...
+ As -p adding the declared keys to the default list.
+
+ -w key[:{s/d/l}]{=/!=}value,key[:{s/d/l}]{=/!=}value,...
+ Where clause. Grib 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) type can be specified. Default type is string.
+
+ -n namespace
+ All the keys belonging to namespace are printed.
+
+ -V
+ Version.
+
+ -W width
+ Minimum width of each column in output. Default is 10.
+
+ -m
+ Mars keys are printed.
+
+ -M
+ Multi-grib support off. Turn off support for multiple fields in single grib message
+
+ -g
+ Copy GTS header.
+
+ -G
+ GRIBEX compatibility mode.
+
+ -7
+ Does not fail when the message has wrong length
+
+

+grib_get examples

+
    +
  1. grib_get fails if a key is not found.
    +
    +>grib_get -p gribname ../data/tigge_pf_ecmwf.grib2
    +
    +
  2. To get the step of the first GRIB message in a file:
    +
    +>grib_get -w count=1 -p step ../data/tigge_pf_ecmwf.grib2
    +
+
Generated on Tue Sep 22 15:18:22 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/grib_get_data.html b/html/grib_get_data.html new file mode 100644 index 000000000..bcb3446a2 --- /dev/null +++ b/html/grib_get_data.html @@ -0,0 +1,67 @@ + + +grib_api: grib_get_data + + + + + +

grib_get_data

+DESCRIPTION

+Print a latitude, longitude, data values list

+USAGE

+grib_get_data [options] grib_file grib_file ...

+OPTIONS

+-M
+ Multi-grib support off. Turn off support for multiple fields in single grib message
+
+ -m missingValue
+ 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.
+
+ -p key[:{s/d/l}],key[:{s/d/l}],...
+ Declaration of keys to print. For each key a string (key:s) or a double (key:d) or a long (key:l) type can be requested. Default type is string.
+
+ -R key1=relative_error1,key2=relative_error2,...
+ Compare floating point values using the relative error as tolerance. key1=relative_error will compare key1 using relative_error1. all=relative_error will compare all the floating point keys using relative_error. Default all=0.
+
+ -F format
+ C style format for values. Default is "%.10e"
+
+ -w key[:{s/d/l}]{=/!=}value,key[:{s/d/l}]{=/!=}value,...
+ Where clause. Grib 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) type can be specified. Default type is string.
+
+ -f
+ Force. Force the execution not to fail on error.
+
+ -G
+ GRIBEX compatibility mode.
+
+ -7
+ Does not fail when the message has wrong length
+
+ -V
+ Version.
+
+

+grib_get_data examples

+
    +
  1. To get a latitude, longitude, value list, skipping the missing values(=9999)
    +>grib_get_data ../data/reduced_gaussian_model_level.grib2
    +
  2. If you want to define your missing value=1111 and to print the string missing in place of it
    +>grib_get_data -m 1111:missing ../data/reduced_gaussian_model_level.grib2
    +
  3. If you want to print the value of other keys with the data value list
    +>grib_get_data -p centre,level,step ../data/reduced_gaussian_model_level.grib2
    +
+
Generated on Tue Sep 22 15:18:22 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/grib_keys.html b/html/grib_keys.html new file mode 100644 index 000000000..f0e550fa0 --- /dev/null +++ b/html/grib_keys.html @@ -0,0 +1,153 @@ + + +grib_api: grib_keys + + + + + +

grib_keys

+DESCRIPTION

+Lists the keys available for a type of grib (-T option) or in a grib message from a file (-F option).

+USAGE

+grib_keys [options]

+OPTIONS

+-T type
+ To print the keys available in the given grib type. For a list of the availeble types see -L option.
+
+ -F file
+ To print the keys available in the grib file.
+
+ -x
+ Print the extended set of keys.
+
+ -c
+ Print only coded keys.
+
+ -L
+ List of available types.
+
+ -t
+ Print type information.
+
+ -a
+ Dump aliases.
+
+

+grib_keys examples

+
    +
  1. With the -L option a list of the available templates is printed
    +
    +> grib_keys -L \n
    +GRIB1
    +GRIB2
    +reduced_gg_ml_grib2
    +reduced_gg_pl_grib1
    +reduced_gg_sfc_grib1
    +reduced_gg_ml_grib1
    +reduced_gg_pl_grib2
    +reduced_gg_sfc_grib2
    +reduced_gg_sfc_jpeg_grib2
    +reduced_ll_sfc_grib1
    +reduced_ll_sfc_grib2
    +regular_gg_ml_grib1
    +regular_gg_ml_grib2
    +regular_gg_pl_grib1
    +regular_gg_pl_grib2
    +regular_ll_sfc_grib1
    +regular_ll_sfc_grib2
    +regular_ll_pl_grib1
    +regular_ll_pl_grib2
    +sh_ml_grib1
    +sh_ml_grib2
    +sh_pl_grib1
    +sh_pl_grib2
    +

    +
  2. To print the standard set of key available for a given type
    +
    +> grib_keys -T regular_ll_sfc_grib1
    +=================== regular_ll_sfc_grib1 
    +editionNumber
    +====> SECTION 1 <==== 
    +table2Version
    +centre
    +generatingProcessIdentifier
    +indicatorOfParameter
    +marsParam (read only)
    +indicatorOfTypeOfLevel
    +level
    +timeRangeIndicator
    +subCentre
    +decimalScaleFactor
    +dataDate
    +dataTime
    +stepUnits
    +stepRange
    +startStep
    +endStep
    +localDefinitionNumber
    +marsClass
    +marsType
    +marsStream
    +experimentVersionNumber
    +perturbationNumber
    +numberOfForecastsInEnsemble
    +name (read only)
    +units (read only)
    +bitmapPresent
    +====> SECTION 2 <==== 
    +numberOfVerticalCoordinateValues
    +Ni
    +Nj
    +latitudeOfFirstGridPointInDegrees
    +longitudeOfFirstGridPointInDegrees
    +earthIsOblate
    +uvRelativeToGrid
    +latitudeOfLastGridPointInDegrees
    +longitudeOfLastGridPointInDegrees
    +DjInDegrees
    +DiInDegrees
    +iScansNegatively
    +jScansPositively
    +jPointsAreConsecutive
    +alternativeRowScanning (read only)
    +numberOfDataPoints (read only)
    +numberOfValues (read only)
    +missingValue
    +====> SECTION 4 <==== 
    +binaryScaleFactor (read only)
    +referenceValue (read only)
    +bitsPerValue
    +sphericalHarmonics
    +complexPacking
    +integerPointValues
    +additionalFlagPresent
    +typeOfPacking
    +values
    +numberOfCodedValues (read only)
    +maximum (read only)
    +minimum (read only)
    +average (read only)
    +numberOfMissing (read only)
    +standardDeviation (read only)
    +skewness (read only)
    +kurtosis (read only)
    +isConstant (read only)
    +typeOfGrid
    +getNumberOfValues (read only)
    +====> SECTION 5 <==== 
    +

    +
+
Generated on Tue Sep 22 15:18:22 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/grib_ls.html b/html/grib_ls.html new file mode 100644 index 000000000..b622cf759 --- /dev/null +++ b/html/grib_ls.html @@ -0,0 +1,95 @@ + + +grib_api: grib_ls + + + + + +

grib_ls

+DESCRIPTION

+List content of grib files printing values of some keys. It does not fail when a key is not found.

+USAGE

+grib_ls [options] grib_file grib_file ...

+OPTIONS

+-p key[:{s/d/l}],key[:{s/d/l}],...
+ Declaration of keys to print. For each key a string (key:s) or a double (key:d) or a long (key:l) type can be requested. Default type is string.
+
+ -F format
+ C style format for floating point values.
+
+ -P key[:{s/d/l}],key[:{s/d/l}],...
+ As -p adding the declared keys to the default list.
+
+ -w key[:{s/d/l}]{=/!=}value,key[:{s/d/l}]{=/!=}value,...
+ Where clause. Grib 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) type can be specified. Default type is string.
+
+ -B order by directive
+ Order by. The output will be ordered according the order by directive. Order by example: "step asc, centre desc" (step ascending and centre discending)
+
+ -l Latitude,Longitude[,MODE,file]
+ 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)
+
+ -i index
+ Data value corresponding to the given index is printed.
+
+ -n namespace
+ All the keys belonging to namespace are printed.
+
+ -m
+ Mars keys are printed.
+
+ -V
+ Version.
+
+ -W width
+ Minimum width of each column in output. Default is 10.
+
+ -M
+ Multi-grib support off. Turn off support for multiple fields in single grib message
+
+ -g
+ Copy GTS header.
+
+ -G
+ GRIBEX compatibility mode.
+
+ -7
+ Does not fail when the message has wrong length
+
+

+grib_ls examples

+
    +
  1. Without options a default list of keys is printed.
    + The default list is different depending on the type of grib message.
    +
    +> grib_ls ../data/reduced*.grib1 ../data/regular*.grib1 ../data/reduced*.grib2 \n
    +

    +
  2. To print offset and count number in file use the keys offset and count
    + Also the total count in a set of files is available as countTotal
    +
    +> grib_ls -p offset,count,countTotal ../data/reduced*.grib1
    +

    +
  3. To list only a subset of messages use the -w (where option).
    + Only the pressure levels are listed with the following line.
    +
    +> grib_ls -w levType=pl ../tigge_pf_ecmwf.grib2 
    +

    +
  4. All the grib messages not on pressure levels are listed as follows:
    +
    +> grib_ls -w levType!=pl ../tigge_pf_ecmwf.grib2 
    +

    +
+
Generated on Tue Sep 22 15:18:22 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/grib_set.html b/html/grib_set.html new file mode 100644 index 000000000..9a1976e5a --- /dev/null +++ b/html/grib_set.html @@ -0,0 +1,103 @@ + + +grib_api: grib_set + + + + + +

grib_set

+DESCRIPTION

+Sets key/value pairs in the input grib file and writes each message to the output_grib_file. It fails when an error occurs (e.g. key not found).

+USAGE

+grib_set [options] grib_file grib_file ... output_grib_file

+OPTIONS

+-s key[:{s/d/l}]=value,key[:{s/d/l}]=value,...
+ Key/values to set. For each key a string (key:s) or a double (key:d) or a long (key:l) type can be defined. By default the native type is set.
+
+ -r
+ 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.
+
+ -d value
+ Set all the data values to "value".
+
+ -p key[:{s/d/l}],key[:{s/d/l}],...
+ Declaration of keys to print. For each key a string (key:s) or a double (key:d) or a long (key:l) type can be requested. Default type is string.
+
+ -P key[:{s/d/l}],key[:{s/d/l}],...
+ As -p adding the declared keys to the default list.
+
+ -w key[:{s/d/l}]=value,key[:{s/d/l}]=value,...
+ 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) type can be defined. Default type is string.
+
+ -7
+ Does not fail when the message has wrong length
+
+ -S
+ Strict. Only grib messages matching all the constraints are copied to the output file
+
+ -V
+ Version.
+
+ -M
+ Multi-grib support off. Turn off support for multiple fields in single grib message
+
+ -g
+ Copy GTS header.
+
+ -G
+ GRIBEX compatibility mode.
+
+ -f
+ Force. Force the execution not to fail on error.
+
+ -v
+ Verbose.
+
+

+grib_set examples

+
    +
  1. To set productDefinitionTemplateNumber=2 only for the fields with productDefinitionTemplateNumber=11
    +
    +>grib_set -s productDefinitionTemplateNumber=2 -w productDefinitionTemplateNumber=11 ../data/tigge_pf_ecmwf.grib2 out.grib2
    +

    +
  2. To set productDefinitionTemplateNumber=2 only for the fields for which productDefinitionTemplateNumber is not equal to 11
    +
    +>grib_set -s productDefinitionTemplateNumber=2 -w productDefinitionTemplateNumber!=11 tigge_pf_ecmwf.grib2 out.grib2
    +

    +
  3. When a key is not used all the bits of its value should be set to 1 to indicate that it is missing. Since the length (number of octet) is different from a key to another, the value that we have to code for missing keys is not unique. To give an easy way to set a key to missing a string "missing" or "MISSING" is accepted by grib_set as follows:
    +
    +>grib_set -s scaleFactorOfFirstFixedSurface=missing,scaledValueOfFirstFixedSurface=MISSING ../data/regular_latlon_surface.grib2 out.grib2
    +

    + Since some values can not be set to missing you can get an error for those keys.
  4. To set scaleFactorOfSecondFixedSurface to missing only for the fields for which scaleFactorOfSecondFixedSurface is not missing:
    +
    +>grib_set -s scaleFactorOfSecondFixedSurface=missing -w scaleFactorOfSecondFixedSurface!=missing tigge_pf_ecmwf.grib2 out.grib2
    +

    +
  5. It's possible to produce a grib edition 2 file from a grib edition 1 just changing the edition number with grib_set. At this stage of development all the geography parameters, level and time information is correctly translated, for the product definition extra set calls must be done. To do this properly grib_convert is suggested.
    +
    +grib_set -s editionNumber=2 ../data/reduced_gaussian_pressure_level.grib1
    +

    +
  6. With grib edition 2 is possible to compress data using the jpeg algorithm. To change packing algorithm from grid_simple (simple packing) to grid_jpeg (jpeg2000 packing):
    +
    +>grib_set -s packingType=grid_jpeg ../data/regular_gaussian_model_level.grib2 out.grib2
    +

    +
  7. It's possible to ask grib_api to calculate the number of bits per value needed to pack a given field with a fixed number of decimal digits of precision. For example if we want to pack a temperature expressed in Kelvin with 1 digits of precision after the decimal point we can set changeDecimalPrecision=1
    +
    +>grib_set -s changeDecimalPrecision=1 ../data/regular_latlon_surface.grib2 ../data/out.grib2
    +rm -f ../data/out.grib2 | true
    +./grib_set -s changeDecimalPrecision=1 ../data/regular_latlon_surface.grib2 ../data/out.grib2
    +

    +
+
Generated on Tue Sep 22 15:18:22 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/group__context.html b/html/group__context.html new file mode 100644 index 000000000..df607bf9a --- /dev/null +++ b/html/group__context.html @@ -0,0 +1,1016 @@ + + +grib_api: The context object + + + + + +

The context object

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Typedefs

typedef void(* grib_free_proc )(const grib_context *c, void *data)
 Grib free procedure, format of a procedure referenced in the context that is used to free memory.
typedef void *(* grib_malloc_proc )(const grib_context *c, size_t length)
 Grib malloc procedure, format of a procedure referenced in the context that is used to allocate memory.
typedef void *(* grib_realloc_proc )(const grib_context *c, void *data, size_t length)
 Grib realloc procedure, format of a procedure referenced in the context that is used to reallocate memory.
typedef void(* grib_log_proc )(const grib_context *c, int level, const char *mesg)
 Grib loc proc, format of a procedure referenced in the context that is used to log internal messages.
typedef void(* grib_print_proc )(const grib_context *c, void *descriptor, const char *mesg)
 Grib print proc, format of a procedure referenced in the context that is used to print external messages.
typedef size_t(* grib_data_read_proc )(const grib_context *c, void *ptr, size_t size, void *stream)
 Grib data read proc, format of a procedure referenced in the context that is used to read from a stream in a resource.
typedef size_t(* grib_data_write_proc )(const grib_context *c, const void *ptr, size_t size, void *stream)
 Grib data read write, format of a procedure referenced in the context that is used to write to a stream from a resource.
typedef off_t(* grib_data_tell_proc )(const grib_context *c, void *stream)
 Grib data tell, format of a procedure referenced in the context that is used to tell the current position in a stream.
typedef off_t(* grib_data_seek_proc )(const grib_context *c, off_t offset, int whence, void *stream)
 Grib data seek, format of a procedure referenced in the context that is used to seek the current position in a stream.
typedef int(* grib_data_eof_proc )(const grib_context *c, void *stream)
 Grib data eof, format of a procedure referenced in the context that is used to test end of file.

Functions

grib_contextgrib_get_context (grib_handle *h)
 Retreive the context from a handle.
grib_contextgrib_context_get_default (void)
 Get the static default context.
grib_contextgrib_context_new (grib_context *c)
 Create and allocate a new context from a parent context.
void grib_context_delete (grib_context *c)
 Frees the cached definition files of the context.
void grib_gts_header_on (grib_context *c)
 Set the gts header mode on.
void grib_gts_header_off (grib_context *c)
 Set the gts header mode off.
void grib_gribex_mode_on (grib_context *c)
 Set the gribex mode on.
void grib_gribex_mode_off (grib_context *c)
 Set the gribex mode off.
void grib_context_set_user_data (grib_context *c, void *udata)
 Sets user data in a context.
void * grib_context_get_user_data (grib_context *c)
 get userData from a context
void grib_context_set_memory_proc (grib_context *c, grib_malloc_proc griballoc, grib_free_proc gribfree, grib_realloc_proc gribrealloc)
 Sets memory procedures of the context.
void grib_context_set_persistent_memory_proc (grib_context *c, grib_malloc_proc griballoc, grib_free_proc gribfree)
 Sets memory procedures of the context for persistent data.
void grib_context_set_buffer_memory_proc (grib_context *c, grib_malloc_proc griballoc, grib_free_proc gribfree, grib_realloc_proc gribrealloc)
 Sets memory procedures of the context for large buffers.
void grib_context_set_path (grib_context *c, const char *path)
 Sets the context search path for definition files.
void grib_context_set_dump_mode (grib_context *c, int mode)
 Sets context dump mode.
void grib_context_set_print_proc (grib_context *c, grib_print_proc printp)
 Sets the context printing procedure used for user interaction.
void grib_context_set_logging_proc (grib_context *c, grib_log_proc logp)
 Sets the context logging procedure used for system (warning, errors, infos .
void grib_multi_support_on (grib_context *c)
 Turn on support for multiple fields in single grib messages.
void grib_multi_support_off (grib_context *c)
 Turn off support for multiple fields in single grib messages.
+

Detailed Description

+The context is a long life configuration object of the grib_api. It is used to define special allocation and free routines or to set special grib_api behaviours and variables.

Typedef Documentation

+ +
+
+ + + + +
typedef int(* grib_data_eof_proc)(const grib_context *c, void *stream)
+
+
+ +

+Grib data eof, format of a procedure referenced in the context that is used to test end of file. +

+

Parameters:
+ + + +
c : the context where the tell will apply
*stream : the stream
+
+
Returns:
the position in the stream
+ +
+

+ +

+
+ + + + +
typedef size_t(* grib_data_read_proc)(const grib_context *c, void *ptr, size_t size, void *stream)
+
+
+ +

+Grib data read proc, format of a procedure referenced in the context that is used to read from a stream in a resource. +

+

Parameters:
+ + + + + +
c : the context where the read will apply
*ptr : the resource
size : size to read
*stream : the stream
+
+
Returns:
size read
+ +
+

+ +

+
+ + + + +
typedef off_t(* grib_data_seek_proc)(const grib_context *c, off_t offset, int whence, void *stream)
+
+
+ +

+Grib data seek, format of a procedure referenced in the context that is used to seek the current position in a stream. +

+

Parameters:
+ + + + + +
c : the context where the tell will apply
offset : the offset to seek to
whence : If whence is set to SEEK_SET, SEEK_CUR, or SEEK_END, the offset is relative to the start of the file, the current position indicator, or end-of-file, respectively.
*stream : the stream
+
+
Returns:
0 if OK, integer value on error
+ +
+

+ +

+
+ + + + +
typedef off_t(* grib_data_tell_proc)(const grib_context *c, void *stream)
+
+
+ +

+Grib data tell, format of a procedure referenced in the context that is used to tell the current position in a stream. +

+

Parameters:
+ + + +
c : the context where the tell will apply
*stream : the stream
+
+
Returns:
the position in the stream
+ +
+

+ +

+
+ + + + +
typedef size_t(* grib_data_write_proc)(const grib_context *c, const void *ptr, size_t size, void *stream)
+
+
+ +

+Grib data read write, format of a procedure referenced in the context that is used to write to a stream from a resource. +

+

Parameters:
+ + + + + +
c : the context where the write will apply
*ptr : the resource
size : size to read
*stream : the stream
+
+
Returns:
size written
+ +
+

+ +

+
+ + + + +
typedef void(* grib_free_proc)(const grib_context *c, void *data)
+
+
+ +

+Grib free procedure, format of a procedure referenced in the context that is used to free memory. +

+

Parameters:
+ + + +
c : the context where the memory freeing will apply
data : pointer to the data to be freed must match
+
+
See also:
grib_malloc_proc
+ +
+

+ +

+
+ + + + +
typedef void(* grib_log_proc)(const grib_context *c, int level, const char *mesg)
+
+
+ +

+Grib loc proc, format of a procedure referenced in the context that is used to log internal messages. +

+

Parameters:
+ + + + +
c : the context where the logging will apply
level : the log level, as defined in log modes
mesg : the message to be logged
+
+ +
+

+ +

+
+ + + + +
typedef void*(* grib_malloc_proc)(const grib_context *c, size_t length)
+
+
+ +

+Grib malloc procedure, format of a procedure referenced in the context that is used to allocate memory. +

+

Parameters:
+ + + +
c : the context where the memory allocation will apply
length : length to be allocated in number of bytes
+
+
Returns:
a pointer to the alocated memory, NULL if no memory can be allocated must match
+
See also:
grib_free_proc
+ +
+

+ +

+
+ + + + +
typedef void(* grib_print_proc)(const grib_context *c, void *descriptor, const char *mesg)
+
+
+ +

+Grib print proc, format of a procedure referenced in the context that is used to print external messages. +

+

Parameters:
+ + + + +
c : the context where the logging will apply
descriptor : the structure to be printed on, must match the implementation
mesg : the message to be printed
+
+ +
+

+ +

+
+ + + + +
typedef void*(* grib_realloc_proc)(const grib_context *c, void *data, size_t length)
+
+
+ +

+Grib realloc procedure, format of a procedure referenced in the context that is used to reallocate memory. +

+

Parameters:
+ + + + +
c : the context where the memory allocation will apply
data : pointer to the data to be reallocated
length : length to be allocated in number of bytes
+
+
Returns:
a pointer to the alocated memory
+ +
+

+


Function Documentation

+ +
+
+ + + + + + + + + +
void grib_context_delete (grib_context c  ) 
+
+
+ +

+Frees the cached definition files of the context. +

+

Parameters:
+ + +
c : the context to be deleted
+
+ +
+

+ +

+
+ + + + + + + + + +
grib_context* grib_context_get_default (void   ) 
+
+
+ +

+Get the static default context. +

+

Returns:
the default context, NULL it the context is not available
+ +
+

+ +

+
+ + + + + + + + + +
void* grib_context_get_user_data (grib_context c  ) 
+
+
+ +

+get userData from a context +

+

Parameters:
+ + +
c : the context from which the user data will be retreived
+
+
Returns:
the user data referenced in the context
+ +
+

+ +

+
+ + + + + + + + + +
grib_context* grib_context_new (grib_context c  ) 
+
+
+ +

+Create and allocate a new context from a parent context. +

+

Parameters:
+ + +
c : the context to be cloned, NULL for default context
+
+
Returns:
the new and empty context, NULL if error
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void grib_context_set_buffer_memory_proc (grib_context c,
grib_malloc_proc  griballoc,
grib_free_proc  gribfree,
grib_realloc_proc  gribrealloc 
)
+
+
+ +

+Sets memory procedures of the context for large buffers. +

+

Parameters:
+ + + +
c : the context to be modified
griballoc : the memory allocation procedure to be set
+
+
See also:
grib_malloc_proc
+
Parameters:
+ + +
gribfree : the memory freeing procedure to be set
+
+
See also:
grib_free_proc
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void grib_context_set_dump_mode (grib_context c,
int  mode 
)
+
+
+ +

+Sets context dump mode. +

+

Parameters:
+ + + +
c : the context to be modified
mode : the log mode to be set
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void grib_context_set_logging_proc (grib_context c,
grib_log_proc  logp 
)
+
+
+ +

+Sets the context logging procedure used for system (warning, errors, infos . +

+..) messages

+

Parameters:
+ + + +
c : the context to be modified
logp : the logging procedure to be set
+
+
See also:
grib_log_proc
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void grib_context_set_memory_proc (grib_context c,
grib_malloc_proc  griballoc,
grib_free_proc  gribfree,
grib_realloc_proc  gribrealloc 
)
+
+
+ +

+Sets memory procedures of the context. +

+

Parameters:
+ + + +
c : the context to be modified
griballoc : the memory allocation procedure to be set
+
+
See also:
grib_malloc_proc
+
Parameters:
+ + +
gribfree : the memory freeing procedure to be set
+
+
See also:
grib_free_proc
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void grib_context_set_path (grib_context c,
const char *  path 
)
+
+
+ +

+Sets the context search path for definition files. +

+

Parameters:
+ + + +
c : the context to be modified
path : the search path to be set
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void grib_context_set_persistent_memory_proc (grib_context c,
grib_malloc_proc  griballoc,
grib_free_proc  gribfree 
)
+
+
+ +

+Sets memory procedures of the context for persistent data. +

+

Parameters:
+ + + +
c : the context to be modified
griballoc : the memory allocation procedure to be set
+
+
See also:
grib_malloc_proc
+
Parameters:
+ + +
gribfree : the memory freeing procedure to be set
+
+
See also:
grib_free_proc
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void grib_context_set_print_proc (grib_context c,
grib_print_proc  printp 
)
+
+
+ +

+Sets the context printing procedure used for user interaction. +

+

Parameters:
+ + + +
c : the context to be modified
printp : the printing procedure to be set
+
+
See also:
grib_print_proc
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void grib_context_set_user_data (grib_context c,
void *  udata 
)
+
+
+ +

+Sets user data in a context. +

+

Parameters:
+ + + +
c : the context to be modified
udata : the user data to set
+
+ +
+

+ +

+
+ + + + + + + + + +
grib_context* grib_get_context (grib_handle h  ) 
+
+
+ +

+Retreive the context from a handle. +

+

Parameters:
+ + +
h : the handle used to retreive the context from
+
+
Returns:
The handle's context, NULL it the handle is invalid
+ +
+

+ +

+
+ + + + + + + + + +
void grib_gribex_mode_off (grib_context c  ) 
+
+
+ +

+Set the gribex mode off. +

+Grib files won't be always compatible with gribex.

+

Parameters:
+ + +
c : the context to be deleted
+
+ +
+

+ +

+
+ + + + + + + + + +
void grib_gribex_mode_on (grib_context c  ) 
+
+
+ +

+Set the gribex mode on. +

+Grib files will be compatible with gribex.

+

Parameters:
+ + +
c : the context to be deleted
+
+ +
+

+ +

+
+ + + + + + + + + +
void grib_gts_header_off (grib_context c  ) 
+
+
+ +

+Set the gts header mode off. +

+The GTS headers will be deleted.

+

Parameters:
+ + +
c : the context to be deleted
+
+ +
+

+ +

+
+ + + + + + + + + +
void grib_gts_header_on (grib_context c  ) 
+
+
+ +

+Set the gts header mode on. +

+The GTS headers will be preserved.

+

Parameters:
+ + +
c : the context to be deleted
+
+ +
+

+ +

+
+ + + + + + + + + +
void grib_multi_support_off (grib_context c  ) 
+
+
+ +

+Turn off support for multiple fields in single grib messages. +

+

Parameters:
+ + +
c : the context to be modified
+
+
Examples:
+multi.f90, and multi_fortran.F.
+
+

+ +

+
+ + + + + + + + + +
void grib_multi_support_on (grib_context c  ) 
+
+
+ +

+Turn on support for multiple fields in single grib messages. +

+

Parameters:
+ + +
c : the context to be modified
+
+
Examples:
+multi.c, multi.f90, and multi_fortran.F.
+
+

+


Generated on Tue Sep 22 15:18:22 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/group__get__set.html b/html/group__get__set.html new file mode 100644 index 000000000..91fc2c0c8 --- /dev/null +++ b/html/group__get__set.html @@ -0,0 +1,938 @@ + + +grib_api: Accessing header and data values + + + + + +

Accessing header and data values

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Functions

int grib_get_offset (grib_handle *h, const char *key, size_t *offset)
 Get the number offset of a key, in a message if several keys of the same name are present, the offset of the last one is returned.
int grib_get_size (grib_handle *h, const char *key, size_t *size)
 Get the number of coded value from a key, if several keys of the same name are present, the total sum is returned.
int grib_get_long (grib_handle *h, const char *key, long *value)
 Get a long value from a key, if several keys of the same name are present, the last one is returned.
int grib_get_double (grib_handle *h, const char *key, double *value)
 Get a double value from a key, if several keys of the same name are present, the last one is returned.
int grib_get_double_element (grib_handle *h, const char *key, int i, double *value)
 Get as double the i-th element of the "key" array.
int grib_get_double_elements (grib_handle *h, const char *key, int *i, long size, double *value)
 Get as double array the elements of the "key" array whose indexes are listed in the input array i.
int grib_get_string (grib_handle *h, const char *key, char *mesg, size_t *length)
 Get a string value from a key, if several keys of the same name are present, the last one is returned.
int grib_get_bytes (grib_handle *h, const char *key, unsigned char *bytes, size_t *length)
 Get raw bytes values from a key.
int grib_get_double_array (grib_handle *h, const char *key, double *vals, size_t *length)
 Get double array values from a key.
int grib_get_long_array (grib_handle *h, const char *key, long *vals, size_t *length)
 Get long array values from a key.
int grib_copy_namespace (grib_handle *dest, const char *name, grib_handle *src)
 Copy the keys belonging to a given namespace from a source handle to a destination handle.
int grib_set_long (grib_handle *h, const char *key, long val)
 Set a long value from a key.
int grib_set_double (grib_handle *h, const char *key, double val)
 Set a double value from a key.
int grib_set_string (grib_handle *h, const char *key, const char *mesg, size_t *length)
 Set a string value from a key.
int grib_set_bytes (grib_handle *h, const char *key, const unsigned char *bytes, size_t *length)
 Set a bytes array from a key.
int grib_set_double_array (grib_handle *h, const char *key, const double *vals, size_t length)
 Set a double array from a key.
int grib_set_long_array (grib_handle *h, const char *key, const long *vals, size_t length)
 Set a long array from a key.
+

Detailed Description

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int grib_copy_namespace (grib_handle dest,
const char *  name,
grib_handle src 
)
+
+
+ +

+Copy the keys belonging to a given namespace from a source handle to a destination handle. +

+

Parameters:
+ + + + +
dest : destination handle
name : namespace
src : source handle
+
+
Returns:
0 if OK, integer value on error
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int grib_get_bytes (grib_handle h,
const char *  key,
unsigned char *  bytes,
size_t *  length 
)
+
+
+ +

+Get raw bytes values from a key. +

+If several keys of the same name are present, the last one is returned

See also:
grib_set_bytes
+
Parameters:
+ + + + + +
h : the handle to get the data from
key : the key to be searched
bytes : the address of a byte array where the data will be retreived
length : the address of a size_t that contains allocated length of the byte array on input, and that contains the actual length of the byte array on output
+
+
Returns:
0 if OK, integer value on error
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int grib_get_double (grib_handle h,
const char *  key,
double *  value 
)
+
+
+ +

+Get a double value from a key, if several keys of the same name are present, the last one is returned. +

+

See also:
grib_set_double
+
Parameters:
+ + + + +
h : the handle to get the data from
key : the key to be searched
value : the address of a double where the data will be retreived
+
+
Returns:
0 if OK, integer value on error
+
Examples:
+get.c, iterator.c, and print_data.c.
+
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int grib_get_double_array (grib_handle h,
const char *  key,
double *  vals,
size_t *  length 
)
+
+
+ +

+Get double array values from a key. +

+If several keys of the same name are present, the last one is returned

See also:
grib_set_double_array
+
Parameters:
+ + + + + +
h : the handle to get the data from
key : the key to be searched
vals : the address of a double array where the data will be retreived
length : the address of a size_t that contains allocated length of the double array on input, and that contains the actual length of the double array on output
+
+
Returns:
0 if OK, integer value on error
+
Examples:
+get.c, precision.c, and print_data.c.
+
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int grib_get_double_element (grib_handle h,
const char *  key,
int  i,
double *  value 
)
+
+
+ +

+Get as double the i-th element of the "key" array. +

+

Parameters:
+ + + + + +
h : the handle to get the data from
key : the key to be searched
i : zero based index
value : the address of a double where the data will be retreived
+
+
Returns:
0 if OK, integer value on error
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int grib_get_double_elements (grib_handle h,
const char *  key,
int *  i,
long  size,
double *  value 
)
+
+
+ +

+Get as double array the elements of the "key" array whose indexes are listed in the input array i. +

+

Parameters:
+ + + + + + +
h : the handle to get the data from
key : the key to be searched
i : zero based array of indexes
size : size of the i and value arrays
value : the address of a double where the data will be retreived
+
+
Returns:
0 if OK, integer value on error
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int grib_get_long (grib_handle h,
const char *  key,
long *  value 
)
+
+
+ +

+Get a long value from a key, if several keys of the same name are present, the last one is returned. +

+

See also:
grib_set_long
+
Parameters:
+ + + + +
h : the handle to get the data from
key : the key to be searched
value : the address of a long where the data will be retreived
+
+
Returns:
0 if OK, integer value on error
+
Examples:
+get.c, multi.c, nearest.c, precision.c, and set.c.
+
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int grib_get_long_array (grib_handle h,
const char *  key,
long *  vals,
size_t *  length 
)
+
+
+ +

+Get long array values from a key. +

+If several keys of the same name are present, the last one is returned

See also:
grib_set_long_array
+
Parameters:
+ + + + + +
h : the handle to get the data from
key : the key to be searched
vals : the address of a long array where the data will be retreived
length : the address of a size_t that contains allocated length of the long array on input, and that contains the actual length of the long array on output
+
+
Returns:
0 if OK, integer value on error
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int grib_get_offset (grib_handle h,
const char *  key,
size_t *  offset 
)
+
+
+ +

+Get the number offset of a key, in a message if several keys of the same name are present, the offset of the last one is returned. +

+

Parameters:
+ + + + +
h : the handle to get the offset from
key : the key to be searched
offset : the address of a size_t where the offset will be set
+
+
Returns:
0 if OK, integer value on error
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int grib_get_size (grib_handle h,
const char *  key,
size_t *  size 
)
+
+
+ +

+Get the number of coded value from a key, if several keys of the same name are present, the total sum is returned. +

+

Parameters:
+ + + + +
h : the handle to get the offset from
key : the key to be searched
size : the address of a size_t where the size will be set
+
+
Returns:
0 if OK, integer value on error
+
Examples:
+count_messages.f90, get.c, get.f90, get_fortran.F, get_pl.f90, get_pv.f90, precision.c, precision.f90, precision_fortran.F, print_data.c, print_data.f90, print_data_fortran.F, samples.f90, and set_bitmap.f90.
+
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int grib_get_string (grib_handle h,
const char *  key,
char *  mesg,
size_t *  length 
)
+
+
+ +

+Get a string value from a key, if several keys of the same name are present, the last one is returned. +

+

See also:
grib_set_string
+
Parameters:
+ + + + + +
h : the handle to get the data from
key : the key to be searched
mesg : the address of a string where the data will be retreived
length : the address of a size_t that contains allocated length of the string on input, and that contains the actual length of the string on output
+
+
Returns:
0 if OK, integer value on error
+
Examples:
+keys_iterator.c, keys_iterator_fortran.F, nearest.c, set.c, and set_fortran.F.
+
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int grib_set_bytes (grib_handle h,
const char *  key,
const unsigned char *  bytes,
size_t *  length 
)
+
+
+ +

+Set a bytes array from a key. +

+If several keys of the same name are present, the last one is set

See also:
grib_get_bytes
+
Parameters:
+ + + + + +
h : the handle to set the data to
key : the key to be searched
bytes : the address of a byte array where the data will be read
length : the address of a size_t that contains the length of the byte array on input, and that contains the actual packed length of the byte array on output
+
+
Returns:
0 if OK, integer value on error
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int grib_set_double (grib_handle h,
const char *  key,
double  val 
)
+
+
+ +

+Set a double value from a key. +

+If several keys of the same name are present, the last one is set

See also:
grib_get_double
+
Parameters:
+ + + + +
h : the handle to set the data to
key : the key to be searched
val : a double where the data will be read
+
+
Returns:
0 if OK, integer value on error
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int grib_set_double_array (grib_handle h,
const char *  key,
const double *  vals,
size_t  length 
)
+
+
+ +

+Set a double array from a key. +

+If several keys of the same name are present, the last one is set

See also:
grib_get_double_array
+
Parameters:
+ + + + + +
h : the handle to set the data to
key : the key to be searched
vals : the address of a double array where the data will be read
length : a size_t that contains the length of the byte array on input
+
+
Returns:
0 if OK, integer value on error
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int grib_set_long (grib_handle h,
const char *  key,
long  val 
)
+
+
+ +

+Set a long value from a key. +

+If several keys of the same name are present, the last one is set

See also:
grib_get_long
+
Parameters:
+ + + + +
h : the handle to set the data to
key : the key to be searched
val : a long where the data will be read
+
+
Returns:
0 if OK, integer value on error
+
Examples:
+multi_write.c, precision.c, and set.c.
+
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int grib_set_long_array (grib_handle h,
const char *  key,
const long *  vals,
size_t  length 
)
+
+
+ +

+Set a long array from a key. +

+If several keys of the same name are present, the last one is set

See also:
grib_get_long_array
+
Parameters:
+ + + + + +
h : the handle to set the data to
key : the key to be searched
vals : the address of a long array where the data will be read
length : a size_t that contains the length of the long array on input
+
+
Returns:
0 if OK, integer value on error
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int grib_set_string (grib_handle h,
const char *  key,
const char *  mesg,
size_t *  length 
)
+
+
+ +

+Set a string value from a key. +

+If several keys of the same name are present, the last one is set

See also:
grib_get_string
+
Parameters:
+ + + + + +
h : the handle to set the data to
key : the key to be searched
mesg : the address of a string where the data will be read
length : the address of a size_t that contains the length of the string on input, and that contains the actual packed length of the string on output
+
+
Returns:
0 if OK, integer value on error
+ +
+

+


Generated on Tue Sep 22 15:18:22 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/group__grib__handle.html b/html/group__grib__handle.html new file mode 100644 index 000000000..7f435cb94 --- /dev/null +++ b/html/group__grib__handle.html @@ -0,0 +1,625 @@ + + +grib_api: The grib_handle + + + + + +

The grib_handle

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Typedefs

typedef struct
+grib_handle 
grib_handle
typedef struct
+grib_multi_handle 
grib_multi_handle

Functions

int grib_count_in_file (grib_context *c, FILE *f, int *n)
 Counts the messages contained in a file resource.
grib_handlegrib_handle_new_from_file (grib_context *c, FILE *f, int *error)
 Create a handle from a file resource.
grib_handlegrib_handle_new_from_message (grib_context *c, void *data, size_t data_len)
 Create a handle from a user message in memory.
grib_handlegrib_handle_new_from_multi_message (grib_context *c, void **data, size_t *data_len, int *error)
 Create a handle from a user message in memory.
grib_handlegrib_handle_new_from_message_copy (grib_context *c, const void *data, size_t data_len)
 Create a handle from a user message.
grib_handlegrib_handle_new_from_template (grib_context *c, const char *res_name)
 Create a handle from a read_only template resource.
grib_handlegrib_handle_new_from_samples (grib_context *c, const char *res_name)
 Create a handle from a message contained in a samples directory.
grib_handlegrib_handle_clone (grib_handle *h)
 Clone an existing handle using the context of the original handle, The message is copied and reparsed.
int grib_handle_delete (grib_handle *h)
 Frees a handle, also frees the message if it is not a user message.
grib_multi_handlegrib_multi_handle_new (grib_context *c)
 Create an empty multi field handle.
int grib_multi_handle_append (grib_handle *h, int start_section, grib_multi_handle *mh)
 Append the sections starting with start_section of the message pointed by h at the end of the multi field handle mh.
int grib_multi_handle_delete (grib_multi_handle *mh)
 Delete multi field handle.
int grib_multi_handle_write (grib_multi_handle *mh, FILE *f)
 Write a multi field handle in a file.
+

Detailed Description

+The grib_handle is the structure giving access to parsed grib values by keys.

Typedef Documentation

+ +
+
+ + + + +
typedef struct grib_handle grib_handle
+
+
+ +

+Grib handle, structure giving access to parsed grib values by keys

Examples:
+get.c, iterator.c, keys_iterator.c, multi.c, multi_write.c, nearest.c, precision.c, print_data.c, and set.c.
+
+

+ +

+
+ + + + +
typedef struct grib_multi_handle grib_multi_handle
+
+
+ +

+Grib multi field handle, structure used to build multi fields messages.

Examples:
+multi_write.c.
+
+

+


Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int grib_count_in_file (grib_context c,
FILE *  f,
int *  n 
)
+
+
+ +

+Counts the messages contained in a file resource. +

+

Parameters:
+ + + + +
c : the context from wich the handle will be created (NULL for default context)
f : the file resource
n : the number of messages in the file
+
+
Returns:
0 if OK, integer value on error
+
Examples:
+count_messages.f90.
+
+

+ +

+
+ + + + + + + + + +
grib_handle* grib_handle_clone (grib_handle h  ) 
+
+
+ +

+Clone an existing handle using the context of the original handle, The message is copied and reparsed. +

+

Parameters:
+ + +
h : The handle to be cloned
+
+
Returns:
the new handle, NULL if the message is invalid or a problem is encountered
+ +
+

+ +

+
+ + + + + + + + + +
int grib_handle_delete (grib_handle h  ) 
+
+
+ +

+Frees a handle, also frees the message if it is not a user message. +

+

See also:
grib_handle_new_from_message
+
Parameters:
+ + +
h : The handle to be deleted
+
+
Returns:
0 if OK, integer value on error
+
Examples:
+get.c, iterator.c, multi.c, multi_write.c, nearest.c, precision.c, print_data.c, and set.c.
+
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
grib_handle* grib_handle_new_from_file (grib_context c,
FILE *  f,
int *  error 
)
+
+
+ +

+Create a handle from a file resource. +

+The file is read until a message is found. The message is then copied. Remember always to delete the handle when it is not needed any more to avoid memory leaks.

+

Parameters:
+ + + + +
c : the context from wich the handle will be created (NULL for default context)
f : the file resource
error : error code set if the returned handle is NULL and the end of file is not reached
+
+
Returns:
the new handle, NULL if the resource is invalid or a problem is encountered
+
Examples:
+get.c, iterator.c, keys_iterator.c, multi.c, multi_write.c, precision.c, print_data.c, and set.c.
+
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
grib_handle* grib_handle_new_from_message (grib_context c,
void *  data,
size_t  data_len 
)
+
+
+ +

+Create a handle from a user message in memory. +

+The message will not be freed at the end. The message will be copied as soon as a modification is needed.

+

Parameters:
+ + + + +
c : the context from which the handle will be created (NULL for default context)
data : the actual message
data_len : the length of the message in number of bytes
+
+
Returns:
the new handle, NULL if the message is invalid or a problem is encountered
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
grib_handle* grib_handle_new_from_message_copy (grib_context c,
const void *  data,
size_t  data_len 
)
+
+
+ +

+Create a handle from a user message. +

+The message is copied and will be freed with the handle

+

Parameters:
+ + + + +
c : the context from wich the handle will be created (NULL for default context)
data : the actual message
data_len : the length of the message in number of bytes
+
+
Returns:
the new handle, NULL if the message is invalid or a problem is encountered
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
grib_handle* grib_handle_new_from_multi_message (grib_context c,
void **  data,
size_t *  data_len,
int *  error 
)
+
+
+ +

+Create a handle from a user message in memory. +

+The message will not be freed at the end. The message will be copied as soon as a modification is needed. This function works also with multi field messages.

+

Parameters:
+ + + + + +
c : the context from which the handle will be created (NULL for default context)
data : the actual message
data_len : the length of the message in number of bytes
error : error code
+
+
Returns:
the new handle, NULL if the message is invalid or a problem is encountered
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
grib_handle* grib_handle_new_from_samples (grib_context c,
const char *  res_name 
)
+
+
+ +

+Create a handle from a message contained in a samples directory. +

+The message is copied at the creation of the handle

+

Parameters:
+ + + +
c : the context from wich the handle will be created (NULL for default context)
res_name : the resource name
+
+
Returns:
the new handle, NULL if the resource is invalid or a problem is encountered
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
grib_handle* grib_handle_new_from_template (grib_context c,
const char *  res_name 
)
+
+
+ +

+Create a handle from a read_only template resource. +

+The message is copied at the creation of the handle

+

Parameters:
+ + + +
c : the context from wich the handle will be created (NULL for default context)
res_name : the resource name
+
+
Returns:
the new handle, NULL if the resource is invalid or a problem is encountered
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int grib_multi_handle_append (grib_handle h,
int  start_section,
grib_multi_handle mh 
)
+
+
+ +

+Append the sections starting with start_section of the message pointed by h at the end of the multi field handle mh. +

+Remember always to delete the multi handle when it is not needed any more to avoid memory leaks.

+

Parameters:
+ + + + +
h : The handle from which the sections are copied.
start_section : section number. Starting from this section all the sections to then end of the message will be copied.
mh : The multi field handle on which the sections are appended.
+
+
Returns:
0 if OK, integer value on error
+
Examples:
+multi_write.c.
+
+

+ +

+
+ + + + + + + + + +
int grib_multi_handle_delete (grib_multi_handle mh  ) 
+
+
+ +

+Delete multi field handle. +

+

Parameters:
+ + +
mh : The multi field handle to be deleted.
+
+
Returns:
0 if OK, integer value on error
+
Examples:
+multi_write.c.
+
+

+ +

+
+ + + + + + + + + +
grib_multi_handle* grib_multi_handle_new (grib_context c  ) 
+
+
+ +

+Create an empty multi field handle. +

+Remember always to delete the multi handle when it is not needed any more to avoid memory leaks.

+

Parameters:
+ + +
c : the context from wich the handle will be created (NULL for default context)
+
+
Examples:
+multi_write.c.
+
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int grib_multi_handle_write (grib_multi_handle mh,
FILE *  f 
)
+
+
+ +

+Write a multi field handle in a file. +

+Remember always to delete the multi handle when it is not needed any more to avoid memory leaks.

+

Parameters:
+ + + +
mh : The multi field handle to be written.
f : File on which the file handle is written.
+
+
Returns:
0 if OK, integer value on error
+
Examples:
+multi_write.c.
+
+

+


Generated on Tue Sep 22 15:18:22 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/group__handling__coded__messages.html b/html/group__handling__coded__messages.html new file mode 100644 index 000000000..fb960710d --- /dev/null +++ b/html/group__handling__coded__messages.html @@ -0,0 +1,124 @@ + + +grib_api: Handling coded messages + + + + + +

Handling coded messages

+ + + + + + + + +

Functions

int grib_get_message (grib_handle *h, const void **message, size_t *message_length)
 getting the message attached to a handle
int grib_get_message_copy (grib_handle *h, void *message, size_t *message_length)
 getting a copy of the message attached to a handle
+

Detailed Description

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int grib_get_message (grib_handle h,
const void **  message,
size_t *  message_length 
)
+
+
+ +

+getting the message attached to a handle +

+

Parameters:
+ + + + +
h : the grib handle to wich the buffer should be gathered
message : the pointer to be set to the handle's data
message_length : at exist, the message size in number of bytes
+
+
Returns:
0 if OK, integer value on error
+
Examples:
+precision.c, and set.c.
+
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int grib_get_message_copy (grib_handle h,
void *  message,
size_t *  message_length 
)
+
+
+ +

+getting a copy of the message attached to a handle +

+

Parameters:
+ + + + +
h : the grib handle to wich the buffer should be returned
message : the pointer to the data buffer to be filled
message_length : at entry, the size in number of bytes of the allocated empty message. At exist, the actual message length in number of bytes
+
+
Returns:
0 if OK, integer value on error
+ +
+

+


Generated on Tue Sep 22 15:18:22 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/group__iterators.html b/html/group__iterators.html new file mode 100644 index 000000000..aaf08634f --- /dev/null +++ b/html/group__iterators.html @@ -0,0 +1,559 @@ + + +grib_api: Iterating on latitude/longitude/values + + + + + +

Iterating on latitude/longitude/values

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Functions

grib_iteratorgrib_iterator_new (grib_handle *h, unsigned long flags, int *error)
 Create a new iterator from a handle, using current geometry and values.
int grib_iterator_next (grib_iterator *i, double *lat, double *lon, double *value)
 Get the next value from an iterator.
int grib_iterator_previous (grib_iterator *i, double *lat, double *lon, double *value)
 Get the previous value from an iterator.
int grib_iterator_has_next (grib_iterator *i)
 Test procedure for values in an iterator.
int grib_iterator_reset (grib_iterator *i)
 Test procedure for values in an iterator.
int grib_iterator_delete (grib_iterator *i)
 Frees an iterator from memory.
grib_nearestgrib_nearest_new (grib_handle *h, int *error)
 Create a new nearest from a handle, using current geometry .
int grib_nearest_find (grib_nearest *nearest, grib_handle *h, double inlat, double inlon, unsigned long flags, double *outlats, double *outlons, double *values, double *distances, int *indexes, size_t *len)
 Find the 4 nearest points of a latitude longitude point.
int grib_nearest_delete (grib_nearest *nearest)
 Frees an nearest from memory.
int grib_nearest_find_multiple (grib_handle *h, int is_lsm, double *inlats, double *inlons, long npoints, double *outlats, double *outlons, double *values, double *distances, int *indexes)
 Find the nearest point of a set of points whose latitudes and longitudes are given in the inlats, inlons arrays respectively.
+

Detailed Description

+

Function Documentation

+ +
+
+ + + + + + + + + +
int grib_iterator_delete (grib_iterator i  ) 
+
+
+ +

+Frees an iterator from memory. +

+

Parameters:
+ + +
i : the iterator
+
+
Returns:
0 if OK, integer value on error
+
Examples:
+iterator.c, and iterator_fortran.F.
+
+

+ +

+
+ + + + + + + + + +
int grib_iterator_has_next (grib_iterator i  ) 
+
+
+ +

+Test procedure for values in an iterator. +

+

Parameters:
+ + +
i : the iterator
+
+
Returns:
boolean, 1 if the iterator still nave next values, 0 otherwise
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
grib_iterator* grib_iterator_new (grib_handle h,
unsigned long  flags,
int *  error 
)
+
+
+ +

+Create a new iterator from a handle, using current geometry and values. +

+

Parameters:
+ + + + +
h : the handle from which the iterator will be created
flags : flags for future use.
error : error code
+
+
Returns:
the new iterator, NULL if no iterator can be created
+
Examples:
+iterator.c, and iterator_fortran.F.
+
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int grib_iterator_next (grib_iterator i,
double *  lat,
double *  lon,
double *  value 
)
+
+
+ +

+Get the next value from an iterator. +

+

Parameters:
+ + + + + +
i : the iterator
lat : on output latitude in degree
lon : on output longitude in degree
value : on output value of the point
+
+
Returns:
positive value if successful, 0 if no more data are available
+
Examples:
+iterator.c, and iterator_fortran.F.
+
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int grib_iterator_previous (grib_iterator i,
double *  lat,
double *  lon,
double *  value 
)
+
+
+ +

+Get the previous value from an iterator. +

+

Parameters:
+ + + + + +
i : the iterator
lat : on output latitude in degree
lon : on output longitude in degree
value : on output value of the point*
+
+
Returns:
positive value if successful, 0 if no more data are available
+ +
+

+ +

+
+ + + + + + + + + +
int grib_iterator_reset (grib_iterator i  ) 
+
+
+ +

+Test procedure for values in an iterator. +

+

Parameters:
+ + +
i : the iterator
+
+
Returns:
0 if OK, integer value on error
+ +
+

+ +

+
+ + + + + + + + + +
int grib_nearest_delete (grib_nearest nearest  ) 
+
+
+ +

+Frees an nearest from memory. +

+

Parameters:
+ + +
nearest : the nearest
+
+
Returns:
0 if OK, integer value on error
+
Examples:
+nearest.c.
+
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int grib_nearest_find (grib_nearest nearest,
grib_handle h,
double  inlat,
double  inlon,
unsigned long  flags,
double *  outlats,
double *  outlons,
double *  values,
double *  distances,
int *  indexes,
size_t *  len 
)
+
+
+ +

+Find the 4 nearest points of a latitude longitude point. +

+The flags are provided to speed up the process of searching. If you are sure that the point you are asking for is not changing from a call to another you can use GRIB_NEAREST_SAME_POINT. The same is valid for the grid. Flags can be used together duing an or.

+

Parameters:
+ + + + + + + + + + + + +
nearest : nearest structure
h : handle from which geography and data values are taken
inlat : latitude of the point to search for
inlon : longitude of the point to search for
flags : GRIB_NEAREST_SAME_POINT, GRIB_NEAREST_SAME_GRID
outlats : returned array of latitudes of the nearest points
outlons : returned array of longitudes of the nearest points
values : returned array of data values of the nearest points
distances : returned array of distances from the nearest points
indexes : returned array of indexes of the nearest points
len : size of the arrays
+
+
Returns:
0 if OK, integer value on error
+
Examples:
+nearest.c.
+
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int grib_nearest_find_multiple (grib_handle h,
int  is_lsm,
double *  inlats,
double *  inlons,
long  npoints,
double *  outlats,
double *  outlons,
double *  values,
double *  distances,
int *  indexes 
)
+
+
+ +

+Find the nearest point of a set of points whose latitudes and longitudes are given in the inlats, inlons arrays respectively. +

+If the flag is_lsm is 1 the nearest land point is returned and the grib passed as handle (h) is considered a land sea mask. The land nearest point is the nearest point with land sea mask value>=0.5. If no nearest land points are found the nearest value is returned. If the flag is_lsm is 0 the nearest point is returned. values, distances, indexes (in the "values" array) for the nearest points (ilons,ilats) are returned.

+

Parameters:
+ + + + + + + + + + + +
h : handle from which geography and data values are taken
is_lsm : lsm flag (1-> nearest land, 0-> nearest)
inlats : latitudes of the points to search for
inlons : longitudes of the points to search for
npoints : number of points (size of the inlats,inlons,outlats,outlons,values,distances,indexes arrays)
outlats : returned array of latitudes of the nearest points
outlons : returned array of longitudes of the nearest points
values : returned array of data values of the nearest points
distances : returned array of distances from the nearest points
indexes : returned array of indexes of the nearest points
+
+
Returns:
0 if OK, integer value on error
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
grib_nearest* grib_nearest_new (grib_handle h,
int *  error 
)
+
+
+ +

+Create a new nearest from a handle, using current geometry . +

+

Parameters:
+ + + +
h : the handle from which the iterator will be created
error : error code
+
+
Returns:
the new nearest, NULL if no nearest can be created
+
Examples:
+nearest.c.
+
+

+


Generated on Tue Sep 22 15:18:22 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/group__keys__iterator.html b/html/group__keys__iterator.html new file mode 100644 index 000000000..2faa8b9a3 --- /dev/null +++ b/html/group__keys__iterator.html @@ -0,0 +1,364 @@ + + +grib_api: Iterating on keys names + + + + + +

Iterating on keys names

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Defines

#define GRIB_KEYS_ITERATOR_ALL_KEYS   0
#define GRIB_KEYS_ITERATOR_SKIP_READ_ONLY   (1<<0)
#define GRIB_KEYS_ITERATOR_SKIP_OPTIONAL   (1<<1)
#define GRIB_KEYS_ITERATOR_SKIP_EDITION_SPECIFIC   (1<<2)
#define GRIB_KEYS_ITERATOR_SKIP_CODED   (1<<3)
#define GRIB_KEYS_ITERATOR_SKIP_COMPUTED   (1<<4)
#define GRIB_KEYS_ITERATOR_SKIP_DUPLICATES   (1<<5)
#define GRIB_KEYS_ITERATOR_SKIP_FUNCTION   (1<<6)

Typedefs

typedef struct
+grib_keys_iterator 
grib_keys_iterator

Functions

grib_keys_iteratorgrib_keys_iterator_new (grib_handle *h, unsigned long filter_flags, char *name_space)
int grib_keys_iterator_next (grib_keys_iterator *kiter)
const char * grib_keys_iterator_get_name (grib_keys_iterator *kiter)
int grib_keys_iterator_delete (grib_keys_iterator *kiter)
int grib_keys_iterator_rewind (grib_keys_iterator *kiter)
+

Detailed Description

+The keys iterator is designed to get the key names defined in a message. Key names on which the iteration is carried out can be filtered through their attributes or by the namespace they belong to.

Define Documentation

+ +
+
+ + + + +
#define GRIB_KEYS_ITERATOR_ALL_KEYS   0
+
+
+ +

+Iteration is carried out on all the keys available in the message

+

See also:
grib_keys_iterator_new
+
Examples:
+keys_iterator.c.
+
+

+ +

+
+ + + + +
#define GRIB_KEYS_ITERATOR_SKIP_CODED   (1<<3)
+
+
+ +

+coded keys are skipped by keys iterator.

+

See also:
grib_keys_iterator_new
+ +
+

+ +

+
+ + + + +
#define GRIB_KEYS_ITERATOR_SKIP_COMPUTED   (1<<4)
+
+
+ +

+computed keys are skipped by keys iterator.

+

See also:
grib_keys_iterator_new
+ +
+

+ +

+
+ + + + +
#define GRIB_KEYS_ITERATOR_SKIP_DUPLICATES   (1<<5)
+
+
+ +

+duplicates of a key are skipped by keys iterator.

+

See also:
grib_keys_iterator_new
+ +
+

+ +

+
+ + + + +
#define GRIB_KEYS_ITERATOR_SKIP_EDITION_SPECIFIC   (1<<2)
+
+
+ +

+edition specific keys are skipped by keys iterator.

+

See also:
grib_keys_iterator_new
+ +
+

+ +

+
+ + + + +
#define GRIB_KEYS_ITERATOR_SKIP_FUNCTION   (1<<6)
+
+
+ +

+function keys are skipped by keys iterator.

+

See also:
grib_keys_iterator_new
+ +
+

+ +

+
+ + + + +
#define GRIB_KEYS_ITERATOR_SKIP_OPTIONAL   (1<<1)
+
+
+ +

+optional keys are skipped by keys iterator.

+

See also:
grib_keys_iterator_new
+ +
+

+ +

+
+ + + + +
#define GRIB_KEYS_ITERATOR_SKIP_READ_ONLY   (1<<0)
+
+
+ +

+read only keys are skipped by keys iterator.

+

See also:
grib_keys_iterator_new
+ +
+

+


Typedef Documentation

+ +
+
+ + + + +
typedef struct grib_keys_iterator grib_keys_iterator
+
+
+ +

+Grib keys iterator. Iterator over keys.

Examples:
+keys_iterator.c, and keys_iterator_fortran.F.
+
+

+


Function Documentation

+ +
+
+ + + + + + + + + +
int grib_keys_iterator_delete (grib_keys_iterator kiter  ) 
+
+
+ +

+Delete the iterator.

Parameters:
+ + +
kiter : valid grib_keys_iterator
+
+
Returns:
0 if OK, integer value on error
+
Examples:
+keys_iterator.c, keys_iterator.f90, and keys_iterator_fortran.F.
+
+

+ +

+
+ + + + + + + + + +
const char* grib_keys_iterator_get_name (grib_keys_iterator kiter  ) 
+
+
+ +

+get the key name from the iterator

Parameters:
+ + +
kiter : valid grib_keys_iterator
+
+
Returns:
key name
+
Examples:
+keys_iterator.c, keys_iterator.f90, and keys_iterator_fortran.F.
+
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
grib_keys_iterator* grib_keys_iterator_new (grib_handle h,
unsigned long  filter_flags,
char *  name_space 
)
+
+
+ +

+Create a new iterator from a valid and initialized handle.

Parameters:
+ + + + +
h : the handle whose keys you want to iterate
filter_flags : flags to filter out some of the keys through their attributes
name_space : if not null the iteration is carried out only on keys belongin to the namespace passed. (NULL for all the keys)
+
+
Returns:
keys iterator ready to iterate through keys according to filter_flags and namespace
+
Examples:
+keys_iterator.c, and keys_iterator.f90.
+
+

+ +

+
+ + + + + + + + + +
int grib_keys_iterator_next (grib_keys_iterator kiter  ) 
+
+
+ +

+Step to the next iterator.

Parameters:
+ + +
kiter : valid grib_keys_iterator
+
+
Returns:
1 if next iterator exitsts, 0 if no more elements to iterate on
+
Examples:
+keys_iterator.c, keys_iterator.f90, and keys_iterator_fortran.F.
+
+

+ +

+
+ + + + + + + + + +
int grib_keys_iterator_rewind (grib_keys_iterator kiter  ) 
+
+
+ +

+Rewind the iterator.

Parameters:
+ + +
kiter : valid grib_keys_iterator
+
+
Returns:
0 if OK, integer value on error
+ +
+

+


Generated on Tue Sep 22 15:18:22 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/index.html b/html/index.html new file mode 100644 index 000000000..2c59a1a6d --- /dev/null +++ b/html/index.html @@ -0,0 +1,64 @@ + + +grib_api: GRIB API + + + + + +

GRIB API

+

+

+New

+ +

+Overview

+The grib_api is the application program interface developed at ECMWF to provide an easy and realiable way for encoding and decoding WMO FM-92 GRIB edition 1 and edition 2 messages.

+With the grib_api library, that is written entirely in C, some command line tools are provided to give a quick way to manipulate grib data. Moreover a Fortran interface 90 is available giving access to the main features of the C library.

+The library is designed to access and modify messages in both editions with the same function calls using a set of Grib API keys to access the coded information ( examples: get.f90 set.f90, get.c, set.c, grib_get, grib_set ).

+The keys available for a message are different depending not only on the edition but also and mainly on the type of each message and the information it contains. A list of all the available keys in a message can be obtained dynamically using the library as shown in keys_iterator.c or using the Grib tools as shown in grib_dump or grib_keys.

+GRIB API will replace the GRIBEX function and a table of conversion between the numeric encoding of GRIBEX and the alphanumeric keys of GRIB API is provided to help the migration.

+To learn how to use the grib_api we recommend the user works through the Grib API examples.

+Reference manuals are also provided for the C library (organized in C interface) and for the Fortran 90 interface.

+Installation instructions are also provided.

+Compiling and linking on ECMWF platforms

+The grib API is installed on all systems at ECMWF with both its components: the library and the tools.
+ The latest version of the tools is always available in the system PATH so that users can begin using the tools immediately by typing directly the tool name (see tools reference).
+ The latest version of the library is also installed on any platform and it is available for linking through the following two environment variables: $GRIB_API_INCLUDE $GRIB_API_LIB.
+
+ Here is a short summary on how to compile and link on ECMWF systems:
+

+

    +
  • ecgate, hpce, hpcf
    +> xlc -o foo foo.c $GRIB_API_INCLUDE $GRIB_API_LIB -lm
    +

    +
    +> xlf90 -o foo foo.f90 $GRIB_API_INCLUDE $GRIB_API_LIB
    +

    +
  • linux cluster (C programs)
    +> gcc -m32 -o foo foo.c $GRIB_API_INCLUDE $GRIB_API_LIB 
    +

    +
  • workstation (C programs)
    +> gcc -o foo foo.c $GRIB_API_INCLUDE $GRIB_API_LIB 
    +

    +
  • linux cluster,workstation (Fortran programs)
    +> use pgf90
    +> pgf90 -o foo foo.f90 $GRIB_API_INCLUDE $GRIB_API_LIB
    +

    +
+
Generated on Tue Sep 22 15:18:21 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/installation.html b/html/installation.html new file mode 100644 index 000000000..f04709206 --- /dev/null +++ b/html/installation.html @@ -0,0 +1,37 @@ + + +grib_api: grib_api installation + + + + + +

grib_api installation

The grib_api installation is based on the standard configure utility. It is tested on several platforms and with several compilers. However for some platforms modifications to the installation engine may be required. If you encounter any problem during the installation procedure please send an e-mail with your problem to Software.Support@ecmwf.int.

+The only required package for a standard installation is jasper which enables the jpeg2000 packing/unpacking algorithm. It is possible to build grib_api without jasper, by using the --disable-jpeg configure option, but to install a fully functional library, its download is recommended.

+Standard installation

+
    +
  1. Download grib_api from here.
  2. Unpack distribution:
      > gunzip grib_api-X.X.X.tar.gz
    +  > tar xf grib_api-X.X.X.tar
    +
  3. Create the directory where to install grib_api say grib_api_dir
      > mkdir grib_api_dir
    +
  4. Run the configure in the grib_api-X.X.X
      > cd grib_api-X.X.X
    +  > ./configure --prefix=grib_api_dir 
    +
  5. make, check and install
      > make
    +  ...
    +  > make check
    +  ...
    +  > make install
    +  ...
    +
+
Generated on Tue Sep 22 15:18:22 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/interfacegrib__api_1_1grib__find__nearest.html b/html/interfacegrib__api_1_1grib__find__nearest.html new file mode 100644 index 000000000..e69de29bb diff --git a/html/interfacegrib__api_1_1grib__get.html b/html/interfacegrib__api_1_1grib__get.html new file mode 100644 index 000000000..e69de29bb diff --git a/html/interfacegrib__api_1_1grib__get__data.html b/html/interfacegrib__api_1_1grib__get__data.html new file mode 100644 index 000000000..e69de29bb diff --git a/html/interfacegrib__api_1_1grib__get__element.html b/html/interfacegrib__api_1_1grib__get__element.html new file mode 100644 index 000000000..e69de29bb diff --git a/html/interfacegrib__api_1_1grib__set.html b/html/interfacegrib__api_1_1grib__set.html new file mode 100644 index 000000000..e69de29bb diff --git a/html/iterator_8c-example.html b/html/iterator_8c-example.html new file mode 100644 index 000000000..c826d947a --- /dev/null +++ b/html/iterator_8c-example.html @@ -0,0 +1,103 @@ + + +grib_api: iterator.c + + + + + +

iterator.c

iterator.c How to use an iterator on latitude, longitude, values.

+

00001 
+00010 /*
+00011  * C Implementation: iterator
+00012  *
+00013  * Description: how to use an iterator on lat/lon/values.
+00014  *
+00015  *
+00016  * Author: Enrico Fucile
+00017  *
+00018  *
+00019  */
+00020 
+00021 #include <stdio.h>
+00022 #include <stdlib.h>
+00023 #include <string.h>
+00024 
+00025 #include "grib_api.h"  
+00026 
+00027 void usage(char* prog) {
+00028   printf("Usage: %s grib_file\n",prog);
+00029   exit(1);
+00030 }
+00031 
+00032 int main(int argc, char** argv) {
+00033   FILE* in = NULL;
+00034   int err = 0;
+00035   double lat,lon,value,missingValue=0;
+00036   int n=0;
+00037   char* filename = NULL;
+00038 
+00039   /* Message handle. Required in all the grib_api calls acting on a message.*/
+00040   grib_handle *h = NULL;   
+00041   /* Iterator on lat/lon/values.*/
+00042   grib_iterator* iter=NULL;  
+00043   
+00044   if (argc != 2) usage(argv[0]);
+00045 
+00046   filename=strdup(argv[1]);
+00047 
+00048   in = fopen(filename,"r");
+00049   if(!in) {
+00050     printf("ERROR: unable to open file %s\n",filename);
+00051     return 1;
+00052   }
+00053 
+00054   /* Loop on all the messages in a file.*/
+00055   while ((h = grib_handle_new_from_file(0,in,&err)) != NULL ) { 
+00056         /* Check of errors after reading a message. */
+00057     if (err != GRIB_SUCCESS) GRIB_CHECK(err,0);                       
+00058 
+00059         /* Get the double representing the missing value in the field. */
+00060         GRIB_CHECK(grib_get_double(h,"missingValue",&missingValue),0);  
+00061 
+00062         /* A new iterator on lat/lon/values is created from the message handle h. */
+00063         iter=grib_iterator_new(h,0,&err);                                     
+00064     if (err != GRIB_SUCCESS) GRIB_CHECK(err,0);                       
+00065 
+00066     n = 0;
+00067         /* Loop on all the lat/lon/values. */
+00068     while(grib_iterator_next(iter,&lat,&lon,&value)) {   
+00069           /* You can now print lat and lon,  */
+00070       printf("- %d - lat=%f lon=%f value=",n,lat,lon);   
+00071           /* decide what to print if a missing value is found. */
+00072       if (value == missingValue ) printf("missing\n");   
+00073           /* and print the value if is not missing. */
+00074           else printf("%f\n",value);
+00075       n++;
+00076     }
+00077 
+00078         /* At the end the iterator is deleted to free memory. */
+00079     grib_iterator_delete(iter);               
+00080 
+00081     /* At the end the grib_handle is deleted to free memory. */
+00082     grib_handle_delete(h);            
+00083   }
+00084 
+00085 
+00086   fclose(in);
+00087 
+00088   return 0;
+00089 }
+

Generated on Tue Sep 22 15:18:21 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/iterator__fortran_8_f-example.html b/html/iterator__fortran_8_f-example.html new file mode 100644 index 000000000..bcd7cda8e --- /dev/null +++ b/html/iterator__fortran_8_f-example.html @@ -0,0 +1,103 @@ + + +grib_api: iterator_fortran.F + + + + + +

iterator_fortran.F

iterator_fortran.F How to use an iterator on latitude, longitude, values.

+

00001 C Copyright 2005-2012 ECMWF
+00002 C This software is licensed under the terms of the Apache Licence Version 2.0
+00003 C which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+00004 C 
+00005 C In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+00006 C virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+00007 C
+00008 C
+00009 C  Fortran 77 Implementation: iterator_fortran
+00010 C
+00011 C  Description: how to use an iterator on lat/lon/values.
+00012 C
+00013 C
+00014 C  Author: Enrico Fucile
+00015 C
+00016 C
+00017 C
+00018       program iterator
+00019       implicit none
+00020       include 'grib_api_f77.h'
+00021       integer ifile
+00022       integer iret,iter
+00023       real*8 lat,lon,value,missingValue
+00024       integer n,flags
+00025       character*256 filename
+00026       character*256 error
+00027 
+00028 C     Message identifier.
+00029       integer igrib
+00030 
+00031       ifile=5
+00032 
+00033       call grib_check(grib_open_file(ifile,
+00034      X'../../data/regular_latlon_surface.grib1','r'))
+00035 
+00036 C     Loop on all the messages in a file.
+00037   10  iret=grib_new_from_file(ifile,igrib)
+00038       if (igrib .eq. -1 )  then
+00039         if (iret .ne.0) then
+00040            call grib_check(iret)
+00041         endif
+00042         stop
+00043       endif
+00044 
+00045 C     get as a real8
+00046       call grib_check(grib_get_real8(igrib
+00047      X,'missingValue',missingValue))
+00048       write(*,*) 'missingValue=',missingValue
+00049 
+00050 C     A new iterator on lat/lon/values is created from the message igrib
+00051       flags = 0
+00052       call grib_check(grib_iterator_new(igrib,iter,flags))
+00053 
+00054       n = 0
+00055 C     Loop on all the lat/lon/values.
+00056   20  iret = grib_iterator_next(iter,lat,lon,value)
+00057       if ( iret .eq. 0 ) goto 30
+00058 C     You can now print lat and lon,
+00059       if ( value .eq. missingValue ) then
+00060 C     decide what to print if a missing value is found.
+00061         write(*,*) "- ",n," - lat=",lat," lon=",lon," value=missing"
+00062       else
+00063 C     or print the value if is not missing.
+00064         write(*,*) " ",n," lat=",lat," lon=",lon," value=",value
+00065       endif
+00066 
+00067       n=n+1
+00068 
+00069       goto 20
+00070   30  continue
+00071 
+00072 C     At the end the iterator is deleted to free memory.
+00073       call grib_check(grib_iterator_delete(iter))
+00074 
+00075       goto 10
+00076 
+00077       call grib_check(grib_release(igrib))
+00078 
+00079       call grib_check(grib_close_file(ifile))
+00080 
+00081       end
+

Generated on Tue Sep 22 15:18:21 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/keys.html b/html/keys.html new file mode 100644 index 000000000..1c3a6b545 --- /dev/null +++ b/html/keys.html @@ -0,0 +1,88 @@ + + +grib_api: Grib API keys + + + + + +

Grib API keys

The GRIBEX routine used at ECMWF to encode and decode GRIB messages works on a number based table to retrive all the information from the message. This approach forces the user either to learn a code table or to use the documentation intensively. With grib_api a key name based access is provided so that all the information contained in the GRIB message is retrieved through alphanumeric names.
+ All the key names are built from the official WMO documentation on the GRIB edition 1 and 2 coding standard removing the spaces in the key description and capitalizing the initials so that the caption:
+
+identification of originating generating centre
+
is transformed into the key name
+
+identificationOfOriginatingGeneratingCentre
+

+ Some short names (aliases) are also provided, e.g. "centre" is an alias for identificationOfOriginatingGeneratingCentre. The names are always easily releated to the meaning of their value.
+ A different set of keys is available for each message because the content is different. It is easy to find the keys available in a message by using the GRIB tools (grib_dump) or the library (keys_iterator.c).
+

+Coded and Computed keys

+There are two different types of keys: coded and computed.
+ The coded keys are directly linked to octets of the GRIB message and their value is obtained by only decoding the octets. A list of all the coded keys in a message can be obtained using grib_dump without any option (use the -a option to obtain also their aliases).
+ The computed keys are obtained by combining other keys (coded or computed) and when their value is set all the related keys are set in a cascade process.
+ These keys provide a synthesis of the information contained in the GRIB message and are a safe way to set complex attributes such as the type of grid or the type of packing. They are also helpful in the interpretation of some octets such as the scanning mode whose bits are related to the way of scanning the grid. In this case the computed keys:
+
+iScansNegatively
+jScansPositively
+jPointsAreConsecutive
+alternativeRowScanning (available only for edition 2)
+

+ will provide access to single bits of the scanning mode octect hiding its structure from the user.
+ The keys can also have some attributes as read only, which means that the key cannot be set (e.g. 7777 at the end of the message), or edition specific that is the attribute of all the keys having different values in the two editions (e.g. longitudeOfFirstGridPoint) or being present in one edition only (e.g. alternativeRowScanning).
+ Moreover there are some computed keys that cannot be "get" and can be considered as functions acting on the grib in some way. These keys are always characterised by a predicate in their name (e.g. setDecimalPrecision).
+ For the computed keys we provide the following preliminary documentation that will be extended soon.
    +
  • MARS keywords.
    + All MARS keywords are available. Some examples are:
      +
    • date
    • param
    • levtype
    • levelist
    • step
    • stream
    +
  • angles in degrees.
    + All the angle variables are provided in two versions, a native one with the units coded into the GRIB file and an edition independent one in degrees. It is always better to work with the "in degrees" version that is always provided through the key which has the same name of the native version with the suffix InDegrees
    +longitudeOfFirstGridPoint -> longitudeOfFirstGridPointInDegrees
    +latitudeOfFirstGridPoint -> latitudeOfFirstGridPointInDegrees
    +longitudeOfLastGridPoint -> longitudeOfLastGridPointInDegrees
    +latitudeOfFirstGridPoint -> latitudeOfLastGridPointInDegrees
    +latitudeOfFirstGridPoint -> latitudeOfFirstGridPointInDegrees
    +iDirectionIncrement -> iDirectionIncrementInDegrees
    +jDirectionIncrement -> jDirectionIncrementInDegrees
    +
  • gridType
    + The type of grid computed from the grid description section.
      +
    • For both editions:
        +
      • regular_ll
      • reduced_ll
      • mercator
      • lambert
      • polar_stereographic
      • UTM
      • simple_polyconic
      • albers
      • miller
      • rotated_ll
      • stretched_ll
      • stretched_rotated_ll
      • regular_gg
      • rotated_gg
      • stretched_gg
      • stretched_rotated_gg
      • reduced_gg
      • sh
      • rotated_sh
      • stretched_sh
      • stretched_rotated_sh
      • space_view
        +
      +
    • For edition 2 only:
        +
      • triangular_grid
      • equatorial_azimuthal_equidistant
      • azimuth_range
      • cross_section
      • Hovmoller
      • time_section
      +
    +
+

+

    +
  • packingType
    + The alghorithm used to pack data into the GRIB message.
    +
      +
    • For GRIB edition 1:
        +
      • grid_simple
      • grid_simple_matrix
      • grid_simple_matrix_bitmap
      • grid_second_order
      • grid_second_order_different_width
      • spectral_complex
      • spectral_simple
      • grid_unknown
      • spectral_unknown
        +
      +
    • For GRIB edition 2:
        +
      • grid_simple
      • grid_simple_matrix
      • grid_simple_matrix_bitmap
      • grid_complex
      • grid_complex_spatial_differencing
      • grid_jpeg
      • grid_png
      • grid_ieee
      • spectral_simple
      • spectral_complex
      • grid_simple_log_preprocessing
      +
    +
+

+

    +
  • setDecimalPrecision
    + is a function key used to set the decimal precision see the grib_set page for usage.
+

+

    +
  • getNumberOfValues
    + The number of values coded into the data section of the GRIB message
+
Generated on Tue Sep 22 15:18:22 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/keys__iterator_8c-example.html b/html/keys__iterator_8c-example.html new file mode 100644 index 000000000..c36542125 --- /dev/null +++ b/html/keys__iterator_8c-example.html @@ -0,0 +1,115 @@ + + +grib_api: keys_iterator.c + + + + + +

keys_iterator.c

keys_iterator.c How to get the names of all the keys defined in a message and how to iterate through them.

+

00001 
+00010 /*
+00011  * C Implementation: keys_iterator
+00012  *
+00013  * Description:
+00014  * Example on how to use keys_iterator functions and the
+00015  * grib_keys_iterator structure to get all the available
+00016  * keys in a message.
+00017  *
+00018  * Author: Enrico Fucile
+00019  *
+00020  *
+00021  */
+00022 
+00023 #include <assert.h>
+00024 #include <stdlib.h>
+00025 #include <stdio.h>
+00026 #include <unistd.h>
+00027 
+00028 #include "grib_api.h"
+00029 
+00030 #define MAX_KEY_LEN  255
+00031 #define MAX_VAL_LEN  1024
+00032 
+00033 static void usage(char* progname);
+00034 
+00035 int main(int argc, char *argv[])
+00036 {
+00037   /* To skip read only and not coded keys
+00038      unsigned long key_iterator_filter_flags=GRIB_KEYS_ITERATOR_SKIP_READ_ONLY ||
+00039      GRIB_KEYS_ITERATOR_SKIP_COMPUTED;
+00040   */
+00041   unsigned long key_iterator_filter_flags=GRIB_KEYS_ITERATOR_ALL_KEYS;
+00042 
+00043   /* valid name_spaces are ls and mars */
+00044   char* name_space="ls";
+00045 
+00046   /* name_space=NULL to get all the keys */
+00047   /* char* name_space=0; */
+00048 
+00049   FILE* f;
+00050   grib_handle* h=NULL;
+00051   grib_keys_iterator* kiter=NULL;
+00052   int err=0;
+00053   int grib_count=0;
+00054 
+00055   char value[MAX_VAL_LEN];
+00056   size_t vlen=MAX_VAL_LEN;
+00057 
+00058   if (argc != 2) usage(argv[0]);
+00059 
+00060   f = fopen(argv[1],"r");
+00061   if(!f) {
+00062     perror(argv[1]);
+00063     exit(1);
+00064   }
+00065 
+00066   while((h = grib_handle_new_from_file(0,f,&err)) != NULL) {
+00067 
+00068     grib_count++;
+00069     printf("-- GRIB N. %d --\n",grib_count);
+00070     if(!h) {
+00071       printf("ERROR: Unable to create grib handle\n");
+00072       exit(1);
+00073     }
+00074 
+00075     kiter=grib_keys_iterator_new(h,key_iterator_filter_flags,name_space);
+00076     if (!kiter) {
+00077       printf("ERROR: Unable to create keys iterator\n");
+00078       exit(1);
+00079     }
+00080 
+00081     while(grib_keys_iterator_next(kiter))
+00082     {
+00083       const char* name = grib_keys_iterator_get_name(kiter);
+00084       vlen=MAX_VAL_LEN;
+00085       GRIB_CHECK(grib_get_string(h,name,value,&vlen),name);
+00086       printf("%s = %s\n",name,value);
+00087     }
+00088 
+00089     grib_keys_iterator_delete(kiter);
+00090 
+00091   }
+00092 
+00093   return 0;
+00094 
+00095 }
+00096 
+00097 static void usage(char* progname) {
+00098   printf("\nUsage: %s grib_file\n",progname);
+00099   exit(1);
+00100 }
+00101 
+

Generated on Tue Sep 22 15:18:21 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/keys__iterator_8f90-example.html b/html/keys__iterator_8f90-example.html new file mode 100644 index 000000000..d49e2c91e --- /dev/null +++ b/html/keys__iterator_8f90-example.html @@ -0,0 +1,86 @@ + + +grib_api: keys_iterator.f90 + + + + + +

keys_iterator.f90

How to get the names of all the keys defined in a message and how to iterate through them.

+

00001 ! Copyright 2005-2012 ECMWF
+00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
+00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+00004 ! 
+00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+00007 !
+00008 !
+00009 !  Description:
+00010 !       How to use keys_iterator to get all the available
+00011 !       keys in a message.
+00012 !
+00013 !  Author: Enrico Fucile 
+00014 !
+00015 !
+00016 program keys_iterator
+00017   use grib_api
+00018   implicit none
+00019   character(len=20)  :: name_space
+00020   integer            :: kiter,ifile,igrib,iret
+00021   character(len=256) :: key
+00022   character(len=256) :: value
+00023   character(len=512) :: all
+00024   integer            :: grib_count
+00025   
+00026   call grib_open_file(ifile, &
+00027        '../../data/regular_latlon_surface.grib1','r')
+00028   
+00029   ! Loop on all the messages in a file.
+00030   
+00031   call grib_new_from_file(ifile,igrib, iret)
+00032   
+00033   do while (iret /= GRIB_END_OF_FILE)
+00034 
+00035      grib_count=grib_count+1
+00036      write(*,*) '-- GRIB N. ',grib_count,' --'
+00037      
+00038      ! valid name_spaces are ls and mars
+00039      name_space='ls'
+00040      
+00041      call grib_keys_iterator_new(igrib,kiter,name_space)
+00042      
+00043      do
+00044         call grib_keys_iterator_next(kiter, iret) 
+00045         
+00046         if (iret .ne. 1) exit
+00047         
+00048         call grib_keys_iterator_get_name(kiter,key)
+00049         call grib_get(igrib,trim(key),value)
+00050         all=trim(key)// ' = ' // trim(value)
+00051         write(*,*) trim(all)
+00052         
+00053      end do
+00054      
+00055      call grib_keys_iterator_delete(kiter)
+00056      call grib_release(igrib)
+00057      call grib_new_from_file(ifile,igrib, iret)
+00058   end do
+00059   
+00060   
+00061   call grib_close_file(ifile)
+00062   
+00063 end program keys_iterator
+00064 
+

Generated on Tue Sep 22 15:18:21 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/keys__iterator__fortran_8_f-example.html b/html/keys__iterator__fortran_8_f-example.html new file mode 100644 index 000000000..94478e711 --- /dev/null +++ b/html/keys__iterator__fortran_8_f-example.html @@ -0,0 +1,99 @@ + + +grib_api: keys_iterator_fortran.F + + + + + +

keys_iterator_fortran.F

keys_iterator_fortran.F How to get the names of all the keys defined in a message and how to iterate through them.

+

00001 C Copyright 2005-2012 ECMWF
+00002 C This software is licensed under the terms of the Apache Licence Version 2.0
+00003 C which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+00004 C 
+00005 C In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+00006 C virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+00007 C
+00008 C
+00009 C  Fortran 77 Implementation: keys_iterator
+00010 C
+00011 C  Description:
+00012 C  Example on how to use keys_iterator functions and the
+00013 C  grib_keys_iterator structure to get all the available
+00014 C  keys in a message.
+00015 C
+00016 C  Author: Enrico Fucile
+00017 C
+00018 C
+00019 C
+00020       program keys_iterator
+00021       implicit none
+00022       include 'grib_api_f77.h'
+00023       character*20 name_space
+00024       integer kiter,ifile,igrib,iret
+00025       character*256 key
+00026       character*256 value
+00027       character*512 all
+00028       integer len,strlen
+00029       integer grib_count
+00030       len=256
+00031 
+00032       ifile=5
+00033 
+00034       call grib_check(grib_open_file(ifile,
+00035      X'../../data/regular_latlon_surface.grib1','r'))
+00036 
+00037       grib_count=0
+00038 C     Loop on all the messages in a file.
+00039   10  iret=grib_new_from_file(ifile,igrib)
+00040       if (igrib .eq. -1 )  then
+00041         if (iret .ne.0) then
+00042            call grib_check(iret)
+00043         endif
+00044         stop
+00045       endif
+00046 
+00047       grib_count=grib_count+1
+00048       write(*,'("-- GRIB N.",I4," --")') grib_count
+00049 
+00050 C     valid name_spaces are ls and mars
+00051       name_space='ls'
+00052 C     name_space=' ' to get all the keys */
+00053 C     name_space=' '
+00054 
+00055       call grib_check(
+00056      Xgrib_keys_iterator_new(igrib,kiter,name_space))
+00057 C     call grib_check(grib_keys_iterator_skip_read_only(kiter))
+00058 C     call grib_check(grib_keys_iterator_skip_function(kiter))
+00059 C     call grib_check(grib_keys_iterator_skip_not_coded(kiter))
+00060 
+00061   20  if (grib_keys_iterator_next(kiter) .ne. 1) goto 10
+00062 
+00063       call grib_check(grib_keys_iterator_get_name(kiter,key))
+00064       call grib_check(grib_get_string(igrib,key,value))
+00065       all='|' // trim(key)//'|' //  ' = ' //'|' //  trim(value) // '|' 
+00066       write(*,*) trim(all)
+00067 
+00068       goto 20
+00069 
+00070       call grib_check(grib_keys_iterator_delete(kiter))
+00071 
+00072       call grib_check(grib_release(igrib))
+00073 
+00074       call grib_check(grib_close_file(ifile))
+00075 
+00076       end
+00077 
+

Generated on Tue Sep 22 15:18:21 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/modules.html b/html/modules.html new file mode 100644 index 000000000..1adb62751 --- /dev/null +++ b/html/modules.html @@ -0,0 +1,30 @@ + + +grib_api: Module Index + + + + + +

grib_api Modules

Here is a list of all modules: +
Generated on Tue Sep 22 15:18:22 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/multi_8c-example.html b/html/multi_8c-example.html new file mode 100644 index 000000000..e86126238 --- /dev/null +++ b/html/multi_8c-example.html @@ -0,0 +1,85 @@ + + +grib_api: multi.c + + + + + +

multi.c

multi.c How to decode a grib message containing many fields.

+

00001 
+00010 /*
+00011  * C Implementation: multi  
+00012  *
+00013  * Description: How to decode grib messages containing multiple
+00014  *              fields. Try to turn on and off multi support to
+00015  *              see the difference. Default is OFF.
+00016  *                      For all the tools defalut is multi support ON.
+00017  *
+00018  *
+00019  * Author: Enrico Fucile
+00020  *
+00021  *
+00022  */
+00023 #include <stdio.h>
+00024 #include <stdlib.h>
+00025 
+00026 #include "grib_api.h"
+00027 
+00028 int main(int argc, char** argv) {
+00029   int err = 0;
+00030   long parameterCategory=0,parameterNumber=0,discipline=0;
+00031   FILE* in = NULL;
+00032   char* filename = "../../data/multi.grib2";
+00033   grib_handle *h = NULL;
+00034 
+00035   /* turn on support for multi fields messages */
+00036   grib_multi_support_on(0);
+00037 
+00038   /* turn off support for multi fields messages */
+00039   /* grib_multi_support_off(0); */
+00040 
+00041   in = fopen(filename,"r");
+00042   if(!in) {
+00043     printf("ERROR: unable to open file %s\n",filename);
+00044     return 1;
+00045   }
+00046 
+00047 
+00048   while ((h = grib_handle_new_from_file(0,in,&err)) != NULL ) {
+00049 
+00050     GRIB_CHECK(err,0);
+00051 
+00052     GRIB_CHECK(grib_get_long(h,"discipline",&discipline),0);
+00053     printf("discipline=%ld\n",discipline);
+00054 
+00055     GRIB_CHECK(grib_get_long(h,"parameterCategory",&parameterCategory),0);
+00056     printf("parameterCategory=%ld\n",parameterCategory);
+00057 
+00058     GRIB_CHECK(grib_get_long(h,"parameterNumber",&parameterNumber),0);
+00059     printf("parameterNumber=%ld\n",parameterNumber);
+00060 
+00061     if ( discipline == 0 && parameterCategory==2) {
+00062     if (parameterNumber == 2) printf("-------- u -------\n");
+00063     if (parameterNumber == 3) printf("-------- v -------\n");
+00064     }
+00065   }
+00066 
+00067   grib_handle_delete(h);
+00068 
+00069   fclose(in);
+00070   return 0;
+00071 }
+

Generated on Tue Sep 22 15:18:21 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/multi_8f90-example.html b/html/multi_8f90-example.html new file mode 100644 index 000000000..dbb977602 --- /dev/null +++ b/html/multi_8f90-example.html @@ -0,0 +1,72 @@ + + +grib_api: multi.f90 + + + + + +

multi.f90

How to decode a grib message containing many fields.

+

00001 ! Copyright 2005-2012 ECMWF
+00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
+00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+00004 ! 
+00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+00007 !
+00008 !
+00009 !  Description: How to decode grib messages containing multiple
+00010 !               fields. Try to turn on and off multi support to
+00011 !               see the difference. Default is OFF.
+00012 !               For all the tools defalut is multi support ON.
+00013 !
+00014 !
+00015 !  Author: Enrico Fucile 
+00016 !
+00017 !
+00018 program multi
+00019   use grib_api
+00020   implicit none
+00021   
+00022   integer              :: iret
+00023   character(len = 256) :: error
+00024   integer(kind = 4)    :: step
+00025   integer              :: ifile,igrib
+00026 
+00027   call grib_open_file(ifile, '../../data/multi_created.grib2','r')
+00028 
+00029   !     turn on support for multi fields messages */
+00030   call grib_multi_support_on()
+00031 
+00032   !     turn off support for multi fields messages */
+00033   !call grib_multi_support_off()
+00034 
+00035   call grib_new_from_file(ifile,igrib, iret)
+00036   !     Loop on all the messages in a file.
+00037 
+00038   write(*,*) 'step'
+00039   do while (iret /= GRIB_END_OF_FILE)
+00040 
+00041      call grib_get(igrib,'step', step)
+00042      write(*,'(i3)') step
+00043      
+00044      call grib_new_from_file(ifile,igrib, iret)
+00045   
+00046   end do
+00047   call grib_close_file(ifile)
+00048 
+00049 end program multi
+00050 
+

Generated on Tue Sep 22 15:18:21 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/multi__fortran_8_f-example.html b/html/multi__fortran_8_f-example.html new file mode 100644 index 000000000..b66e73dc6 --- /dev/null +++ b/html/multi__fortran_8_f-example.html @@ -0,0 +1,99 @@ + + +grib_api: multi_fortran.F + + + + + +

multi_fortran.F

multi_fortran.F How to decode a grib message containing many fields.

+

00001 C Copyright 2005-2012 ECMWF
+00002 C This software is licensed under the terms of the Apache Licence Version 2.0
+00003 C which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+00004 C 
+00005 C In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+00006 C virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+00007 C
+00008 C
+00009 C  Fortran 77 Implementation: multi_fortran
+00010 C
+00011 C  Description: How to decode grib messages containing multiple
+00012 C               fields. Try to turn on and off multi support to
+00013 C               see the difference. Default is OFF.
+00014 C         For all the tools defalut is multi support ON.
+00015 C
+00016 C
+00017 C  Author: Enrico Fucile
+00018 C
+00019 C
+00020 C
+00021       program multi
+00022       implicit none
+00023       include 'grib_api_f77.h'
+00024       integer iret
+00025       character*256 error
+00026       integer*4 parameterCategory,parameterNumber,discipline
+00027       integer ifile,igrib
+00028 
+00029       call grib_check( grib_open_file(ifile
+00030      X,'../../data/multi.grib2','r'))
+00031 
+00032 C     turn on support for multi fields messages */
+00033       call grib_check(grib_multi_support_on())
+00034 
+00035 C     turn off support for multi fields messages */
+00036 C     call grib_check(grib_multi_support_off())
+00037 
+00038 C     Loop on all the messages in a file.
+00039   10  iret=grib_new_from_file(ifile,igrib)
+00040       if (igrib .eq. -1 )  then
+00041         if (iret .ne.0) then
+00042        call grib_check(iret)
+00043         endif
+00044         stop
+00045       endif
+00046 
+00047 C     get as a integer*4
+00048       call grib_check(grib_get_int(igrib,'discipline',discipline))
+00049       write(*,*) 'discipline=',discipline
+00050 
+00051 C     get as a integer*4
+00052       call grib_check(grib_get_int(igrib,'parameterCategory'
+00053      X,parameterCategory))
+00054       write(*,*) 'parameterCategory=',parameterCategory
+00055 
+00056 C     get as a integer*4
+00057       call grib_check(grib_get_int(igrib,'parameterNumber'
+00058      X,parameterNumber))
+00059       write(*,*) 'parameterNumber=',parameterNumber
+00060 
+00061       if ( discipline .eq. 0 .and. parameterCategory .eq. 2) then
+00062         if (parameterNumber .eq. 2) then
+00063            write(*,*) "-------- u -------"
+00064         endif
+00065         if (parameterNumber .eq. 3) then
+00066            write(*,*) "-------- v -------"
+00067         endif
+00068       endif
+00069 
+00070       goto 10
+00071 
+00072       call grib_check(grib_release(igrib))
+00073 
+00074       call grib_check(grib_close_file(ifile))
+00075 
+00076       end
+00077 
+

Generated on Tue Sep 22 15:18:21 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/namespacegrib__api.html b/html/namespacegrib__api.html new file mode 100644 index 000000000..e69de29bb diff --git a/html/namespacemembers.html b/html/namespacemembers.html new file mode 100644 index 000000000..e69de29bb diff --git a/html/namespacemembers_func.html b/html/namespacemembers_func.html new file mode 100644 index 000000000..e69de29bb diff --git a/html/namespaces.html b/html/namespaces.html new file mode 100644 index 000000000..e69de29bb diff --git a/html/nearest_8c-example.html b/html/nearest_8c-example.html new file mode 100644 index 000000000..131fd056f --- /dev/null +++ b/html/nearest_8c-example.html @@ -0,0 +1,107 @@ + + +grib_api: nearest.c + + + + + +

nearest.c

nearest.c How to find the nearest grid points.

+

00001 
+00010 /*
+00011  * C Implementation: fieldset
+00012  *
+00013  * Description: how to use a fieldset.
+00014  *
+00015  *
+00016  * Author: Enrico Fucile
+00017  *
+00018  *
+00019  */
+00020 
+00021 #include <stdio.h>
+00022 #include <stdlib.h>
+00023 #include <string.h>
+00024 
+00025 #include "grib_api.h"
+00026 
+00027 void usage(char* prog) {
+00028   printf("Usage: %s grib_file grib_file ...\n",prog);
+00029   exit(1);
+00030 }
+00031 
+00032 int main(int argc, char** argv) {
+00033   int err = 0;
+00034   long step=0;
+00035   size_t nfiles;
+00036   int i=0;
+00037   grib_fieldset* set=NULL;
+00038   grib_handle* h=NULL;
+00039   char param[20]={0,};
+00040   size_t len=20;
+00041   double lats[4]={0,};
+00042   double lons[4]={0,};
+00043   double values[4]={0,};
+00044   double distances[4]={0,};
+00045   int indexes[4]={0,};
+00046   char* order_by="param,step";
+00047 
+00048   size_t size=4;
+00049   double lat=-40,lon=15;
+00050   int mode=0;
+00051   int count;
+00052   char** filenames;
+00053   grib_nearest* nearest=NULL;
+00054 
+00055   if (argc < 2) usage(argv[0]);
+00056 
+00057   nfiles=argc-1;
+00058   filenames=(char**)malloc(sizeof(char*)*nfiles);
+00059   for (i=0;i<nfiles;i++)
+00060     filenames[i]=(char*)strdup(argv[i+1]);
+00061 
+00062   set=grib_fieldset_new_from_files(0,filenames,nfiles,0,0,0,order_by,&err);
+00063   GRIB_CHECK(err,0);
+00064 
+00065   printf("\nordering by %s\n",order_by);
+00066   printf("\n%d fields in the fieldset\n",grib_fieldset_count(set));
+00067   printf("n,step,param\n");
+00068 
+00069   mode=GRIB_NEAREST_SAME_GRID |  GRIB_NEAREST_SAME_POINT;
+00070   count=1;
+00071   while ((h=grib_fieldset_next_handle(set,&err))!=NULL) {
+00072     GRIB_CHECK(grib_get_long(h,"step",&step),0);
+00073         len=20;
+00074     GRIB_CHECK(grib_get_string(h,"param",param,&len),0);
+00075 
+00076     printf("%d %ld %s  ",count,step,param);
+00077     if (!nearest) nearest=grib_nearest_new(h,&err);
+00078     GRIB_CHECK(err,0);
+00079     GRIB_CHECK(grib_nearest_find(nearest,h,lat,lon,mode,lats,lons,values,distances,indexes,&size),0);
+00080     for (i=0;i<4;i++) printf("%d %.2f %.2f %g %g - ",
+00081          (int)indexes[i],lats[i],lons[i],distances[i],values[i]);
+00082     printf("\n");
+00083 
+00084     grib_handle_delete(h);
+00085     count++;
+00086   }
+00087 
+00088   if (nearest) grib_nearest_delete(nearest);
+00089 
+00090   if (set) grib_fieldset_delete(set);
+00091 
+00092   return 0;
+00093 }
+

Generated on Tue Sep 22 15:18:21 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/nearest_8f90-example.html b/html/nearest_8f90-example.html new file mode 100644 index 000000000..95ecbd6c3 --- /dev/null +++ b/html/nearest_8f90-example.html @@ -0,0 +1,104 @@ + + +grib_api: nearest.f90 + + + + + +

nearest.f90

How to find the nearest grid points.

+

00001 ! Copyright 2005-2012 ECMWF
+00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
+00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+00004 ! 
+00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+00007 !
+00008 !
+00009 !  Description: how to use grib_find_nearest and grib_get_element 
+00010 !
+00011 !
+00012 !  Author: Enrico Fucile 
+00013 !
+00014 !
+00015 !
+00016 program find
+00017   use grib_api
+00018   implicit none
+00019   integer                                      :: npoints
+00020   integer                                      :: infile
+00021   integer                                      :: igrib, ios, i
+00022   real(8), dimension(:), allocatable  :: lats, lons
+00023   real(8), dimension(:), allocatable  :: nearest_lats, nearest_lons
+00024   real(8), dimension(:), allocatable  :: distances, values, lsm_values
+00025   integer(kind=kindOfInt), dimension(:), allocatable  :: indexes
+00026   real(kind=8)                        :: value
+00027 
+00028 ! initialization
+00029   open( unit=1, file="../../data/list_points",form="formatted",action="read")
+00030   read(unit=1,fmt=*) npoints
+00031   allocate(lats(npoints))
+00032   allocate(lons(npoints))
+00033   allocate(nearest_lats(npoints))
+00034   allocate(nearest_lons(npoints))
+00035   allocate(distances(npoints))
+00036   allocate(lsm_values(npoints))
+00037   allocate(values(npoints))
+00038   allocate(indexes(npoints))
+00039   do i=1,npoints
+00040      read(unit=1,fmt=*, iostat=ios) lats(i), lons(i)
+00041      if (ios /= 0) then
+00042         npoints = i - 1
+00043         exit
+00044      end if
+00045   end do
+00046   close(unit=1)
+00047   call grib_open_file(infile, &
+00048        '../../data/reduced_gaussian_lsm.grib1','r')
+00049   
+00050   !     a new grib message is loaded from file
+00051   !     igrib is the grib id to be used in subsequent calls
+00052   call grib_new_from_file(infile,igrib)
+00053   
+00054 
+00055   call grib_find_nearest(igrib, .true., lats, lons, nearest_lats, nearest_lons,lsm_values, distances, indexes)
+00056   call grib_release(igrib)
+00057   
+00058   call grib_close_file(infile)
+00059 
+00060 ! will apply it to another GRIB
+00061   call grib_open_file(infile, &
+00062        '../../data/reduced_gaussian_pressure_level.grib1','r')
+00063   call grib_new_from_file(infile,igrib)
+00064 
+00065   call grib_get_element(igrib,"values", indexes, values)
+00066   call grib_release(igrib)
+00067   call grib_close_file(infile)
+00068 
+00069   do i=1, npoints
+00070      print*,lats(i), lons(i), nearest_lats(i), nearest_lons(i), distances(i), lsm_values(i), values(i)
+00071   end do
+00072 
+00073   deallocate(lats)
+00074   deallocate(lons)
+00075   deallocate(nearest_lats)
+00076   deallocate(nearest_lons)
+00077   deallocate(distances)
+00078   deallocate(lsm_values)
+00079   deallocate(values)
+00080   deallocate(indexes)
+00081 
+00082 end program find
+

Generated on Tue Sep 22 15:18:21 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/pages.html b/html/pages.html new file mode 100644 index 000000000..3afb13520 --- /dev/null +++ b/html/pages.html @@ -0,0 +1,59 @@ + + +grib_api: Page Index + + + + + +

grib_api Related Pages

Here is a list of all related documentation pages: +
Generated on Tue Sep 22 15:18:22 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/precision_8c-example.html b/html/precision_8c-example.html new file mode 100644 index 000000000..c8ca754b7 --- /dev/null +++ b/html/precision_8c-example.html @@ -0,0 +1,138 @@ + + +grib_api: precision.c + + + + + +

precision.c

precision.c How to control precision when coding a grib field.

+

00001 
+00010 /*
+00011  * C Implementation: precision
+00012  *
+00013  * Description: how to control decimal precision when packing fields.
+00014  *
+00015  *
+00016  * Author: Enrico Fucile
+00017  *
+00018  *
+00019  */
+00020 #include <stdio.h>
+00021 #include <stdlib.h>
+00022 #include <math.h>
+00023 
+00024 #include "grib_api.h"
+00025 
+00026 int main(int argc, char** argv) {
+00027   int err = 0;
+00028   size_t size=0;
+00029 
+00030   FILE* in = NULL;
+00031   char* infile = "../../data/regular_latlon_surface.grib1";
+00032   FILE* out = NULL;
+00033   char* outfile = "out.grib1";
+00034   grib_handle *h = NULL;
+00035   const void* buffer = NULL;
+00036   double* values1=NULL;
+00037   double* values2=NULL;
+00038   double maxa=0,a=0;
+00039   double maxv=0,minv=0;
+00040   double maxr=0,r=0;
+00041   long decimalPrecision;
+00042   long bitsPerValue1=0, bitsPerValue2=0;
+00043   int i=0;
+00044 
+00045   in = fopen(infile,"r");
+00046   if(!in) {
+00047     printf("ERROR: unable to open file %s\n",infile);
+00048     return 1;
+00049   }
+00050 
+00051   out = fopen(outfile,"w");
+00052   if(!in) {
+00053     printf("ERROR: unable to open file %s\n",outfile);
+00054     return 1;
+00055   }
+00056 
+00057   /* create a new handle from a message in a file */
+00058   h = grib_handle_new_from_file(0,in,&err);
+00059   if (h == NULL) {
+00060     printf("Error: unable to create handle from file %s\n",infile);
+00061   }
+00062 
+00063   /* bitsPerValue before changing the packing parameters */
+00064   GRIB_CHECK(grib_get_long(h,"bitsPerValue",&bitsPerValue1),0);
+00065 
+00066   /* get the size of the values array*/
+00067   GRIB_CHECK(grib_get_size(h,"values",&size),0);
+00068 
+00069   values1 = malloc(size*sizeof(double));
+00070   /* get data values before changing the packing parameters*/
+00071   GRIB_CHECK(grib_get_double_array(h,"values",values1,&size),0);
+00072 
+00073   /* changing decimal precition to 2 means that 2 decimal digits
+00074      are preserved when packing.  */
+00075   decimalPrecision=2;
+00076   GRIB_CHECK(grib_set_long(h,"changeDecimalPrecision",decimalPrecision),0);
+00077    
+00078   /* bitsPerValue after changing the packing parameters */
+00079   GRIB_CHECK(grib_get_long(h,"bitsPerValue",&bitsPerValue2),0);
+00080 
+00081   values2 = malloc(size*sizeof(double));
+00082   /* get data values after changing the packing parameters*/
+00083   GRIB_CHECK(grib_get_double_array(h,"values",values2,&size),0);
+00084 
+00085   /* computing error */
+00086   maxa=0;
+00087   maxr=0;
+00088   maxv=values2[0];
+00089   minv=maxv;
+00090   for (i=0;i<size;i++) {
+00091      a=fabs(values2[i]-values1[i]);
+00092      if ( values2[i] > maxv ) maxv=values2[i];
+00093      if ( values2[i] < maxv ) minv=values2[i];
+00094      if ( values2[i] !=0 ) r=fabs((values2[i]-values1[i])/values2[i]);
+00095      if ( a > maxa ) maxa=a;
+00096      if ( r > maxr ) maxr=r;
+00097   }
+00098   printf("max absolute error = %g\n",maxa);
+00099   printf("max relative error = %g\n",maxr);
+00100   printf("min value = %g\n",minv);
+00101   printf("max value = %g\n",maxv);
+00102 
+00103   printf("old number of bits per value=%ld\n",(long)bitsPerValue1);
+00104   printf("new number of bits per value=%ld\n",(long)bitsPerValue2);
+00105 
+00106   /* get the coded message in a buffer */
+00107   GRIB_CHECK(grib_get_message(h,&buffer,&size),0);
+00108 
+00109   /* write the buffer in a file*/
+00110   if(fwrite(buffer,1,size,out) != size) 
+00111   {
+00112      perror(argv[1]);
+00113      exit(1);
+00114   }
+00115 
+00116   /* delete handle */
+00117   grib_handle_delete(h);
+00118 
+00119   fclose(in);
+00120   fclose(out);
+00121 
+00122   return 0;
+00123 }
+00124 
+

Generated on Tue Sep 22 15:18:21 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/precision_8f90-example.html b/html/precision_8f90-example.html new file mode 100644 index 000000000..5403770b2 --- /dev/null +++ b/html/precision_8f90-example.html @@ -0,0 +1,119 @@ + + +grib_api: precision.f90 + + + + + +

precision.f90

How to control precision when coding a grib field.

+

00001 ! Copyright 2005-2012 ECMWF
+00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
+00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+00004 ! 
+00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+00007 !
+00008 !
+00009 !
+00010 !  Description: how to control decimal precision when packing fields.
+00011 !
+00012 !
+00013 !  Author: Enrico Fucile 
+00014 !
+00015 !
+00016 !
+00017 program precision
+00018   use grib_api
+00019   implicit none
+00020   integer(kind = 4)                             :: size
+00021   integer                                       :: infile,outfile
+00022   integer                                       :: igrib
+00023   real(kind = 8), dimension(:), allocatable     :: values1
+00024   real(kind = 8), dimension(:), allocatable     :: values2
+00025   real(kind = 8)                                ::  maxa,a,maxv,minv,maxr,r
+00026   integer( kind = 4)                            :: decimalPrecision,bitsPerValue1,bitsPerValue2
+00027   integer                                       :: i, iret
+00028 
+00029   call grib_open_file(infile, &
+00030        '../../data/regular_latlon_surface_constant.grib1','r')
+00031 
+00032   call grib_open_file(outfile, &
+00033        '../../data/regular_latlon_surface_prec.grib1','w')
+00034 
+00035   !     a new grib message is loaded from file
+00036   !     igrib is the grib id to be used in subsequent calls
+00037   call grib_new_from_file(infile,igrib)
+00038 
+00039   !     bitsPerValue before changing the packing parameters
+00040   call grib_get(igrib,'bitsPerValue',bitsPerValue1)
+00041 
+00042   !     get the size of the values array
+00043   call grib_get_size(igrib,"values",size)
+00044 
+00045   allocate(values1(size), stat=iret)
+00046   allocate(values2(size), stat=iret)
+00047   !     get data values before changing the packing parameters*/
+00048   call grib_get(igrib,"values",values1)
+00049 
+00050   !     setting decimal precision=2 means that 2 decimal digits
+00051   !     are preserved when packing.
+00052   decimalPrecision=2
+00053   call grib_set(igrib,"changeDecimalPrecision", &
+00054        decimalPrecision)
+00055 
+00056   !     bitsPerValue after changing the packing parameters
+00057   call grib_get(igrib,"bitsPerValue",bitsPerValue2)
+00058 
+00059   !     get data values after changing the packing parameters
+00060   call grib_get(igrib,"values",values2)
+00061 
+00062   !     computing error
+00063   maxa=0
+00064   maxr=0
+00065   maxv=values2(1)
+00066   minv=maxv
+00067   do i=1,size
+00068      a=abs(values2(i)-values1(i))
+00069      if ( values2(i) .gt. maxv ) maxv=values2(i)
+00070      if ( values2(i) .lt. maxv ) minv=values2(i)
+00071      if ( values2(i) .ne. 0 ) then
+00072         r=abs((values2(i)-values1(i))/values2(i))
+00073      endif
+00074      if ( a .gt. maxa ) maxa=a
+00075      if ( r .gt. maxr ) maxr=r
+00076   enddo
+00077   write(*,*) "max absolute error = ",maxa
+00078   write(*,*) "max relative error = ",maxr
+00079   write(*,*) "min value = ",minv
+00080   write(*,*) "max value = ",maxv
+00081 
+00082   write(*,*) "old number of bits per value=",bitsPerValue1
+00083   write(*,*) "new number of bits per value=",bitsPerValue2
+00084 
+00085   !     write modified message to a file
+00086   call grib_write(igrib,outfile)
+00087 
+00088   call grib_release(igrib)
+00089 
+00090   call grib_close_file(infile)
+00091 
+00092   call grib_close_file(outfile)
+00093 
+00094   deallocate(values1)
+00095   deallocate(values2)
+00096 end program precision
+00097 
+

Generated on Tue Sep 22 15:18:21 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/precision__fortran_8_f-example.html b/html/precision__fortran_8_f-example.html new file mode 100644 index 000000000..b56b7d637 --- /dev/null +++ b/html/precision__fortran_8_f-example.html @@ -0,0 +1,118 @@ + + +grib_api: precision_fortran.F + + + + + +

precision_fortran.F

precision_fortran.F How to control precision when coding a grib field.

+

00001 C Copyright 2005-2012 ECMWF
+00002 C This software is licensed under the terms of the Apache Licence Version 2.0
+00003 C which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+00004 C 
+00005 C In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+00006 C virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+00007 C
+00008 C
+00009 C  Fortran 77 Implementation: precision
+00010 C
+00011 C  Description: how to control decimal precision when packing fields.
+00012 C
+00013 C
+00014 C  Author: Enrico Fucile
+00015 C
+00016 C
+00017 C
+00018       program precision
+00019       implicit none
+00020       integer maxNumberOfValues
+00021       parameter (maxNumberOfValues=10000)
+00022       include 'grib_api_f77.h'
+00023       integer*4 size
+00024       integer infile,outfile
+00025       integer igrib
+00026       real*8 values1(maxNumberOfValues)
+00027       real*8 values2(maxNumberOfValues)
+00028       real*8 maxa,a,maxv,minv,maxr,r
+00029       integer*4 decimalPrecision,bitsPerValue1,bitsPerValue2
+00030       integer i
+00031 
+00032       call grib_check(grib_open_file(infile
+00033      X,'../../data/regular_latlon_surface.grib1','r'))
+00034 
+00035       call grib_check(grib_open_file(outfile
+00036      X,'../../data/regular_latlon_surface_prec.grib1','w'))
+00037 
+00038 C     a new grib message is loaded from file
+00039 C     igrib is the grib id to be used in subsequent calls
+00040       call grib_check(grib_new_from_file(infile,igrib))
+00041 
+00042 C     bitsPerValue before changing the packing parameters
+00043       call grib_check(grib_get_int(igrib,'bitsPerValue',bitsPerValue1))
+00044 
+00045 C     get the size of the values array
+00046       call grib_check(grib_get_size(igrib,"values",size))
+00047 
+00048 C     get data values before changing the packing parameters*/
+00049       call grib_check(grib_get_real8_array(igrib,"values",values1,size))
+00050 
+00051 C     setting decimal precision=2 means that 2 decimal digits
+00052 C     are preserved when packing.
+00053       decimalPrecision=2
+00054       call grib_check(grib_set_int(igrib,"changeDecimalPrecision"
+00055      X,decimalPrecision))
+00056 
+00057 C     bitsPerValue after changing the packing parameters
+00058       call grib_check(grib_get_int(igrib,"bitsPerValue",bitsPerValue2))
+00059 
+00060 C     get data values after changing the packing parameters
+00061       call grib_check(grib_get_real8_array(igrib,"values",values2,size))
+00062 
+00063 C     computing error
+00064       maxa=0
+00065       maxr=0
+00066       maxv=values2(1)
+00067       minv=maxv
+00068       do i=1,size
+00069         a=abs(values2(i)-values1(i))
+00070         if ( values2(i) .gt. maxv ) maxv=values2(i)
+00071         if ( values2(i) .lt. maxv ) minv=values2(i)
+00072         if ( values2(i) .ne. 0 ) then
+00073          r=abs((values2(i)-values1(i))/values2(i))
+00074         endif
+00075         if ( a .gt. maxa ) maxa=a
+00076         if ( r .gt. maxr ) maxr=r
+00077       enddo
+00078       write(*,*) "max absolute error = ",maxa
+00079       write(*,*) "max relative error = ",maxr
+00080       write(*,*) "min value = ",minv
+00081       write(*,*) "max value = ",maxv
+00082 
+00083       write(*,*) "old number of bits per value=",bitsPerValue1
+00084       write(*,*) "new number of bits per value=",bitsPerValue2
+00085 
+00086 C     write modified message to a file
+00087       call grib_check(grib_write(igrib,outfile))
+00088 
+00089       call grib_check(grib_release(igrib))
+00090 
+00091       call grib_check(grib_close_file(infile))
+00092 
+00093       call grib_check(grib_close_file(outfile))
+00094 
+00095       end
+00096 
+

Generated on Tue Sep 22 15:18:21 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/print__data_8c-example.html b/html/print__data_8c-example.html new file mode 100644 index 000000000..d9f477732 --- /dev/null +++ b/html/print__data_8c-example.html @@ -0,0 +1,94 @@ + + +grib_api: print_data.c + + + + + +

print_data.c

print_data.c How to print all the data from a grib message.

+

00001 
+00010 /*
+00011  * C Implementation: print_data
+00012  *
+00013  * Description: prints all the data contained in a grib file
+00014  *
+00015  * Author: Enrico Fucile
+00016  *
+00017  *
+00018  */
+00019 #include <stdio.h>
+00020 #include <stdlib.h>
+00021 
+00022 #include "grib_api.h"
+00023 
+00024 void usage(char* prog) {
+00025   printf("usage: %s filename\n",prog);
+00026   exit(1);
+00027 }
+00028 
+00029 int main(int argc, char** argv) {
+00030   int err = 0,i;
+00031   double *values = NULL;
+00032   double max,min,average;
+00033   size_t values_len= 0;
+00034 
+00035   FILE* in = NULL;
+00036   char* filename ;
+00037   grib_handle *h = NULL;
+00038 
+00039   if (argc<2) usage(argv[0]);
+00040   filename=argv[1];
+00041 
+00042   in = fopen(filename,"r");
+00043   if(!in) {
+00044     printf("ERROR: unable to open file %s\n",filename);
+00045     return 1;
+00046   }
+00047 
+00048   /* create new handle from a message in a file*/
+00049   h = grib_handle_new_from_file(0,in,&err);
+00050   if (h == NULL) {
+00051     printf("Error: unable to create handle from file %s\n",filename);
+00052   }
+00053 
+00054 
+00055   /* get the size of the values array*/
+00056   GRIB_CHECK(grib_get_size(h,"values",&values_len),0);
+00057 
+00058   values = malloc(values_len*sizeof(double));
+00059 
+00060   /* get data values*/
+00061   GRIB_CHECK(grib_get_double_array(h,"values",values,&values_len),0);
+00062 
+00063   for(i = 0; i < values_len; i++)
+00064     printf("%d  %.10e\n",i+1,values[i]);
+00065 
+00066   free(values);
+00067 
+00068 
+00069   GRIB_CHECK(grib_get_double(h,"max",&max),0);
+00070   GRIB_CHECK(grib_get_double(h,"min",&min),0);
+00071   GRIB_CHECK(grib_get_double(h,"average",&average),0);
+00072 
+00073   printf("%d values found in %s\n",(int)values_len,filename);
+00074   printf("max=%.10e min=%.10e average=%.10e\n",max,min,average);
+00075 
+00076   grib_handle_delete(h);
+00077 
+00078   fclose(in);
+00079   return 0;
+00080 }
+

Generated on Tue Sep 22 15:18:21 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/print__data_8f90-example.html b/html/print__data_8f90-example.html new file mode 100644 index 000000000..b39014bb2 --- /dev/null +++ b/html/print__data_8f90-example.html @@ -0,0 +1,88 @@ + + +grib_api: print_data.f90 + + + + + +

print_data.f90

How to print all the data contained in a grib file.

+

00001 ! Copyright 2005-2012 ECMWF
+00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
+00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+00004 ! 
+00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+00007 !
+00008 !
+00009 !  Description: prints all the data contained in a grib file
+00010 !
+00011 !
+00012 !  Author: Anne Fouilloux
+00013 !
+00014 !
+00015 program print_data
+00016 use grib_api
+00017 implicit none
+00018 integer            :: ifile
+00019 integer            :: iret
+00020 integer            :: igrib
+00021 integer            :: i
+00022 real(kind=8), dimension(:), allocatable       :: values
+00023 integer(kind=4)    :: numberOfValues
+00024 real(kind=8)       :: average
+00025 real(kind=8)       :: max
+00026 real(kind=8)       :: min
+00027 character(len=256) :: error
+00028 
+00029 call grib_open_file(ifile, &
+00030            '../../data/constant_field.grib1','r')
+00031 
+00032 !     a new grib message is loaded from file
+00033 !     igrib is the grib id to be used in subsequent calls
+00034       call grib_new_from_file(ifile,igrib)
+00035 
+00036 
+00037 !     get the size of the values array
+00038       call grib_get_size(igrib,'values',numberOfValues)
+00039 
+00040 !     get data values
+00041   print*, 'number of values ', numberOfValues
+00042   allocate(values(numberOfValues), stat=iret)
+00043 
+00044   call grib_get(igrib,'values',values)
+00045 
+00046   do i=1,numberOfValues
+00047     write(*,*)'  ',i,values(i)
+00048   enddo
+00049 
+00050 
+00051   write(*,*)numberOfValues,' values found '
+00052 
+00053   call grib_get(igrib,'max',max)
+00054   write(*,*) 'max=',max
+00055   call grib_get(igrib,'min',min)
+00056   write(*,*) 'min=',min
+00057   call grib_get(igrib,'average',average)
+00058   write(*,*) 'average=',average
+00059 
+00060   call grib_release(igrib)
+00061 
+00062   call grib_close_file(ifile)
+00063 
+00064   deallocate(values)
+00065 
+00066 end program print_data
+

Generated on Tue Sep 22 15:18:21 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/print__data__fortran_8_f-example.html b/html/print__data__fortran_8_f-example.html new file mode 100644 index 000000000..527104dde --- /dev/null +++ b/html/print__data__fortran_8_f-example.html @@ -0,0 +1,101 @@ + + +grib_api: print_data_fortran.F + + + + + +

print_data_fortran.F

print_data_fortran.F How to print all the data from a grib message.

+

00001 C Copyright 2005-2012 ECMWF
+00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
+00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+00004 ! 
+00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+00007 C
+00008 C  Fortran 77  Implementation: print_data_fortran
+00009 C
+00010 C  Description: prints all the data contained in a grib file
+00011 C
+00012 C  Author: Enrico Fucile
+00013 C
+00014 C
+00015 C
+00016       program print_data_fortran
+00017       implicit none
+00018       integer maxNumberOfValues
+00019       parameter( maxNumberOfValues = 100000 )
+00020       include 'grib_api_f77.h'
+00021       integer ifile
+00022       integer iret
+00023       integer igrib
+00024       integer i
+00025       real*8 values(maxNumberOfValues)
+00026       integer*4 numberOfValues
+00027       real*8 average
+00028       real*8 max
+00029       real*8 min
+00030       character*256 error
+00031       integer*4 size
+00032 
+00033       size=maxNumberOfValues
+00034       ifile=5
+00035 
+00036       iret=grib_open_file(ifile
+00037      X,'../../data/constant_field.grib1','r')
+00038       call grib_check(iret)
+00039 
+00040 C     a new grib message is loaded from file
+00041 C     igrib is the grib id to be used in subsequent calls
+00042       call grib_check( grib_new_from_file(ifile,igrib) )
+00043 
+00044 
+00045 C     get the size of the values array
+00046       call grib_check(grib_get_size(igrib,'values',numberOfValues))
+00047       if ( numberOfValues .gt. maxNumberOfValues ) then
+00048         write(*,*)'ERROR: maxNumberOfValues too small numberOfValues=',
+00049      XnumberOfValues
+00050             stop
+00051       endif
+00052 
+00053 C     get data values
+00054       call grib_check(grib_get_real8_array(igrib,'values',values,size))
+00055       if ( size .ne. numberOfValues ) then
+00056         write(*,*) 'ERROR: wrong numberOfValues'
+00057         stop
+00058       endif
+00059 
+00060       do i=1,numberOfValues
+00061         write(*,*)'  ',i,values(i)
+00062       enddo
+00063 
+00064       average =average / numberOfValues
+00065 
+00066       write(*,*)numberOfValues,' values found '
+00067 
+00068       call grib_check(grib_get_real8(igrib,'max',max))
+00069       write(*,*) 'max=',max
+00070       call grib_check(grib_get_real8(igrib,'min',min))
+00071       write(*,*) 'min=',min
+00072       call grib_check(grib_get_real8(igrib,'average',average))
+00073       write(*,*) 'average=',average
+00074 
+00075       call grib_check(grib_release(igrib))
+00076 
+00077       call grib_check(grib_close_file(ifile))
+00078 
+00079       end
+

Generated on Tue Sep 22 15:18:21 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/set_8c-example.html b/html/set_8c-example.html new file mode 100644 index 000000000..9af64bb0e --- /dev/null +++ b/html/set_8c-example.html @@ -0,0 +1,100 @@ + + +grib_api: set.c + + + + + +

set.c

set.c How to set values through the key names.

+

00001 
+00010 /*
+00011  * C Implementation: set
+00012  *
+00013  * Description: how to set key values.
+00014  *
+00015  *
+00016  * Author: Enrico Fucile
+00017  *
+00018  *
+00019  */
+00020 #include <stdio.h>
+00021 #include <stdlib.h>
+00022 
+00023 #include "grib_api.h"
+00024 
+00025 int main(int argc, char** argv) {
+00026   int err = 0;
+00027   long centre=80;
+00028   long long_value=0;
+00029   char string_value[100];
+00030   size_t len = sizeof(string_value)/sizeof(char);
+00031   size_t size=0;
+00032 
+00033   FILE* in = NULL;
+00034   char* infile = "../../data/regular_latlon_surface.grib1";
+00035   FILE* out = NULL;
+00036   char* outfile = "out.grib1";
+00037   grib_handle *h = NULL;
+00038   const void* buffer = NULL;
+00039 
+00040   in = fopen(infile,"r");
+00041   if(!in) {
+00042     printf("ERROR: unable to open file %s\n",infile);
+00043     return 1;
+00044   }
+00045 
+00046   out = fopen(outfile,"w");
+00047   if(!in) {
+00048     printf("ERROR: unable to open file %s\n",outfile);
+00049     return 1;
+00050   }
+00051 
+00052   /* create a new handle from a message in a file */
+00053   h = grib_handle_new_from_file(0,in,&err);
+00054   if (h == NULL) {
+00055     printf("Error: unable to create handle from file %s\n",infile);
+00056   }
+00057 
+00058   /* set centre as a long */
+00059   GRIB_CHECK(grib_set_long(h,"centre",centre),0);
+00060 
+00061   /* get centre as a long */
+00062   GRIB_CHECK(grib_get_long(h,"centre",&long_value),0);
+00063   printf("centre long value=%ld\n",long_value);
+00064 
+00065   /* get centre as a string */
+00066   GRIB_CHECK(grib_get_string(h,"centre",string_value,&len),0);
+00067   printf("centre string value=%s\n",string_value);
+00068 
+00069   /* get the coded message in a buffer */
+00070   GRIB_CHECK(grib_get_message(h,&buffer,&size),0);
+00071 
+00072   /* write the buffer in a file*/
+00073   if(fwrite(buffer,1,size,out) != size) 
+00074   {
+00075      perror(argv[1]);
+00076      exit(1);
+00077   }
+00078 
+00079   /* delete handle */
+00080   grib_handle_delete(h);
+00081 
+00082   fclose(in);
+00083   fclose(out);
+00084 
+00085   return 0;
+00086 }
+

Generated on Tue Sep 22 15:18:22 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/set_8f90-example.html b/html/set_8f90-example.html new file mode 100644 index 000000000..6a7816ff2 --- /dev/null +++ b/html/set_8f90-example.html @@ -0,0 +1,107 @@ + + +grib_api: set.f90 + + + + + +

set.f90

How to set values through the key names.

+

00001 ! Copyright 2005-2012 ECMWF
+00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
+00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+00004 ! 
+00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+00007 !
+00008 !
+00009 !  Description: how to set key values.
+00010 !
+00011 !
+00012 !  Author: Anne Fouilloux                            
+00013 !
+00014 !
+00015 program set
+00016   use grib_api
+00017   implicit none
+00018   integer(kind = 4)    :: centre, date
+00019   integer              :: infile,outfile
+00020   integer              :: igrib
+00021 
+00022 
+00023   centre = 80
+00024   call current_date(date)
+00025   call grib_open_file(infile, &
+00026        '../../data/regular_latlon_surface_constant.grib1','r')
+00027 
+00028   call grib_open_file(outfile, &
+00029        'out.grib1','w')
+00030 
+00031   !     a new grib message is loaded from file
+00032   !     igrib is the grib id to be used in subsequent calls
+00033   call grib_new_from_file(infile,igrib)
+00034 
+00035   call grib_set(igrib,'date',date)
+00036   !     set centre as a integer */
+00037   call grib_set(igrib,'centre',centre)
+00038 
+00039 ! check if it is correct in the actual GRIB message
+00040 
+00041   call check_settings(igrib)
+00042 
+00043   !     write modified message to a file
+00044   call grib_write(igrib,outfile)
+00045 
+00046   call grib_release(igrib)
+00047 
+00048   call grib_close_file(infile)
+00049 
+00050   call grib_close_file(outfile)
+00051 
+00052 contains
+00053 
+00054 !======================================
+00055 subroutine current_date(date)
+00056 integer, intent(out) :: date
+00057 
+00058 integer              :: val_date(8)
+00059 call date_and_time ( values = val_date)
+00060 
+00061 date = val_date(1)* 10000 + val_date(2)*100 + val_date(3) 
+00062 end subroutine current_date
+00063 !======================================
+00064 subroutine check_settings(gribid)
+00065   use grib_api
+00066   implicit none
+00067   integer, intent(in) :: gribid
+00068   
+00069   integer(kind = 4)    :: int_value
+00070   character(len = 10)  :: string_value
+00071 
+00072   !     get centre as a integer
+00073   call grib_get(gribid,'centre',int_value)
+00074   write(*,*) "get centre as a integer - centre = ",int_value
+00075   
+00076   !     get centre as a string
+00077   call grib_get(gribid,'centre',string_value)
+00078   write(*,*) "get centre as a string  - centre = ",string_value
+00079   
+00080   !     get date as a string
+00081   call grib_get(gribid,'dataDate',string_value)
+00082   write(*,*) "get date as a string    - date = ",string_value
+00083   
+00084 end subroutine check_settings
+00085 end program set
+

Generated on Tue Sep 22 15:18:22 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/set__bitmap_8f90-example.html b/html/set__bitmap_8f90-example.html new file mode 100644 index 000000000..d74b048e6 --- /dev/null +++ b/html/set__bitmap_8f90-example.html @@ -0,0 +1,102 @@ + + +grib_api: set_bitmap.f90 + + + + + +

set_bitmap.f90

How to set and use a bitmap.

+

00001 ! Copyright 2005-2012 ECMWF
+00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
+00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+00004 ! 
+00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+00007 !
+00008 !
+00009 !  Description: how to set a bitmap in a grib message 
+00010 !
+00011 !
+00012 !  Author: Enrico Fucile 
+00013 !
+00014 !
+00015 program set_bitmap
+00016   use grib_api
+00017   implicit none
+00018   integer                         :: infile,outfile
+00019   integer                         :: igrib, iret
+00020   integer                         :: numberOfValues
+00021   real, dimension(:), allocatable :: values
+00022   real                            :: missingValue
+00023   logical                         :: grib1Example
+00024 
+00025   grib1Example=.true.
+00026 
+00027   if (grib1Example) then
+00028     ! GRIB 1 example
+00029     call grib_open_file(infile,'../../data/regular_latlon_surface.grib1','r')
+00030   else
+00031     ! GRIB 2 example
+00032     call grib_open_file(infile,'../../data/regular_latlon_surface.grib2','r')
+00033   end if
+00034   
+00035   call grib_open_file(outfile,'out.grib','w')
+00036   
+00037   !     a new grib message is loaded from file
+00038   !     igrib is the grib id to be used in subsequent calls
+00039   call grib_new_from_file(infile,igrib)
+00040   
+00041   ! The missingValue is not coded in the message. 
+00042   ! It is a value we define as a placeholder for a missing value
+00043   ! in a point of the grid.
+00044   ! It should be choosen in a way that it cannot be confused 
+00045   ! with a valid field value
+00046   missingValue=9999
+00047   call grib_set(igrib, 'missingValue',missingValue)
+00048   write(*,*) 'missingValue=',missingValue
+00049 
+00050   ! get the size of the values array
+00051   call grib_get_size(igrib,'values',numberOfValues)
+00052   write(*,*) 'numberOfValues=',numberOfValues
+00053   
+00054   allocate(values(numberOfValues), stat=iret)
+00055 
+00056   ! get data values
+00057   call grib_get(igrib,'values',values)
+00058   
+00059   ! enable bitmap 
+00060   call grib_set(igrib,"bitmapPresent",1)
+00061 
+00062   ! some values are missing
+00063   values(1:10) = missingValue
+00064 
+00065   ! set the values (the bitmap will be automatically built)
+00066   call grib_set(igrib,'values', values)
+00067 
+00068   !  write modified message to a file
+00069   call grib_write(igrib,outfile)
+00070   
+00071   ! FREE MEMORY
+00072   call grib_release(igrib)
+00073   
+00074   call grib_close_file(infile)
+00075 
+00076   call grib_close_file(outfile)
+00077 
+00078   deallocate(values)
+00079 
+00080 end program set_bitmap
+

Generated on Tue Sep 22 15:18:22 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/set__fortran_8_f-example.html b/html/set__fortran_8_f-example.html new file mode 100644 index 000000000..7e972bdf7 --- /dev/null +++ b/html/set__fortran_8_f-example.html @@ -0,0 +1,89 @@ + + +grib_api: set_fortran.F + + + + + +

set_fortran.F

set_fortran.F How to set values through the key names.

+

00001 C Copyright 2005-2012 ECMWF
+00002 C This software is licensed under the terms of the Apache Licence Version 2.0
+00003 C which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+00004 C 
+00005 C In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+00006 C virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+00007 C
+00008 C
+00009 C  Fortran 77 Implementation: set_fortran
+00010 C
+00011 C  Description: how to set key values.
+00012 C
+00013 C
+00014 C  Author: Enrico Fucile
+00015 C
+00016 C
+00017 C
+00018       program set
+00019       implicit none
+00020       include 'grib_api_f77.h'
+00021       integer err
+00022       integer*4 centre
+00023       integer*4 int_value
+00024       character*10 string_value
+00025       character*20 string_centre
+00026       integer len
+00027       integer size
+00028       integer infile,outfile
+00029       integer igrib,iret
+00030       character*256 error
+00031 
+00032       infile=5
+00033       outfile=6
+00034 
+00035       call grib_check(grib_open_file(infile
+00036      X,'../../data/regular_latlon_surface.grib1','r'))
+00037 
+00038       call grib_check(grib_open_file(outfile
+00039      X,'../../data/out.grib1','w'))
+00040 
+00041 C     a new grib message is loaded from file
+00042 C     igrib is the grib id to be used in subsequent calls
+00043       call grib_check(grib_new_from_file(infile,igrib))
+00044 
+00045 C     set centre as a long */
+00046       centre=80
+00047       call grib_check(grib_set_int(igrib,'centre',centre))
+00048 
+00049 C     get centre as a integer*4
+00050       call grib_check(grib_get_int(igrib,'centre',int_value))
+00051       write(*,*) 'centre=',int_value
+00052 
+00053 C     get centre as a string
+00054       call grib_check(grib_get_string(igrib,'centre',string_value))
+00055       string_centre='centre='//string_value
+00056       write(*,*) string_centre
+00057 
+00058 C     write modified message to a file
+00059       call grib_check(grib_write(igrib,outfile))
+00060 
+00061       call grib_check(grib_release(igrib))
+00062 
+00063       call grib_check(grib_close_file(infile))
+00064 
+00065       call grib_check(grib_close_file(outfile))
+00066 
+00067       end
+

Generated on Tue Sep 22 15:18:22 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/set__missing_8f90-example.html b/html/set__missing_8f90-example.html new file mode 100644 index 000000000..aa580b324 --- /dev/null +++ b/html/set__missing_8f90-example.html @@ -0,0 +1,69 @@ + + +grib_api: set_missing.f90 + + + + + +

set_missing.f90

How to set a missing value in the header.

+

00001 ! Copyright 2005-2012 ECMWF
+00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
+00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+00004 ! 
+00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+00007 !
+00008 !
+00009 !  Description: how to set missing a key value.
+00010 !
+00011 !
+00012 !  Author: Enrico Fucile
+00013 !
+00014 !
+00015 !
+00016 program set
+00017   use grib_api
+00018   implicit none
+00019   integer              :: infile,outfile
+00020   integer              :: igrib
+00021 
+00022   infile=5
+00023   outfile=6
+00024 
+00025   call grib_open_file(infile, &
+00026        '../../data/reduced_gaussian_pressure_level.grib2','r')
+00027 
+00028   call grib_open_file(outfile, &
+00029        'out_surface_level.grib2','w')
+00030 
+00031   !     a new grib message is loaded from file
+00032   !     igrib is the grib id to be used in subsequent calls
+00033   call grib_new_from_file(infile,igrib)
+00034 
+00035   call grib_set(igrib,'typeOfFirstFixedSurface','sfc')
+00036   call grib_set_missing(igrib,'scaleFactorOfFirstFixedSurface')
+00037   call grib_set_missing(igrib,'scaledValueOfFirstFixedSurface')
+00038 
+00039   call grib_write(igrib,outfile)
+00040 
+00041   call grib_release(igrib)
+00042 
+00043   call grib_close_file(infile)
+00044 
+00045   call grib_close_file(outfile)
+00046 
+00047 end program set
+

Generated on Tue Sep 22 15:18:22 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/set__pv_8f90-example.html b/html/set__pv_8f90-example.html new file mode 100644 index 000000000..b70e41f5d --- /dev/null +++ b/html/set__pv_8f90-example.html @@ -0,0 +1,96 @@ + + +grib_api: set_pv.f90 + + + + + +

set_pv.f90

How to set the list of levels.

+

00001 ! Copyright 2005-2012 ECMWF
+00002 ! This software is licensed under the terms of the Apache Licence Version 2.0
+00003 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+00004 ! 
+00005 ! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
+00006 ! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
+00007 !
+00008 !
+00009 !  Description: how to set pv values.
+00010 !
+00011 !
+00012 !  Author: Anne Fouilloux
+00013 !
+00014 !
+00015 program set_pv
+00016   use grib_api
+00017   implicit none
+00018   integer                         :: numberOfLevels
+00019   integer                         :: numberOfCoefficients
+00020   integer                         :: outfile, igrib
+00021   integer                         :: i, ios
+00022   real, dimension(:),allocatable  :: pv
+00023   
+00024   numberOfLevels=60
+00025   numberOfCoefficients=2*(numberOfLevels+1)
+00026 
+00027   allocate(pv(numberOfCoefficients))
+00028 
+00029   ! read the model level coefficients from file
+00030   open( unit=1, file="../../data/60_model_levels", &
+00031                 form="formatted",action="read")
+00032 
+00033   do i=1,numberOfCoefficients,2
+00034      read(unit=1,fmt=*, iostat=ios) pv(i), pv(i+1)
+00035      if (ios /= 0) then
+00036         print *, "I/O error: ",ios
+00037         exit
+00038      end if
+00039   end do
+00040   
+00041   ! print coefficients
+00042   !do i=1,numberOfCoefficients,2
+00043   !  print *,"  a=",pv(i)," b=",pv(i+1)
+00044   !end do
+00045 
+00046   close(unit=1)
+00047 
+00048   call grib_open_file(outfile, 'out.grib1','w')
+00049   
+00050   !     a new grib message is loaded from file
+00051   !     igrib is the grib id to be used in subsequent calls
+00052   call grib_new_from_samples(igrib, "reduced_gg_sfc_grib1")
+00053 
+00054   !     set levtype to ml (model level)
+00055   call grib_set(igrib,'levtype','ml')
+00056 
+00057   !     set level 
+00058   call grib_set(igrib,'level',2)
+00059 
+00060   !     set PVPresent as an integer 
+00061   call grib_set(igrib,'PVPresent',1)
+00062   
+00063   call grib_set(igrib,'pv',pv)
+00064   
+00065   !     write modified message to a file
+00066   call grib_write(igrib,outfile)
+00067   
+00068   !  FREE MEMORY
+00069   call grib_release(igrib)
+00070   deallocate(pv)
+00071 
+00072   call grib_close_file(outfile)
+00073   
+00074 end program set_pv
+

Generated on Tue Sep 22 15:18:22 2009 for grib_api by  + +doxygen 1.5.3
+ + diff --git a/html/tab_b.gif b/html/tab_b.gif new file mode 100644 index 0000000000000000000000000000000000000000..0d623483ffdf5f9f96900108042a7ab0643fe2a3 GIT binary patch literal 35 ncmZ?wbhEHbWMp7uXkcJy*>IeJfk6j|fqX^=1|}vKMh0sDa2W*H literal 0 HcmV?d00001 diff --git a/html/tab_l.gif b/html/tab_l.gif new file mode 100644 index 0000000000000000000000000000000000000000..9b1e6337c9299a700401a2a78a2c6ffced475216 GIT binary patch literal 706 zcmZ?wbhEHbZT`}F1e&(Gg}Y(8=I;HA5#Z$3JI=gGB)FQ#odI(O&E^@q;x zK6mr*m3xOS-#u~t!I@i+u0DKm^U160k6t`|^WpV}&n+8{U%dD9&a>B#U%!9-@yol< zU%&tQ{rk_K|NsC0`}dE5ET99@1@a36+kb~?0UJ*yc&I3X_m z!ND^5$O7$#8OFRuDhG}!?8z?cdZK&!`PWjdR;Aj^wZ` zeK{IEYHBJ)6K8VIp1`BVt++swf6j+=L{p1*nO(VhE`pFexG@5$|>uaCcd z`0m=9m+yak{QmXN#Sc$^{$X9h9&q2jiKAI|&T)a;PPx2K9p`YIdw8HtR5k2Q$2-O2 z*;3y{MQ-RnJTgJfI&R5|O)AHxDf_00XbPvDZPy4t=hHd)nfLPvms&O`Ok(sD()5v$ z5U@&h;a=#xbxVbo2~X&Xj0Ie(f{v>vERH+qC+nTG=B8Nca=wU-O$?1&vUgV~9=!H; zx>3p9Yn%*<>t~sk+&0xfyS8RsPfYBd<~wWK%j-LmpU>O7yX^h#UCp1x-p#i7@bE;py8XI6 zmY<)m>~)W~yIWcMVoiPg{duuf<*)9qZ9l$m*Ph&W&$jlv*Vpa+{pH@n=IQ$L?0$ax ec60Ul|8o2P|NVbd{6P)#weSbE3}s?04AuZvx_~SI literal 0 HcmV?d00001 diff --git a/html/tab_r.gif b/html/tab_r.gif new file mode 100644 index 0000000000000000000000000000000000000000..ce9dd9f533cb5486d6941844f442b59d4a9e9175 GIT binary patch literal 2585 zcmbV}`9Bkk1ILFF--w5zJc=ZZT(zjE=;2|_S)Qm~rCWz1Pc)KPl;jv%A#&v2*x}yc zmf2~Jm~&=xjJY?PqwIN}f8qQ2{r$uH{c*nJbmr{cR5??*egHrs-B=MzCF`3%e{FAW z{oL5xTHn~5TM{jaB;@|_Ue5F&Zb@p(kMyG{*;gWDg zyeL|eZf7Qd8=#bXzSiR{yzRgLSj-fJS8>lBjVHN z^o-0eS=nE6a`W;LChBs=`+QAJP~{b93>H^eRb5kCSC1zUNezun%`L5M?RDzv#%jk7 zYVRX=vATPD`+oEfum^{RM@GjuP?-r=yh0!p;Vx^T9G7~`7%5ydH%70=jyJ;;`d;hv92x3R=z{xp+Lg2!*@OK*K15-t&okoPtSED)h&$RLxdbA zseWm^C3d%-yRNi-ryk^!ek+C`n&~cd$#ZWct_cUL{l~i+Nzx^5d!n94(>bW-iL~Rl z&8r)?q|1DIo=0=judQ{FaGcfLERz8gfn3-Qt<2lksh{mzpT}DXxUuR^z=^key&q4! z+wWI45vL0k$R^(F#{qfqhUsN@WA+w-V?LPH33!Q?WFSB3)WBojE@hK41Nb?KfS+Qo zXgrzfsP$wr4Qzy*{OD>uJBjdgGM@VMml5)2f~_}lD*YyOb}Hjeobhz#4c`w(l^>KK zr?Ud;W~Z}*w;%hZ|2^p^+f06gJDJQD zeIhGADbDmm&6arh(q>EZ<7mjzg7l|z$hRL8=1>)Nv=S7CY$B}iYJ&*T_-T_OG*L1q ztZ3Lana33?y3AKnyq^YCF|4x%Rb5WU&2qcl{TFKey%QJeMxn^SdT!hZ5+0i1zeusiYVp-phBl7b5+Px-X&LhByq z0F&<;K0l2+v>qiHlXb#$jXMv$uK-dEGE9L~qtdU(XeRXmvu*K2Q&6!fD**JxYP4b4BR7FdJ$Qx9G9`J%-_X!a#LGpp3g9)VWytGCa;7`S1_e8F~!R+aSJ zOF17p2`H?2kPs8Q`_;U}+D%3p zs2-0BTqFwpUoBk`?P;iPQ(IbEA|JmMx!P&YYG|R@S=5Mnw;-?A6rEEVyV%d7{iU4a zNk`i!%F(Ykpm`}#oH;BjY->@b8vQedv;pza2FL&*6ufjd+*3Ute&>kes~TU?^KkojsTh(o~(3tk1Y6>4(yn( z#U*ID9@eg-beKo1B;HXe+}{Z%n@7m0+yxivuqk9~;!1LGQlah)xYK4>wgL}l6dsaN zIxlRlq`*`j9PG4*0hD6YV_b_2w5b#)o7J?`q#{GjvvKlD`T*dWcZx<-s(ZvLB44E# z=!|sw!?)@%y$oRNL#25WS3lzdii}TuQ3?CLnvQ1_n};2sT_;Y;#d3=+-(O% zMN$>O!3;ke(UuLR%h_&)N zs^!-@A>QR}4yB1bPp`9S19ikTbZ~O{&FF-yHK{En;mmShDUIEw03`j(DBIsM}Rjki2J#SQa3gFZTKBPDeIiLt9Z z%bL3(B@Qw%(B`wSMS~dPh$=R`(}lBoFXKy(s|*{#ru$wjsBc_O#zxNk9w+UUHmx(U zmJ8+M+ndtnZ<7|VU9Mbt61zpo9T&3%Wx&XII=#QJxjR`CZf22ac3d51Z?GD%LEe_&*t46Qf;4`bZ7p2K(Ab5>GfT^}4! zBT&HZD`^PEgWoI&{~o-ID0F?O`75sm(87x%A{(}Ch1)QlzdJ)1B-eqe5a(weg0`4lQIf1evjvbBY50DVbzO7CLf|vP z2#0(U-|jZ`H{y5N^o7%iK6H>_HEGN->U6^!)1{XpJV!!4(Ig7wzZQ*9WYF4X1rG0x z=1uA@i`rIAciubDC{;~b(|&|A@xkjRP5aRcvRU9tvIm}jDB6J eQ0-6-y)mpwdT=ayS0tBxKDA*~;EWmo literal 0 HcmV?d00001 diff --git a/html/tabs.css b/html/tabs.css new file mode 100644 index 000000000..c37faafe8 --- /dev/null +++ b/html/tabs.css @@ -0,0 +1,102 @@ +/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */ + +DIV.tabs +{ + float : left; + width : 100%; + background : url("tab_b.gif") repeat-x bottom; + margin-bottom : 4px; +} + +DIV.tabs UL +{ + margin : 0px; + padding-left : 10px; + list-style : none; +} + +DIV.tabs LI, DIV.tabs FORM +{ + display : inline; + margin : 0px; + padding : 0px; +} + +DIV.tabs FORM +{ + float : right; +} + +DIV.tabs A +{ + float : left; + background : url("tab_r.gif") no-repeat right top; + border-bottom : 1px solid #84B0C7; + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + +DIV.tabs A:hover +{ + background-position: 100% -150px; +} + +DIV.tabs A:link, DIV.tabs A:visited, +DIV.tabs A:active, DIV.tabs A:hover +{ + color: #1A419D; +} + +DIV.tabs SPAN +{ + float : left; + display : block; + background : url("tab_l.gif") no-repeat left top; + padding : 5px 9px; + white-space : nowrap; +} + +DIV.tabs INPUT +{ + float : right; + display : inline; + font-size : 1em; +} + +DIV.tabs TD +{ + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + + + +/* Commented Backslash Hack hides rule from IE5-Mac \*/ +DIV.tabs SPAN {float : none;} +/* End IE5-Mac hack */ + +DIV.tabs A:hover SPAN +{ + background-position: 0% -150px; +} + +DIV.tabs LI.current A +{ + background-position: 100% -150px; + border-width : 0px; +} + +DIV.tabs LI.current SPAN +{ + background-position: 0% -150px; + padding-bottom : 6px; +} + +DIV.nav +{ + background : none; + border : none; + border-bottom : 1px solid #84B0C7; +} diff --git a/html/tools.html b/html/tools.html new file mode 100644 index 000000000..f8a189fba --- /dev/null +++ b/html/tools.html @@ -0,0 +1,26 @@ + + +grib_api: Grib tools + + + + + +

Grib tools

The following command line tools are provided to help users in all interactive and batch processing of grib data.
+ Use of the tools is recommended whenever possible. They provide a ready and tested solution for many situations and their use will avoid the need to write new cod and thus speeding up your work.
+ To make easier their use the tools are provided with a common set of options so that it's quick to apply the same options to different tools. We suggest to begin with grib_dump, grib_ls and grib_get to inspect the content of some files and then to learn about the other tools to change the content of the grib message (grib_set, grib_convert, grib_filter) or to copy some messages from a file (grib_copy) or to get a latitude/longitude/values list of data. A smart compare tool (grib_compare) is also provided to compare grib messages focusing on some keys or comparing data with a given precision.

+

+
Generated on Tue Sep 22 15:18:22 2009 for grib_api by  + +doxygen 1.5.3
+ + From 57ced19b1124306a1ee682ba202252a80adb228b Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 26 Mar 2013 15:40:13 +0000 Subject: [PATCH 5/7] Added rule for libtool extension .la --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index e3debf2f1..190beef2a 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ Makefile Makefile.in *.lo +*.la .deps/ /libtool config.h.in From f736b6e63ecebdb545c3c7a110705126437d2046 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 26 Mar 2013 16:09:12 +0000 Subject: [PATCH 6/7] Remove p4 edit commands; git does not need them --- src/extrules.am | 12 ++++++------ src/grib2c.pl | 1 - src/make_accessor_class_hash.ksh | 2 +- src/make_class.pl | 4 ++-- src/make_hash_keys.ksh | 2 +- 5 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/extrules.am b/src/extrules.am index 86dba0a6a..f361278ce 100644 --- a/src/extrules.am +++ b/src/extrules.am @@ -3,17 +3,17 @@ grib_errors.c : grib_errors.txt errors.pl ./errors.pl - cmp grib_errors.c grib_errors.c.new || (p4 edit grib_errors.c ; cp grib_errors.c.new grib_errors.c) - cmp grib_api.h grib_api.h.new || (p4 edit grib_api.h ; cp grib_api.h.new grib_api.h) - cmp ../fortran/grib_api_constants.h grib_api_constants.h.new || (p4 edit ../fortran/grib_api_constants.h ; cp grib_api_constants.h.new ../fortran/grib_api_constants.h) - cmp ../python/grib_errors.h grib_errors.h.new || (p4 edit ../python/grib_errors.h ; cp grib_errors.h.new ../python/grib_errors.h) + cmp grib_errors.c grib_errors.c.new || (cp grib_errors.c.new grib_errors.c) + cmp grib_api.h grib_api.h.new || (cp grib_api.h.new grib_api.h) + cmp ../fortran/grib_api_constants.h grib_api_constants.h.new || (cp grib_api_constants.h.new ../fortran/grib_api_constants.h) + cmp ../python/grib_errors.h grib_errors.h.new || (cp grib_errors.h.new ../python/grib_errors.h) -proto:;-p4 edit grib_api_prototypes.h;mkptypes -A $(libgrib_api_a_prototypes) $(libgrib_api_extra_prototypes) > grib_api_prototypes.h +proto:;-chmod +w grib_api_prototypes.h;mkptypes -A $(libgrib_api_a_prototypes) $(libgrib_api_extra_prototypes) > grib_api_prototypes.h test:all;(cd ../tests; make tests) templates: - -p4 edit grib_templates.h + -chmod +wgrib_templates.h ./grib2c.pl ../templates/*.grib grib_lex.c : gribl.l grib_yacc.h diff --git a/src/grib2c.pl b/src/grib2c.pl index 29fd2d1c8..c00ae47da 100755 --- a/src/grib2c.pl +++ b/src/grib2c.pl @@ -13,7 +13,6 @@ use Data::Dumper; my $name; my %entries; -system("p4 edit grib_templates.h"); open(OUT,">grib_templates.h") or "die grib_templates.h: $!"; print OUT "/* This file is automatically generated by $0, do not edit */\n\n"; diff --git a/src/make_accessor_class_hash.ksh b/src/make_accessor_class_hash.ksh index 32c217777..da9edd215 100755 --- a/src/make_accessor_class_hash.ksh +++ b/src/make_accessor_class_hash.ksh @@ -12,7 +12,7 @@ EOF cat grib_accessor_factory_hash_list | sed 's/\/\*/#/g' >> accessor_class_list.gperf -p4 edit grib_accessor_classes_hash.c +# editing grib_accessor_classes_hash.c gperf -W classes -t -G -H grib_accessor_classes_get_id -N grib_accessor_classes_hash -m 1 -j 1 accessor_class_list.gperf | sed s/__inline//g | sed s/inline//g > grib_accessor_classes_hash.c diff --git a/src/make_class.pl b/src/make_class.pl index 820563287..99c871eab 100755 --- a/src/make_class.pl +++ b/src/make_class.pl @@ -72,7 +72,7 @@ foreach $name ( @ARGV ) if(compare_text("$name.tmp",$name)) { print "UPDATING file $name\n"; - system("p4 edit $name") unless(-w $name); + system("chmod +w $name") unless(-w $name); cp($name,"$name.old") or die "cp($name,$name.old): $!"; cp("$name.tmp",$name) or die "cp($name.tmp,$name): $!"; } @@ -211,7 +211,7 @@ EOF if(-f $file) { local $_; - system("p4 edit $file") unless(-w $file); + system("chmmod +w $file") unless(-w $file); open(F,"<$file") or die "$file: $!"; while() diff --git a/src/make_hash_keys.ksh b/src/make_hash_keys.ksh index f9503c43e..0ba46d1aa 100755 --- a/src/make_hash_keys.ksh +++ b/src/make_hash_keys.ksh @@ -7,7 +7,7 @@ cd ../tests cd ../src -p4 edit keys grib_hash_keys.c +# Editing keys grib_hash_keys.c gperf -I -t -G -H hash_keys -N grib_keys_hash_get -m 3 ../tests/keys | sed s/__inline//g | sed s/inline//g > grib_hash_keys.c From d59d323574060e32ef3066b0c19df7b185abba9f Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Tue, 2 Apr 2013 14:26:56 +0100 Subject: [PATCH 7/7] Cmake changes from 1.10.4 --- CMakeLists.txt | 4 +++- definitions/CMakeLists.txt | 14 ++++++++++++++ fortran/CMakeLists.txt | 1 + src/CMakeLists.txt | 2 ++ src/extrules.am | 2 +- 5 files changed, 21 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 41acbafe5..087d0848b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -80,7 +80,9 @@ add_subdirectory( definitions ) add_subdirectory( tests ) add_subdirectory( tigge ) add_subdirectory( examples ) -# add_subdirectory( samples ) + +add_subdirectory( samples ) +add_subdirectory( ifs_samples ) # must come after samples # ecbuild_dont_pack( DIRS samples DONT_PACK_REGEX "*.grib" ) diff --git a/definitions/CMakeLists.txt b/definitions/CMakeLists.txt index e69de29bb..5868bf4a2 100644 --- a/definitions/CMakeLists.txt +++ b/definitions/CMakeLists.txt @@ -0,0 +1,14 @@ +file( GLOB definition_files RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.def" ) +file( GLOB table_files RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.table" ) + +install( FILES ${definition_files} ${table_files} + DESTINATION share/${PROJECT_NAME}/definitions + PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ ) + +install( DIRECTORY budg cdf common grib1 grib2 gts mars tide + DESTINATION share/${PROJECT_NAME}/definitions + FILES_MATCHING + PATTERN "*.def" + PATTERN "*.table" + PATTERN "4.2.192.*.table" EXCLUDE + PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ ) diff --git a/fortran/CMakeLists.txt b/fortran/CMakeLists.txt index 133188e6b..225fc4b9d 100644 --- a/fortran/CMakeLists.txt +++ b/fortran/CMakeLists.txt @@ -4,5 +4,6 @@ if( GRB_API_FORTRAN ) # add here the building of fortran bindings + install( FILES grib_api_F77.h DESTINATION include/${PROJECT_NAME} ) endif() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 899851c2b..142a291ff 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -316,3 +316,5 @@ ecbuild_add_library( TARGET grib_api # TODO: add support for jpg and png + +install( FILES grib_api.h DESTINATION include/${PROJECT_NAME} ) diff --git a/src/extrules.am b/src/extrules.am index f361278ce..55ab47074 100644 --- a/src/extrules.am +++ b/src/extrules.am @@ -13,7 +13,7 @@ proto:;-chmod +w grib_api_prototypes.h;mkptypes -A $(libgrib_api_a_prototypes) $ test:all;(cd ../tests; make tests) templates: - -chmod +wgrib_templates.h + -chmod +w grib_templates.h ./grib2c.pl ../templates/*.grib grib_lex.c : gribl.l grib_yacc.h