Release notes are available here.
Note that a large amount of effort has been expended during the whole of I/O API development to ensure upward compatibility: programs written for the original Version 0.9 pre-release should still work correctly with I/O API Version 3.0 unlike some other software we will refrain from naming here.
Back to Contents
On the other hand, its author thinks it is good stuffTM and welcomes comments and suggestions. Back to Contents
Back to Contents
This release is current as of January 18 29, 2005 and includes all bug-fixes up through that date. It should be considered the first prduction release of Version 3.0 for netCDF files, but should probably still be considered "beta" for PVM-based virtual files, for native-binary layer, and for the multi-file file-list layer, since each of these latter has basically a single-user community rather than widespread beta-test usage.
The build procedure also has been considerably enhanced, by the addition
of a top-level Makefile which allows one to build
various configurations of the entire (I/O API +
M3TOOLS) system with one make command.
Depending upon what you want to do, there are two main options for
how you will build the system:
Makefiles for the configuration, and then
a top-level make command to build all
the libraries and all the executables for that
configuration.
ioapi for the
I/O API library source code,
HTML for the documentation,
m3tools for the related tool
programs, iotest for various
test-programs, and notcdf for the
NCEP libnotcdf.a library (a dummy library
for installation sites that don't
allow netCDF on-site).
<machinetype> matches
the extension on one of the
ioapi/Makeinclude.*. Then do a
top-level make dirs to build the
object-directories.
The usual pattern for generating BIN is
setenv BIN `uname -s``uname -r | cut -d. -f1`and then modify the result by appending any compiler specifics, e.g., for F90 or debug compiled configurations.
Note, for example,
that for Linux2_x86, there are
distinct (and incompatible) variants for the
GNU g77/gcc, Intel ifc/icc,
Lahey-Fujitsu lf95/GNU gcc,
and Portland Group pgf90/pgcc;
moreover, the latter is not compatible with
Portland Group pgf90/GNU
gcc (when the latter is used to
build libnetcdf.a, as in the vendor
supplied libraries on RedHat (that
incompatibility being the largest single
generator of installation-questions in recent
years!).
INTEL and SGI NOTES:
MAKEINCLUDE.$BIN
accordingly.
MAKEINCLUDE.$BIN to replace
-TARG:platform=ip27 -TARG:processor=r12000
by -TARG:platform=ip27,processor=r12000,
(etc.)
If you plan to build a coupling-mode configuration, do the same with PVM. See http://www.csm.ornl.gov/pvm/pvm_home.html
ioapi/Makeinclude.$BIN for your
system specific compiler options and PVM
installation location, as appropriate.
Makefile to set
variables BASEDIR, etc., for your
system.
If you are doing a multi-configuration
installation, do the same for each
*/Makefile*.
If you are doing a single-configuration installation, do make configure
make all
make cpl
make nocpl
make f77
make f77cpl
make f77nocpl
make relink
M3TOOLS object files (e.g.,if
you have changed the libraries).
make clean
.o),
and library (.a) files.
make configure
Makefile and
then run a set of sed commands
on the templates */Makefile*.sed
in order to generate lower level
Makefiles for a particular
configuration.
make SGI
IRIX6n32, IRIX6n32f90,
IRIX64, and IRIX64f90make Sun
SunOS5 and SunOS5f90
make fix
INCLUDE-files.
Back to Contents
OBJDIR in the
Makefile, either by commenting out the
current value and un-commenting one of the alternatives,
or by setting your own system-dependent value.
Makefile builds the I/O API
with the Coupling Mode
Extensions enabled, and therefore requires
linking executables with PVM library (version 3 or
greater). To disable the Coupling Mode
Extensions, copy the provided
Makefile.nocpl to Makefile and
then build the system.
This download is current as of October 18, 2003 Back to Contents
libioapi_v2.1.a instead of
Version 2.0's libioapi_new.a
Release Version 2.1 of the I/O API and the I/O -related
tool and sample programs is available
here for download in source code form. New features of this
release are documented here.
Makeinclude files are available for the following
platforms (and some debug- and other variants, denoted by
dbg i8, and r8 suffixes):
Makeinclude.Linux2_x86pg assumes
you are using a gcc/g77-compatible
libnetcdf.a (as comes from the vendor on
many Linux systems). For pgf77/pgf90/pgcc
versions of libnetcdf.a, remove
-Msecond_underscore from
ARCHFLAGS in
Makeinclude.Linux2_x86pg.
From these examples and from a knowledge of the compiler user manual,
it should be relatively easy to build Makeinclude files
for most UNIX or UNIX-like platforms and compilers. Instructions
for building the I/O API library libioapi_v2.1.a
and the I/O API tool executable programs are as given below.
NOTE: It is important to ensure that the compile flags used for building the I/O API library are consistent with both the compile flags used for building your program and the compile flags used for building the netCDF, PVM, and other libraries used by your programs. Failure to do so may result in link-failures or (in the case of the Linux Portland Group compilers) run-time program deadlocks (program hangs, doing no work while consuming all available CPU resources).
ioapi_21.tar.gz.
It contains directories ioapi for the
I/O API library source code, ioapi_doc
for the HTML documentation, and ioapi_tools
for the related tool programs.
ioapi_21.tar.gz (with Gnu tar,
tar xvfz ioapi_v2.1.tar.gz
does unzip-untar all in one step).
setenv BIN <machinetype><machinetype> matches the
extension on one of the Makeinclude.*
(building your own Makeinclude if yours
is not one of the supported systems).BIN is
setenv BIN `uname -s``uname -r | cut -d.
-f1`
although there are exceptions where more work is needed
for Cray, SGI and Linux systems, and F90 or DEBUG
compiles.
../$BIN relative
to the source code directories for the I/O API and
tools. Edit the Makefile to put OBJDIR wherever you want it
(if you want somewhere other than the default
../$BIN location).
ARCHFLAGS variable in the (compiler-system
dependent) Makeinclude.$BIN files.
OMPFLAGS
variable in Makeinclude.$BIN. The
I/O API does not have parallel sections of its own;
however, enabling OpenMP does allow the activation of
critical sections allowing the I/O API to be
thread-safe for OpenMP-parallel programs (like the
MAQSIP-RT air quality model, the WRF or MCPL-enabled MM5
meteorology models, research versions of SMOKE, and others.
You may set OMPFLAGS and OMPLIBS
to empty-strings in order to disable this
thread-protection, if you wish.
ioapi,
type make to build the object library. The
current build process will generate
$OBJDIR/libioapi_v2.1.a (to distinguish it
from earlier Version 1 $OBJDIR/libioapi.a);
mv it to libioapi.a or
libm3io.a, if desired.
libnetcdf.a; if you're building with Coupling
Mode active, do the same for PVM.
libnetcdf.a
(and libpvm3.a if you built it) to your
OBJDIR.
ioapi_tools, type either make
(if you have a F90-compliant Fortran compiler), or
make f77 (if you don't) to build the
tool-program executables (adjusting the LIB
make-variable if you renamed
$OBJDIR/libioapi_v2.1.a in the preceeding
step). Note that there are a number of these programs
that do require F90: dayagg, ginterp,
m3cple, m3agmax, m3agmask, m3combo, m3merge, mtxblend,
mtxbuild, mtxcalc, mtxcple, presterp, and
selmrg2d.
NOTE: On the Sun and SGI platforms, there are link incompatibilities between f77 and f90, caused by the fact that these vendors' f77 and f90 by default use different system libraries. Compaq, Cray, and IBM compilers do not seem to do this; however, it is probably advisable not to mix f77 and f90 compiles on a not-well-understood new platform.
Back to Contents
I/O API usage requires archive libraries libioapi.a compiled for your modeling platform. It also requires the Unidata netCDF library libnetcdf.a, version 3.x or later (NOTE: certain token-value parameters were changed between netCDF 2.x and 3.x; all that is required to build the I/O API for netCDF 2.x is to use that version's netcdf.inc INCLUDE-file and recompile libioapi.a.). If you are running in coupled-model mode, you also need the model-coupling library, as well as PVM 3.4 or later.
Both the libioapi.a object library and the m3tools.tar.gz set of I/O API-related programs are available for the following list of currently-supported host architectures:
Please go to the EDSS Registration and Download page for more information about availability, software registration, and downloading of multiple EDSS subsystems, including not only the I/O API and its related tools but also the PAVE visualization system, the EDSS Study Planner, and the SMOKE emissions model.
Back to Contents
UP: Environmental Modeling Center at MCNC home page
UP: The Environmental Decision Support System Pages
Back to the I/O API User Manual
Send comments to
Carlie J. Coats, Jr.
carlie.coats@baronams.com