The current release version of the I/O API library is Version 3.1; Versions 3.0 is in maintenance only release mode, and versions 2.2 and 2.1 are available for historic interest. Version 3.2-beta is available for early examination and testing. To download source for these, please go to the I/O API Download Page.
Release and 3.2-beta versions 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:
For each supported architecture, there are three 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.
I/O API Version 3.x 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