took out fortran API, made some documentation changes

This commit is contained in:
Ed Hartnett 2011-08-11 17:54:34 +00:00
parent 32619fe8e9
commit 9212be6606
9 changed files with 88 additions and 369 deletions

View File

@ -1,5 +1,5 @@
## This is a automake file, part of Unidata's netCDF package.
# Copyright 2005, see the COPYRIGHT file for more information.
# Copyright 2005-2011, see the COPYRIGHT file for more information.
# This is the main automake file for netCDF. It builds the different
# netcdf directories. Not all directories are built, depending on the
@ -9,22 +9,11 @@
ACLOCAL_AMFLAGS = -I m4
# These files get added to the distribution.
EXTRA_DIST = README COPYRIGHT RELEASE_NOTES test_prog.c test_prog.F \
test_prog.f90 lib_flags.am
EXTRA_DIST = README COPYRIGHT RELEASE_NOTES test_prog.c lib_flags.am
pkgconfigdir=$(libdir)/pkgconfig
pkgconfig_DATA = netcdf.pc
# If the user wants the F77 API this will cause it to be built and
# tested.
if BUILD_F77
F77_DIR = fortran
F77_TEST = nf_test
endif
LIBSRC_DIR = libsrc
NC_TEST_DIR = nc_test
# Does the user want to build the V2 API?
if BUILD_V2
V2_TEST = nctest
@ -49,11 +38,6 @@ LIBSRC4_DIR = libsrc4
NC_TEST4 = nc_test4
endif
# Does the user want F90 API?
if BUILD_F90
F90_DIR = f90
endif
# Build the opendap client?
if BUILD_DAP
OCLIB = oc
@ -72,11 +56,10 @@ endif
# This is the list of subdirs for which Makefiles will be constructed
# and run. ncgen must come before ncdump, because their tests
# depend on it. nf_test depends upon ncgen as well.
# depend on it.
SUBDIRS = include $(H5_TEST_DIR) libdispatch $(OCLIB) libsrc \
$(LIBSRC4_DIR) $(DAP2) $(LIBCDMR) liblib $(V2_TEST) nc_test $(F90_DIR) \
$(F77_DIR) $(NCGEN3) $(NCGEN) $(NCDUMP) $(F77_TEST) $(NC_TEST4) \
$(NCDAPTESTDIR) man4 $(EXAMPLES)
$(LIBSRC4_DIR) $(DAP2) $(LIBCDMR) liblib $(V2_TEST) nc_test $(NCGEN3) \
$(NCGEN) $(NCDUMP) $(NC_TEST4) $(NCDAPTESTDIR) man4 $(EXAMPLES)
# Remove these generated files, for a distclean.
DISTCLEANFILES = VERSION comps.txt test_prog
@ -96,37 +79,11 @@ ZIPBINFILES += ${prefix}/bin/ncgen3$(EXEEXT) ${prefix}/bin/ncgen$(EXEEXT) ${pref
${prefix}/share/man/man1/ncgen.1 ${prefix}/share/man/man1/ncdump.1
endif
if BUILD_F77
BINFILES += include/netcdf.inc share/man/man3/netcdf_f77.3 \
lib/libnetcdff.a
ZIPBINFILES += ${prefix}/include/netcdf.inc ${prefix}/share/man/man3/netcdf_f77.3 \
${prefix}/lib/libnetcdff.a
endif
if BUILD_F90
if UPPER_CASE_MOD
BINFILES += include/NETCDF.mod include/TYPESIZES.mod
ZIPBINFILES += ${prefix}/include/NETCDF.mod ${prefix}/include/TYPESIZES.mod
else
BINFILES += include/netcdf.mod include/typesizes.mod
ZIPBINFILES += ${prefix}/include/netcdf.mod ${prefix}/include/typesizes.mod
endif
BINFILES += share/man/man3/netcdf_f90.3
ZIPBINFILES += ${prefix}/share/man/man3/netcdf_f90.3
endif
if BUILD_DLL
BINFILES += bin/libnetcdf-7.dll lib/libnetcdf.dll.a lib/libnetcdf.a \
lib/libnetcdf.la lib/netcdfdll.def
ZIPBINFILES += ${prefix}/bin/libnetcdf-7.dll ${prefix}/lib/libnetcdf.dll.a ${prefix}/lib/libnetcdf.a \
${prefix}/lib/libnetcdf.la ${prefix}/lib/netcdfdll.def
if BUILD_F77
BINFILES += bin/libnetcdff-5.dll lib/libnetcdff.dll.a \
lib/libnetcdff.la lib/netcdffdll.def
ZIPBINFILES += ${prefix}/bin/libnetcdff-5.dll \
${prefix}/lib/libnetcdff.dll.a ${prefix}/lib/libnetcdff.la \
${prefix}/lib/netcdffdll.def
endif # BUILD_F77
endif # BUILD_DLL
# At Unidata, package up binaries.
@ -134,7 +91,7 @@ ftpbin: install
echo "Getting binaries from ${prefix}"
ls -l ${prefix}
echo "These are the binaries for netCDF @PACKAGE_VERSION@." > ${prefix}/README_BINARIES.txt
echo "For this build: CC=$(CC) CXX=$(CXX) FC=$(FC) F77=$(F77) $F90=$(F90)" >> ${prefix}/README_BINARIES.txt
echo "For this build: CC=$(CC) CXX=$(CXX)" >> ${prefix}/README_BINARIES.txt
echo "CFLAGS=$(CFLAGS) CXXFLAGS=$(CXXFLAGS)" >> ${prefix}/README_BINARIES.txt
echo "FCFLAGS=$(FCFLAGS) F77FLAGS=$(F77FLAGS) $F90FLAGS=$(F90FLAGS)" >> ${prefix}/README_BINARIES.txt
which tar
@ -146,17 +103,10 @@ ftpbin: install
check_nc_config:
$(CC) `./nc-config --cflags` test_prog.c -o test_prog `./nc-config --libs`
./test_prog
$(F77) `./nc-config --fflags` test_prog.F -o test_prog `./nc-config --libs`
./test_prog
$(FC) `./nc-config --fflags` test_prog.f90 -o test_prog `./nc-config --libs`
./test_prog
install-data-hook:
if BUILD_DLL
cp liblib/netcdfdll.def ${prefix}/lib
if BUILD_F77
cp fortran/netcdffdll.def ${prefix}/lib
endif # BUILD_F77
endif # BUILD_DLL
@echo ''
@echo '+-------------------------------------------------------------+'

View File

@ -33,11 +33,7 @@ AC_CANONICAL_HOST
# Find out about the target we're building for.
AC_CANONICAL_TARGET
# We will output a config.h for the C library, and a fortran inc file,
# nfconfig.inc.
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_HEADERS([fortran/nfconfig1.inc:fortran/nfconfig.in],
[sed '1d;s%^/\* \(.*\) \*/%\1%' fortran/nfconfig1.inc >conftest.tmp && mv conftest.tmp fortran/nfconfig.inc])
# This call is required by automake.
AM_INIT_AUTOMAKE([foreign dist-tarZ subdir-objects])
@ -359,44 +355,6 @@ test "x$enable_examples" = xno && nc_build_examples=no
AC_MSG_RESULT($nc_build_examples)
AM_CONDITIONAL(BUILD_EXAMPLES, [test x$nc_build_examples = xyes])
# Do we want to build the fortran 77 API? Check for --disable-f77.
AC_MSG_CHECKING([whether F77 API is desired])
AC_ARG_ENABLE([f77],
[AS_HELP_STRING([--disable-f77],
[don't try to build the netCDF Fortran 77 (or \
Fortran 90) API])])
test "x$enable_f77" = "xno" && nc_build_f77=no
test "x$nc_null_fc" = xyes && nc_build_f77=no
AC_MSG_RESULT([$nc_build_f77])
# Do we want to build the fortran 77 API? Check for --disable-fortran
# for Russ, who can never remember --disable-f77..
AC_MSG_CHECKING([whether any Fortran API is desired])
AC_ARG_ENABLE([fortran],
[AS_HELP_STRING([--disable-fortran],
[don't try to build the netCDF Fortran 77 or \
Fortran 90 APIs (same effect as --disable-f77)])])
test "x$enable_fortran" = "xno" && nc_build_f77=no
AC_MSG_RESULT([$nc_build_f77])
# Do we want to build the fortran 90 API?
AC_MSG_CHECKING([whether F90 API is desired])
AC_ARG_ENABLE([f90],
[AS_HELP_STRING([--disable-f90],
[don't try to build the netCDF Fortran 90 API])])
test "x$enable_f90" = xno && nc_build_f90=no
test "x$nc_null_fc" = xyes || test "x$nc_null_f90" = xyes || \
test "x$nc_build_f77" = xno && nc_build_f90=no
AC_MSG_RESULT([$nc_build_f90])
# Does the user want to check into fortran type information?
AC_MSG_CHECKING([whether fortran type sizes should be checked])
AC_ARG_ENABLE([fortran-type-check],
[AS_HELP_STRING([--disable-fortran-type-check],
[cause the Fortran type sizes checks to be skipped])])
test "x$enable_fortran_type_check" = xno || enable_fortran_type_check=yes
AC_MSG_RESULT($enable_fortran_type_check)
# Does the user want to disable the V2 API?
AC_MSG_CHECKING([whether v2 netCDF API should be built])
AC_ARG_ENABLE([v2],
@ -521,82 +479,6 @@ if test $havekeypassword = yes; then
fi
CFLAGS="$SAVECFLAGS"
# If the user set environment var FC, but not F77, then set F77=FC
if test "x${FC+set}" = xset -a "x${F77+set}" != xset; then
F77=${FC}
fi
# If F90 is set, and FC isn't, then set FC to whatever F90 was set to.
if test "${F90+set}" = set -a "${FC+set}" != set; then
FC=$F90
fi
# If F77 is set, and FC (still) isn't, then set FC to whatever F77 was
# set to.
if test "${F77+set}" = set -a "${FC+set}" != set; then
FC=$F77
fi
# Find fortran compiler. If FC isn't set after AC_PROG_FC, we couldn't
# find a fortran compiler. If the user requested the fortran API, and
# has told us not to recover from a missing compiler, then bail out
# right here.
AC_MSG_NOTICE([finding Fortran compiler (will not be used if Fortran API is not desired)])
AC_PROG_FC
# If we couldn't find an F90 compiler, deal with it.
if test "${FC+set}" = set && test "x$FC" = x; then
if test "x$enable_compiler_recover" = xno && test "x$nc_build_f90" = xyes; then
AC_MSG_ERROR([Can't find F90 compiler, and compiler recovery disabled.])
fi
AC_MSG_WARN([No F90 compiler found. F90 API will not be built.])
nc_build_f90=no
fi
AC_PROG_F77($FC)
# Handle missing f77 compiler.
if test "${F77+set}" = set && test "x$F77" = x; then
if test "x$enable_compiler_recover" = xno && test "x$nc_build_f77" = xyes; then
AC_MSG_ERROR([Can't find F77 compiler, and compiler recovery disabled.])
fi
AC_MSG_WARN([No F77 compiler found. F77 API will not be built.])
nc_build_f77=no
nc_build_f90=no
fi
# See if the fortran 90 build is desired. If so, set some stuff
if test "x$nc_build_f90" = xyes; then
AC_MSG_NOTICE([setting up Fortran 90])
if test "${F90+set}" != set; then
F90=$FC
fi
AC_MSG_CHECKING([what FC is set to])
AC_MSG_RESULT([$FC])
# Some f90 compilers change the case of the mod file names. Others
# require special flags to be set to dea with .f90 files. Find out
# about this compiler.
AC_LANG_PUSH(Fortran)
AC_FC_SRCEXT(f90)
AC_LANG_POP(Fortran)
AX_F90_MODULE_FLAG
AC_SUBST(MOD_FLAG, ${ax_cv_f90_modflag})
# Set the FCLIBS flag to help with shared libraries.
# AC_FC_LIBRARY_LDFLAGS
# AC_F77_LIBRARY_LDFLAGS
fi
# Set these conditionals for automake. For some reason, it can't keep
# it's SUBDIR order straight if I use BUILD_F77 to attach the nf_test
# directory, so also define an automake conditional TEST_F77 every
# time BUILD_F77 is defined, and set it to the same value.
AM_CONDITIONAL(BUILD_C, [test "x$nc_build_c" = xyes])
AM_CONDITIONAL(BUILD_F77, [test "x$nc_build_f77" = xyes])
AM_CONDITIONAL(TEST_F77, [test "x$nc_build_f77" = xyes])
AM_CONDITIONAL(BUILD_F90, [test "x$nc_build_f90" = xyes])
# Set up libtool.
AC_MSG_NOTICE([setting up libtool])
LT_PREREQ([2.2])
@ -642,37 +524,6 @@ AM_COND_IF([HAVE_DOXYGEN], [AC_SUBST(NETCDF_DOC_ONLY_FILES, ${NETCDF_DOC_ONLY_FI
# Find the install program.
AC_PROG_INSTALL
if test "x$nc_build_f77" = xyes; then
AC_MSG_NOTICE([trying to set fortran flags for this platform])
# Set fortran flag if the user has not already set it in CPPFLAGS.
case "$CPPFLAGS" in
*pgiFortran*|*NAGf90Fortran*|*f2cFortran*|*hpuxFortran*|*apolloFortran*|*sunFortran*|*IBMR2Fortran*|*CRAYFortran*|*PATHSCALE_COMPILER*|*gFortran*|*mipsFortran*|*DECFortran*|*vmsFortran*|*CONVEXFortran*|*PowerStationFortran*|*AbsoftUNIXFortran*|*AbsoftProFortran*|*SXFortran*)
;;
*)
case "$FC" in
pgf95|pgf90|pgf77|ifort*|lf90|lf95)
AC_DEFINE(pgiFortran, [1], [Turned on by netCDF configure.])
;;
*gfortran)
if (gfortran --version | grep '(GCC 4.1.' || gfortran --version | grep '(GCC 4.0.'); then
AC_DEFINE(gFortran, [1], [Turned on by netCDF configure.])
else
AC_DEFINE(pgiFortran, [1], [Turned on by netCDF configure.])
fi
;;
*g77)
AC_DEFINE(f2cFortran, [1], [Turned on by netCDF configure.])
;;
*)
# If it's a gnu compiler, guess f2c.
if test "x$ac_cv_fc_compiler_gnu" = xyes; then
AC_DEFINE(f2cFortran, [1], [Turned on by netCDF configure.])
fi
;;
esac
esac
fi
# Check to see if any macros must be set to enable large (>2GB) files.
AC_SYS_LARGEFILE
@ -683,36 +534,7 @@ AC_MSG_NOTICE([displaying some results])
UD_DISPLAY_RESULTS
# For nightly build testing, output CC, FC, etc.
echo "CPPFLAGS=$CPPFLAGS CC=$CC CFLAGS=$CFLAGS CXX=$CXX CXXFLAGS=$CXXFLAGS FC=$FC FCFLAGS=$FCFLAGS F77=$F77 FFLAGS=$FFLAGS LDFLAGS=$LDFLAGS LIBS=$LIBS FLIBS=$FLIBS F90LIBS=$F90LIBS" >> comps.txt
ac_cv_prog_f90_uppercase_mod=no
# This will test the f77 compiler, as well as check some fortran types.
if test "x$nc_build_f77" = xyes; then
if test "$enable_fortran_type_check" = yes; then
UD_FORTRAN_TYPES
if test "x$ud_fc_failed" = xyes -a "x$enable_compiler_recover" = xno -a "x$nc_build_f77" = xyes; then
AC_MSG_ERROR([F77 compiler doesn't work, and compiler recovery disabled.])
fi
else
AC_DEFINE(NCBYTE_T, byte)
AC_DEFINE(NCSHORT_T, integer*2)
AC_DEFINE(NF_INT1_T, byte)
AC_DEFINE(NF_INT2_T, integer*2)
AC_DEFINE(NF_INT1_IS_C_SIGNED_CHAR, 1, [default])
AC_DEFINE(NF_INT2_IS_C_SHORT, 1, [default])
AC_DEFINE(NF_INT_IS_C_INT, 1, [default])
AC_DEFINE(NF_REAL_IS_C_FLOAT, 1, [default])
AC_DEFINE(NF_DOUBLEPRECISION_IS_C_DOUBLE, 1, [default])
fi
# Test whether F90 module names get capitalized.
if test "x$nc_build_f90" = xyes; then
AC_PROG_FC_UPPERCASE_MOD
fi
fi
AM_CONDITIONAL(UPPER_CASE_MOD, [test "x$ac_cv_prog_f90_uppercase_mod" = xyes])
echo "CPPFLAGS=$CPPFLAGS CC=$CC CFLAGS=$CFLAGS LDFLAGS=$LDFLAGS LIBS=$LIBS" >> comps.txt
AC_MSG_NOTICE([checking types, headers, and functions])
@ -952,15 +774,12 @@ esac
NC_FLIBS="-lnetcdff $NC_LIBS"
AC_SUBST(NC_LIBS,[$NC_LIBS])
AC_SUBST(NC_FLIBS,[$NC_FLIBS])
AC_SUBST(HAS_DAP,[$enable_dap])
AC_SUBST(HAS_NC2,[$nc_build_v2])
AC_SUBST(HAS_NC4,[$enable_netcdf_4])
AC_SUBST(HAS_HDF4,[$enable_hdf4])
AC_SUBST(HAS_PNETCDF,[$enable_pnetcdf])
AC_SUBST(HAS_HDF5,[$enable_netcdf_4])
AC_SUBST(HAS_F77,[$nc_build_f77])
AC_SUBST(HAS_F90,[$nc_build_f90])
AC_SUBST(HAS_SZLIB,[$nc_has_szlib])
# Access netcdf specific version of config.h
@ -979,7 +798,6 @@ AC_CONFIG_FILES([Makefile
h5_test/Makefile
man4/Makefile
man4/images/Makefile
fortran/Makefile
libsrc/Makefile
libsrc4/Makefile
nctest/Makefile
@ -988,13 +806,9 @@ AC_CONFIG_FILES([Makefile
ncdump/Makefile
ncgen3/Makefile
ncgen/Makefile
nf_test/Makefile
f90/Makefile
examples/Makefile
examples/C/Makefile
examples/CDL/Makefile
examples/F90/Makefile
examples/F77/Makefile
oc/Makefile
libdap2/Makefile
libcdmr/Makefile

View File

@ -5,27 +5,10 @@
# netcdf directories. Not all directories are built, depending on the
# options selected during configure.
# $Id: Makefile.am,v 1.9 2007/06/06 20:26:42 ed Exp $
# If the user is building the C API, build the C examples.
if BUILD_C
C_DIR = C
endif
# If the user is building the F77 API, build the F77 examples.
if BUILD_F77
F77_DIR = F77
endif
# If the user is building the F90 API, build the F90 examples.
if BUILD_F90
F90_DIR = F90
endif
# Build ncgen/ncdump.
if BUILD_UTILITIES
CDL_DIR = CDL
endif
# These are the subdirectories that will be built.
SUBDIRS = $(C_DIR) $(CDL_DIR) $(F77_DIR) $(F90_DIR)
SUBDIRS = C $(CDL_DIR)

View File

@ -2948,4 +2948,12 @@ nc_exit()
}
#endif /* EXTRA_TESTS */
#ifdef USE_PARALLEL
int
nc_use_parallel_enabled()
{
return 0;
}
#endif /* USE_PARALLEL */

View File

@ -9,40 +9,13 @@
# The "install" target installs the documentation in a directory
# called $(prefix)/doc/$(PACKAGE)-$(VERSION).
# These are the source files for all the netcdf manuals.
info_TEXINFOS = netcdf-f77.texi netcdf-f90.texi
# Get lists of the coresponding ps, info, and pdf files.
html_docs = ${info_TEXINFOS:.texi=.html}
html_dirs = ${info_TEXINFOS:.texi=}
ps_docs = ${info_TEXINFOS:.texi=.ps}
dvi_docs = ${info_TEXINFOS:.texi=.dvi}
pdf_docs = ${info_TEXINFOS:.texi=.pdf}
info_docs= ${info_TEXINFOS:.texi=.info}
txt_docs= ${info_TEXINFOS:.texi=.txt}
# These are html versions of the man pages.
html_mans = ncdump-man-1.html ncgen-man-1.html netcdf_f77-man.html \
netcdf-man-3.html netcdf_f90-man.html ncgen3-man-1.html \
nccopy-man-1.html
html_mans = ncdump-man-1.html ncgen-man-1.html netcdf-man-3.html \
ncgen3-man-1.html nccopy-man-1.html
# These files will be included with the dist.
EXTRA_DIST = netcdf.m4 $(pdf_docs) $(html_mans) $(txt_docs) \
$(dvi_docs) $(ps_docs) $(info_docs) $(html_docs) netcdf_f77.3 \
DoxygenLayout.xml Doxyfile.in @NETCDF_DOC_ONLY_FILES@ footer.html
#doc_DATA = $(pdf_docs) $(html_mans) $(txt_docs) $(ps_docs) \
#$(info_docs) $(html_docs)
# All the documents depend on defines.texi for some common
# definitions.
netcdf_f77_TEXINFOS = defines.texi
netcdf_f90_TEXINFOS = defines.texi
# Get texi2dvi to shut the hell up, and work better for parallel
# builds. The --tidy option may be useful getting parallel builds to
# work someday.
TEXI2DVI = texi2dvi -s
EXTRA_DIST = netcdf.m4 DoxygenLayout.xml Doxyfile.in \
@NETCDF_DOC_ONLY_FILES@ footer.html
# Turn off parallel builds in this directory.
.NOTPARALLEL:
@ -50,25 +23,10 @@ TEXI2DVI = texi2dvi -s
# To build documentation you must have M4 in their path.
M4=m4
# Rule to generate the text copies of the documentation.
.texi.txt:
makeinfo -o $*.txt --no-headers $(srcdir)/$<
# Generate the HTML version of the netcdf-3 C man page.
netcdf-man-3.html: $(top_srcdir)/libsrc/netcdf.3
groff -man -Thtml $? > $@
# Generate the HTML version of the netcdf-3 F77 man page.
netcdf_f77.3: netcdf.m4
m4 $(M4FLAGS) $(ARGS_MANPAGE) $? >$@ || rm $@
netcdf_f77-man.html: netcdf_f77.3
groff -man -Thtml $? > $@
# Generate the HTML version of the netcdf-3 F90 man page.
netcdf_f90-man.html: $(top_srcdir)/f90/netcdf_f90.3
groff -man -Thtml $? > $@
# Generate the HTML version of the ncgen man page.
ncgen-man-1.html: $(top_srcdir)/ncgen/ncgen.1
groff -man -Thtml $? > $@
@ -85,31 +43,11 @@ ncdump-man-1.html: $(top_srcdir)/ncdump/ncdump.1
nccopy-man-1.html: $(top_srcdir)/ncdump/nccopy.1
groff -man -Thtml $? > $@
netcdf-f77.html:
$(MAKEINFO) --html $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I$(srcdir) netcdf-f77.texi
$(MAKEINFO) --no-split --html $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I$(srcdir) netcdf-f77.texi
netcdf-f90.html:
$(MAKEINFO) --html $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I$(srcdir) netcdf-f90.texi
$(MAKEINFO) --no-split --html $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I$(srcdir) netcdf-f90.texi
# This builds the docs from source, if necessary, and tars up
# everything needed for the website. Run this and copy the resulting
# tarball to the /contents/netcdf/docs directory to update the on-line
# docs.
web-tarball: $(pdf_docs) $(html_mans) $(txt_docs) $(dvi_docs) $(ps_docs) $(info_docs) $(html_docs)
tar cf netcdf_info.tar *.info*
gzip -f netcdf_info.tar
zip netcdf_info *.info
tar cf netcdf_pdf.tar *.pdf
gzip -f netcdf_pdf.tar
zip netcdf_pdf *.pdf
tar cf netcdf_html.tar *.html $(html_dirs)
gzip -f netcdf_html.tar
zip netcdf_html *.html $(html_dirs)
tar cf netcdf_txt.tar *.txt
gzip -f netcdf_txt.tar
zip netcdf_txt *.txt
web-tarball:
cp $(top_srcdir)/ncdump/ncdump.1 .
cp $(top_srcdir)/ncgen/ncgen.1 .
cp $(top_srcdir)/ncdump/nccopy.1 .
@ -120,15 +58,11 @@ web-tarball: $(pdf_docs) $(html_mans) $(txt_docs) $(dvi_docs) $(ps_docs) $(info_
tar cf netcdf_man.tar netcdf.3 netcdf_f77.3 netcdf_f90.3 ncdump.1 ncgen.1 ncgen3.1
gzip -f netcdf_man.tar
zip netcdf_man netcdf.3 netcdf_f77.3 netcdf_f90.3 ncdump.1 ncgen.1 ncgen3.1
tar cf netcdf_docs.tar $(html_dirs) *.pdf *.txt *.html *.tar.gz *.zip
gzip -f netcdf_docs.tar
# Clean up all the junk we created!
MAINTAINERCLEANFILES = $(ps_docs) $(pdf_docs) $(txt_docs) $(info_docs) \
$(html_docs) $(man_MANS) ${c_examples} ${f77_examples} ${f90_examples} \
${cxx_examples} ${cdl_examples} *.1 *.3 ncdump-man-1.html \
ncgen-man-1.html ncgen3-man-1.html netcdf_f77-man.html netcdf-man-3.html \
netcdf_f90-man.html stamp-* version* netcdf_f77.3 nccopy-man-1.html
MAINTAINERCLEANFILES = $(man_MANS) ${c_examples} ${cdl_examples} *.1 \
*.3 ncdump-man-1.html ncgen-man-1.html ncgen3-man-1.html \
netcdf-man-3.html stamp-* version* nccopy-man-1.html
SUBDIRS = images

View File

@ -3,7 +3,17 @@ NetCDF Users Guide
\page user_guide The NetCDF Users Guide
\section Summary
- \ref netcdf_summary
- \ref netcdf_interface
- \ref netcdf_format
- \ref creating_self
- \ref limitations
- \ref data_model
- \ref performance
- \ref attribute_conventions
- \ref remote_client
\page netcdf_summary Summary
The purpose of the Network Common Data Form (netCDF) interface is to
allow you to create, access, and share array-oriented data in a form
@ -50,7 +60,7 @@ http://www.unidata.ucar.edu/software/netcdf-java.
For installation and porting information See The NetCDF Installation
and Porting Guide.
\section netcdf_interface The NetCDF Interface
\page netcdf_interface The NetCDF Interface
The Network Common Data Form, or netCDF, is an interface to a library
of data access functions for storing and retrieving data in the form
@ -209,7 +219,7 @@ better).
For more discussion of format issues see The NetCDF Tutorial.
\section performance What about Performance?
\page performance What about Performance?
One of the goals of netCDF is to support efficient access to small
subsets of large datasets. To support this goal, netCDF uses direct
@ -238,7 +248,7 @@ operations, less so in data access operations. We continue to study
the challenge of implementing netCDF-4/HDF5 format without
compromising performance.
\section creating_self Creating Self-Describing Data conforming to Conventions
\page creating_self Creating Self-Describing Data conforming to Conventions
The mere use of netCDF is not sufficient to make data
"self-describing" and meaningful to both humans and machines. The
@ -262,7 +272,7 @@ conventions are often needed for local use. These should be
contributed to the above netCDF conventions site if likely to interest
other users in similar areas.
\section limitations Limitations of NetCDF
\page limitations Limitations of NetCDF
The netCDF classic data model is widely applicable to data that can be
organized into a collection of named array variables with named

View File

@ -18,8 +18,8 @@ Hartnett, and Dennis Heimbigner
<p>Learn more about netCDF:
- \ref getting
- \ref building
- \ref user_guide
- \ref tutorial
- \ref user_guide
Unidata provides data and software tools for use in geoscience
education and research. For more information see the web sites of <a

View File

@ -26,7 +26,7 @@ available, you may get an error from a layer below the netCDF library,
but the resulting write error will still be reflected in the returned
status value.
\section ignored_if_null Ignored if NULL
\page ignored_if_null Ignored if NULL
Many of the argurments of netCDF functions are pointers. For example,
the nc_inq() functions takes four pointers:

View File

@ -3,27 +3,29 @@ The tutorial document.
\page tutorial Tutorial
\section what_is_netcdf What is NetCDF?
To learn more about netCDF:
- \ref what_is_netcdf
- \ref classic_model
- \ref enhanced_model
- \ref unlimited_dims
- \ref error_handling
- \ref examples1
\page what_is_netcdf What is NetCDF?
NetCDF is a set of data formats, programming interfaces, and software
libraries that help read and write scientific data files.
NetCDF was developed and is maintained at Unidata, part of the
University Corporation for Atmospheric Research (UCAR) Office of
Programs (UOP). Unidata is funded primarily by the National Science
Foundation.
NetCDF was developed and is maintained at <a
href="http://www.unidata.ucar.edu">Unidata</a>. Unidata provides data
and software tools for use in geoscience education and research.
Unidata provides data and software tools for use in geoscience
education and research. For more information see the web sites of <a
href="http://www.unidata.ucar.edu">Unidata</a>, <a
href="http://www.uop.ucar.edu">UOP</a>, and <a
href="http://www.ucar.edu">UCAR</a>.
Unidata is part of the University Corporation for Atmospheric Research
(<a href="http://www.ucar.edu">UCAR</a>) Office of Programs (<a
href="http://www.uop.ucar.edu">UOP</a>). Unidata is funded primarily
by the National Science Foundation.
This tutorial may serve as an introduction to netCDF. See the <a
href="http://www.unidata.ucar.edu/software/netcdf/docs/">netCDF
documentation page</a> for more information.
\section classic_model The Classic Model
\page classic_model The Classic Model
The classic netCDF data model consists of variables, dimensions, and
attributes. This way of thinking about data was introduced with the
@ -61,6 +63,7 @@ small.
</table>
<p>
\image html nc-classic-uml.png "NetCDF Classic Data Model"
\section met_example Meteorological Example
@ -96,11 +99,11 @@ Attributes are always single values or one-dimensional arrays. (This
works out well for a string, which is a one-dimensional array of ASCII
characters.)
The pres_temp_4D example in this tutorial shows how to write and read
a file containing some four-dimensional pressure and temperature data,
including all the metadata needed.
The pres_temp_4D_wr.c/pres_temp_4D_rd.c examples show
how to write and read a file containing some four-dimensional pressure
and temperature data, including all the metadata needed.
\section enhanced_model The Common Data Model and NetCDF-4
\page enhanced_model The Enhanced Data Model
With netCDF-4, the netCDF data model has been extended, in a backwards
compatible way.
@ -124,9 +127,9 @@ opaque types.
These features may only be used when working with a netCDF-4/HDF5
file. Files created in classic or 64-bit offset format cannot support
groups or user-defined types.
groups or user-defined types (see \ref netcdf_format).
\image html nc4-model.png
<p>\image html nc4-model.png
With netCDF-4/HDF5 files, the user may define groups, which may
contain variables, dimensions, and attributes. In this way, a group
@ -151,7 +154,7 @@ model. That is, these files are in HDF5, but will not support multiple
unlimited dimensions, user-defined types, groups, etc. They act just
like a classic netCDF file.
\section error_handling NetCDF Error Handling
\page error_handling NetCDF Error Handling
Each netCDF function in the C, Fortran 77, and Fortran 90 APIs returns
0 on success, in the tradition of C.
@ -176,7 +179,7 @@ range. This may yield bad data, but the netCDF library just returns
NC_ERANGE and leaves it up to the user to handle. (For more
information about type conversion see Type Conversion).
\section unlimited_dims Unlimited Dimensions
\page unlimited_dims Unlimited Dimensions
Sometimes you don't know the size of all dimensions when you create a
file, or you would like to arbitrarily extend the file along one of
@ -208,12 +211,29 @@ In netCDF-4/HDF5 files, any number of unlimited dimensions may be
used, and there is no restriction as to where they appear in a
variable's list of dimension IDs.
\example pres_temp_4D_wr.c
\example pres_temp_4D_rd.c
\example sfc_pres_temp_wr.c
\example sfc_pres_temp_rd.c
\page examples1 NetCDF Example Programs
The following example programs illustrate the use of the netCDF
library.
- simple_xy_wr.c
- simple_xy_rd.c
- sfc_pres_temp_wr.c
- sfc_pres_temp_rd.c
- pres_temp_4D_wr.c
- pres_temp_4D_rd.c
These are the netCDF-4 examples.
- simple_nc4_wr.c
- simple_nc4_rd.c
- simple_xy_nc4_wr.c
- simple_xy_nc4_rd.c
\example simple_xy_wr.c
\example simple_xy_rd.c
\example sfc_pres_temp_wr.c
\example sfc_pres_temp_rd.c
\example pres_temp_4D_wr.c
\example pres_temp_4D_rd.c
\example simple_nc4_wr.c
\example simple_nc4_rd.c
\example simple_xy_nc4_wr.c