mirror of
https://github.com/Unidata/netcdf-c.git
synced 2025-01-18 15:55:12 +08:00
merge trunk into this branch
This commit is contained in:
commit
dea3c726c8
@ -532,7 +532,7 @@ ENDIF()
|
|||||||
|
|
||||||
# Options to enable parallel IO, tests.
|
# Options to enable parallel IO, tests.
|
||||||
SET(STATUS_PNETCDF "OFF")
|
SET(STATUS_PNETCDF "OFF")
|
||||||
OPTION(ENABLE_PNETCDF "Build netCDF-4 with parallel I/O for classic and 64-bit offset files using parallel-netcdf." OFF)
|
OPTION(ENABLE_PNETCDF "Build with parallel I/O for classic and 64-bit offset files using parallel-netcdf." OFF)
|
||||||
IF(ENABLE_PNETCDF)
|
IF(ENABLE_PNETCDF)
|
||||||
# Check for ncmpi_create in libpnetcdf, define USE_PNETCDF
|
# Check for ncmpi_create in libpnetcdf, define USE_PNETCDF
|
||||||
# Does the user want to turn on PNETCDF read ability?
|
# Does the user want to turn on PNETCDF read ability?
|
||||||
@ -546,6 +546,8 @@ IF(ENABLE_PNETCDF)
|
|||||||
SET(STATUS_PNETCDF "ON")
|
SET(STATUS_PNETCDF "ON")
|
||||||
INCLUDE_DIRECTORIES(${PNETCDF_INCLUDE_DIR})
|
INCLUDE_DIRECTORIES(${PNETCDF_INCLUDE_DIR})
|
||||||
SET(HAVE_LIBPNETCDF ON)
|
SET(HAVE_LIBPNETCDF ON)
|
||||||
|
# pnetcdf => parallel
|
||||||
|
SET(STATUS_PARALLEL "ON")
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
|
|
||||||
@ -704,6 +706,10 @@ add_subdirectory("include")
|
|||||||
add_subdirectory(libdispatch)
|
add_subdirectory(libdispatch)
|
||||||
add_subdirectory(libsrc)
|
add_subdirectory(libsrc)
|
||||||
|
|
||||||
|
IF (USE_PNETCDF)
|
||||||
|
add_subdirectory(libsrc5)
|
||||||
|
ENDIF (USE_HDF5)
|
||||||
|
|
||||||
IF (USE_HDF5)
|
IF (USE_HDF5)
|
||||||
add_subdirectory(libsrc4)
|
add_subdirectory(libsrc4)
|
||||||
ENDIF (USE_HDF5)
|
ENDIF (USE_HDF5)
|
||||||
|
@ -64,9 +64,9 @@ if BUILD_CDMREMOTE
|
|||||||
LIBCDMR = libcdmr
|
LIBCDMR = libcdmr
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Build librpc
|
# Build pnetcdf
|
||||||
if BUILD_RPC
|
if USE_PNETCDF
|
||||||
LIBRPC = librpc
|
LIBSRC5 = libsrc5
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Build UDUNITS?
|
# Build UDUNITS?
|
||||||
@ -88,7 +88,7 @@ endif
|
|||||||
# and run. ncgen must come before ncdump, because their tests
|
# and run. ncgen must come before ncdump, because their tests
|
||||||
# depend on it.
|
# depend on it.
|
||||||
SUBDIRS = include $(OCLIB) $(H5_TEST_DIR) libdispatch libsrc \
|
SUBDIRS = include $(OCLIB) $(H5_TEST_DIR) libdispatch libsrc \
|
||||||
$(LIBSRC4_DIR) $(DAP2) $(LIBCDMR) $(LIBRPC) liblib \
|
$(LIBSRC4_DIR) $(DAP2) $(LIBCDMR) $(LIBSRC5) liblib \
|
||||||
$(NCGEN3) $(NCGEN) $(NCDUMP) \
|
$(NCGEN3) $(NCGEN) $(NCDUMP) \
|
||||||
$(TESTDIRS) \
|
$(TESTDIRS) \
|
||||||
man4 $(EXAMPLES) \
|
man4 $(EXAMPLES) \
|
||||||
|
2
cf
2
cf
@ -8,7 +8,7 @@ fi
|
|||||||
|
|
||||||
HDF5=1
|
HDF5=1
|
||||||
DAP=1
|
DAP=1
|
||||||
PNETCDF=1
|
#PNETCDF=1
|
||||||
#RPC=1
|
#RPC=1
|
||||||
#PGI=1
|
#PGI=1
|
||||||
#M32=1
|
#M32=1
|
||||||
|
29
configure.ac
29
configure.ac
@ -133,7 +133,7 @@ AC_MSG_RESULT($enable_hdf4_file_tests)
|
|||||||
# Does the user want to turn on PNETCDF read ability?
|
# Does the user want to turn on PNETCDF read ability?
|
||||||
AC_MSG_CHECKING([whether parallel I/O for classic and 64-bit offset files using parallel-netcdf is to be enabled])
|
AC_MSG_CHECKING([whether parallel I/O for classic and 64-bit offset files using parallel-netcdf is to be enabled])
|
||||||
AC_ARG_ENABLE([pnetcdf], [AS_HELP_STRING([--enable-pnetcdf],
|
AC_ARG_ENABLE([pnetcdf], [AS_HELP_STRING([--enable-pnetcdf],
|
||||||
[build netcdf-4 with parallel I/O for classic and 64-bit offset files using parallel-netcdf])])
|
[build with parallel I/O for classic and 64-bit offset files using parallel-netcdf])])
|
||||||
test "x$enable_pnetcdf" = xyes || enable_pnetcdf=no
|
test "x$enable_pnetcdf" = xyes || enable_pnetcdf=no
|
||||||
AC_MSG_RESULT($enable_pnetcdf)
|
AC_MSG_RESULT($enable_pnetcdf)
|
||||||
|
|
||||||
@ -687,18 +687,6 @@ if test "x$enable_netcdf_4" = xyes; then
|
|||||||
if test "x$ac_cv_func_H5Pget_fapl_mpio" = xyes -o "x$ac_cv_func_H5Pget_fapl_mpiposix" = xyes; then
|
if test "x$ac_cv_func_H5Pget_fapl_mpio" = xyes -o "x$ac_cv_func_H5Pget_fapl_mpiposix" = xyes; then
|
||||||
enable_parallel=yes
|
enable_parallel=yes
|
||||||
AC_DEFINE([USE_PARALLEL], [1], [if true, parallel netCDF-4 is in use])
|
AC_DEFINE([USE_PARALLEL], [1], [if true, parallel netCDF-4 is in use])
|
||||||
|
|
||||||
# Using pnetcdf for classic parallel I/O?
|
|
||||||
if test "x$enable_pnetcdf" = xyes; then
|
|
||||||
AC_CHECK_LIB([pnetcdf], [ncmpi_create], [],
|
|
||||||
[AC_MSG_ERROR([Cannot link to pnetcdf library, yet --enable-pnetcdf was used.])])
|
|
||||||
|
|
||||||
dnl AC_CHECK_HEADERS([pnetcdf.h], [], [nc4_pnetcdf_h_missing=yes)
|
|
||||||
dnl if test ! "x$HAVE_PNETCDF" = x1; then
|
|
||||||
dnl AC_MSG_ERROR([Cannot find pnetcdf header, yet --enable-pnetcdf was used.])
|
|
||||||
dnl fi
|
|
||||||
AC_DEFINE([USE_PNETCDF], [1], [if true, parallel netCDF is used])
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AC_MSG_CHECKING([whether parallel I/O features are to be included])
|
AC_MSG_CHECKING([whether parallel I/O features are to be included])
|
||||||
@ -739,6 +727,19 @@ if test "x$enable_logging" = xyes; then
|
|||||||
AC_DEFINE([LOGGING], 1, [If true, turn on logging.])
|
AC_DEFINE([LOGGING], 1, [If true, turn on logging.])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Using pnetcdf for classic parallel I/O?
|
||||||
|
if test "x$enable_pnetcdf" = xyes; then
|
||||||
|
AC_CHECK_LIB([pnetcdf], [ncmpi_create], [],
|
||||||
|
[AC_MSG_ERROR([Cannot link to pnetcdf library, yet --enable-pnetcdf was used.])])
|
||||||
|
AC_DEFINE([USE_PNETCDF], [1], [if true, parallel netCDF is used])
|
||||||
|
|
||||||
|
# pnetcdf => parallel
|
||||||
|
# If parallel is in use, enable it in the C code. Also add some stuff to netcdf.h.
|
||||||
|
enable_parallel=yes
|
||||||
|
AC_DEFINE([USE_PARALLEL], [1], [if true, pnetcdf or parallel netcdf-4 is in use])
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
# Like other libraries, udunits and libcf
|
# Like other libraries, udunits and libcf
|
||||||
# are no long part of the netcdf distribution.
|
# are no long part of the netcdf distribution.
|
||||||
|
|
||||||
@ -886,6 +887,7 @@ AC_CONFIG_FILES([Makefile
|
|||||||
man4/images/Makefile
|
man4/images/Makefile
|
||||||
libsrc/Makefile
|
libsrc/Makefile
|
||||||
libsrc4/Makefile
|
libsrc4/Makefile
|
||||||
|
libsrc5/Makefile
|
||||||
nctest/Makefile
|
nctest/Makefile
|
||||||
nc_test4/Makefile
|
nc_test4/Makefile
|
||||||
nc_test/Makefile
|
nc_test/Makefile
|
||||||
@ -898,7 +900,6 @@ AC_CONFIG_FILES([Makefile
|
|||||||
oc2/Makefile
|
oc2/Makefile
|
||||||
libdap2/Makefile
|
libdap2/Makefile
|
||||||
libcdmr/Makefile
|
libcdmr/Makefile
|
||||||
librpc/Makefile
|
|
||||||
libdispatch/Makefile
|
libdispatch/Makefile
|
||||||
liblib/Makefile
|
liblib/Makefile
|
||||||
ncdump/cdl4/Makefile
|
ncdump/cdl4/Makefile
|
||||||
|
@ -273,21 +273,6 @@ typedef struct NC_HDF5_FILE_INFO
|
|||||||
int ignore_creationorder;
|
int ignore_creationorder;
|
||||||
int hdf4;
|
int hdf4;
|
||||||
int sdid;
|
int sdid;
|
||||||
|
|
||||||
#ifdef USE_PNETCDF
|
|
||||||
/* pnetcdf_file will be true if the file is created/opened with the
|
|
||||||
* parallel-netcdf library. pnetcdf_access_mode keeps track of
|
|
||||||
* whether independpent or collective mode is
|
|
||||||
* desired. pnetcdf_ndims keeps track of how many dims each var
|
|
||||||
* has, which I need to know to convert start, count, and stride
|
|
||||||
* arrays from size_t to MPI_Offset. (I can't use an inq function
|
|
||||||
* to find out the number of dims, because these are collective in
|
|
||||||
* pnetcdf.) */
|
|
||||||
int pnetcdf_file;
|
|
||||||
int pnetcdf_access_mode;
|
|
||||||
int pnetcdf_ndims[NC_MAX_VARS];
|
|
||||||
#endif /* USE_PNETCDF */
|
|
||||||
|
|
||||||
} NC_HDF5_FILE_INFO_T;
|
} NC_HDF5_FILE_INFO_T;
|
||||||
|
|
||||||
/* These functions only use the netcdf API calls, so they will work on
|
/* These functions only use the netcdf API calls, so they will work on
|
||||||
|
@ -85,6 +85,8 @@ extern int nc_put_vara_ulonglong(int ncid, int varid,
|
|||||||
#define NC_DISPATCH_NC4 2
|
#define NC_DISPATCH_NC4 2
|
||||||
#define NC_DISPATCH_NCD 4
|
#define NC_DISPATCH_NCD 4
|
||||||
#define NC_DISPATCH_NCR 8
|
#define NC_DISPATCH_NCR 8
|
||||||
|
#define NC_DISPATCH_NC5 16
|
||||||
|
|
||||||
|
|
||||||
/* Define a type for use when doing e.g. nc_get_vara_long, etc. */
|
/* Define a type for use when doing e.g. nc_get_vara_long, etc. */
|
||||||
/* Should matche values in libsrc4/netcdf.h */
|
/* Should matche values in libsrc4/netcdf.h */
|
||||||
@ -107,15 +109,27 @@ extern int nc_put_vara_ulonglong(int ncid, int varid,
|
|||||||
/* Define an alias for int to indicate an error return */
|
/* Define an alias for int to indicate an error return */
|
||||||
typedef int NCerror;
|
typedef int NCerror;
|
||||||
|
|
||||||
|
/* WARNING: this must match libsrc4/netcdf.h */
|
||||||
|
#ifndef MPI_Comm
|
||||||
|
#define MPI_Comm int
|
||||||
|
#endif
|
||||||
|
#ifndef MPI_Info
|
||||||
|
#define MPI_Info int
|
||||||
|
#endif
|
||||||
|
#ifndef MPI_COMM_WORLD
|
||||||
|
#define MPI_COMM_WORLD 0
|
||||||
|
#endif
|
||||||
|
#ifndef MPI_INFO_NULL
|
||||||
|
#define MPI_INFO_NULL 0
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Define a struct to hold the MPI info so it can be passed down the
|
/* Define a struct to hold the MPI info so it can be passed down the
|
||||||
* call stack. This is used internally by the netCDF library. It
|
* call stack. This is used internally by the netCDF library. It
|
||||||
* should not be used by netcdf users. */
|
* should not be used by netcdf users. */
|
||||||
#ifdef USE_PARALLEL
|
|
||||||
typedef struct NC_MPI_INFO {
|
typedef struct NC_MPI_INFO {
|
||||||
MPI_Comm comm;
|
MPI_Comm comm;
|
||||||
MPI_Info info;
|
MPI_Info info;
|
||||||
} NC_MPI_INFO;
|
} NC_MPI_INFO;
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Define known dispatch tables and initializers */
|
/* Define known dispatch tables and initializers */
|
||||||
|
|
||||||
@ -133,6 +147,11 @@ extern NC_Dispatch* NCD3_dispatch_table;
|
|||||||
extern int NCD3_initialize(void);
|
extern int NCD3_initialize(void);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef USE_PNETCDF
|
||||||
|
extern NC_Dispatch* NC5_dispatch_table;
|
||||||
|
extern int NC5_initialize(void);
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef USE_NETCDF4
|
#ifdef USE_NETCDF4
|
||||||
|
|
||||||
extern NC_Dispatch* NC4_dispatch_table;
|
extern NC_Dispatch* NC4_dispatch_table;
|
||||||
@ -172,17 +191,6 @@ struct nc_vlen_t;
|
|||||||
|
|
||||||
struct NC;
|
struct NC;
|
||||||
|
|
||||||
/* WARNING: this must match libsrc4/netcdf.h */
|
|
||||||
#ifndef USE_PARALLEL
|
|
||||||
#ifndef MPI_Comm
|
|
||||||
#define MPI_Comm int
|
|
||||||
#define MPI_Info int
|
|
||||||
#define MPI_COMM_WORLD 0
|
|
||||||
#ifndef MPI_INFO_NULL
|
|
||||||
#define MPI_INFO_NULL 0
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
int NC_create(const char *path, int cmode,
|
int NC_create(const char *path, int cmode,
|
||||||
size_t initialsz, int basepe, size_t *chunksizehintp,
|
size_t initialsz, int basepe, size_t *chunksizehintp,
|
||||||
@ -271,13 +279,14 @@ int (*inq_var_all)(int ncid, int varid, char *name, nc_type *xtypep,
|
|||||||
int *no_fill, void *fill_valuep, int *endiannessp,
|
int *no_fill, void *fill_valuep, int *endiannessp,
|
||||||
int *options_maskp, int *pixels_per_blockp);
|
int *options_maskp, int *pixels_per_blockp);
|
||||||
|
|
||||||
|
int (*var_par_access)(int, int, int);
|
||||||
|
|
||||||
/* Note the following may still be invoked by netcdf client code
|
/* Note the following may still be invoked by netcdf client code
|
||||||
even when the file is a classic file
|
even when the file is a classic file
|
||||||
*/
|
*/
|
||||||
#ifdef USE_NETCDF4
|
#ifdef USE_NETCDF4
|
||||||
int (*show_metadata)(int);
|
int (*show_metadata)(int);
|
||||||
int (*inq_unlimdims)(int, int*, int*);
|
int (*inq_unlimdims)(int, int*, int*);
|
||||||
int (*var_par_access)(int, int, int);
|
|
||||||
int (*inq_ncid)(int, const char*, int*);
|
int (*inq_ncid)(int, const char*, int*);
|
||||||
int (*inq_grps)(int, int*, int*);
|
int (*inq_grps)(int, int*, int*);
|
||||||
int (*inq_grpname)(int, char*);
|
int (*inq_grpname)(int, char*);
|
||||||
@ -313,7 +322,6 @@ int (*def_var_endian)(int, int, int);
|
|||||||
int (*set_var_chunk_cache)(int, int, size_t, size_t, float);
|
int (*set_var_chunk_cache)(int, int, size_t, size_t, float);
|
||||||
int (*get_var_chunk_cache)(int ncid, int varid, size_t *sizep, size_t *nelemsp, float *preemptionp);
|
int (*get_var_chunk_cache)(int ncid, int varid, size_t *sizep, size_t *nelemsp, float *preemptionp);
|
||||||
#endif /*USE_NETCDF4*/
|
#endif /*USE_NETCDF4*/
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Following functions must be handled as non-dispatch */
|
/* Following functions must be handled as non-dispatch */
|
||||||
|
@ -2,12 +2,12 @@ NCLIB=../liblib/.libs/libnetcdf.a
|
|||||||
NCINCL=-I ../liblib
|
NCINCL=-I ../liblib
|
||||||
|
|
||||||
#CYGWIN
|
#CYGWIN
|
||||||
LFLAG=-L/usr/local/lib
|
#LFLAG=-L/usr/local/lib
|
||||||
#HDF5LIB=/usr/local/lib/libhdf5_hl.a /usr/local/lib/libhdf5.a
|
#HDF5LIB=/usr/local/lib/libhdf5_hl.a /usr/local/lib/libhdf5.a
|
||||||
|
|
||||||
#!CYGWIN
|
#!CYGWIN
|
||||||
#LFLAG=-L/upc/share/ed/local/${HOST}/lib
|
LFLAG=-L/upc/share/ed/local/${HOST}/lib
|
||||||
#HDF5LIB=/share/ed/local/${HOST}/lib/libhdf5_hl.a /share/ed/local/${HOST}/lib/libhdf5.a
|
HDF5LIB=/share/ed/local/${HOST}/lib/libhdf5_hl.a /share/ed/local/${HOST}/lib/libhdf5.a
|
||||||
|
|
||||||
CURLLIB=-lcurl
|
CURLLIB=-lcurl
|
||||||
ZLIB=-lz
|
ZLIB=-lz
|
||||||
@ -258,7 +258,7 @@ fix::
|
|||||||
done
|
done
|
||||||
|
|
||||||
##################################################
|
##################################################
|
||||||
T=civ
|
T=civ2
|
||||||
|
|
||||||
v::
|
v::
|
||||||
cc -g -c ${T}.c ${INCL}
|
cc -g -c ${T}.c ${INCL}
|
||||||
|
@ -25,7 +25,7 @@ dapmerge3(NCDAPCOMMON* nccomm, CDFnode* ddsroot, OCddsnode dasroot)
|
|||||||
NClist* allnodes;
|
NClist* allnodes;
|
||||||
OClink conn;
|
OClink conn;
|
||||||
char* ocname = NULL;
|
char* ocname = NULL;
|
||||||
|
char** values = NULL;
|
||||||
conn = nccomm->oc.conn;
|
conn = nccomm->oc.conn;
|
||||||
|
|
||||||
if(ddsroot == NULL || dasroot == NULL) return NC_NOERR;
|
if(ddsroot == NULL || dasroot == NULL) return NC_NOERR;
|
||||||
@ -44,7 +44,7 @@ dapmerge3(NCDAPCOMMON* nccomm, CDFnode* ddsroot, OCddsnode dasroot)
|
|||||||
OCCHECK(oc_dds_attr_count(conn,ocnode,&attrcount));
|
OCCHECK(oc_dds_attr_count(conn,ocnode,&attrcount));
|
||||||
for(j=0;j<attrcount;j++) {
|
for(j=0;j<attrcount;j++) {
|
||||||
size_t nvalues;
|
size_t nvalues;
|
||||||
char** values = NULL;
|
|
||||||
NCattribute* att = NULL;
|
NCattribute* att = NULL;
|
||||||
|
|
||||||
if(ocname != NULL) {
|
if(ocname != NULL) {
|
||||||
@ -103,11 +103,13 @@ fprintf(stderr,"%s.Unlimited_Dimension=%s\n",node->ocname,nccomm->cdf.recorddimn
|
|||||||
if(values) {
|
if(values) {
|
||||||
oc_reclaim_strings(nvalues,values);
|
oc_reclaim_strings(nvalues,values);
|
||||||
free(values);
|
free(values);
|
||||||
|
values = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
done:
|
done:
|
||||||
|
if(values != NULL) free(values);
|
||||||
if(ocname != NULL) free(ocname);
|
if(ocname != NULL) free(ocname);
|
||||||
if(ocstat != OC_NOERR) ncstat = ocerrtoncerr(ocstat);
|
if(ocstat != OC_NOERR) ncstat = ocerrtoncerr(ocstat);
|
||||||
return THROW(ncstat);
|
return THROW(ncstat);
|
||||||
@ -120,7 +122,7 @@ buildattribute(char* name, nc_type ptype,
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
NCerror ncstat = NC_NOERR;
|
NCerror ncstat = NC_NOERR;
|
||||||
NCattribute* att;
|
NCattribute* att = NULL;
|
||||||
|
|
||||||
att = (NCattribute*)calloc(1,sizeof(NCattribute));
|
att = (NCattribute*)calloc(1,sizeof(NCattribute));
|
||||||
MEMCHECK(att,NC_ENOMEM);
|
MEMCHECK(att,NC_ENOMEM);
|
||||||
@ -132,6 +134,8 @@ buildattribute(char* name, nc_type ptype,
|
|||||||
nclistpush(att->values,(void*)nulldup(values[i]));
|
nclistpush(att->values,(void*)nulldup(values[i]));
|
||||||
|
|
||||||
if(attp) *attp = att;
|
if(attp) *attp = att;
|
||||||
|
else
|
||||||
|
free(att);
|
||||||
|
|
||||||
return THROW(ncstat);
|
return THROW(ncstat);
|
||||||
}
|
}
|
||||||
|
10
libdap2/env
10
libdap2/env
@ -1,8 +1,9 @@
|
|||||||
PARMS=""; ARGS=""; CON="" ; CE=""; OCON="" ; VAR=""
|
PARMS=""; ARGS=""; CON="" ; CE=""; OCON="" ; VAR=""
|
||||||
alias q0=;alias qq=;alias qv=;alias q=;alias qh=;alias qqh=;alias qall=;alias qv=;alias qo=;
|
alias q0=;alias qq=;alias qv=;alias q=;alias qh=;alias qqh=;alias qall=;alias qv=;alias qo=;
|
||||||
|
|
||||||
#TOP="/home/dmh/mach/trunk"
|
TOP="/home/dmh/mach/trunk"
|
||||||
TOP="/cygdrive/f/svn/trunk"
|
TOP="/home/dmh/mach/pnetcdf"
|
||||||
|
#TOP="/cygdrive/f/svn/trunk"
|
||||||
#TOP="/cygdrive/c/Users/dmh/svn/trunk"
|
#TOP="/cygdrive/c/Users/dmh/svn/trunk"
|
||||||
|
|
||||||
#PROG=./ncd
|
#PROG=./ncd
|
||||||
@ -10,8 +11,7 @@ PROG="$TOP/ncdump/ncdump"
|
|||||||
|
|
||||||
P=`pwd`
|
P=`pwd`
|
||||||
|
|
||||||
F="http://motherlode.ucar.edu:8081/dts/ingrid"
|
F="file://${TOP}/ncdap_test/testdata3/synth9"
|
||||||
CON="v3H[0:0][0:43]"
|
|
||||||
|
|
||||||
PARMS="[log]"
|
PARMS="[log]"
|
||||||
#PARMS="${PARMS}[netcdf3]"
|
#PARMS="${PARMS}[netcdf3]"
|
||||||
@ -107,4 +107,6 @@ CON="U50M_EOSGRID_Data_Fields[0:23][282:282][441:441]"
|
|||||||
#CON="OneD.amp,TwoD.amp,ThreeD.amp"
|
#CON="OneD.amp,TwoD.amp,ThreeD.amp"
|
||||||
F="http://goldsmr2.sci.gsfc.nasa.gov/opendap/hyrax/MERRA/MAT1NXSLV.5.2.0/1990/01/MERRA100.prod.assim.tavg1_2d_slv_Nx.19900101.hdf"
|
F="http://goldsmr2.sci.gsfc.nasa.gov/opendap/hyrax/MERRA/MAT1NXSLV.5.2.0/1990/01/MERRA100.prod.assim.tavg1_2d_slv_Nx.19900101.hdf"
|
||||||
CON="U50M_EOSGRID_Data_Fields[0:23][282:282][441:441],XDim_EOSGRID"
|
CON="U50M_EOSGRID_Data_Fields[0:23][282:282][441:441],XDim_EOSGRID"
|
||||||
|
F="http://motherlode.ucar.edu:8081/dts/ingrid"
|
||||||
|
CON="v3H[0:0][0:43]"
|
||||||
fi
|
fi
|
||||||
|
@ -88,10 +88,11 @@ NCDEFAULT_put_varm,
|
|||||||
|
|
||||||
NULL, /*inq_var_all*/
|
NULL, /*inq_var_all*/
|
||||||
|
|
||||||
|
NULL, /*var_par_access*/
|
||||||
|
|
||||||
#ifdef USE_NETCDF4
|
#ifdef USE_NETCDF4
|
||||||
NULL, /*show_metadata*/
|
NULL, /*show_metadata*/
|
||||||
NULL, /*inq_unlimdims*/
|
NULL, /*inq_unlimdims*/
|
||||||
NULL, /*var_par_access*/
|
|
||||||
NULL, /*inq_ncid*/
|
NULL, /*inq_ncid*/
|
||||||
NULL, /*inq_grps*/
|
NULL, /*inq_grps*/
|
||||||
NULL, /*inq_grpname*/
|
NULL, /*inq_grpname*/
|
||||||
|
@ -79,9 +79,6 @@ NCD3_open(const char * path, int mode,
|
|||||||
NCDAPCOMMON* dapcomm = NULL;
|
NCDAPCOMMON* dapcomm = NULL;
|
||||||
const char* value;
|
const char* value;
|
||||||
|
|
||||||
/* We will use a fake file descriptor as our internal in-memory filename */
|
|
||||||
char tmpname[32];
|
|
||||||
|
|
||||||
if(!nc3dinitialized) nc3dinitialize();
|
if(!nc3dinitialized) nc3dinitialize();
|
||||||
|
|
||||||
if(path == NULL)
|
if(path == NULL)
|
||||||
@ -137,11 +134,18 @@ NCD3_open(const char * path, int mode,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Use libsrc code for storing metadata */
|
/* Use libsrc code for storing metadata */
|
||||||
|
{
|
||||||
|
char tmpname[32];
|
||||||
|
|
||||||
snprintf(tmpname,sizeof(tmpname),"%d",drno->int_ncid);
|
/* Create fake file name: exact name must be unique,
|
||||||
/* Now, use the file to create the netcdf file; always 64 bit */
|
but is otherwise irrelevant because we are using NC_DISKLESS
|
||||||
ncstat = nc_create(tmpname,NC_DISKLESS|NC_64BIT_OFFSET,&drno->substrate);
|
*/
|
||||||
if(ncstat != NC_NOERR) {THROWCHK(ncstat); goto done;}
|
snprintf(tmpname,sizeof(tmpname),"%d",drno->int_ncid);
|
||||||
|
|
||||||
|
/* Now, use the file to create the netcdf file; force classic. */
|
||||||
|
ncstat = nc_create(tmpname,NC_DISKLESS|NC_CLASSIC_MODEL,&drno->substrate);
|
||||||
|
if(ncstat != NC_NOERR) {THROWCHK(ncstat); goto done;}
|
||||||
|
}
|
||||||
|
|
||||||
/* Avoid fill */
|
/* Avoid fill */
|
||||||
nc_set_fill(drno->substrate,NC_NOFILL,NULL);
|
nc_set_fill(drno->substrate,NC_NOFILL,NULL);
|
||||||
|
@ -24,6 +24,17 @@ Research/Unidata. See COPYRIGHT file for more info.
|
|||||||
#endif
|
#endif
|
||||||
#include "ncdispatch.h"
|
#include "ncdispatch.h"
|
||||||
|
|
||||||
|
/* Define an enum over the possible set of
|
||||||
|
File Types
|
||||||
|
*/
|
||||||
|
enum FileType {
|
||||||
|
FT_UNKNOWN,
|
||||||
|
FT_HDF,
|
||||||
|
FT_NC,
|
||||||
|
FT_PNETCDF
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
static int nc_initialized = 0;
|
static int nc_initialized = 0;
|
||||||
|
|
||||||
/** \defgroup datasets NetCDF Files
|
/** \defgroup datasets NetCDF Files
|
||||||
@ -82,16 +93,15 @@ nc_local_initialize(void)
|
|||||||
|
|
||||||
static int
|
static int
|
||||||
NC_check_file_type(const char *path, int use_parallel, void *mpi_info,
|
NC_check_file_type(const char *path, int use_parallel, void *mpi_info,
|
||||||
int *cdf, int *hdf)
|
enum FileType* filetype, int* version)
|
||||||
{
|
{
|
||||||
char magic[MAGIC_NUMBER_LEN];
|
char magic[MAGIC_NUMBER_LEN];
|
||||||
|
|
||||||
*hdf = 0; *cdf = 0;
|
*filetype = FT_UNKNOWN;
|
||||||
|
|
||||||
/* Get the 4-byte magic from the beginning of the file. Don't use posix
|
/* Get the 4-byte magic from the beginning of the file. Don't use posix
|
||||||
* for parallel, use the MPI functions instead. */
|
* for parallel, use the MPI functions instead. */
|
||||||
#ifdef USE_PARALLEL_MPIO
|
#ifdef USE_PARALLEL_MPIO
|
||||||
/* Note that this assumes netcdf-4 support is enabled */
|
|
||||||
if (use_parallel)
|
if (use_parallel)
|
||||||
{
|
{
|
||||||
MPI_File fh;
|
MPI_File fh;
|
||||||
@ -112,8 +122,6 @@ NC_check_file_type(const char *path, int use_parallel, void *mpi_info,
|
|||||||
return NC_EPARINIT;
|
return NC_EPARINIT;
|
||||||
if((retval = MPI_File_close(&fh)) != MPI_SUCCESS)
|
if((retval = MPI_File_close(&fh)) != MPI_SUCCESS)
|
||||||
return NC_EPARINIT;
|
return NC_EPARINIT;
|
||||||
/* Pretend this is an HDF5 file */
|
|
||||||
*hdf = 5;
|
|
||||||
} else
|
} else
|
||||||
#endif /* USE_PARALLEL */
|
#endif /* USE_PARALLEL */
|
||||||
{
|
{
|
||||||
@ -127,28 +135,34 @@ NC_check_file_type(const char *path, int use_parallel, void *mpi_info,
|
|||||||
return errno;
|
return errno;
|
||||||
i = fread(magic, MAGIC_NUMBER_LEN, 1, fp);
|
i = fread(magic, MAGIC_NUMBER_LEN, 1, fp);
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
if(i == 0 && errno == 22) //if file size < 4, Windows fread returns 0, errno 22.
|
if(i == 0 && errno == 22) //if file size < 4, Windows fread returns 0, errno 22.
|
||||||
return NC_ENOTNC;
|
return NC_ENOTNC;
|
||||||
if(i != 1)
|
if(i != 1)
|
||||||
return errno;
|
return errno;
|
||||||
|
}
|
||||||
|
|
||||||
/* Ignore the first byte for HDF */
|
/* Look at the magic number */
|
||||||
if(magic[1] == 'H' && magic[2] == 'D' && magic[3] == 'F')
|
/* Ignore the first byte for HDF */
|
||||||
*hdf = 5;
|
if(magic[1] == 'H' && magic[2] == 'D' && magic[3] == 'F') {
|
||||||
else if(magic[0] == '\016' && magic[1] == '\003'
|
*filetype = FT_HDF;
|
||||||
&& magic[2] == '\023' && magic[3] == '\001')
|
*version = 5;
|
||||||
*hdf = 4;
|
} else if(magic[0] == '\016' && magic[1] == '\003'
|
||||||
else if(magic[0] == 'C' && magic[1] == 'D' && magic[2] == 'F')
|
&& magic[2] == '\023' && magic[3] == '\001') {
|
||||||
{
|
*filetype = FT_HDF;
|
||||||
if(magic[3] == '\001')
|
*version = 4;
|
||||||
*cdf = 1; /* netcdf classic version 1 */
|
} else if(magic[0] == 'C' && magic[1] == 'D' && magic[2] == 'F') {
|
||||||
|
*filetype = FT_NC;
|
||||||
|
if(magic[3] == '\001')
|
||||||
|
*version = 1; /* netcdf classic version 1 */
|
||||||
else if(magic[3] == '\002')
|
else if(magic[3] == '\002')
|
||||||
*cdf = 2; /* netcdf classic version 2 */
|
*version = 2; /* netcdf classic version 2 */
|
||||||
else
|
else if(magic[3] == '\005') {
|
||||||
|
*filetype = FT_PNETCDF;
|
||||||
|
*version = 5; /* pnetcdf file */
|
||||||
|
} else
|
||||||
return NC_ENOTNC;
|
return NC_ENOTNC;
|
||||||
} else
|
} else
|
||||||
return NC_ENOTNC;
|
return NC_ENOTNC;
|
||||||
}
|
|
||||||
return NC_NOERR;
|
return NC_NOERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1444,8 +1458,12 @@ NC_create(const char *path, int cmode, size_t initialsz,
|
|||||||
|
|
||||||
/* Look to the incoming cmode for hints */
|
/* Look to the incoming cmode for hints */
|
||||||
if(model == 0) {
|
if(model == 0) {
|
||||||
if(cmode & NC_NETCDF4 || cmode & NC_PNETCDF)
|
if(cmode & NC_NETCDF4)
|
||||||
model = NC_DISPATCH_NC4;
|
model = NC_DISPATCH_NC4;
|
||||||
|
else if(cmode & NC_PNETCDF)
|
||||||
|
model = NC_DISPATCH_NC5;
|
||||||
|
else if(cmode & NC_CLASSIC_MODEL)
|
||||||
|
model = NC_DISPATCH_NC3;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(model == 0) {
|
if(model == 0) {
|
||||||
@ -1498,6 +1516,11 @@ NC_create(const char *path, int cmode, size_t initialsz,
|
|||||||
if(model == (NC_DISPATCH_NC3 | NC_DISPATCH_NCD))
|
if(model == (NC_DISPATCH_NC3 | NC_DISPATCH_NCD))
|
||||||
dispatcher = NCD3_dispatch_table;
|
dispatcher = NCD3_dispatch_table;
|
||||||
else
|
else
|
||||||
|
#endif
|
||||||
|
#ifdef USE_PNETCDF
|
||||||
|
if(model == (NC_DISPATCH_NC5))
|
||||||
|
dispatcher = NC5_dispatch_table;
|
||||||
|
else
|
||||||
#endif
|
#endif
|
||||||
if(model == (NC_DISPATCH_NC3))
|
if(model == (NC_DISPATCH_NC3))
|
||||||
dispatcher = NC3_dispatch_table;
|
dispatcher = NC3_dispatch_table;
|
||||||
@ -1550,8 +1573,8 @@ NC_open(const char *path, int cmode,
|
|||||||
/* Need two pieces of information for now */
|
/* Need two pieces of information for now */
|
||||||
int model = 0;
|
int model = 0;
|
||||||
int isurl = 0;
|
int isurl = 0;
|
||||||
int cdfversion = 0;
|
int version;
|
||||||
int hdfversion = 0;
|
enum FileType filetype;
|
||||||
|
|
||||||
if(!nc_initialized) {
|
if(!nc_initialized) {
|
||||||
stat = NC_initialize();
|
stat = NC_initialize();
|
||||||
@ -1564,23 +1587,36 @@ NC_open(const char *path, int cmode,
|
|||||||
isurl = NC_testurl(path);
|
isurl = NC_testurl(path);
|
||||||
if(isurl)
|
if(isurl)
|
||||||
model = NC_urlmodel(path);
|
model = NC_urlmodel(path);
|
||||||
|
else {
|
||||||
if(!isurl) {
|
filetype = FT_UNKNOWN;
|
||||||
|
version = 0;
|
||||||
|
model = 0;
|
||||||
/* Look at the file if it exists */
|
/* Look at the file if it exists */
|
||||||
stat = NC_check_file_type(path,useparallel,mpi_info,&cdfversion,&hdfversion);
|
stat = NC_check_file_type(path,useparallel,mpi_info,
|
||||||
|
&filetype,&version);
|
||||||
if(stat == NC_NOERR) {
|
if(stat == NC_NOERR) {
|
||||||
if(hdfversion != 0) {
|
switch (filetype) {
|
||||||
|
case FT_NC:
|
||||||
|
if(version == 1 || version == 2)
|
||||||
|
model = NC_DISPATCH_NC3;
|
||||||
|
break;
|
||||||
|
case FT_HDF:
|
||||||
model = NC_DISPATCH_NC4;
|
model = NC_DISPATCH_NC4;
|
||||||
} else if(cdfversion != 0) {
|
break;
|
||||||
model = NC_DISPATCH_NC3;
|
case FT_PNETCDF:
|
||||||
}
|
model = NC_DISPATCH_NC5;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return NC_ENOTNC;
|
||||||
|
}
|
||||||
} else /* presumably not a netcdf file */
|
} else /* presumably not a netcdf file */
|
||||||
return stat;
|
return stat;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Look to the incoming cmode for hints */
|
/* Look to the incoming cmode for hints */
|
||||||
if(model == 0) {
|
if(model == 0) {
|
||||||
if(cmode & NC_NETCDF4 || cmode & NC_PNETCDF) model |= NC_DISPATCH_NC4;
|
if(cmode & NC_PNETCDF) model |= NC_DISPATCH_NC5;
|
||||||
|
else if(cmode & NC_NETCDF4) model |= NC_DISPATCH_NC4;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(model == 0) model = NC_DISPATCH_NC3; /* final default */
|
if(model == 0) model = NC_DISPATCH_NC3; /* final default */
|
||||||
@ -1590,7 +1626,10 @@ NC_open(const char *path, int cmode,
|
|||||||
cmode |= NC_NETCDF4;
|
cmode |= NC_NETCDF4;
|
||||||
else if(model & NC_DISPATCH_NC3) {
|
else if(model & NC_DISPATCH_NC3) {
|
||||||
cmode &= ~NC_NETCDF4; /* must be netcdf-3 */
|
cmode &= ~NC_NETCDF4; /* must be netcdf-3 */
|
||||||
if(cdfversion == 2) cmode |= NC_64BIT_OFFSET;
|
if(version == 2) cmode |= NC_64BIT_OFFSET;
|
||||||
|
} else if(model & NC_DISPATCH_NC5) {
|
||||||
|
cmode &= ~(NC_NETCDF4 | NC_64BIT_OFFSET); /* must be pnetcdf */
|
||||||
|
cmode |= NC_PNETCDF;
|
||||||
}
|
}
|
||||||
|
|
||||||
if((cmode & NC_MPIIO && cmode & NC_MPIPOSIX))
|
if((cmode & NC_MPIIO && cmode & NC_MPIPOSIX))
|
||||||
@ -1611,6 +1650,11 @@ NC_open(const char *path, int cmode,
|
|||||||
dispatcher = NCD3_dispatch_table;
|
dispatcher = NCD3_dispatch_table;
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(USE_PNETCDF)
|
||||||
|
if(model == (NC_DISPATCH_NC5))
|
||||||
|
dispatcher = NC5_dispatch_table;
|
||||||
|
else
|
||||||
|
#endif
|
||||||
#if defined(USE_NETCDF4)
|
#if defined(USE_NETCDF4)
|
||||||
if(model == (NC_DISPATCH_NC4))
|
if(model == (NC_DISPATCH_NC4))
|
||||||
dispatcher = NC4_dispatch_table;
|
dispatcher = NC4_dispatch_table;
|
||||||
|
@ -1,8 +1,18 @@
|
|||||||
/** \substrate
|
/** \substrate
|
||||||
Define the substrate dispatch table and functions
|
Define the substrate dispatch table and functions
|
||||||
|
|
||||||
These functions end up calling functions in one of the dispatch layers
|
The idea of a substrate is that for some dispatch
|
||||||
(netCDF-4, dap server, etc) using the substrate field of struct NC.
|
tables, it is convenient to delegate many of its functions
|
||||||
|
of some other dispatch table, called the substrate.
|
||||||
|
For example, the libdap2 code needs to create
|
||||||
|
metadata. Rather than duplicate the code in libsrc,
|
||||||
|
it is convenient to create a temporary
|
||||||
|
netcdf-3 "file" (using in-memory data storage)
|
||||||
|
and delegate the creation and inquiries about
|
||||||
|
the metadata to that substrate netcdf-3 object.
|
||||||
|
|
||||||
|
So, these functions end up calling functions in another
|
||||||
|
dispatch table using the substrate field of struct NC.
|
||||||
|
|
||||||
Copyright 2010 University Corporation for Atmospheric
|
Copyright 2010 University Corporation for Atmospheric
|
||||||
Research/Unidata. See COPYRIGHT file for more info.
|
Research/Unidata. See COPYRIGHT file for more info.
|
||||||
@ -854,12 +864,12 @@ NCSUB_put_varm,
|
|||||||
|
|
||||||
NCSUB_inq_var_all,
|
NCSUB_inq_var_all,
|
||||||
|
|
||||||
|
NCSUB_var_par_access,
|
||||||
|
|
||||||
#ifdef USE_NETCDF4
|
#ifdef USE_NETCDF4
|
||||||
NCSUB_show_metadata,
|
NCSUB_show_metadata,
|
||||||
NCSUB_inq_unlimdims,
|
NCSUB_inq_unlimdims,
|
||||||
|
|
||||||
NCSUB_var_par_access,
|
|
||||||
|
|
||||||
NCSUB_inq_ncid,
|
NCSUB_inq_ncid,
|
||||||
NCSUB_inq_grps,
|
NCSUB_inq_grps,
|
||||||
NCSUB_inq_grpname,
|
NCSUB_inq_grpname,
|
||||||
|
@ -12,6 +12,10 @@ IF(USE_HDF5 OR USE_NETCDF4)
|
|||||||
SET(liblib_LIBS ${liblib_LIBS} netcdf4)
|
SET(liblib_LIBS ${liblib_LIBS} netcdf4)
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
|
IF(USE_PNETCDF)
|
||||||
|
SET(liblib_LIBS ${liblib_LIBS} netcdf5)
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
IF(USE_DAP)
|
IF(USE_DAP)
|
||||||
SET(liblib_LIBS ${liblib_LIBS} oc2 dap2)
|
SET(liblib_LIBS ${liblib_LIBS} oc2 dap2)
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
@ -33,9 +33,15 @@ endif # BUILD_V2
|
|||||||
# The output library will always include netcdf3 and dispatch
|
# The output library will always include netcdf3 and dispatch
|
||||||
# libraries
|
# libraries
|
||||||
libnetcdf_la_LIBADD += ${top_builddir}/libdispatch/libdispatch.la \
|
libnetcdf_la_LIBADD += ${top_builddir}/libdispatch/libdispatch.la \
|
||||||
${top_builddir}/libsrc/libnetcdf3.la
|
${top_builddir}/libsrc/libnetcdf3.la
|
||||||
|
|
||||||
# netcdf3 + dap
|
# + pnetcdf
|
||||||
|
if USE_PNETCDF
|
||||||
|
AM_CPPFLAGS += -I${top_srcdir}/libsrc5
|
||||||
|
libnetcdf_la_LIBADD += ${top_builddir}/libsrc5/libnetcdf5.la
|
||||||
|
endif # USE_PNETCDF
|
||||||
|
|
||||||
|
# + dap
|
||||||
if USE_DAP
|
if USE_DAP
|
||||||
AM_CPPFLAGS += -I${top_srcdir}/libdap2 -I${top_srcdir}/oc
|
AM_CPPFLAGS += -I${top_srcdir}/libdap2 -I${top_srcdir}/oc
|
||||||
libnetcdf_la_LIBADD += ${top_builddir}/libdap2/libdap2.la
|
libnetcdf_la_LIBADD += ${top_builddir}/libdap2/libdap2.la
|
||||||
|
@ -8,6 +8,8 @@
|
|||||||
|
|
||||||
extern int NC3_initialize(void);
|
extern int NC3_initialize(void);
|
||||||
|
|
||||||
|
extern int NCSUBSTRATE_initialize(void);
|
||||||
|
|
||||||
#ifdef USE_NETCDF4
|
#ifdef USE_NETCDF4
|
||||||
extern int NC4_initialize(void);
|
extern int NC4_initialize(void);
|
||||||
#endif
|
#endif
|
||||||
@ -23,10 +25,18 @@ extern int NCD4_initialize(void);
|
|||||||
extern int NCCR_initialize(void);
|
extern int NCCR_initialize(void);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef BUILD_RPC
|
#ifdef USE_PNETCDF
|
||||||
extern int NCRPC_initialize(void);
|
extern int NC5_initialize(void);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
This procedure invokes all defined
|
||||||
|
initializers, and there is an initializer
|
||||||
|
for every known dispatch table.
|
||||||
|
So if you modify the format of NC_Dispatch,
|
||||||
|
then you need to fix it everywhere.
|
||||||
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
NC_initialize(void)
|
NC_initialize(void)
|
||||||
{
|
{
|
||||||
@ -43,6 +53,10 @@ NC_initialize(void)
|
|||||||
if((stat = NCD3_initialize())) return stat;
|
if((stat = NCD3_initialize())) return stat;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef USE_PNETCDF
|
||||||
|
if((stat = NC5_initialize())) return stat;
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef USE_NETCDF4
|
#ifdef USE_NETCDF4
|
||||||
if((stat = NC4_initialize())) return stat;
|
if((stat = NC4_initialize())) return stat;
|
||||||
|
|
||||||
@ -58,12 +72,10 @@ NC_initialize(void)
|
|||||||
if((stat = NCCR_initialize())) return stat;
|
if((stat = NCCR_initialize())) return stat;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef USE_RPC
|
|
||||||
if((stat = NCRPC_initialize())) return stat;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* USE_NETCDF4 */
|
#endif /* USE_NETCDF4 */
|
||||||
|
|
||||||
|
/* Finally, initialize the SUBSTRATE table (dsubstrate.c) */
|
||||||
|
if((stat = NCSUBSTRATE_initialize())) return stat;
|
||||||
|
|
||||||
return NC_NOERR;
|
return NC_NOERR;
|
||||||
}
|
}
|
||||||
|
@ -37,10 +37,11 @@ static int NC3_inq_var_all(int ncid, int varid, char *name, nc_type *xtypep,
|
|||||||
int *no_fill, void *fill_valuep, int *endiannessp,
|
int *no_fill, void *fill_valuep, int *endiannessp,
|
||||||
int *options_maskp, int *pixels_per_blockp);
|
int *options_maskp, int *pixels_per_blockp);
|
||||||
|
|
||||||
|
static int NC3_var_par_access(int,int,int);
|
||||||
|
|
||||||
#ifdef USE_NETCDF4
|
#ifdef USE_NETCDF4
|
||||||
static int NC3_show_metadata(int);
|
static int NC3_show_metadata(int);
|
||||||
static int NC3_inq_unlimdims(int,int*,int*);
|
static int NC3_inq_unlimdims(int,int*,int*);
|
||||||
static int NC3_var_par_access(int,int,int);
|
|
||||||
static int NC3_inq_ncid(int,const char*,int*);
|
static int NC3_inq_ncid(int,const char*,int*);
|
||||||
static int NC3_inq_grps(int,int*,int*);
|
static int NC3_inq_grps(int,int*,int*);
|
||||||
static int NC3_inq_grpname(int,char*);
|
static int NC3_inq_grpname(int,char*);
|
||||||
@ -122,10 +123,11 @@ NCDEFAULT_put_varm,
|
|||||||
|
|
||||||
NC3_inq_var_all,
|
NC3_inq_var_all,
|
||||||
|
|
||||||
|
NC3_var_par_access,
|
||||||
|
|
||||||
#ifdef USE_NETCDF4
|
#ifdef USE_NETCDF4
|
||||||
NC3_show_metadata,
|
NC3_show_metadata,
|
||||||
NC3_inq_unlimdims,
|
NC3_inq_unlimdims,
|
||||||
NC3_var_par_access,
|
|
||||||
NC3_inq_ncid,
|
NC3_inq_ncid,
|
||||||
NC3_inq_grps,
|
NC3_inq_grps,
|
||||||
NC3_inq_grpname,
|
NC3_inq_grpname,
|
||||||
@ -194,6 +196,12 @@ NC3_inq_var_all(int ncid, int varid, char *name, nc_type *xtypep,
|
|||||||
return NC_NOERR;
|
return NC_NOERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
NC3_var_par_access(int ncid, int varid, int par_access)
|
||||||
|
{
|
||||||
|
return NC_NOERR; /* no-op for netcdf classic */
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef USE_NETCDF4
|
#ifdef USE_NETCDF4
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@ -488,11 +496,5 @@ NC3_def_var_endian(int ncid, int varid, int endianness)
|
|||||||
return NC_ENOTNC4;
|
return NC_ENOTNC4;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
|
||||||
NC3_var_par_access(int ncid, int varid, int par_access)
|
|
||||||
{
|
|
||||||
return NC_ENOTNC4;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /*USE_NETCDF4*/
|
#endif /*USE_NETCDF4*/
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ conditions.
|
|||||||
#include "nc4dispatch.h"
|
#include "nc4dispatch.h"
|
||||||
#include "ncdispatch.h"
|
#include "ncdispatch.h"
|
||||||
|
|
||||||
#ifdef USE_PNETCDF
|
#if 0 /*def USE_PNETCDF*/
|
||||||
#include <pnetcdf.h>
|
#include <pnetcdf.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -478,7 +478,7 @@ NC4_inq_att(int ncid, int varid, const char *name, nc_type *xtypep, size_t *lenp
|
|||||||
h5 = NC4_DATA(nc);
|
h5 = NC4_DATA(nc);
|
||||||
assert(h5);
|
assert(h5);
|
||||||
|
|
||||||
#ifdef USE_PNETCDF
|
#if 0 /*def USE_PNETCDF*/
|
||||||
/* Take care of files created/opened with parallel-netcdf library. */
|
/* Take care of files created/opened with parallel-netcdf library. */
|
||||||
if (h5->pnetcdf_file)
|
if (h5->pnetcdf_file)
|
||||||
{
|
{
|
||||||
@ -512,7 +512,7 @@ NC4_inq_attid(int ncid, int varid, const char *name, int *attnump)
|
|||||||
h5 = NC4_DATA(nc);
|
h5 = NC4_DATA(nc);
|
||||||
assert(h5);
|
assert(h5);
|
||||||
|
|
||||||
#ifdef USE_PNETCDF
|
#if 0 /*def USE_PNETCDF*/
|
||||||
/* Take care of files created/opened with parallel-netcdf library. */
|
/* Take care of files created/opened with parallel-netcdf library. */
|
||||||
if (h5->pnetcdf_file)
|
if (h5->pnetcdf_file)
|
||||||
return ncmpi_inq_attid(nc->int_ncid, varid, name, attnump);
|
return ncmpi_inq_attid(nc->int_ncid, varid, name, attnump);
|
||||||
@ -544,7 +544,7 @@ NC4_inq_attname(int ncid, int varid, int attnum, char *name)
|
|||||||
h5 = NC4_DATA(nc);
|
h5 = NC4_DATA(nc);
|
||||||
assert(h5);
|
assert(h5);
|
||||||
|
|
||||||
#ifdef USE_PNETCDF
|
#if 0 /*def USE_PNETCDF*/
|
||||||
/* Take care of files created/opened with parallel-netcdf library. */
|
/* Take care of files created/opened with parallel-netcdf library. */
|
||||||
if (h5->pnetcdf_file)
|
if (h5->pnetcdf_file)
|
||||||
return ncmpi_inq_attname(nc->int_ncid, varid, attnum, name);
|
return ncmpi_inq_attname(nc->int_ncid, varid, attnum, name);
|
||||||
@ -596,7 +596,7 @@ NC4_rename_att(int ncid, int varid, const char *name,
|
|||||||
if (h5->no_write)
|
if (h5->no_write)
|
||||||
return NC_EPERM;
|
return NC_EPERM;
|
||||||
|
|
||||||
#ifdef USE_PNETCDF
|
#if 0 /*def USE_PNETCDF*/
|
||||||
/* Take care of files created/opened with parallel-netcdf library. */
|
/* Take care of files created/opened with parallel-netcdf library. */
|
||||||
if (h5->pnetcdf_file)
|
if (h5->pnetcdf_file)
|
||||||
return ncmpi_rename_att(nc->int_ncid, varid, name, newname);
|
return ncmpi_rename_att(nc->int_ncid, varid, name, newname);
|
||||||
@ -702,7 +702,7 @@ NC4_del_att(int ncid, int varid, const char *name)
|
|||||||
if (h5->no_write)
|
if (h5->no_write)
|
||||||
return NC_EPERM;
|
return NC_EPERM;
|
||||||
|
|
||||||
#ifdef USE_PNETCDF
|
#if 0 /*def USE_PNETCDF*/
|
||||||
/* Take care of files created/opened with parallel-netcdf library. */
|
/* Take care of files created/opened with parallel-netcdf library. */
|
||||||
if (h5->pnetcdf_file)
|
if (h5->pnetcdf_file)
|
||||||
return ncmpi_del_att(nc->int_ncid, varid, name);
|
return ncmpi_del_att(nc->int_ncid, varid, name);
|
||||||
@ -797,12 +797,13 @@ nc4_put_att_tc(int ncid, int varid, const char *name, nc_type file_type,
|
|||||||
h5 = NC4_DATA(nc);
|
h5 = NC4_DATA(nc);
|
||||||
assert(h5);
|
assert(h5);
|
||||||
|
|
||||||
#ifdef USE_PNETCDF
|
#if 0 /*def USE_PNETCDF*/
|
||||||
/* Take care of files created/opened with parallel-netcdf library. */
|
/* Take care of files created/opened with parallel-netcdf library. */
|
||||||
if (h5->pnetcdf_file)
|
if (h5->pnetcdf_file)
|
||||||
{
|
{
|
||||||
if (mem_type == NC_UBYTE)
|
if (mem_type == NC_UBYTE)
|
||||||
mem_type = NC_BYTE;
|
mem_type = NC_BYTE;
|
||||||
|
|
||||||
switch(mem_type)
|
switch(mem_type)
|
||||||
{
|
{
|
||||||
case NC_BYTE:
|
case NC_BYTE:
|
||||||
@ -859,12 +860,13 @@ nc4_get_att_tc(int ncid, int varid, const char *name, nc_type mem_type,
|
|||||||
h5 = NC4_DATA(nc);
|
h5 = NC4_DATA(nc);
|
||||||
assert(h5);
|
assert(h5);
|
||||||
|
|
||||||
#ifdef USE_PNETCDF
|
#if 0 /*def USE_PNETCDF*/
|
||||||
/* Take care of files created/opened with parallel-netcdf library. */
|
/* Take care of files created/opened with parallel-netcdf library. */
|
||||||
if (h5->pnetcdf_file)
|
if (h5->pnetcdf_file)
|
||||||
{
|
{
|
||||||
if (mem_type == NC_UBYTE)
|
if (mem_type == NC_UBYTE)
|
||||||
mem_type = NC_BYTE;
|
mem_type = NC_BYTE;
|
||||||
|
|
||||||
switch(mem_type)
|
switch(mem_type)
|
||||||
{
|
{
|
||||||
case NC_BYTE:
|
case NC_BYTE:
|
||||||
|
@ -14,7 +14,7 @@ $Id: nc4dim.c,v 1.41 2010/05/25 17:54:23 dmh Exp $
|
|||||||
#include "nc4internal.h"
|
#include "nc4internal.h"
|
||||||
#include "nc4dispatch.h"
|
#include "nc4dispatch.h"
|
||||||
|
|
||||||
#ifdef USE_PNETCDF
|
#if 0 /*def USE_PNETCDF*/
|
||||||
#include <pnetcdf.h>
|
#include <pnetcdf.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -37,7 +37,7 @@ NC4_inq_unlimdim(int ncid, int *unlimdimidp)
|
|||||||
return retval;
|
return retval;
|
||||||
assert(h5);
|
assert(h5);
|
||||||
|
|
||||||
#ifdef USE_PNETCDF
|
#if 0 /*def USE_PNETCDF*/
|
||||||
/* Take care of files created/opened with parallel-netcdf library. */
|
/* Take care of files created/opened with parallel-netcdf library. */
|
||||||
if (h5->pnetcdf_file)
|
if (h5->pnetcdf_file)
|
||||||
return ncmpi_inq_unlimdim(nc->int_ncid, unlimdimidp);
|
return ncmpi_inq_unlimdim(nc->int_ncid, unlimdimidp);
|
||||||
@ -87,7 +87,7 @@ NC4_def_dim(int ncid, const char *name, size_t len, int *idp)
|
|||||||
if (h5->no_write)
|
if (h5->no_write)
|
||||||
return NC_EPERM;
|
return NC_EPERM;
|
||||||
|
|
||||||
#ifdef USE_PNETCDF
|
#if 0 /*def USE_PNETCDF*/
|
||||||
/* Take care of files created/opened with parallel-netcdf library. */
|
/* Take care of files created/opened with parallel-netcdf library. */
|
||||||
if (h5->pnetcdf_file)
|
if (h5->pnetcdf_file)
|
||||||
return ncmpi_def_dim(nc->int_ncid, name, len, idp);
|
return ncmpi_def_dim(nc->int_ncid, name, len, idp);
|
||||||
@ -169,7 +169,7 @@ NC4_inq_dimid(int ncid, const char *name, int *idp)
|
|||||||
assert(h5);
|
assert(h5);
|
||||||
assert(nc && grp);
|
assert(nc && grp);
|
||||||
|
|
||||||
#ifdef USE_PNETCDF
|
#if 0 /*def USE_PNETCDF*/
|
||||||
/* Take care of files created/opened with parallel-netcdf library. */
|
/* Take care of files created/opened with parallel-netcdf library. */
|
||||||
if (h5->pnetcdf_file)
|
if (h5->pnetcdf_file)
|
||||||
return ncmpi_inq_dimid(nc->int_ncid, name, idp);
|
return ncmpi_inq_dimid(nc->int_ncid, name, idp);
|
||||||
@ -213,7 +213,7 @@ NC4_inq_dim(int ncid, int dimid, char *name, size_t *lenp)
|
|||||||
assert(h5);
|
assert(h5);
|
||||||
assert(nc && grp);
|
assert(nc && grp);
|
||||||
|
|
||||||
#ifdef USE_PNETCDF
|
#if 0 /*def USE_PNETCDF*/
|
||||||
/* Take care of files created/opened with parallel-netcdf library. */
|
/* Take care of files created/opened with parallel-netcdf library. */
|
||||||
if (h5->pnetcdf_file)
|
if (h5->pnetcdf_file)
|
||||||
{
|
{
|
||||||
@ -291,7 +291,7 @@ NC4_rename_dim(int ncid, int dimid, const char *name)
|
|||||||
if (h5->no_write)
|
if (h5->no_write)
|
||||||
return NC_EPERM;
|
return NC_EPERM;
|
||||||
|
|
||||||
#ifdef USE_PNETCDF
|
#if 0 /*def USE_PNETCDF*/
|
||||||
/* Take care of files created/opened with parallel-netcdf library. */
|
/* Take care of files created/opened with parallel-netcdf library. */
|
||||||
if (h5->pnetcdf_file)
|
if (h5->pnetcdf_file)
|
||||||
return ncmpi_rename_dim(nc->int_ncid, dimid, name);
|
return ncmpi_rename_dim(nc->int_ncid, dimid, name);
|
||||||
|
@ -56,11 +56,11 @@ NCDEFAULT_put_varm,
|
|||||||
|
|
||||||
NC4_inq_var_all,
|
NC4_inq_var_all,
|
||||||
|
|
||||||
|
NC4_var_par_access,
|
||||||
|
|
||||||
NC4_show_metadata,
|
NC4_show_metadata,
|
||||||
NC4_inq_unlimdims,
|
NC4_inq_unlimdims,
|
||||||
|
|
||||||
NC4_var_par_access,
|
|
||||||
|
|
||||||
NC4_inq_ncid,
|
NC4_inq_ncid,
|
||||||
NC4_inq_grps,
|
NC4_inq_grps,
|
||||||
NC4_inq_grpname,
|
NC4_inq_grpname,
|
||||||
|
@ -19,7 +19,7 @@ COPYRIGHT file for copying and redistribution conditions.
|
|||||||
#include <mfhdf.h>
|
#include <mfhdf.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef USE_PNETCDF
|
#if 0 /*def USE_PNETCDF*/
|
||||||
#include <pnetcdf.h>
|
#include <pnetcdf.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -252,7 +252,7 @@ nc4_create_file(const char *path, int cmode, MPI_Comm comm, MPI_Info info,
|
|||||||
nc4_info = NC4_DATA(nc);
|
nc4_info = NC4_DATA(nc);
|
||||||
assert(nc4_info && nc4_info->root_grp);
|
assert(nc4_info && nc4_info->root_grp);
|
||||||
|
|
||||||
#ifdef USE_PNETCDF
|
#if 0 /*def USE_PNETCDF*/
|
||||||
if (cmode & NC_PNETCDF)
|
if (cmode & NC_PNETCDF)
|
||||||
return NC_NOERR;
|
return NC_NOERR;
|
||||||
#endif
|
#endif
|
||||||
@ -429,7 +429,7 @@ NC4_create(const char* path, int cmode, size_t initialsz, int basepe,
|
|||||||
nc_file->int_ncid = nc_file->ext_ncid;
|
nc_file->int_ncid = nc_file->ext_ncid;
|
||||||
res = nc4_create_file(path, cmode, comm, info, nc_file);
|
res = nc4_create_file(path, cmode, comm, info, nc_file);
|
||||||
|
|
||||||
#ifdef USE_PNETCDF
|
#if 0 /*def USE_PNETCDF*/
|
||||||
if (cmode & NC_PNETCDF)
|
if (cmode & NC_PNETCDF)
|
||||||
{
|
{
|
||||||
NC_HDF5_FILE_INFO_T* nc4_info;
|
NC_HDF5_FILE_INFO_T* nc4_info;
|
||||||
@ -2752,7 +2752,7 @@ NC4_open(const char *path, int mode, int basepe, size_t *chunksizehintp,
|
|||||||
|
|
||||||
/* Depending on the type of file, open it. */
|
/* Depending on the type of file, open it. */
|
||||||
|
|
||||||
#ifdef USE_PNETCDF
|
#if 0 /*def USE_PNETCDF*/
|
||||||
if(mode & NC_PNETCDF) {
|
if(mode & NC_PNETCDF) {
|
||||||
/* this is not really an hdf file */
|
/* this is not really an hdf file */
|
||||||
int pnetcdf_nvars, i;
|
int pnetcdf_nvars, i;
|
||||||
@ -2837,7 +2837,7 @@ NC4_set_fill(int ncid, int fillmode, int *old_modep)
|
|||||||
|
|
||||||
nc4_info->fill_mode = fillmode;
|
nc4_info->fill_mode = fillmode;
|
||||||
|
|
||||||
#ifdef USE_PNETCDF
|
#if 0 /*def USE_PNETCDF*/
|
||||||
/* Take care of files created/opened with parallel-netcdf library. */
|
/* Take care of files created/opened with parallel-netcdf library. */
|
||||||
if (nc4_info->pnetcdf_file)
|
if (nc4_info->pnetcdf_file)
|
||||||
return ncmpi_set_fill(nc->int_ncid, fillmode, old_modep);
|
return ncmpi_set_fill(nc->int_ncid, fillmode, old_modep);
|
||||||
@ -2862,7 +2862,7 @@ NC4_redef(int ncid)
|
|||||||
return NC_EBADID;
|
return NC_EBADID;
|
||||||
assert(nc4_info);
|
assert(nc4_info);
|
||||||
|
|
||||||
#ifdef USE_PNETCDF
|
#if 0 /*def USE_PNETCDF*/
|
||||||
/* Take care of files created/opened with parallel-netcdf library. */
|
/* Take care of files created/opened with parallel-netcdf library. */
|
||||||
if (nc4_info->pnetcdf_file)
|
if (nc4_info->pnetcdf_file)
|
||||||
return ncmpi_redef(nc->int_ncid);
|
return ncmpi_redef(nc->int_ncid);
|
||||||
@ -2911,7 +2911,7 @@ static int NC4_enddef(int ncid)
|
|||||||
return NC_EBADID;
|
return NC_EBADID;
|
||||||
assert(nc4_info);
|
assert(nc4_info);
|
||||||
|
|
||||||
#ifdef USE_PNETCDF
|
#if 0 /*def USE_PNETCDF*/
|
||||||
if (nc4_info->pnetcdf_file)
|
if (nc4_info->pnetcdf_file)
|
||||||
{
|
{
|
||||||
int res;
|
int res;
|
||||||
@ -2991,7 +2991,7 @@ NC4_sync(int ncid)
|
|||||||
return NC_EBADID;
|
return NC_EBADID;
|
||||||
assert(nc4_info);
|
assert(nc4_info);
|
||||||
|
|
||||||
#ifdef USE_PNETCDF
|
#if 0 /*def USE_PNETCDF*/
|
||||||
/* Take care of files created/opened with parallel-netcdf library. */
|
/* Take care of files created/opened with parallel-netcdf library. */
|
||||||
if (nc4_info->pnetcdf_file)
|
if (nc4_info->pnetcdf_file)
|
||||||
return ncmpi_sync(nc->int_ncid);
|
return ncmpi_sync(nc->int_ncid);
|
||||||
@ -3100,7 +3100,7 @@ NC4_abort(int ncid)
|
|||||||
|
|
||||||
assert(nc4_info);
|
assert(nc4_info);
|
||||||
|
|
||||||
#ifdef USE_PNETCDF
|
#if 0 /*def USE_PNETCDF*/
|
||||||
/* Take care of files created/opened with parallel-netcdf library. */
|
/* Take care of files created/opened with parallel-netcdf library. */
|
||||||
if (nc4_info->pnetcdf_file)
|
if (nc4_info->pnetcdf_file)
|
||||||
return ncmpi_abort(nc->int_ncid);
|
return ncmpi_abort(nc->int_ncid);
|
||||||
@ -3146,7 +3146,7 @@ NC4_close(int ncid)
|
|||||||
if (grp->parent)
|
if (grp->parent)
|
||||||
return NC_EBADGRPID;
|
return NC_EBADGRPID;
|
||||||
|
|
||||||
#ifdef USE_PNETCDF
|
#if 0 /*def USE_PNETCDF*/
|
||||||
/* Take care of files created/opened with parallel-netcdf library. */
|
/* Take care of files created/opened with parallel-netcdf library. */
|
||||||
if (h5->pnetcdf_file)
|
if (h5->pnetcdf_file)
|
||||||
return ncmpi_close(nc->int_ncid);
|
return ncmpi_close(nc->int_ncid);
|
||||||
@ -3180,7 +3180,7 @@ NC4_inq(int ncid, int *ndimsp, int *nvarsp, int *nattsp, int *unlimdimidp)
|
|||||||
|
|
||||||
assert(h5 && grp && nc);
|
assert(h5 && grp && nc);
|
||||||
|
|
||||||
#ifdef USE_PNETCDF
|
#if 0 /*def USE_PNETCDF*/
|
||||||
/* Take care of files created/opened with parallel-netcdf library. */
|
/* Take care of files created/opened with parallel-netcdf library. */
|
||||||
if (h5->pnetcdf_file)
|
if (h5->pnetcdf_file)
|
||||||
return ncmpi_inq(nc->int_ncid, ndimsp, nvarsp, nattsp, unlimdimidp);
|
return ncmpi_inq(nc->int_ncid, ndimsp, nvarsp, nattsp, unlimdimidp);
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
#include <H5DSpublic.h>
|
#include <H5DSpublic.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
#ifdef USE_PNETCDF
|
#if 0 /*def USE_PNETCDF*/
|
||||||
#include <pnetcdf.h>
|
#include <pnetcdf.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ conditions.
|
|||||||
#include "ncdispatch.h" /* from libdispatch */
|
#include "ncdispatch.h" /* from libdispatch */
|
||||||
#include <utf8proc.h>
|
#include <utf8proc.h>
|
||||||
|
|
||||||
#ifdef USE_PNETCDF
|
#if 0 /*def USE_PNETCDF*/
|
||||||
#include <pnetcdf.h>
|
#include <pnetcdf.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -267,7 +267,7 @@ nc4_find_nc_grp_h5(int ncid, NC **nc, NC_GRP_INFO_T **grpp,
|
|||||||
*nc = f;
|
*nc = f;
|
||||||
|
|
||||||
#if 0 /* I do not understand this code at all */
|
#if 0 /* I do not understand this code at all */
|
||||||
#ifdef USE_PNETCDF
|
#if 0 /*def USE_PNETCDF*/
|
||||||
if (h5->pnetcdf_file) {
|
if (h5->pnetcdf_file) {
|
||||||
*h5p = NULL;
|
*h5p = NULL;
|
||||||
*grpp = NULL;
|
*grpp = NULL;
|
||||||
|
@ -115,9 +115,10 @@ NC4_inq_typeid(int ncid, const char *name, nc_type *typeidp)
|
|||||||
/* Normalize name. */
|
/* Normalize name. */
|
||||||
if (!(norm_name = (char*)malloc(strlen(name) + 1)))
|
if (!(norm_name = (char*)malloc(strlen(name) + 1)))
|
||||||
return NC_ENOMEM;
|
return NC_ENOMEM;
|
||||||
if ((retval = nc4_normalize_name(name, norm_name)))
|
if ((retval = nc4_normalize_name(name, norm_name))) {
|
||||||
return retval;
|
free(norm_name);
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
/* Is the type in this group? If not, search parents. */
|
/* Is the type in this group? If not, search parents. */
|
||||||
for (grp2 = grp; grp2; grp2 = grp2->parent)
|
for (grp2 = grp; grp2; grp2 = grp2->parent)
|
||||||
for (type = grp2->type; type; type = type->next)
|
for (type = grp2->type; type; type = type->next)
|
||||||
|
@ -13,7 +13,7 @@ conditions.
|
|||||||
#include "nc4dispatch.h"
|
#include "nc4dispatch.h"
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
#ifdef USE_PNETCDF
|
#if 0 /*def USE_PNETCDF*/
|
||||||
#include <pnetcdf.h>
|
#include <pnetcdf.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -576,7 +576,7 @@ NC4_def_var(int ncid, const char *name, nc_type xtype, int ndims,
|
|||||||
if (!(nc = nc4_find_nc_file(ncid,&h5)))
|
if (!(nc = nc4_find_nc_file(ncid,&h5)))
|
||||||
return NC_EBADID;
|
return NC_EBADID;
|
||||||
|
|
||||||
#ifdef USE_PNETCDF
|
#if 0 /*def USE_PNETCDF*/
|
||||||
/* Take care of files created/opened with parallel-netcdf library. */
|
/* Take care of files created/opened with parallel-netcdf library. */
|
||||||
if (h5->pnetcdf_file)
|
if (h5->pnetcdf_file)
|
||||||
{
|
{
|
||||||
@ -623,7 +623,7 @@ NC4_inq_var_all(int ncid, int varid, char *name, nc_type *xtypep,
|
|||||||
assert(nc);
|
assert(nc);
|
||||||
assert(grp && h5);
|
assert(grp && h5);
|
||||||
|
|
||||||
#ifdef USE_PNETCDF
|
#if 0 /*def USE_PNETCDF*/
|
||||||
/* Take care of files created/opened with parallel-netcdf library. */
|
/* Take care of files created/opened with parallel-netcdf library. */
|
||||||
if (h5->pnetcdf_file)
|
if (h5->pnetcdf_file)
|
||||||
return ncmpi_inq_var(nc->int_ncid, varid, name, xtypep, ndimsp,
|
return ncmpi_inq_var(nc->int_ncid, varid, name, xtypep, ndimsp,
|
||||||
@ -1079,7 +1079,7 @@ NC4_inq_varid(int ncid, const char *name, int *varidp)
|
|||||||
NC_VAR_INFO_T *var;
|
NC_VAR_INFO_T *var;
|
||||||
char norm_name[NC_MAX_NAME + 1];
|
char norm_name[NC_MAX_NAME + 1];
|
||||||
int retval;
|
int retval;
|
||||||
#ifdef USE_PNETCDF
|
#if 0 /*def USE_PNETCDF*/
|
||||||
NC_HDF5_FILE_INFO_T *h5;
|
NC_HDF5_FILE_INFO_T *h5;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -1094,7 +1094,7 @@ NC4_inq_varid(int ncid, const char *name, int *varidp)
|
|||||||
if ((retval = nc4_find_nc_grp_h5(ncid, &nc, &grp, NULL)))
|
if ((retval = nc4_find_nc_grp_h5(ncid, &nc, &grp, NULL)))
|
||||||
return retval;
|
return retval;
|
||||||
|
|
||||||
#ifdef USE_PNETCDF
|
#if 0 /*def USE_PNETCDF*/
|
||||||
h5 = NC4_DATA(nc);
|
h5 = NC4_DATA(nc);
|
||||||
assert(h5);
|
assert(h5);
|
||||||
/* Take care of files created/opened with parallel-netcdf library. */
|
/* Take care of files created/opened with parallel-netcdf library. */
|
||||||
@ -1141,7 +1141,7 @@ NC4_rename_var(int ncid, int varid, const char *name)
|
|||||||
|
|
||||||
assert(h5);
|
assert(h5);
|
||||||
|
|
||||||
#ifdef USE_PNETCDF
|
#if 0 /*def USE_PNETCDF*/
|
||||||
/* Take care of files created/opened with parallel-netcdf library. */
|
/* Take care of files created/opened with parallel-netcdf library. */
|
||||||
if (h5->pnetcdf_file)
|
if (h5->pnetcdf_file)
|
||||||
return ncmpi_rename_var(nc->int_ncid, varid, name);
|
return ncmpi_rename_var(nc->int_ncid, varid, name);
|
||||||
@ -1219,7 +1219,7 @@ NC4_var_par_access(int ncid, int varid, int par_access)
|
|||||||
if ((retval = nc4_find_nc_grp_h5(ncid, &nc, &grp, &h5)))
|
if ((retval = nc4_find_nc_grp_h5(ncid, &nc, &grp, &h5)))
|
||||||
return retval;
|
return retval;
|
||||||
|
|
||||||
#ifdef USE_PNETCDF
|
#if 0 /*def USE_PNETCDF*/
|
||||||
/* Handle files opened/created with parallel-netcdf library. */
|
/* Handle files opened/created with parallel-netcdf library. */
|
||||||
if (h5->pnetcdf_file)
|
if (h5->pnetcdf_file)
|
||||||
{
|
{
|
||||||
@ -1259,7 +1259,7 @@ nc4_put_vara_tc(int ncid, int varid, nc_type mem_type, int mem_type_is_long,
|
|||||||
{
|
{
|
||||||
NC *nc;
|
NC *nc;
|
||||||
|
|
||||||
#ifdef USE_PNETCDF
|
#if 0 /*def USE_PNETCDF*/
|
||||||
NC_HDF5_FILE_INFO_T *h5;
|
NC_HDF5_FILE_INFO_T *h5;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -1269,7 +1269,7 @@ nc4_put_vara_tc(int ncid, int varid, nc_type mem_type, int mem_type_is_long,
|
|||||||
if (!(nc = nc4_find_nc_file(ncid,NULL)))
|
if (!(nc = nc4_find_nc_file(ncid,NULL)))
|
||||||
return NC_EBADID;
|
return NC_EBADID;
|
||||||
|
|
||||||
#ifdef USE_PNETCDF
|
#if 0 /*def USE_PNETCDF*/
|
||||||
h5 = NC4_DATA(nc);
|
h5 = NC4_DATA(nc);
|
||||||
assert(h5);
|
assert(h5);
|
||||||
|
|
||||||
@ -1399,7 +1399,7 @@ nc4_get_vara_tc(int ncid, int varid, nc_type mem_type, int mem_type_is_long,
|
|||||||
if (!(nc = nc4_find_nc_file(ncid,&h5)))
|
if (!(nc = nc4_find_nc_file(ncid,&h5)))
|
||||||
return NC_EBADID;
|
return NC_EBADID;
|
||||||
|
|
||||||
#ifdef USE_PNETCDF
|
#if 0 /*def USE_PNETCDF*/
|
||||||
/* Handle files opened/created with the parallel-netcdf library. */
|
/* Handle files opened/created with the parallel-netcdf library. */
|
||||||
if (h5->pnetcdf_file)
|
if (h5->pnetcdf_file)
|
||||||
{
|
{
|
||||||
|
@ -91,7 +91,7 @@ NC4_inq_format(int ncid, int *formatp)
|
|||||||
if (!(nc = nc4_find_nc_file(ncid,&h5)))
|
if (!(nc = nc4_find_nc_file(ncid,&h5)))
|
||||||
return NC_EBADID;
|
return NC_EBADID;
|
||||||
|
|
||||||
#ifdef USE_PNETCDF
|
#if 0 /*def USE_PNETCDF*/
|
||||||
/* Take care of files created/opened with parallel-netcdf library. */
|
/* Take care of files created/opened with parallel-netcdf library. */
|
||||||
if (h5->pnetcdf_file)
|
if (h5->pnetcdf_file)
|
||||||
return ncmpi_inq_format(nc->int_ncid, formatp);
|
return ncmpi_inq_format(nc->int_ncid, formatp);
|
||||||
|
10
libsrc5/CMakeLists.txt
Normal file
10
libsrc5/CMakeLists.txt
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
SET(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||||
|
|
||||||
|
INCLUDE_DIRECTORIES(".")
|
||||||
|
|
||||||
|
|
||||||
|
SET(libsrc5_SOURCES nc5dispatch.c)
|
||||||
|
|
||||||
|
add_library(netcdf5 OBJECT ${libsrc_SOURCES})
|
||||||
|
|
||||||
|
|
24
libsrc5/Makefile.am
Normal file
24
libsrc5/Makefile.am
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
## This is an automake file, part of Unidata's netCDF package.
|
||||||
|
# Copyright 2005, see the COPYRIGHT file for more information.
|
||||||
|
|
||||||
|
# This automake file is in charge of building the libsrc directory,
|
||||||
|
# which contains the classic library code.
|
||||||
|
|
||||||
|
include $(top_srcdir)/lib_flags.am
|
||||||
|
|
||||||
|
libnetcdf5_la_CPPFLAGS = ${AM_CPPFLAGS}
|
||||||
|
|
||||||
|
# This is the code for a dispatch table for pnetcdf
|
||||||
|
# (which has CDF5 as its magic number)
|
||||||
|
|
||||||
|
# Turn on a pre-processor flag when building a DLL for windows.
|
||||||
|
if BUILD_DLL
|
||||||
|
libnetcdf5_la_CPPFLAGS += -DDLL_EXPORT
|
||||||
|
endif # BUILD_DLL
|
||||||
|
|
||||||
|
# These files comprise the pnetcdf dispatch library code.
|
||||||
|
libnetcdf5_la_SOURCES = nc5dispatch.c
|
||||||
|
|
||||||
|
noinst_LTLIBRARIES = libnetcdf5.la
|
||||||
|
|
||||||
|
EXTRA_DIST = CMakeLists.txt
|
1123
libsrc5/nc5dispatch.c
Normal file
1123
libsrc5/nc5dispatch.c
Normal file
File diff suppressed because it is too large
Load Diff
@ -22,6 +22,10 @@ if USE_NETCDF4
|
|||||||
TESTPROGRAMS += tst_atts
|
TESTPROGRAMS += tst_atts
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if USE_PNETCDF
|
||||||
|
TESTPROGRAMS += tst_parallel2 tst_pnetcdf
|
||||||
|
endif
|
||||||
|
|
||||||
# if EXTRA_TESTS
|
# if EXTRA_TESTS
|
||||||
# TESTPROGRAMS +=
|
# TESTPROGRAMS +=
|
||||||
# endif # EXTRA_TESTS
|
# endif # EXTRA_TESTS
|
||||||
@ -70,6 +74,10 @@ TESTS += run_diskless2.sh
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if USE_PNETCDF
|
||||||
|
TESTS += run_pnetcdf_test.sh
|
||||||
|
endif
|
||||||
|
|
||||||
# This will run a bunch of the test programs with valgrind, the memory
|
# This will run a bunch of the test programs with valgrind, the memory
|
||||||
# checking tool. (Valgrind must be present for this to work.)
|
# checking tool. (Valgrind must be present for this to work.)
|
||||||
if USE_VALGRIND_TESTS
|
if USE_VALGRIND_TESTS
|
||||||
@ -84,7 +92,7 @@ endif # USE_VALGRIND_TESTS
|
|||||||
# Distribute the .c files so that m4 isn't required on the users
|
# Distribute the .c files so that m4 isn't required on the users
|
||||||
# machine.
|
# machine.
|
||||||
EXTRA_DIST = test_get.m4 test_put.m4 run_valgrind_tests.sh \
|
EXTRA_DIST = test_get.m4 test_put.m4 run_valgrind_tests.sh \
|
||||||
run_diskless.sh run_diskless2.sh run_mmap.sh
|
run_diskless.sh run_diskless2.sh run_mmap.sh run_pnetcdf_test.sh
|
||||||
|
|
||||||
# ref_tst_diskless2.cdl is for diff comparison and to produce tst_diskless2.c
|
# ref_tst_diskless2.cdl is for diff comparison and to produce tst_diskless2.c
|
||||||
EXTRA_DIST += ref_tst_diskless2.cdl CMakeLists.txt
|
EXTRA_DIST += ref_tst_diskless2.cdl CMakeLists.txt
|
||||||
|
@ -120,21 +120,23 @@ tst_att_ordering(int cmode)
|
|||||||
int
|
int
|
||||||
main(int argc, char **argv)
|
main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
(void) signal(SIGFPE, SIG_IGN);
|
|
||||||
|
|
||||||
signed char schar_in[ATT_LEN], schar_out[ATT_LEN] = {NC_MIN_BYTE, 1, NC_MAX_BYTE};
|
signed char schar_in[ATT_LEN], schar_out[ATT_LEN] = {NC_MIN_BYTE, 1, NC_MAX_BYTE};
|
||||||
unsigned char uchar_in[ATT_LEN];
|
unsigned char uchar_in[ATT_LEN];
|
||||||
short short_in[ATT_LEN], short_out[ATT_LEN] = {NC_MIN_SHORT, -128, NC_MAX_SHORT};
|
short short_in[ATT_LEN], short_out[ATT_LEN] = {NC_MIN_SHORT, -128, NC_MAX_SHORT};
|
||||||
unsigned short ushort_in[ATT_LEN], ushort_out[ATT_LEN] = {0, 128, NC_MAX_USHORT};
|
|
||||||
int int_in[ATT_LEN], int_out[ATT_LEN] = {-100000, 128, 100000};
|
int int_in[ATT_LEN], int_out[ATT_LEN] = {-100000, 128, 100000};
|
||||||
long long_in[ATT_LEN];
|
|
||||||
unsigned int uint_in[ATT_LEN], uint_out[ATT_LEN] = {0, 128, NC_MAX_UINT};
|
|
||||||
float float_in[ATT_LEN], float_out[ATT_LEN] = {-0.5, 0.25, 0.125};
|
float float_in[ATT_LEN], float_out[ATT_LEN] = {-0.5, 0.25, 0.125};
|
||||||
double double_in[ATT_LEN], double_out[ATT_LEN] = {-0.25, .5, 0.125};
|
double double_in[ATT_LEN], double_out[ATT_LEN] = {-0.25, .5, 0.125};
|
||||||
long long longlong_in[ATT_LEN] = {-1LL, -1LL, -1LL};
|
long long longlong_in[ATT_LEN] = {-1LL, -1LL, -1LL};
|
||||||
|
#ifdef USE_NETCDF4
|
||||||
|
long long_in[ATT_LEN];
|
||||||
|
unsigned short ushort_in[ATT_LEN], ushort_out[ATT_LEN] = {0, 128, NC_MAX_USHORT};
|
||||||
|
unsigned int uint_in[ATT_LEN], uint_out[ATT_LEN] = {0, 128, NC_MAX_UINT};
|
||||||
long long longlong_out[ATT_LEN] = {-3123456789LL, 128LL, 3123456789LL};
|
long long longlong_out[ATT_LEN] = {-3123456789LL, 128LL, 3123456789LL};
|
||||||
unsigned long long ulonglong_in[ATT_LEN] = {NC_MAX_UINT64, NC_MAX_UINT64, NC_MAX_UINT64};
|
unsigned long long ulonglong_in[ATT_LEN] = {NC_MAX_UINT64, NC_MAX_UINT64, NC_MAX_UINT64};
|
||||||
unsigned long long ulonglong_out[ATT_LEN] = {0LL, 128LL, 3123456789LL};
|
unsigned long long ulonglong_out[ATT_LEN] = {0LL, 128LL, 3123456789LL};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
(void) signal(SIGFPE, SIG_IGN);
|
||||||
|
|
||||||
printf("\n*** Testing netcdf-3 attribute functions.\n");
|
printf("\n*** Testing netcdf-3 attribute functions.\n");
|
||||||
printf("*** testing really simple global atts...");
|
printf("*** testing really simple global atts...");
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <mpi.h>
|
#include <mpi.h>
|
||||||
#include <netcdf.h>
|
#include <netcdf.h>
|
||||||
|
#include <netcdf_par.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
#define NVARS 6
|
#define NVARS 6
|
@ -107,17 +107,12 @@ if TEST_PARALLEL
|
|||||||
check_PROGRAMS += tst_mpi_parallel tst_parallel tst_parallel3 \
|
check_PROGRAMS += tst_mpi_parallel tst_parallel tst_parallel3 \
|
||||||
tst_parallel4 tst_nc4perf
|
tst_parallel4 tst_nc4perf
|
||||||
TESTS += run_par_test.sh
|
TESTS += run_par_test.sh
|
||||||
# More tests run with --enable-pnetcdf
|
|
||||||
if USE_PNETCDF
|
|
||||||
check_PROGRAMS += tst_parallel2 tst_pnetcdf
|
|
||||||
TESTS += run_pnetcdf_test.sh
|
|
||||||
endif
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
EXTRA_DIST = run_par_test.sh run_bm.sh run_bm_test1.sh run_bm_test2.sh \
|
EXTRA_DIST = run_par_test.sh run_bm.sh run_bm_test1.sh run_bm_test2.sh \
|
||||||
run_bm_radar_2D.sh run_bm_radar_2D_compression1.sh run_par_bm_test.sh \
|
run_bm_radar_2D.sh run_bm_radar_2D_compression1.sh run_par_bm_test.sh \
|
||||||
run_bm_elena.sh run_par_bm_radar_2D.sh run_bm_radar_2D_endianness1.sh \
|
run_bm_elena.sh run_par_bm_radar_2D.sh run_bm_radar_2D_endianness1.sh \
|
||||||
run_tst_chunks.sh ref_chunks1.cdl ref_chunks2.cdl run_pnetcdf_test.sh \
|
run_tst_chunks.sh ref_chunks1.cdl ref_chunks2.cdl \
|
||||||
run_get_hdf4_files.sh run_valgrind_tests.sh run_valgrind_tests2.sh \
|
run_get_hdf4_files.sh run_valgrind_tests.sh run_valgrind_tests2.sh \
|
||||||
run_bm_ar4.sh ref_tst_compounds.nc run_hdf4_valgrind_tests.sh \
|
run_bm_ar4.sh ref_tst_compounds.nc run_hdf4_valgrind_tests.sh \
|
||||||
ref_tst_xplatform2_1.nc ref_tst_xplatform2_2.nc ref_tst_dims.nc \
|
ref_tst_xplatform2_1.nc ref_tst_xplatform2_2.nc ref_tst_dims.nc \
|
||||||
|
@ -4,4 +4,4 @@ Attributes {
|
|||||||
Int32 a1 32;
|
Int32 a1 32;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,11 @@
|
|||||||
|
Dataset {
|
||||||
|
Grid {
|
||||||
|
Array:
|
||||||
|
Float32 temp[lat=2][long=2];
|
||||||
|
Maps:
|
||||||
|
Int32 lat[lat=2];
|
||||||
|
Int32 long[long=2];
|
||||||
|
} G1;
|
||||||
|
Int32 lat[lat=2];
|
||||||
|
Int32 long[long=2];
|
||||||
|
} TEST3;
|
@ -32,12 +32,13 @@ bin_constant(Generator* generator, Constant* con, Bytebuffer* buf,...)
|
|||||||
}
|
}
|
||||||
switch (con->nctype) {
|
switch (con->nctype) {
|
||||||
case NC_OPAQUE: {
|
case NC_OPAQUE: {
|
||||||
unsigned char* bytes;
|
unsigned char* bytes = NULL;
|
||||||
size_t len;
|
size_t len;
|
||||||
/* Assume the opaque string has been normalized */
|
/* Assume the opaque string has been normalized */
|
||||||
bytes=makebytestring(con->value.opaquev.stringv,&len);
|
bytes=makebytestring(con->value.opaquev.stringv,&len);
|
||||||
bbAppendn(buf,(void*)bytes,len);
|
bbAppendn(buf,(void*)bytes,len);
|
||||||
} break;
|
free(bytes);
|
||||||
|
} break;
|
||||||
case NC_CHAR:
|
case NC_CHAR:
|
||||||
bbAppendn(buf,&con->value.charv,sizeof(con->value.charv));
|
bbAppendn(buf,&con->value.charv,sizeof(con->value.charv));
|
||||||
break;
|
break;
|
||||||
|
@ -606,6 +606,7 @@ convertstringtochars(Constant* str)
|
|||||||
con.nctype = NC_CHAR;
|
con.nctype = NC_CHAR;
|
||||||
con.lineno = str->lineno;
|
con.lineno = str->lineno;
|
||||||
con.value.charv = s[i];
|
con.value.charv = s[i];
|
||||||
|
con.filled = 0;
|
||||||
dlappend(dl,&con);
|
dlappend(dl,&con);
|
||||||
}
|
}
|
||||||
return dl;
|
return dl;
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
# $Id: Makefile.am,v 1.1 2010/05/23 21:05:33 dmh Exp $
|
# $Id: Makefile.am,v 1.1 2010/05/23 21:05:33 dmh Exp $
|
||||||
|
|
||||||
# Cause C preprocessor to search current and parent directory.
|
# Cause C preprocessor to search current and parent directory.
|
||||||
AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include
|
AM_CPPFLAGS = -I.. -I$(top_srcdir) -I$(top_srcdir)/include
|
||||||
|
|
||||||
# OC Sources; include the daptab.[ch] to avoid the need for bison by user
|
# OC Sources; include the daptab.[ch] to avoid the need for bison by user
|
||||||
SRC=oc.c \
|
SRC=oc.c \
|
||||||
|
@ -309,6 +309,8 @@ daplexinit(char* input, DAPlexstate** lexstatep)
|
|||||||
lexstate->yytext = ocbytesnew();
|
lexstate->yytext = ocbytesnew();
|
||||||
lexstate->reclaim = oclistnew();
|
lexstate->reclaim = oclistnew();
|
||||||
dapsetwordchars(lexstate,0); /* Assume DDS */
|
dapsetwordchars(lexstate,0); /* Assume DDS */
|
||||||
|
if(!lexstatep)
|
||||||
|
free(lexstate);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
Loading…
Reference in New Issue
Block a user