The current release version of the I/O API library is Version 3.0; Version 2.2 is in maintenance only release mode, and binaries and executables are also available for its predecessor, I/O API Verison 2.1. To download source for 3,0 or 2.2, or source, binary libraries and executables for Version 2.1, please go to the I/O API Download Page.
Release Version 3.0 and 3.1 of the I/O API and the I/O -related tool and sample programs are available here:
Makeinclude
files are available for the following
platforms:
Version 2.2 of the I/O API library code is available here in source code form. New features of this release are documented here. The build procedure is the same as that for Version 2.1, documented below, except that the default object library directory is directly under the source code directory.
For each supported architecture, there are four relevant archive libraries of compiled object files:
If you call I/O API routines, you will need
both libioapi.a and
libnetcdf.a (or their debug-compiled equivalents); if
you build with coupling mode enabled, you will also need
libpvm3.a. If you call only coordinate and grid or date
and time manipulation routines or utility routines, you will just
need libioapi.a. On the MCNC Environmental Programs
servers, f77-compiled I/O API Version 1 archive
libraries (".a files") are available for the following
list of currently-supported host architectures (these are the
values of environment variable EDSS_OS
, as set by the
setup_edss shell script):
EDSS_OS
. Note that on Suns and
SGIs, "f77" and "f90" are not link
compatible; furthermore, there have historically been major
link incompatibilities on Suns between object libraries compiled
with different versions of the Sun "f77" -- in
particular, link incompatibilities caused problems for every
transition among versions 3.0, 3.5, 4.0. 4.1, and 4.5.
I/O API Version 3 libraries have build support for the following platforms (and supporting additional platforms generally is quite easy, following the pattern of the existing builds):
AIX
- for AIX on POWER-<n> using xlc_r and xlf_r, with OpenMP support.
AIX_
- As for AIX but with Feldman-style (trailing underscore) Fortran name-mangling for linker symbols.
AIXdbg
- As for AIX but for debug
cray/
- for UNICOS on Cray vector machines using f90
HP-UXf90
- for HP-UX using f90 and c89.
Note: caution; I haven't had an HPUX system to test on for over 5 years...
IRIX5f77
- For SGI IRIX 5 ("-o32" on mips-2 platforms using f77 and cc, with OpenMP support.
Not link-compatible withIRIX6*
IRIX5f90
- For SGI IRIX 5 ("-o32" on mips-2 platforms using f90 and cc, with OpenMP support.
Not link-compatible withIRIX5f77
norIRIX6*
IRIX64
- For SGI IRIX 6 -64 on mips-4 platforms using f77 and cc, with OpenMP support.
Not link-compatible withIRIX5*
,IRIX64f90
etc.
IRIX64dbg
- Like
IRIX64
but compiled for debug.
IRIX64f77
- same as
IRIX64
, for convenience in explicitly specifying the compiler.
IRIX64f90
- Like
IRIX64
, but using f90. Not link-compatible withIRIX64f77
etc.
IRIX64f90dbg
- Like
IRIX64f90
but compiled for debug.
IRIX64i8
- Like
IRIX64
but compiled forINTEGER*8
IRIX64i8f77
- Same as
IRIX64i8
IRIX64r8f90
- Like
IRIX64f90
but compiled forINTEGER*8
andREAL*8
IRIX6n32
- For SGI IRIX 6 -n32 on mips-4 platforms using f77 and cc, with OpenMP support.
Not link-compatible withIRIX6n32f90
norIRIX5*
,IRIX64*
etc.
IRIX6n32dbg
- Like
IRIX6n32
but compiled for debug.
IRIX6n32f77
- Same as
IRIX6n32
IRIX6n32f90
- Like
IRIX64
, but using f90.
Not link-compatible withIRIX6n32
,IRIX64*
etc.
IRIX6n32f90dbg
- Like
IRIX6n32f90
but compiled for debug.
IRIX6n32r8f90
- Like
IRIX6n32f90
but compiled forINTEGER*8
andREAL*8
Linux2_alpha
- For Linux on DEC^H^H^HCompaq^H^H^H^H^H^HHP Alpha systems using Digital fort.
Linux2_alphadbg
- Like
Linux2_alpha
but compiled for debug.
Linux2_ia64
- For Linux on Intel IA64 using Intel ecc and efc Version 7.x. No OpenMP support.
Linux2_ia64_mp
- For Linux on Intel IA64 using Intel ecc and efc Version 7.x, with OpenMP support.
Linux2_ia64_nomp
- same as
Linux2_ia64
Linux2_ia64efc
- same as
Linux2_ia64
Linux2_ia64efcdbg
- ...compiled for debug
Linux2_ia64gcc
- ... using gcc and g77
Linux2_ia64ifort
- ... Intel Version 8.x icc and ifort with OpenMP support.
Linux2_ia64ifortdbg
- ...compiled for debug
Linux2_x86
- For Linux on Intel(/AMD) x86 using gcc and g77
Linux2_x86_64
- For Linux on AMD(/Intel) x86_64 using gcc and g77
Linux2_x86_64dbg
- ...compiled for debug
Linux2_x86_64g95
- ...using gcc and g95
Linux2_x86_64path
- ...using PathScale pathcc and pathf90
Linux2_x86_64pathdbg
- ...compiled for debug
Linux2_x86dbg
- For Linux on Intel(/AMD) x86, using gcc and g77, compiled for debug
Linux2_x86g95
- For Linux on Intel(/AMD) x86, using gcc and g95
Linux2_x86ifc
- For Linux on Intel(/AMD) x86, using Intel icc and ifc
Linux2_x86ifcdbg
- ...compiled for debug
Linux2_x86lf95
- For Linux on Intel(/AMD) x86, using gcc and Lahey-Fujitsu lf95
Linux2_x86pg
- For Linux on Intel(/AMD) x86, using Portland Group pgcc and pgf90 Compiled for gcc compatibility and OpenMP support.
Linux2_x86pg_gcc_mp
- ...same as
Linux2_x86pg
Linux2_x86pg_gcc_nomp
- Like
Linux2_x86pg
but no OpenMP support.
Use this one if you're using native (vendor-supplied RedHat,SuSE, Mandriva, etc.) libnetcdf.a
Linux2_x86pg_pgcc_mp
- For Linux on Intel(/AMD) x86, using Portland Group pgcc and pgf90 Compiled for pgcc native mode and OpenMP support.
Not link compatible withLinux2_x86pg
Linux2_x86pg_pgcc_nomp
- ... no OpenMP support.
OSF1
- For OSF1 on DEC^H^H^HCompaq^H^H^H^H^H^HHP VAX or Alpha systems using Digital fort, with OpenMP support.
SunOS5
- For SunOS 5 (Solaris 2) systems, with OpenMP support.
Not link compatible withSunOS5f90
. No 64-bit support since I don't have a 64-bit Sun system to develop and test on.
SunOS5dbg
- ...compiled for debug
SunOS5f77
- Same as
SunOS5
SunOS5f90
- ...compiled with f90.
Not link compatible withSunOS5
. No 64-bit support since I don't have a 64-bit Sun system to develop and test on.
SunOS5f90dbg
- ...compiled for debug
Additionally, the libraries have in the past been compiled for a number of other platforms, but the machines used for building these no longer are available to compile and build the latest versions of the libraries. It should be a simple task to build versions of the libioapi.a and libnetcdf.a archive libraries on most UNIX workstations--at least, those with Feldman-descended Fortran compilers.
For C programmers: Further note that since most of the library routines are C wrappers around Fortran code, you need to use cc -c to build ".o" files for your program, and then use f77 or f77, as appropriate, to invoke the linker (since f77 knows how to link in the Fortran run-time libraries but cc doesn't), as in the following example which builds SunOS5 program "qux" from "qux.c":
setenv LIB /env/apps/SunOS5/lib # library directory cc -c qux.c # produces qux.o
f77 -o qux qux.o -L${LIB} -lioapi -lnetcdf # linking step
To: Models-3/EDSS I/O API: The Help Pages