4/2016 General Installation Quick Directions for the Default Configuration "Any color that you like as long as it's black" Download source code from ftp://ftp.cpc.ncep.noaa.gov/wd51we/wgrib2/wgrib2.tgz http://www.ftp.cpc.ncep.noaa.gov/wd51we/wgrib2/wgrib2.tgz Untar the compressed tarball gunzip wgrib2.tgz tar -xvf wgrib2.tar or if you have gnu tar: tar -xzvf wgrib2.tgz Go to the main directory (grib2) cd grib2 Define the C compiler that you will be using. Note icc and pgc have been found to be incompatible with the Jasper library and are not allowed. sh/bash: export CC=gcc csh/tcsh: setenv CC gcc Compile the wgrib2 using gnu make linux: make MacOS: gmake Unix: ??? ask system administrators Try executing wgrib2 wgrib2/wgrib2 -config Copy wgrib2 to SOMEPLACE cygwin/linux/unix: cp wgrib2/wgrib2 SOMEPLACE Not So Quick Directions So you want some options Edit the file "makefile" and select the desired options: # netcdf3: write netcdf files with netcdf-3 library # netcdf4: write netcdf files with netcdf-4 library # regex: regular expression package used by (match,not), POSIX-2 # tigge: enable -tigge option for tigge names # mysql: write to mysql files # ipolates: fortran interpolation library # udf: user defined functions # openmp: multicore support using OpenMP # proj4: use proj4 for geolocation # wmo_validation: used for testing new templates # fortran_api: fortran api for callable wgrib2, requires a fortran 2003 # feature, subroutines can allocated/deallocated arrays # disable_timezone: some OS do not handle time zones in POSIX maner # # the flags are stored in wgrib2/config.h # # Warning do not set both USE_NETCDF3 and USE_NETCDF4 to one These are the default options USE_NETCDF3=1 USE_NETCDF4=0 USE_REGEX=1 USE_TIGGE=1 USE_MYSQL=0 USE_IPOLATES=1 USE_UDF=0 USE_OPENMP=1 USE_PROJ4=0 USE_WMO_VALIDATION=0 DISABLE_TIMEZONE=0 MAKE_FTN_API=1 USE_G2CLIB=0 USE_PNG=1 USE_JASPER=1 COMMENTS: 1) Do not set both USE_NETCDF3 and USE_NETCDF4 to one 2) Some options require a compatible fortran compiler (usually gfortran). You need to set the environment variable FC before running make sh/bash: export FC=gfortran csh/tcsh: setenv FC gfortran 3) On some machines, you will have to define the C compiler and C preprocessor. On the NCEP's AIX, I have to define them by export CC=/usr/vacpp/bin/xlc_r export CPP=/usr/bin/cpp Netcdf The makefile is set up to use either netcdf v3 or netcdf v4. Netcdf-4 makes wgrib2 much bigger, so don't install it unless you really have to. The source code for netcdf-4 (and necessary hdf5) is also very big and will have to be downloaded separately. The makefile will prompt you for the downloads. You also have to set the fortran compiler. See (2). The netcdf-3 library is included with this distribution. The library is compiled in enable-C-only mode which is not be that useful for fortran code. Don't use try to link other codes to this library. MYSQL Install MySQL requires the appropriate headers and libraries to be installed. The makefile may have to be modified to reflect the locations of the headers and libraries. IPOLATES, interpolation library IPOLATES is the interpolation library used by the -new_grid options. In order to use this library, you must have a f90/f95/f2003 fortran compiler enabled. See (2). You will have to change the source code if you are not using g95, gfortran, openf95 or xlf. USE_UDF Set to zero in 99.999% of the times. USE_PROJ4 Wgrib2 can use Proj4 as its geolocation library. The default geolocation library, gctpc, is faster. Proj4 is most used to compare check the results from gctpc. USE_WMO_VALIDATION Has been used for validation of proposed WMO extentions. DISABLE_TIMEZONE Set to zero if most cases. For one non-POSIX system, the time zones had to be disabled in order for a certain option to work correctly. OpenMP OpenMP allows wgrib2 to run faster by using threading the code and running on multiple cores. When you enable OpenMP, your C compiler must support OpenMP v3.0 or higher. MAKE_FTN_API The MAKE_FTN_API builds the wgrib2 library and the C and fortran API. This enables C and Fortran codes to call wgrib2 as a subroutine. This also requires a fortran compiler. USE_G2CLIB The internal grib decoders are better than g2clib so there is little reason to link in g2clib. However, I've gotten complaints that wgrib2 decoded this field incorrectly. My reply is that g2clib got the same results. USE_PNG If set to zero, the png library is not linked in and png-compressed grib message cannot be read. When was the last time you saw a png-compressed grib message? Must be set to one if g2clib is linked int. USE_JASPER If set to zero, the jasper library used for encoding and decoding jpeg2000 is not linked in. Since jpeg2000-compressed files are very common, USE_JASPER should be set to one. The only exception is when you are cross-compiling wgrib2. Using autoconfig scripts (Proj4, png, jasper) can be a challenge. Of course, you would have restrict yourself to simple, complex or ieee packed grib. INSTALLING on Cygwin and Windows The code including the IPOLATES option compiles in the cygwin development system. You'll have to install extra packages such as the C, gfortran compilers and various scripting utilities. Before you compile, you set the default compilers. export CC=gcc export FC=gfortran make INSTALLING on FreeBSD Set appropriate CC and FC environment variables and try make. wgrib2 v1.9.8 was compiled with clang and gfortran. INSTALLING on Apple OS-X See Grace Peng's blog. INSTALLING on NCEP's AIX Define default C, C preprocessor and fortran export CC=/usr/vacpp/bin/xlc_r export CPP=/usr/bin/cpp export FC=xlf_r gmake Static vs Dynamic Libraries The various libraries can be created in both dynamic and static versions. I've tried to make the add-on libraries static. Testing Package Yes it does exist. Problems Perfection? Not here.