Difference between revisions of "GENIE Using netCDF"

From SourceWiki
Jump to navigation Jump to search
Line 1: Line 1:
 
==What is NetCDF? and why use it?==
 
==What is NetCDF? and why use it?==
  
NetCDF is fast becoming the de facto standard format for storing climate model data.  It is a 'platform independent' format and so is good for sharing data between members of the community.  The format is also flexible in what can be stored and self-documenting--two more very useful features.  There is of course some overhead in learning any new file format, but I believe that using NetCDF is well worth the relatively small amount of effort involved.
+
NetCDF is fast becoming the de facto standard format for storing climate model data.  It is a 'platform independent' format and so is good for sharing data between members of the community.  The format is also flexible in what can be stored and self-documenting--two more very useful features.  There is of course some overhead in learning any new file format, but I believe that using NetCDF is well worth the relatively small amount of effort (honest) involved.
 +
 
 +
Data are stored in NetCDF in the form of ''variables''.  These can have '''dimensions''' and other '''attributes'''.  A NetCDF file is split into two main sections; (i) a header, which describes all the variables, dimensions and attributes; and (ii) the data part in which, well, the data is stored (ahem).
 +
 
 +
In order to read and write data to and from a NetCDF file, we must tell our programs how to do it.  To do this fro scratch each time would be both tedious and a waste of time.  Luckily the kind folks at Unidata make a high-level ''interface'' available which we can use in our programs.  This is distributed in the form of a ''library'' which we can link to our programs. (They produce libraries for a number of languages such as F77 and F90, C and C++.)
  
 
==Obtaining the NetCDF Libraries==
 
==Obtaining the NetCDF Libraries==

Revision as of 15:30, 18 January 2007

What is NetCDF? and why use it?

NetCDF is fast becoming the de facto standard format for storing climate model data. It is a 'platform independent' format and so is good for sharing data between members of the community. The format is also flexible in what can be stored and self-documenting--two more very useful features. There is of course some overhead in learning any new file format, but I believe that using NetCDF is well worth the relatively small amount of effort (honest) involved.

Data are stored in NetCDF in the form of variables. These can have dimensions and other attributes. A NetCDF file is split into two main sections; (i) a header, which describes all the variables, dimensions and attributes; and (ii) the data part in which, well, the data is stored (ahem).

In order to read and write data to and from a NetCDF file, we must tell our programs how to do it. To do this fro scratch each time would be both tedious and a waste of time. Luckily the kind folks at Unidata make a high-level interface available which we can use in our programs. This is distributed in the form of a library which we can link to our programs. (They produce libraries for a number of languages such as F77 and F90, C and C++.)

Obtaining the NetCDF Libraries

You can download the source code for the NetCDF libraries from the Unidata NetCDF web page.

Quickstart: Compiling the NetCDF libraries

The Unidata webpage contains links to documentation describing installing and using the libraries. However, the quickstart below, may be enough to get you going. Note that it's far easier if you use the same fortran compiler to compile both GENIE and the NetCDF libraries. If you do not, then you will need to become familiar with compiler options which deal with the topic of "name mangling" (enough said). Note that you will also most likely fair better with an upto date copy of the NetCDF libraries.

  1. First of all unpack the gzipped tar file which you downloaded, e.g. tar -xzf netcdf-3.6.0-p1.tar.gz
  2. Change directory to that containing the source code, e.g. cd netcdf-3.6.0-p1/src
  3. The libraries are written in C and Fortran. You need to set some environment variables to tell the installation process which compilers you are using. On my Linux system, using gcc to compile the C code and ifort for the Fortran, I typed the following in my bash shell:
    • export CC=gcc
    • export FC=ifort
    • export CPPFLAGES="-DpgiFortran"
  4. Now run the configure script. You can use the "--prefix" option to choose where to install the libraries. For example, "--prefix=/opt/local" will cause files to be placed in /opt/local/lib, opt/local/bin and /opt/local/include.
  5. Finally run make and then make install.
  6. Check that you have the created all the files you need. You should see libnetcdf.a in the your installation lib directory. For Fortran90 support, you will also need netcdf.mod in the include directory.