[exodus] 31/48: Prep dfsg 6.02
Alastair McKinstry
mckinstry at moszumanska.debian.org
Wed Jul 15 11:36:05 UTC 2015
This is an automated email from the git hooks/post-receive script.
mckinstry pushed a commit to branch debian/master
in repository exodus.
commit 52afe3d339d4a533e8246a13d6139a4fab51276a
Author: Alastair McKinstry <mckinstry at debian.org>
Date: Sat Dec 14 14:42:21 2013 +0000
Prep dfsg 6.02
---
ChangeLog | 104 +++
README.NEMESIS | 18 +
nemesis/CMakeLists.txt | 86 +++
nemesis/COPYRIGHT | 32 +
nemesis/Imakefile | 142 ++++
nemesis/Makefile.standalone | 247 +++++++
nemesis/README | 27 +
nemesis/forbind/Imakefile | 73 +++
nemesis/forbind/Makefile | 585 +++++++++++++++++
nemesis/forbind/Makefile.standalone | 68 ++
nemesis/forbind/addrwrpn.F | 1211 +++++++++++++++++++++++++++++++++++
nemesis/forbind/ne_ftest.F | 928 +++++++++++++++++++++++++++
nemesis/forbind/ne_test.inc | 66 ++
nemesis/ne_ctest_wrap.c | 1044 ++++++++++++++++++++++++++++++
nemesis/ne_nemesisI.h | 492 ++++++++++++++
nemesis/ne_nemesisI_int.h | 3 +
nemesis/nemesis_cfg.h.in | 25 +
nemesis/nemesis_wrapper.c | 596 +++++++++++++++++
18 files changed, 5747 insertions(+)
diff --git a/ChangeLog b/ChangeLog
new file mode 100644
index 0000000..f4262d1
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,104 @@
+========================================================================
+*** Permit 0 as valid entity (block, set, map) id
+
+* Version 5.09 -- Modifications to let zero be a valid entity (element
+ block, nodeset, sideset, map, other sets and blocks). There is a
+ new define EX_INVALID_ID (-1) which now indicates that the id for
+ an entity has not yet been set. All positive integers are now
+ valid id values.
+
+========================================================================
+*** Long Name support.
+
+ Exodus from version 5.08 and later can support names of length up
+ to NC_MAXNAME which is currently 256. The internals of the exodus
+database have changed with the addition of a new 'dimension' and a new
+database attribute.
+
+This has the following implications:
+*. The old library can read a new database if the new database does
+ not use names longer than 32 characters.
+
+*. If the new database uses longer names, the old library will crash.
+
+*. New library with old database will work fine.
+
+*. New library with new database, no code changes. If the database
+ uses long names, they will be truncated (with message to stderr) at
+ 32 characters. An output database will limit names to 32
+ characters by default.
+
+The following code changes are used to work with long names:
+
+========================================
+Reading a database:
+
+* Query a database for the maximum length of a name stored on the
+ database. This does not include the space for the trailing null.
+
+ int max_name_length = ex_inquire_int(exoid,
+ EX_INQ_DB_MAX_USED_NAME_LENGTH);
+
+* Tell the exodus API the maximum name length that your client code
+ can handle. This is the size of the character strings that are
+ passed to the ex_get_names() and similar calls. Note that the
+ maximum_length does not include the trailing null. That means that
+ if you tell the library to give you 32-character names, the memory
+ buffer you pass to the library must be 33 characters.
+
+ int status = ex_set_max_name_length(exoid, maximum_length);
+
+ If this size is less than the length of a name on the database, the
+ name will be truncated and a message printed to stderr.
+
+* Inquire the size set for the max_name_length. Will return 32 by
+ default, or if ex_set_max_name_length was called, it will return the
+ size set in that call.
+
+ int max_name_length = ex_inquire_int(exoid,
+ EX_INQ_CUR_MAX_ALLOWED_NAME_LENGTH);
+
+* Inquire the size that the database used at creation time for the
+ maximum name size. This is the value used for
+ ex_set_max_name_length() when the database was created. This isn't
+ really needed unless you are appending to an existing database and
+ want to know how long of names it will support.
+
+========================================
+Writing a database:
+
+* After the ex_create() call and before the call to ex_put_init() or
+ ex_put_init_ext(), call ex_set_max_name_length(exoid, max_length); to
+ tell the database the maximum size names that you will be
+ outputting. If this isn't called, then it will default to 32
+ character names.
+
+* The code will keep track of the maximum length that was written and
+ will update an attribute on the database with that length. This is
+ queryable via the following function:
+
+ int max_name_length = ex_inquire_int(exoid,
+ EX_INQ_DB_MAX_USED_NAME_LENGTH);
+
+
+========================================
+Names that are included:
+
+* Entity names (element block, nodeset, sideset, faceblock, ...)
+* Attribute names
+* Map names
+* Results variable names
+
+Still 32 characters:
+* QA strings
+* element type in ex_get_block, ex_put_block calls.
+
+Still 80 characters:
+* info records
+* title.
+
+========================================
+Questions / Concerns / Problems:
+
+Greg Sjaardema.
+gdsjaar at sandia.gov or gsjaardema at gmail.com
diff --git a/README.NEMESIS b/README.NEMESIS
new file mode 100644
index 0000000..f2c8485
--- /dev/null
+++ b/README.NEMESIS
@@ -0,0 +1,18 @@
+NOTE: All nemesis api functions are now included in the exodus library.
+ For almost all functions, the "ne_" portion of the function name
+ is replaced by "ex_". For example, "ne_put_init_info" in the nemesis
+ API is now "ex_put_init_info" in the exodus API.
+
+ The exceptions are:
+ * "ne_put_version" is "ex_put_nemesis_version"
+ * "ne_get_node_map" is "ex_get_processor_node_maps"
+ * "ne_put_node_map" is "ex_put_processor_node_maps"
+ * "ne_get_elem_map" is "ex_get_processor_elem_maps"
+ * "ne_put_elem_map" is "ex_put_processor_elem_maps"
+
+ The nemesis library can still be used, but all functions are
+ simply implemented as wrappers that call the corresponding
+ exodus API function.
+
+ Unless you are building a legacy code that uses the nemesis API,
+ it is best to just use the exodus API and library.
diff --git a/nemesis/CMakeLists.txt b/nemesis/CMakeLists.txt
new file mode 100644
index 0000000..64aff5d
--- /dev/null
+++ b/nemesis/CMakeLists.txt
@@ -0,0 +1,86 @@
+cmake_minimum_required(VERSION 2.6)
+SET(NEMESIS_VERSION_MAJOR "5")
+SET(NEMESIS_VERSION_MINOR "15")
+SET(NEMESIS_VERSION_PATCH "0")
+SET(NEMESIS_VERSION "${NEMESIS_VERSION_MAJOR}.${NEMESIS_VERSION_MINOR}")
+SET(NEMESIS_VERSION_FULL "${NEMESIS_VERSION}.${NEMESIS_VERSION_PATCH}")
+
+SET(NEMESIS_BUILD_SHARED_LIBS "${BUILD_SHARED_LIBS}")
+SET(HEADERS "ne_nemesisI.h")
+
+
+find_path( NETCDF_INCLUDE_DIR netcdf.h
+ $ENV{ACCESS}/inc
+ $ENV{NETCDF_DIR}/inc
+ $ENV{NETCDF_DIR}/include
+ $ENV{NETCDF_DIR}/libsrc
+ )
+
+find_library( NETCDF_LIBRARY netcdf
+ $ENV{ACCESS}/lib/shared
+ $ENV{ACCESS}/lib
+ $ENV{NETCDF_DIR}/lib
+ $ENV{NETCDF_DIR}/libsrc/.libs
+ )
+
+find_program (NETCDF_NCDUMP ncdump
+ $ENV{ACCESS}/bin
+ $ENV{NETCDF_DIR}/bin
+ $ENV{NETCDF_DIR}/ncdump
+ )
+
+find_library( EXODUS_LIBRARY exodus
+ $ENV{ACCESS}/lib/shared
+ $ENV{ACCESS}/lib
+ )
+
+# Hack for HDF5
+find_library( HDF5_LIBRARY hdf5
+ $ENV{ACCESS}/lib/shared
+ $ENV{ACCESS}/lib
+ $ENV{NETCDF_DIR}/lib
+ $ENV{NETCDF_DIR}/libsrc/.libs
+ /usr/local/hdf5/lib
+ )
+
+find_library( HDF5HL_LIBRARY hdf5_hl
+ $ENV{ACCESS}/lib/shared
+ $ENV{ACCESS}/lib
+ $ENV{NETCDF_DIR}/lib
+ $ENV{NETCDF_DIR}/libsrc/.libs
+ /usr/local/hdf5/lib
+ )
+
+find_library(Z_LIBRARY z
+ /usr/local/zlib/lib
+ )
+
+find_library(MATH_LIBRARY
+ NAMES m
+ PATHS /usr/lib64
+ /usr/lib
+)
+
+INCLUDE_DIRECTORIES(
+ "${CMAKE_CURRENT_SOURCE_DIR}"
+ "${CMAKE_CURRENT_BINARY_DIR}"
+ "${CMAKE_CURRENT_SOURCE_DIR}/../exodusii/cbind/include/"
+ "${CMAKE_CURRENT_BINARY_DIR}/../exodusii/cbind/include/"
+ "${NETCDF_INCLUDE_DIR}")
+
+SET(SOURCES
+nemesis_wrapper.c
+)
+
+ADD_LIBRARY(nemesis ${SOURCES})
+TARGET_LINK_LIBRARIES(nemesis ${EXODUS_LIBRARY} ${NETCDF_LIBRARY} ${HDF5HL_LIBRARY} ${HDF5_LIBRARY} ${Z_LIBRARY} ${MATH_LIBRARY})
+
+ADD_EXECUTABLE(ne_test ne_ctest_wrap.c)
+TARGET_LINK_LIBRARIES( ne_test nemesis ${EXODUS_LIBRARY} ${NETCDF_LIBRARY} ${HDF5HL_LIBRARY} ${HDF5_LIBRARY} ${Z_LIBRARY} ${MATH_LIBRARY})
+
+INSTALL(TARGETS nemesis
+ RUNTIME DESTINATION lib COMPONENT Runtime
+ LIBRARY DESTINATION lib COMPONENT Runtime
+ ARCHIVE DESTINATION lib COMPONENT Development)
+INSTALL(FILES ${HEADERS} DESTINATION include COMPONENT Development)
+
diff --git a/nemesis/COPYRIGHT b/nemesis/COPYRIGHT
new file mode 100644
index 0000000..07f206f
--- /dev/null
+++ b/nemesis/COPYRIGHT
@@ -0,0 +1,32 @@
+Copyright (c) 1998 Sandia Corporation. Under the terms of Contract
+DE-AC04-94AL85000 with Sandia Corporation, the U.S. Governement
+retains certain rights in this software.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+
+ * Neither the name of Sandia Corporation nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
diff --git a/nemesis/Imakefile b/nemesis/Imakefile
new file mode 100644
index 0000000..6435610
--- /dev/null
+++ b/nemesis/Imakefile
@@ -0,0 +1,142 @@
+/*
+ * Copyright (c) 1998 Sandia Corporation. Under the terms of Contract
+ * DE-AC04-94AL85000 with Sandia Corporation, the U.S. Governement
+ * retains certain rights in this software.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ *
+ * * Neither the name of Sandia Corporation nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+XCOMM $Id: Imakefile,v 1.15 2008/01/24 19:43:41 gdsjaar Exp $
+XCOMM Imakefile for Nemesis libraries
+/* Building Nemesis libraries for installation
+ * % accmkmf
+ * % make Makefiles
+ * % make all
+ * % make install
+ *
+ * Building Nemesis libraries for debugging
+ * % accmkmf
+ * % make Makefiles
+ * % make DEBUG=-g
+ *
+ */
+
+#define IHaveSubdirs
+
+#define PassDebugFlags "DEBUG=$(DEBUG)" \
+ "CDEBUGFLAGS=$(CDEBUGFLAGS)" \
+ "CXXDEBUGFLAGS=$(CXXDEBUGFLAGS)" \
+ "F90DEBUGFLAGS=$(F90DEBUGFLAGS)" \
+ "F77DEBUGFLAGS=$(F77DEBUGFLAGS)"
+
+#define ExtraOptions "CCOPTIONS=$(CCOPTIONS)"
+
+#ifndef BuildSharedExodusLibrary
+#define BuildSharedExodusLibrary NO
+#endif
+
+#define DoNormalLib YES
+#define DoSharedLib BuildSharedExodusLibrary
+#define LibName nemesis
+SOREV = 4
+#define SoRev SOREV
+
+#ifdef PARALLEL
+CCOPTIONS = ParallelCCOptions
+F77OPTIONS = ParallelF77Options
+LIBDIR = $(PLIBDIR)
+#endif
+
+DEFINES = $(PICFLAGS)
+SUBDIRS = forbind
+
+INCLIST = ne_nemesisI.h ne_nemesisI_int.h
+
+SRCS = nemesis_wrapper.c
+
+OBJS = ${SRCS:.c=.o}
+
+REQUIREDLIBS = -L$(SHLIBDIR) $(EXOIIV2C) $(NETCDF)
+LIBS = $(NETCDF) $(EXOIIV2C)
+
+#include <Library.tmpl>
+
+#if Build64BitAccess == YES
+AllTarget(libnemesis.a libnemIf.a libnemIf32.a)
+#else
+AllTarget(libnemesis.a libnemIf.a)
+#endif
+
+InstallIncludeList(makeincludes,$(INCLIST),$(INCDIR))
+InstallIncludeList(install,$(INCLIST),$(INCDIR))
+
+/* Directory for nemesis c library */
+NormalLibraryTarget(nemesis,$(OBJS))
+
+/* Directory for nemesis fortran wrappers */
+NamedTargetSubdirs(libnemIf.a,forbind,"making nemIf ",PassDebugFlags ExtraOptions,libnemIf.a)
+
+#if Build64BitAccess == YES
+NamedTargetSubdirs(libnemIf32.a,forbind,"making nemIf32 ",PassDebugFlags ExtraOptions,libnemIf32.a)
+#endif
+
+InstallLibrary(nemesis,$(LIBDIR))
+InstallLibraryAlias(nemesis,nemIc,$(LIBDIR))
+InstallLibrary(nemIf,$(LIBDIR))
+
+#if Build64BitAccess == YES
+InstallLibrary(nemIf32,$(LIBDIR))
+#endif
+
+#if Parallel
+InstallParallelLibrary(nemesis,$(PLIBDIR))
+InstallParallelLibrary(nemIf,$(PLIBDIR))
+
+#if Build64BitAccess == YES
+InstallParallelLibrary(nemIf32,$(PLIBDIR))
+#endif
+
+#endif
+
+
+CTESTLIBS = $(EXOIIV2C) $(NETCDF) -lm
+FTESTLIBS = $(EXOIIV2FOR) $(EXOIIV2C) $(NETCDF) -lm
+
+test: libnemesis.a libnemIf.a ne_ctest_wrap.c forbind/ne_ftest.F
+ $(CC) -c $(CFLAGS) ne_ctest_wrap.c
+ $(CC) $(LDOPTIONS) -o ne_ctest_wrap ne_ctest_wrap.o libnemesis.a $(LIBPATH) $(CTESTLIBS)
+ $(FC) -c $(FFLAGS) $(STD_DEFINES) -I./forbind forbind/ne_ftest.F
+ $(FC) $(LDOPTIONS) -o ne_ftest ne_ftest.o libnemIf.a $(LIBPATH) $(FTESTLIBS)
+
+ExtraStuffToClean(ne_ctest_wrap ne_ftest ne_test.exoII ne_test.nemI)
+
+$(OBJS): ne_nemesisI.h
+
+DependTarget()
+LibraryObjectRule()
diff --git a/nemesis/Makefile.standalone b/nemesis/Makefile.standalone
new file mode 100644
index 0000000..3e44075
--- /dev/null
+++ b/nemesis/Makefile.standalone
@@ -0,0 +1,247 @@
+# Copyright (c) 1998 Sandia Corporation. Under the terms of Contract
+# DE-AC04-94AL85000 with Sandia Corporation, the U.S. Governement
+# retains certain rights in this software.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following
+# disclaimer in the documentation and/or other materials provided
+# with the distribution.
+#
+# * Neither the name of Sandia Corporation nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+#========================================================================
+# A platform must define:
+#
+# BITS either 32 or 64 depending on a 32-bit or 64-bit build
+# CC == the C compiler
+# FC == the Fortran compiler
+# CCOPTIONS == non-optimization related flags for C compiling on this platform
+# F77OPTIONS == non-optimization related flags for Fortran compiling on this platform
+# OS_TYPE == See listing in forbind/src/Imakefile
+# RANLIB == ranlib or 'true' if no ranlib
+# AR == command to build an archive library.
+#
+#========================================================================
+
+SYSTEM := $(shell uname)
+
+#========================================================================
+# Linux
+#========================================================================
+ifeq ($(SYSTEM),Linux)
+BITS = 32
+RANLIB = ranlib
+OS_TYPE = linux
+
+AR = ar -rcv
+
+ifeq ($(COMPILER),Portland)
+CC = pgcc
+FC = pgf77
+CCOPTIONS = -Mframe
+F77OPTIONS = -fast
+endif
+
+ifeq ($(COMPILER),Intel)
+CC = icc
+CCOPTIONS = -Xc
+endif
+
+ifeq ($(COMPILER),GNU)
+CC = gcc
+FC = g77
+CCOPTIONS = -O2 -Wall -Wno-deprecated
+F77OPTIONS = -O2
+endif
+
+endif
+
+#========================================================================
+# SUN
+#========================================================================
+ifeq ($(SYSTEM),SunOS)
+RANLIB = ranlib
+OS_TYPE = sunos
+
+AR = CC -xar -o
+
+ifeq ($(COMPILER),GNU)
+BITS = 32
+CC = gcc
+FC = g77
+CCOPTIONS = -Wall
+else
+BITS = 32
+CC = cc
+FC = f77
+CCOPTIONS = -xtarget=ultra2 -xarch=v9 -g -ftrap=common -Xc
+F77OPTIONS = -xtarget=ultra2 -xarch=v9 -g -ftrap=common -errtags=INVOKE -C
+endif
+endif
+
+#========================================================================
+# SGI
+#========================================================================
+ifeq ($(SYSTEM),IRIX64)
+
+DO32=FALSE
+
+RANLIB = true
+OS_TYPE = irix
+AR = ar -rcv
+CC = cc
+FC = f77
+
+ifeq ($(DO32),TRUE)
+BITS = 32
+CCOPTIONS = -n32 -LANG:std
+F77OPTIONS = -n32
+F77PREC =
+
+else
+BITS = 64
+CCOPTIONS = -64 -LANG:std
+F77OPTIONS = -64
+F77PREC = -DBuild64 -r8 -i8
+endif
+endif
+
+#========================================================================
+# IBM
+#========================================================================
+ifeq ($(SYSTEM),AIX)
+BITS = 64
+RANLIB = ranlib
+OS_TYPE = aix
+
+AR = ar -rcv -X64
+CC = xlc
+FC = xlf
+CCOPTIONS = -q64 -w
+F77OPTIONS = -q64 -w
+F77PREC = -WF,-DBuild64 -qintsize=8 -qrealsize=8
+SYSLIB = -lm
+endif
+
+#========================================================================
+
+#========================================================================
+# TFLOP
+#========================================================================
+ifeq ($(SYSTEM),TFLOP)
+BITS = 32
+RANLIB = ranlib
+OS_TYPE = osf
+
+AR = xar -rcv
+CC = icc
+FC = if77
+CCOPTIONS = -DPUMAGON -cougar
+F77OPTIONS = -cougar
+endif
+
+#========================================================================
+
+#========================================================================
+# OSF (DEC Alpha)
+#========================================================================
+ifeq ($(SYSTEM),OSF1)
+BITS = 32
+RANLIB = ranlib
+OS_TYPE = osf
+
+AR = ar -crsv
+CC = cc
+FC = f77
+CCOPTIONS = -std strict_ansi -ptr $(shell pwd)/OSF1/cxx_repository -noimplicit_include -ttimestamp
+endif
+#========================================================================
+
+OPTIMIZE_FLAG = -O
+STD_DEFINES = -DVERBOSE
+
+CFLAGS = $(OPTIMIZE_FLAG) $(CCOPTIONS) $(STD_DEFINES) $(EXODUS_INC) $(NETCDF_INC)
+FFLAGS = $(OPTIMIZE_FLAG) $(F77OPTIONS) $(F77PREC) $(EXODUS_INC)
+
+NETCDF_INC = -I$(ACCESS)/inc
+EXODUS_INC = -I$(ACCESS)/inc
+
+NETCDF_LIB_DIR = ${ACCESS}/lib
+NETCDF_LIB = -L$(NETCDF_LIB_DIR) -lnetcdf
+
+EXODUS_LIB_DIR = ${ACCESS}/lib
+EXODUS_LIB = -L$(EXODUS_LIB_DIR) -lexodus
+EXODUS_FLIB = -L$(EXODUS_LIB_DIR) -lexoIIv2for
+
+EXT_LIBS = $(EXODUS_LIB) $(NETCDF_LIB)
+EXT_FLIBS = $(EXODUS_FLIB)
+
+SUBDIRS = forbind
+
+SRCS = nemesis_wrapper.c
+
+OBJS = ${SRCS:.c=.o}
+
+all:: libnemesis.a libnemIf.a
+
+libnemesis.a: $(OBJS)
+ $(AR) $@ $?
+ $(RANLIB) $@
+
+libnemIf.a:
+ (cd forbind && $(MAKE) $(MFLAGS) -f Makefile.standalone "BITS=$(BITS)" "AR=$(AR)" "CC=$(CC)" "CFLAGS=$(CFLAGS)" "FC=$(FC)" "FFLAGS=$(FFLAGS)" "RANLIB=$(RANLIB)" "SYSTEM=$(SYSTEM)" "OS_TYPE=$(OS_TYPE)" libnemIf.a)
+ cp forbind/libnemIf.a .
+
+check: test
+test:: ne_test.c libnemesis.a
+ $(CC) -c $(CFLAGS) ne_test.c
+ $(CC) $(CFLAGS) -o ne_ctest ne_test.o libnemesis.a $(EXT_LIBS) -lm
+ ./ne_ctest
+
+test:: forbind/ne_test.f libnemIf.a
+ $(FC) -c $(FFLAGS) -I./forbind forbind/ne_test.f
+ $(FC) $(FFLAGS) -o ne_ftest ne_test.o libnemIf.a libnemesis.a $(EXT_FLIBS) $(EXT_LIBS) -lm
+ ./ne_ftest
+
+clean::
+ rm -f *.CKP *.ln *.BAK *.bak *.o *.M *.mod core errs ,* *~ *.a .emacs_* tags TAGS make.log MakeOut "#"*
+
+clean::
+ rm -f ne_ctest ne_ftest ne_test.exoII ne_test.nemI
+
+clean::
+ @for flag in $(MAKEFLAGS) ''; do \
+ case "$$flag" in *=*) ;; *[ik]*) set +e;; esac; done; \
+ for i in $(SUBDIRS) ;\
+ do \
+ if test -d $$i; then \
+ echo "cleaning" "in $(CURRENT_DIR)/$$i..."; \
+ (cd $$i && $(MAKE) -f Makefile.standalone $(MFLAGS) clean); \
+ fi; \
+ done
+
+.SUFFIXES: .c
+.c.o:
+ $(CC) -c -I. $(CFLAGS) $*.c
diff --git a/nemesis/README b/nemesis/README
new file mode 100644
index 0000000..31029c8
--- /dev/null
+++ b/nemesis/README
@@ -0,0 +1,27 @@
+The Nemesis library is licensed under the terms of the BSD License.
+
+Legal stuff (copyright, licensing restrictions, etc.) can be found in
+the file COPYRIGHT which contains:
+
+1. The Sandia Corporation Copyright Notice.
+2. The BSD License text.
+
+We appreciate feedback from users of this package. Please send
+comments, suggestions, and bug reports to Greg Sjaardema <gdsjaar at sandia.gov>.
+Please identify the version of the package.
+
+========================================================================
+
+NEMESIS is an enhancement to the EXODUSII finite element database
+model used to store and retrieve data for unstructured parallel finite
+element analyses. NEMESIS adds data structures which facilitate the
+partitioning of a scalar (standard serial) EXODUSII file onto parallel
+disk systems found on many parallel computers. Since the NEMESIS
+application programming interface (API) can be used to append
+information to an existing EXODUSII database, any existing software
+that reads EXODUSII files can be used on files which contain NEMESIS
+information. The NEMESIS information is written and read via C or C++
+callable functions which compromise the NEMESIS I API.
+
+The exodusII package is available at http://sourceforge.net/projects/exodusii
+
diff --git a/nemesis/forbind/Imakefile b/nemesis/forbind/Imakefile
new file mode 100644
index 0000000..61662ae
--- /dev/null
+++ b/nemesis/forbind/Imakefile
@@ -0,0 +1,73 @@
+# Copyright (c) 1998 Sandia Corporation. Under the terms of Contract
+# DE-AC04-94AL85000 with Sandia Corporation, the U.S. Governement
+# retains certain rights in this software.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following
+# disclaimer in the documentation and/or other materials provided
+# with the distribution.
+#
+# * Neither the name of Sandia Corporation nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+/* Use local include/XXX.h files instead of installed *.h files */
+ALTINC = IncRef-I../
+
+F77CPPFLAGS = F77CppFlags
+
+SRCS = ne_jack.c
+SRCSF = addrwrpn.F
+
+OBJS = ${SRCS:.c=.o} ${SRCSF:.F=.o}
+LibraryTargetSubdirsCopy(libnemIf.a,$(OBJS),../)
+CleanupCapF(addrwrpn.f)
+
+#if Build64BitAccess == YES
+/* Need to compile ne_jack.c without the -DBuild64 option
+ * real* -> float* (actually void* since it handles both float* and double*)
+ */
+ne_jack32.o: ne_jack.c
+ $(CC) -o ne_jack32.o -c $(CFLAGS) -DDEFAULT_REAL_INT ne_jack.c
+
+all:: libnemIf32.a
+libnemIf32.a: ne_jack32.o
+ $(AR) $@ $?
+ $(_NULLCMD_)
+ $(_NULLCMD_)
+ $(CP) $@ ../
+#endif
+
+/*
+ * 32-bit build:
+ * Compile ne_jack.c and put in libexoIIv2for.a archive.
+ *
+ * 64-bit build: (using 8-byte integer/real)
+ * Compile addrwrap.F (contains main api name 'func'; calls 'func4' name)
+ * Compile ne_jack.c with -DBuild64 (adds 4_ to function names)
+ * -- put above two object files into libnemIf.a
+ *
+ */
+
+DependTarget()
+
diff --git a/nemesis/forbind/Makefile b/nemesis/forbind/Makefile
new file mode 100644
index 0000000..212c74d
--- /dev/null
+++ b/nemesis/forbind/Makefile
@@ -0,0 +1,585 @@
+# Makefile generated by imake - do not edit!
+# $XConsortium: imake.c /main/90 1996/11/13 14:43:23 lehors $
+
+# ----------------------------------------------------------------------
+# Makefile generated from "Imake.tmpl" and </tmp/IIf.hQ1HOM>
+# $XConsortium: Imake.tmpl /main/243 1996/11/13 14:42:56 lehors $
+#
+
+all::
+
+.SUFFIXES: .i
+
+# $XConsortium: Imake.cf /main/26 1996/09/28 16:05:09 rws $
+
+# -----------------------------------------------------------------------
+# site-specific configuration parameters that need to come before
+# the platform-specific parameters - edit site.def to change
+
+# site.def file for SNL ACCESS System
+
+# ----------------------------------------------------------------------
+# platform-specific configuration parameters - edit darwin.cf to change
+
+#
+# NOTE: This was copied from the X11 distribution and modified.
+# It includes several symbols that are not used in ACCESS.
+#
+# NOTE: The default flags do not do very aggressive optimization;
+# You can change this if you want (possibly) faster execution.
+#
+# Contact seacas at sandia.gov if you have any questions
+#
+
+# operating system: Darwin (10.8.0)
+
+# $XFree86: xc/config/cf/darwinLib.rules,v 1.8 2003/10/09 22:43:18 herrb Exp $
+
+# ----------------------------------------------------------------------
+# site-specific configuration parameters that go after
+# the platform-specific parameters - edit site.def to change
+
+# site.def file for SNL ACCESS Darwin
+
+# ---------------------------------------------------------------------
+# Imake rules for building libraries, programs, scripts, and data files
+# rules: $XConsortium: Imake.rules /main/217 1996/12/05 09:48:26 kaleb $
+
+ _NULLCMD_ = @ echo -n
+
+ PATHSEP = /
+ SHELL = /bin/sh
+
+ SYSTEM = Darwin
+ LSYSTEM = `echo $(SYSTEM) | tr "[A-Z]" "[a-z]"`
+
+ TOP = ../../..
+ CURRENT_DIR = libraries/nemesis/forbind
+ DESTDIR =
+ SERIALDEBUGCMD = "dbx"
+ PARDEBUGCMDSNGL = "mpirun -dbx"
+ PARDEBUGCMDMULT = "mpirun -dbx"
+
+ IMAKE = $(ETCDIR)/imake
+ DEPEND = $(ETCDIR)/makedepend
+ MKDIRHIER = mkdir -p
+ EXPORTLISTGEN =
+ CONFIGSRC = $(TOP)/config
+ IMAKESRC = $(CONFIGSRC)/imake
+ DEPENDSRC = $(CONFIGSRC)/makedepend
+
+ INCROOT = /Users/gdsjaar/src/SEACAS-SF-INSTALL/inc
+ USRLIBDIR = /Users/gdsjaar/src/SEACAS-SF-INSTALL/lib
+ SHLIBDIR = /Users/gdsjaar/src/SEACAS-SF-INSTALL/lib/shared
+ LINTLIBDIR = $(USRLIBDIR)/lint
+ MANPATH = /Users/gdsjaar/src/SEACAS-SF-INSTALL/man
+ MANSOURCEPATH = $(MANPATH)/man
+ MANDIR = $(MANSOURCEPATH)$(MANSUFFIX)
+ LIBMANDIR = $(MANSOURCEPATH)$(LIBMANSUFFIX)
+ FILEMANDIR = $(MANSOURCEPATH)$(FILEMANSUFFIX)
+
+ AR = ar cr
+ ARFLAGS = cru
+ BOOTSTRAPCFLAGS =
+ CC = /opt/local/bin/clang-mp-3.1
+ FC = /opt/local/bin/gfortran-mp-4.8
+ F90C = /opt/local/bin/gfortran-mp-4.8
+ CCPAR = /opt/local/bin/clang-mp-3.1
+ FCPAR = /opt/local/bin/gfortran-mp-4.8
+ F90CPAR = /opt/local/bin/gfortran-mp-4.8
+ AS = as
+ TEST = /bin/test
+ M2C = /bin/true
+
+.SUFFIXES: .cxx
+
+ CXX = /opt/local/bin/clang++-mp-3.1
+ CXXFILT = c++filt
+ CXXLIB =
+ CXXDEBUGFLAGS =
+CXXDEPENDINCLUDES =
+ CXXEXTRA_DEFINES =
+CXXEXTRA_INCLUDES =
+ CXXSTD_DEFINES = -DBuild64 -DADDC_ $(CXXPROJECT_DEFINES)
+ CXXOPTIONS =
+ CXXINCLUDES = $(CXXEXTRA_INCLUDES) $(INCLUDES) $(TOP_INCLUDES)
+ CXXDEFINES = $(CXXINCLUDES) $(CXXSTD_DEFINES) $(THREADS_CXXDEFINES) $(CXXEXTRA_DEFINES) $(DEFINES)
+ CXXFLAGS = $(CXXDEBUGFLAGS) $(DEBUG) $(CXXOPTIONS) $(THREADS_CXXFLAGS) $(CXXDEFINES) $(PROJECT_INCLUDES)
+
+ COMPRESS = compress
+ CPP = /usr/bin/cpp $(STD_CPP_DEFINES)
+ PREPROCESSCMD = /usr/bin/cpp -P $(STD_CPP_DEFINES)
+ INSTALL = install
+ INSTALLFLAGS = -c
+ LD = ld
+ LEX = lex
+ LEXLIB = -ll
+ YACC = yacc
+ CCYACC = yacc
+ LINT = lint
+ LINTLIBFLAG = -C
+ LINTOPTS = -axz
+ LN = ln -s
+ MAKE = make
+ MV = mv
+ CP = cp
+
+ RANLIB = ranlib
+ RANLIBINSTFLAGS =
+
+ RM = rm -f
+ MANSUFFIX = n
+ LIBMANSUFFIX = 3
+ FILEMANSUFFIX = 5
+ TROFF = psroff
+ NROFF = nroff
+ MSMACROS = -ms
+ MANMACROS = -man
+ TBL = tbl
+ EQN = eqn
+ NEQN = neqn
+ COL = col
+
+ PICFLAGS = -fPIC
+
+ SHAREDCODEDEF =
+ SHLIBDEF =
+
+ SHLIBLDFLAGS = -dynamiclib -headerpad_max_install_names
+
+ PICFLAGS = -fPIC
+
+ CXXPICFLAGS = -fPIC
+
+ INSTPGMFLAGS =
+
+ INSTETCFLAGS = -m 775 -o gdsjaar -g _developer
+ INSTBINFLAGS = -m 775 -o gdsjaar -g _developer
+ INSTUIDFLAGS = -m InstAccUid -o gdsjaar -g _developer
+ INSTLIBFLAGS = -m 775 -o gdsjaar -g _developer
+ INSTINCFLAGS = -m 775 -o gdsjaar -g _developer
+ INSTMANFLAGS = -m 765 -o gdsjaar -g _developer
+ INSTDATFLAGS = -m 765 -o gdsjaar -g _developer
+ INSTKMEMFLAGS = -m InstAccUid -o gdsjaar -g _developer
+
+ PROJECTROOT = /Users/gdsjaar/src/SEACAS-SF-INSTALL
+
+ STD_INCLUDES =
+ STD_CPP_DEFINES = -DBuild64 -DADDC_ $(PROJECT_DEFINES)
+ STD_DEFINES = -DBuild64 -DADDC_ $(PROJECT_DEFINES)
+ EXTRA_LOAD_FLAGS =
+ EXTRA_LDOPTIONS =
+ EXTRA_LIBRARIES =
+F90EXTRALIBRARIES =
+ TAGS = ctags
+
+ ALLINCLUDES = $(INCLUDES) $(EXTRA_INCLUDES) $(TOP_INCLUDES) $(STD_INCLUDES)
+ ALLDEFINES = $(ALLINCLUDES) $(STD_DEFINES) $(EXTRA_DEFINES) $(THREADS_DEFINES) $(DEFINES)
+
+ DEBUG = -O
+ CDEBUGFLAGS =
+ CCOPTIONS =
+ PARCCOPTIONS =
+ CCEXTRAOPTIONS =
+ CFLAGS = $(CDEBUGFLAGS) $(DEBUG) $(CCOPTIONS) $(CCEXTRAOPTIONS) $(THREADS_CFLAGS) $(ALLDEFINES) $(PROJECT_INCLUDES)
+ LINTFLAGS = $(LINTOPTS) -DLINT $(ALLDEFINES) $(DEPEND_DEFINES)
+
+ F77DEBUGFLAGS =
+ F77OPTIONS = -fno-range-check -fcray-pointer -fdefault-real-8 -fdefault-integer-8
+ F77EXTRAOPTIONS =
+ F77PRECOPTIONS =
+ PARF77OPTIONS = -fno-range-check -fcray-pointer -fdefault-real-8 -fdefault-integer-8
+ F77STATICFLAGS =
+ F77CPPFLAGS = -D$(SYSTEM)
+ FFLAGS = $(F77DEBUGFLAGS) $(DEBUG) $(F77OPTIONS) $(F77PRECOPTIONS) $(F77EXTRAOPTIONS) $(PROJECT_INCLUDES)
+
+ F90DEBUGFLAGS =
+ F90OPTIONS = -fno-range-check
+ F90EXTRAOPTIONS =
+ PARF90OPTIONS = -fno-range-check
+ F90STATICFLAGS =
+ F90CPPFLAGS = -D$(SYSTEM) $(STD_CPP_DEFINES)
+ F90PRECOPTIONS =
+F90EXTRALDOPTIONS =
+ F90FLAGS = $(F90DEBUGFLAGS) $(DEBUG) $(F90OPTIONS) $(F90EXTRAOPTIONS) $(F90PRECOPTIONS) $(PROJECT_INCLUDES)
+
+ LDPRELIB = -L$(USRLIBDIR)
+ LDPOSTLIB =
+ LDOPTIONS = $(EXTRA_LDOPTIONS) $(THREADS_LDFLAGS) $(LOCAL_LDFLAGS) $(LDPRELIBS)
+ PARLDOPTIONS =
+ LDLIBS = $(LDPOSTLIBS) $(THREADS_LIBS) $(SYS_LIBRARIES) $(EXTRA_LIBRARIES)
+ CXXLDOPTIONS = $(CXXOPTIONS) $(EXTRA_LDOPTIONS) $(THREADS_CXXLDFLAGS) $(LOCAL_LDFLAGS) $(LDPRELIBS)
+
+ CCLINK = $(CC)
+
+ NATIVECC = /opt/local/bin/clang-mp-3.1
+ NATIVEF77 = /opt/local/bin/gfortran-mp-4.8
+ CROSSCC = /opt/local/bin/clang-mp-3.1
+ CROSSACCESSROOT = /Net/projects/seacas/janus/current
+ CROSSACCESSSRC = $(CROSSACCESSROOT)/ACCESS
+ CROSSALLDEFINES = -I$(CROSSACCESSROOT)/inc -Dcouar -DADDC_ -Usun
+ CROSSLIBPATH = -L./ -L$(CROSSACCESSROOT)/lib
+ CROSSPLIBPATH = -L./ -L$(CROSSACCESSROOT)/plib
+ CROSSLIBDIR = $(CROSSACCESSROOT)/lib
+ CROSSPLIBDIR = $(CROSSACCESSROOT)/plib
+ CROSSPROJECTINCS = -I./ -I$(CROSSACCESSROOT)/inc
+
+ CXXLINK = $(CXX)
+
+ LDSTRIPFLAGS = -x
+ LDCOMBINEFLAGS = -r
+ DEPENDFLAGS =
+
+ MACROFILE = darwin.cf
+ RM_CMD = $(RM)
+
+ IMAKE_DEFINES =
+ ITOOLS_DEFINES = -DUseSfmakedepend=0
+
+ IRULESRC = $(CONFIGDIR)
+ IMAKE_CMD = $(IMAKE) -DUseInstalled -I$(IRULESRC) $(IMAKE_DEFINES)
+
+# ----------------------------------------------------------------------
+# ACCESS Darwin Build Parameters and Rules
+# ACCESS.tmpl
+
+ TEMPDIR = /tmp
+
+# PROJECTNAME : name of project
+# PROJECTRELEASE : release number of ACCESS distribution
+# ACCESSSRC : location of ACCESS source code
+# ACCESSDIR : location of ACCESS installation directories
+# Set in site.def : "SNLA ACCESS", "1.0", /Users/gdsjaar/src/SEACAS-SF, /Users/gdsjaar/src/SEACAS-SF-INSTALL
+ PROJECTNAME = "SNLA ACCESS"
+ PROJECTRELEASE = "1.0"
+ ACCESSSRC = /Users/gdsjaar/src/SEACAS-SF/ACCESS
+ ACCESSDIR = /Users/gdsjaar/src/SEACAS-SF-INSTALL
+
+ TFLOPROOT = TflopAccessRoot
+ CPLANTROOT = CplantAccessRoot
+
+# Used to specify location of hdf5 libraries for use with netcdf-4
+ HDF5ROOT = /Users/gdsjaar/src/SEACAS-SF
+
+# Source code for the ACCESS Darwin
+ ITOOLSSRC = itools
+ GRAPHICSSRC = graphics
+ SVDISRC = svdi
+ LIBRARIESSRC = libraries
+ NETCDFSRC = netcdf
+ HDF5SRC = hdf5
+ SERIALMPISRC = serial_mpi
+ APPLICATIONSRC = applications
+ SCRIPTSSRC = scripts
+ TESTPROBS = test
+ PARLIBRARIESSRC = parallellibraries
+ PARNETCDFSRC = parallelnetcdf
+
+# Translator Subdirectories
+ ALGEBRASRC = algebra
+ ALGEBRA2SRC = algebra2
+ CONCATSRC = concat
+ CONEXSRC = conex
+ CONEX2SRC = conex2
+ CONJOINSRC = conjoin
+ EJOINSRC = ejoin
+ EMERGESRC = emerge
+ EXOCTHSRC = exocth
+ EXOEXOSRC = exoexo
+ EXOPATSRC = exopat
+ EXOSYMSRC = exosym
+ EXOTRCSRC = exotrc
+ EXOTEC2SRC = exotec2
+ EXOTXTSRC = exotxt
+ EXOTXT2SRC = exotxt2
+ PATEXOSRC = patexo
+ SEAEXOSRC = seaexo
+ SPHGEN2DSRC = sphgen2d
+ SPHGEN3DSRC = sphgen3d
+ SPHGEN3D2SRC = sphgen3d2
+ TXTEXOSRC = txtexo
+ TXTEXO2SRC = txtexo2
+ EXO2VISSRC = exo2vis
+ EXOMATLABSRC = exomatlab
+ EXOMATSRC = exomat
+ EXO2MATSRC = exo2mat
+
+ EX1EX2V2SRC = ex1ex2v2
+ EX2EX1V2SRC = ex2ex1v2
+ EXODIFFSRC = exodiff
+ EPUSRC = epu
+ ABAEXOSRC = abaexo
+ NEM_JOINSRC = nem_join
+ NEM_SLICESRC = nem_slice
+ NEM_SPREADSRC = nem_spread
+ WTO3DSRC = wto3d
+
+# Graphics Subdirectories
+ BLOTSRC = blot
+ BLOTII2SRC = blotII2
+ FASTQSRC = fastq
+ FONTSSRC = fonts
+ GRAPHSRC = graph
+
+# Library Subdirectories
+ SUPESSRC = supes
+ SUPESDPSRC = supesdp
+ SUPLIBSRC = suplib
+ LEGACYSRC = legacy
+ MAPVARLIBSRC = mapvarlib
+ EXODUSSRC = exodus
+ PLTSRC = plt
+ VDI_DRIVERSSRC = vdi_drivers
+ IOSSSRC = ioss
+ ZOLTANSRC = zoltan
+ CHACOSRC = chaco
+ NEMESISSRC = nemesis
+ APREPROLIBSRC = aprepro
+ XHELPSRC = xhelp
+# Library Subdirectories for svdi
+ CGISRC = cgi
+ CDRSRC = cdr
+ POSTSRC = post
+ TESTSRC = test
+
+# Pre- and Post-processing Subdirectories
+ APREPROSRC = aprepro
+ FAILPROBSRC = failprob
+ GEN3DSRC = gen3d
+ GEN3D2SRC = gen3d2
+ GENSHELLSRC = genshell
+ GENSHELL2SRC = genshell2
+ GENHXSHLSRC = genhxshl
+ GJOINSRC = gjoin
+ GJOIN1SRC = gjoin1
+ GJOIN2SRC = gjoin2
+ GREPOSSRC = grepos
+ GREPOS2SRC = grepos2
+ GROPESRC = grope
+ MAPVARSRC = mapvar
+ MAPVARKDSRC = mapvar-kd
+ NUMBERSSRC = numbers
+ NUMBERS2SRC = numbers2
+ EX_JOINSRC = ex_join
+ SPIFFSRC = spiff
+
+# ACCESS installation directories
+ BINDIR = $(ACCESSDIR)/bin
+ CONFIGDIR = $(ACCESSDIR)/config
+ ETCDIR = $(ACCESSDIR)/etc
+ INCDIR = $(ACCESSDIR)/inc
+ LIBDIR = $(ACCESSDIR)/lib
+ PLIBDIR = $(ACCESSDIR)/plib
+ MATLABDIR = $(ACCESSDIR)/matlab
+ SVDIDIR = $(ACCESSDIR)/svdi
+ SVDITESTDIR = $(ACCESSDIR)/svdi/test
+ BUILDINCDIR = $(ACCESSDIR)/inc
+ BUILDINCTOP = ..
+ BUILDLIBDIR = $(TOP)/usrlib
+
+# Override Include directories
+ INCREF =
+ ALTINC =
+ INCLUDESRC = ./
+ PROJECT_INCLUDES = -I$(INCLUDESRC) $(ALTINC) -I$(INCDIR)
+
+# Override Library directories
+ LIBREF =
+ ALTLIBPATH =
+ LIBPATH = -L$(INCLUDESRC) $(ALTLIBPATH) -L$(LIBDIR)
+ PLIBPATH = -L$(INCLUDESRC) $(ALTLIBPATH) -L$(PLIBDIR)
+
+# Libraries
+ IOSS = -lIonit -lIoex -lIogn -lIotr -lIohb -lIoss
+ HDF5 = -lhdf5
+ HDF5_HL = -lhdf5_hl
+ SUPES = -lsupes
+ SUPESDP = -lsupesdp
+ SUPLIB = -lsuplib
+ LEGACY = -llegacy
+ MAPVARLIB = -lmapvarlib
+ PLT = -lplt
+ RPCLIB =
+ EXTRANETCDFLIB = -L$(HDF5ROOT)/lib -lhdf5_hl -lhdf5 -lm -lz
+ LCLIB = -lLegacyContact
+ NETCDF = -lnetcdf $(EXTRANETCDFLIB)
+ EXOIIV2C = -lexodus
+ EXODUS = -lexodus
+ EXOIIV2FOR = -lexoIIv2for
+ EXOIIV2FOR32 = -lexoIIv2for32
+ ABALIB =
+ CGI = -lcgi
+ CDR = -lcdr
+ NEMESIS = -lnemesis
+ NEMESISC = -lnemesis
+ NEMESISF = -lnemIf
+ NEMESISF32 = -lnemIf32
+ CHACO = -lchaco
+ ZOLTAN = -lzoltan
+ MATIO = -lmatio -lz
+
+# Libraries and include path used for building parallel executables
+ PARFLIBS = -lmpi
+ PARCLIBS = -lmpi
+ PARINCPATH =
+
+# Perl command and includes needed for sfmakedepend
+ PERLCMD = /usr/bin/perl
+ DEPENDINC = -I /usr/include -I $(INCDIR)
+
+# X11 includes and libraries
+ X11INCLUDES = -I/usr/X11R6/include
+ X11 = -L/usr/X11R6/lib -lX11
+
+# Definitions used for running parallel executables
+ PARALLEL = Parallel
+ NUM_PROCS = 1
+ PARRUNCMD = mpirun
+ NPCMD = -np
+ HFCMD = -p4pg
+
+# Imake flag used in the parallel directories
+
+PARALLELIMAKEFLAG = ParallelImakeFlag
+
+ ICONFIGFILES = $(IRULESRC)/Imake.tmpl $(IRULESRC)/ACCESS.tmpl $(IRULESRC)/site.def $(IRULESRC)/$(MACROFILE) $(EXTRA_ICONFIGFILES)
+
+ CONFIGDIR = $(ACCESSDIR)/config
+
+ USRLIBDIRPATH = /Users/gdsjaar/src/SEACAS-SF-INSTALL/lib
+ LDPRELIBS =
+ LDPOSTLIBS =
+ TOP_INCLUDES = -I$(INCROOT)
+ PROJECT_DEFINES =
+
+CXXPROJECT_DEFINES =
+
+# ----------------------------------------------------------------------
+# start of Imakefile
+
+# Copyright (c) 1998 Sandia Corporation. Under the terms of Contract
+# DE-AC04-94AL85000 with Sandia Corporation, the U.S. Governement
+# retains certain rights in this software.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following
+# disclaimer in the documentation and/or other materials provided
+# with the distribution.
+#
+# * Neither the name of Sandia Corporation nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN 0 EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+ALTINC = -I../
+
+F77CPPFLAGS = -D$(SYSTEM)
+
+SRCS = ne_jack.c
+SRCSF = addrwrpn.F
+
+OBJS = ${SRCS:.c=.o} ${SRCSF:.F=.o}
+
+all:: libnemIf.a
+libnemIf.a: $(OBJS)
+ $(AR) $@ $?
+ $(RANLIB) $@
+ $(_NULLCMD_)
+ $(CP) libnemIf.a ../
+
+ne_jack32.o: ne_jack.c
+ $(CC) -o ne_jack32.o -c $(CFLAGS) -DDEFAULT_REAL_INT ne_jack.c
+
+all:: libnemIf32.a
+libnemIf32.a: ne_jack32.o
+ $(AR) $@ $?
+ $(_NULLCMD_)
+ $(_NULLCMD_)
+ $(CP) $@ ../
+
+depend::
+ $(DEPEND) $(DEPENDFLAGS) -- $(ALLDEFINES) $(DEPEND_DEFINES) -- $(SRCS)
+
+# ----------------------------------------------------------------------
+# common rules for all Makefiles - do not edit
+
+.c.i:
+ $(RM) $@
+ $(CC) -E $(CFLAGS) $(_NOOP_) $*.c > $@
+
+emptyrule::
+
+clean::
+ $(RM) *.CKP *.ln *.BAK *.bak *.o *.M *.mod core errs ,* *~ *.a .emacs_* tags TAGS make.log MakeOut "#"*
+
+Makefile::
+ - at if [ -f Makefile ]; then set -x; \
+ $(RM) Makefile.bak; $(MV) Makefile Makefile.bak; \
+ else exit 0; fi
+ $(IMAKE_CMD) -DTOPDIR=$(TOP) -DCURDIR=$(CURRENT_DIR)
+
+tags::
+ $(TAGS) -w *.[ch]
+ $(TAGS) -xw *.[ch] > TAGS
+
+man_keywords::
+
+# ----------------------------------------------------------------------
+# empty rules for directories that do not have SUBDIRS - do not edit
+
+install::
+ @echo "install in $(CURRENT_DIR) done"
+
+install.man::
+ @echo "install.man in $(CURRENT_DIR) done"
+
+install.linkkit::
+ @echo "install.linkkit in $(CURRENT_DIR) done"
+
+Makefiles::
+
+includes::
+
+depend::
+
+# ----------------------------------------------------------------------
+
+.SUFFIXES: .F .f .f90 .c .C .cpp
+.c.o:
+ $(CC) -c $(CFLAGS) $*.c
+.C.o:
+ $(CXX) -c $(CXXFLAGS) $*.C
+.cpp.o:
+ $(CXX) -c $(CXXFLAGS) $*.cpp
+.f.o:
+ $(FC) -c $(STATICFLAGS) $(FFLAGS) $*.f
+.f90.o:
+ $(F90C) -c $(STATICFLAGS) $(F90FLAGS) $*.f90
+.f90.mod:
+ $(F90C) -c $(STATICFLAGS) $(F90FLAGS) $*.f90
+.mod.o:
+.F.o:
+ $(FC) -c $(STD_CPP_DEFINES) $(F77CPPFLAGS) $(DEFINES) $(STATICFLAGS) $(FFLAGS) $*.F
+
+# ----------------------------------------------------------------------
+# dependencies generated by makedepend or sfmakedepend
+
diff --git a/nemesis/forbind/Makefile.standalone b/nemesis/forbind/Makefile.standalone
new file mode 100644
index 0000000..952438b
--- /dev/null
+++ b/nemesis/forbind/Makefile.standalone
@@ -0,0 +1,68 @@
+# Copyright (c) 1998 Sandia Corporation. Under the terms of Contract
+# DE-AC04-94AL85000 with Sandia Corporation, the U.S. Governement
+# retains certain rights in this software.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following
+# disclaimer in the documentation and/or other materials provided
+# with the distribution.
+#
+# * Neither the name of Sandia Corporation nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+INCLUDES = -I..
+F77EXTRAOPTIONS = -I..
+
+SRCS = ne_jack.c
+
+SRCSF = addrwrpn.F
+
+OBJS = ${SRCS:.c=.o} ${SRCSF:.F=.o}
+
+ne_jack.c: ne_jack.src fortc1.sed fortc2.sed common.m4 $(OS_TYPE).m4
+ ./fortc -P $(BITS) -L . -O $(OS_TYPE) ne_jack.src > $@
+
+all:: libnemIf.a
+libnemIf.a: $(OBJS)
+ $(AR) $@ $?
+ $(RANLIB) $@
+ cp libnemIf.a ..
+
+clean::
+ rm -f *.c addrwrpn.f
+
+clean::
+ rm -f *.CKP *.ln *.BAK *.bak *.o *.M *.mod core errs ,* *~ *.a .emacs_* tags TAGS make.log MakeOut "#"*
+
+.SUFFIXES: .c .F .f
+.c.o:
+ $(CC) -c -I.. $(CFLAGS) $*.c
+.f.o:
+ $(FC) -c $(FFLAGS) $*.f
+.F.o:
+ $(FC) -c -I.. $(DEFINES) $(FFLAGS) $*.F
+
+# ----------------------------------------------------------------------
+# dependencies generated by makedepend or sfmakedepend
+
diff --git a/nemesis/forbind/addrwrpn.F b/nemesis/forbind/addrwrpn.F
new file mode 100644
index 0000000..ed6dddc
--- /dev/null
+++ b/nemesis/forbind/addrwrpn.F
@@ -0,0 +1,1211 @@
+C Copyright (c) 1998 Sandia Corporation. Under the terms of Contract
+C DE-AC04-94AL85000 with Sandia Corporation, the U.S. Governement
+C retains certain rights in this software.
+C
+C Redistribution and use in source and binary forms, with or without
+C modification, are permitted provided that the following conditions are
+C met:
+C
+C * Redistributions of source code must retain the above copyright
+C notice, this list of conditions and the following disclaimer.
+C
+C * Redistributions in binary form must reproduce the above
+C copyright notice, this list of conditions and the following
+C disclaimer in the documentation and/or other materials provided
+C with the distribution.
+C
+C * Neither the name of Sandia Corporation nor the names of its
+C contributors may be used to endorse or promote products derived
+C from this software without specific prior written permission.
+C
+C THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+C "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+C LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+C A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+C OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+C SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+C LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+C DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+C THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+C (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+C OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+C
+
+ subroutine adrdumn
+ end
+
+#ifdef Build64
+C-----------------------------------------------------------------------
+C
+C Get initial information from nemesis file
+C
+ subroutine negii (idne, nproc, nproc_in_f, ftype, ierr)
+ implicit none
+ integer idne
+ integer nproc
+ integer nproc_in_f
+ character*(*) ftype
+ integer ierr
+C
+ integer*4 idne4
+ integer*4 nproc4
+ integer*4 nproc_in_f4
+ integer*4 ierr4
+C
+ idne4 = idne
+ call negii4 (idne4, nproc4, nproc_in_f4, ftype, ierr4)
+ nproc = nproc4
+ nproc_in_f = nproc_in_f4
+ ierr = ierr4
+C
+ end
+
+C-----------------------------------------------------------------------
+C
+C Write initial information from nemesis file
+C
+ subroutine nepii (idne, nproc, nproc_in_f, ftype, ierr)
+ implicit none
+ integer idne
+ integer nproc
+ integer nproc_in_f
+ character*(*) ftype
+ integer ierr
+C
+ integer*4 idne4
+ integer*4 nproc4
+ integer*4 nproc_in_f4
+ integer*4 ierr4
+C
+ idne4 = idne
+ nproc4 = nproc
+ nproc_in_f4 = nproc_in_f
+ call nepii4 (idne4, nproc4, nproc_in_f4, ftype, ierr4)
+ ierr = ierr4
+C
+ end
+
+C-----------------------------------------------------------------------
+C
+C Read initial global information
+C
+ subroutine negig (idne, nnodes_g, nelems_g, nelem_blks_g,
+ $ nnode_sets_g, nside_sets_g, ierr)
+ implicit none
+ integer idne
+ integer nnodes_g
+ integer nelems_g
+ integer nelem_blks_g
+ integer nnode_sets_g
+ integer nside_sets_g
+ integer ierr
+C
+ integer*4 idne4
+ integer*4 ierr4
+C
+ idne4 = idne
+ call negig4 (idne4, nnodes_g, nelems_g, nelem_blks_g,
+ $ nnode_sets_g, nside_sets_g, ierr4)
+ ierr = ierr4
+C
+ end
+
+C-----------------------------------------------------------------------
+C
+C Write initial global information
+C
+ subroutine nepig (idne, nnodes_g, nelems_g, nelem_blks_g,
+ $ nnode_sets_g, nside_sets_g, ierr)
+ implicit none
+ integer idne
+ integer nnodes_g
+ integer nelems_g
+ integer nelem_blks_g
+ integer nnode_sets_g
+ integer nside_sets_g
+ integer ierr
+C
+ integer*4 idne4
+ integer*4 ierr4
+C
+ idne4 = idne
+ call nepig4 (idne4, nnodes_g, nelems_g, nelem_blks_g,
+ $ nnode_sets_g, nside_sets_g, ierr4)
+ ierr = ierr4
+C
+ end
+
+C-----------------------------------------------------------------------
+C
+C Read load balance parameters
+C
+ subroutine neglbp (idne, nint_nodes, nbor_nodes, next_nodes,
+ $ nint_elems, nbor_elems, nnode_cmaps, nelem_cmaps,
+ $ processor, ierr)
+ implicit none
+ integer idne
+ integer nint_nodes
+ integer nbor_nodes
+ integer next_nodes
+ integer nint_elems
+ integer nbor_elems
+ integer nnode_cmaps
+ integer nelem_cmaps
+ integer processor
+ integer ierr
+C
+ integer*4 idne4
+ integer*4 processor4
+ integer*4 ierr4
+C
+ idne4 = idne
+ processor4 = processor
+ call neglbp4 (idne4, nint_nodes, nbor_nodes, next_nodes,
+ $ nint_elems, nbor_elems, nnode_cmaps, nelem_cmaps,
+ $ processor4, ierr4)
+ ierr = ierr4
+C
+ end
+
+C-----------------------------------------------------------------------
+C
+C Write load balance parameters
+C
+ subroutine neplbp (idne, nint_nodes, nbor_nodes, next_nodes,
+ $ nint_elems, nbor_elems, nnode_cmaps, nelem_cmaps,
+ $ processor, ierr)
+ implicit none
+ integer idne
+ integer nint_nodes
+ integer nbor_nodes
+ integer next_nodes
+ integer nint_elems
+ integer nbor_elems
+ integer nnode_cmaps
+ integer nelem_cmaps
+ integer processor
+ integer ierr
+C
+ integer*4 idne4
+ integer*4 processor4
+ integer*4 ierr4
+C
+ idne4 = idne
+ processor4 = processor
+ call neplbp4 (idne4, nint_nodes, nbor_nodes, next_nodes,
+ $ nint_elems, nbor_elems, nnode_cmaps, nelem_cmaps,
+ $ processor4, ierr4)
+ ierr = ierr4
+C
+ end
+
+C-----------------------------------------------------------------------
+C
+C Write concatenated load balance parameters
+C
+ subroutine neplbpc (idne, nint_nodes, nbor_nodes, next_nodes,
+ $ nint_elems, nbor_elems, nnode_cmaps, nelem_cmaps, ierr)
+ implicit none
+ integer idne
+ integer nint_nodes(*)
+ integer nbor_nodes(*)
+ integer next_nodes(*)
+ integer nint_elems(*)
+ integer nbor_elems(*)
+ integer nnode_cmaps(*)
+ integer nelem_cmaps(*)
+ integer ierr
+C
+ integer*4 idne4
+ integer*4 ierr4
+C
+ idne4 = idne
+ call neplbpc4 (idne4, nint_nodes, nbor_nodes, next_nodes,
+ $ nint_elems, nbor_elems, nnode_cmaps, nelem_cmaps,
+ $ ierr4)
+ ierr = ierr4
+C
+ end
+
+C-----------------------------------------------------------------------
+C
+C Read global node set parameters
+C
+ subroutine negnspg (idne, ns_ids_glob, ns_n_cnt_glob,
+ $ ns_df_cnt_glob, ierr)
+ implicit none
+ integer idne
+ integer ns_ids_glob(*)
+ integer ns_n_cnt_glob(*)
+ integer ns_df_cnt_glob(*)
+ integer ierr
+C
+ integer*4 idne4
+ integer*4 ierr4
+C
+ idne4 = idne
+ call negnspg4 (idne4, ns_ids_glob, ns_n_cnt_glob,
+ $ ns_df_cnt_glob, ierr4)
+ ierr = ierr4
+C
+ end
+
+C-----------------------------------------------------------------------
+C
+C Write global node set parameters
+C
+ subroutine nepnspg (idne, global_ids, global_n_cnts,
+ $ global_df_cnts, ierr)
+ integer idne
+ integer global_ids(*)
+ integer global_n_cnts(*)
+ integer global_df_cnts(*)
+ integer ierr
+C
+ integer*4 idne4
+ integer*4 ierr4
+C
+ idne4 = idne
+ call nepnspg4 (idne4, global_ids, global_n_cnts,
+ $ global_df_cnts, ierr4)
+ ierr = ierr4
+C
+ end
+
+C-----------------------------------------------------------------------
+C
+C Read global side set parameters
+C
+ subroutine negsspg (idne, ss_ids_glob, ss_n_cnt_glob,
+ $ ss_df_cnt_glob, ierr)
+ implicit none
+ integer idne
+ integer ss_ids_glob(*)
+ integer ss_n_cnt_glob(*)
+ integer ss_df_cnt_glob(*)
+ integer ierr
+C
+ integer*4 idne4
+ integer*4 ierr4
+C
+ idne4 = idne
+ call negsspg4 (idne4, ss_ids_glob, ss_n_cnt_glob,
+ $ ss_df_cnt_glob, ierr4)
+ ierr = ierr4
+C
+ end
+
+C-----------------------------------------------------------------------
+C
+C Write global side set parameters
+C
+ subroutine nepsspg (idne, global_ids, global_el_cnts,
+ $ global_df_cnts, ierr)
+ implicit none
+ integer idne
+ integer global_ids(*)
+ integer global_el_cnts(*)
+ integer global_df_cnts(*)
+ integer ierr
+C
+ integer*4 idne4
+ integer*4 ierr4
+C
+ idne4 = idne
+ call nepsspg4 (idne4, global_ids, global_el_cnts,
+ $ global_df_cnts, ierr4)
+ ierr = ierr4
+C
+ end
+
+C-----------------------------------------------------------------------
+C
+C Read global element block information
+C
+ subroutine negebig (idne, el_blk_ids, el_blk_cnts, ierr)
+ implicit none
+ integer idne
+ integer el_blk_ids(*)
+ integer el_blk_cnts(*)
+ integer ierr
+C
+ integer*4 idne4
+ integer*4 ierr4
+C
+ idne4 = idne
+ call negebig4 (idne4, el_blk_ids, el_blk_cnts, ierr4)
+ ierr = ierr4
+C
+ end
+
+C-----------------------------------------------------------------------
+C
+C Write global element block information
+C
+ subroutine nepebig (idne, el_blk_ids, el_blk_cnts, ierr)
+ implicit none
+ integer idne
+ integer el_blk_ids(*)
+ integer el_blk_cnts(*)
+ integer ierr
+C
+ integer*4 idne4
+ integer*4 ierr4
+C
+ idne4 = idne
+ call nepebig4 (idne4, el_blk_ids, el_blk_cnts, ierr4)
+ ierr = ierr4
+C
+ end
+
+C-----------------------------------------------------------------------
+C
+C Read side set element list and side set side list
+C
+ subroutine negnss (idne, ss_id, start_side_num, num_sides,
+ $ ss_elem_list, ss_side_list, ierr)
+ implicit none
+ integer idne
+ integer ss_id
+ integer start_side_num
+ integer num_sides
+ integer ss_elem_list(num_sides)
+ integer ss_side_list(num_sides)
+ integer ierr
+C
+ integer*4 idne4
+ integer*4 ierr4
+C
+ idne4 = idne
+ call negnss4 (idne4, ss_id, start_side_num, num_sides,
+ $ ss_elem_list, ss_side_list, ierr4)
+ ierr = ierr4
+C
+ end
+
+C-----------------------------------------------------------------------
+C
+C Write side set element list and side set side list
+C
+ subroutine nepnss (idne, ss_id, start_side_num, num_sides,
+ $ ss_elem_list, ss_side_list, ierr)
+ implicit none
+ integer idne
+ integer ss_id
+ integer start_side_num
+ integer num_sides
+ integer ss_elem_list(num_sides)
+ integer ss_side_list(num_sides)
+ integer ierr
+C
+ integer*4 idne4
+ integer*4 ierr4
+C
+ idne4 = idne
+ call nepnss4 (idne4, ss_id, start_side_num, num_sides,
+ $ ss_elem_list, ss_side_list, ierr4)
+ ierr = ierr4
+C
+ end
+
+C-----------------------------------------------------------------------
+C
+C Read side set distribution factor
+C
+ subroutine negnssd (idne, ss_id, start_num, num_df_to_get,
+ $ ss_df, ierr)
+ implicit none
+ integer idne
+ integer ss_id
+ integer start_num
+ integer num_df_to_get
+ real ss_df(num_df_to_get)
+ integer ierr
+C
+ integer*4 idne4
+ integer*4 ierr4
+C
+ idne4 = idne
+ call negnssd4 (idne4, ss_id, start_num, num_df_to_get,
+ $ ss_df, ierr4)
+ ierr = ierr4
+C
+ end
+
+C-----------------------------------------------------------------------
+C
+C Write side set distribution factor
+C
+ subroutine nepnssd (idne, ss_id, start_num, num_df_to_get,
+ $ ss_df, ierr)
+ implicit none
+ integer idne
+ integer ss_id
+ integer start_num
+ integer num_df_to_get
+ real ss_df(num_df_to_get)
+ integer ierr
+C
+ integer*4 idne4
+ integer*4 ierr4
+C
+ idne4 = idne
+ call nepnssd4 (idne4, ss_id, start_num, num_df_to_get,
+ $ ss_df, ierr4)
+ ierr = ierr4
+C
+ end
+
+C-----------------------------------------------------------------------
+C
+C Read node set list for a single node set
+C
+ subroutine negnns (idne, ns_id, start_node_num, num_node,
+ $ ns_node_list, ierr)
+ implicit none
+ integer idne
+ integer ns_id
+ integer start_node_num
+ integer num_node
+ integer ns_node_list(num_node)
+ integer ierr
+C
+ integer*4 idne4
+ integer*4 ierr4
+C
+ idne4 = idne
+ call negnns4 (idne4, ns_id, start_node_num, num_node,
+ $ ns_node_list, ierr4)
+ ierr = ierr4
+C
+ end
+
+C-----------------------------------------------------------------------
+C
+C Write node set list for a single node set
+C
+ subroutine nepnns (idne, ns_id, start_node_num, num_node,
+ $ ns_node_list, ierr)
+ implicit none
+ integer idne
+ integer ns_id
+ integer start_node_num
+ integer num_node
+ integer ns_node_list(num_node)
+ integer ierr
+C
+ integer*4 idne4
+ integer*4 ierr4
+C
+ idne4 = idne
+ call nepnns4 (idne4, ns_id, start_node_num, num_node,
+ $ ns_node_list, ierr4)
+ ierr = ierr4
+C
+ end
+
+C-----------------------------------------------------------------------
+C
+C Read node set distribution factor
+C
+ subroutine negnnsd (idne, ns_id, start_num, num_df_to_get,
+ $ ns_df, ierr)
+ implicit none
+ integer idne
+ integer ns_id
+ integer start_num
+ integer num_df_to_get
+ real ns_df(num_df_to_get)
+ integer ierr
+C
+ integer*4 idne4
+ integer*4 ierr4
+C
+ idne4 = idne
+ call negnnsd4 (idne4, ns_id, start_num, num_df_to_get,
+ $ ns_df, ierr4)
+ ierr = ierr4
+C
+ end
+
+C-----------------------------------------------------------------------
+C
+C Write node set distribution factor
+C
+ subroutine nepnnsd (idne, ns_id, start_num, num_df_to_get,
+ $ ns_df, ierr)
+ implicit none
+ integer idne
+ integer ns_id
+ integer start_num
+ integer num_df_to_get
+ real ns_df(num_df_to_get)
+ integer ierr
+C
+ integer*4 idne4
+ integer*4 ierr4
+C
+ idne4 = idne
+ call nepnnsd4 (idne4, ns_id, start_num, num_df_to_get,
+ $ ns_df, ierr4)
+ ierr = ierr4
+C
+ end
+
+C-----------------------------------------------------------------------
+C
+C Read coordinates of the nodes
+C
+ subroutine negcor (idne, start_node_num, num_nodes, x_coor,
+ $ y_coor, z_coor, ierr)
+ implicit none
+ integer idne
+ integer start_node_num
+ integer num_nodes
+ real x_coor(num_nodes)
+ real y_coor(num_nodes)
+ real z_coor(num_nodes)
+ integer ierr
+C
+ integer*4 idne4
+ integer*4 ierr4
+C
+ idne4 = idne
+ call negcor4 (idne4, start_node_num, num_nodes, x_coor,
+ $ y_coor, z_coor, ierr4)
+ ierr = ierr4
+C
+ end
+
+C-----------------------------------------------------------------------
+C
+C Write coordinates of the nodes
+C
+ subroutine nepcor (idne, start_node_num, num_nodes, x_coor,
+ $ y_coor, z_coor, ierr)
+ implicit none
+ integer idne
+ integer start_node_num
+ integer num_nodes
+ real x_coor(num_nodes)
+ real y_coor(num_nodes)
+ real z_coor(num_nodes)
+ integer ierr
+C
+ integer*4 idne4
+ integer*4 ierr4
+C
+ idne4 = idne
+ call nepcor4 (idne4, start_node_num, num_nodes, x_coor,
+ $ y_coor, z_coor, ierr4)
+ ierr = ierr4
+C
+ end
+
+C-----------------------------------------------------------------------
+C
+C Read an element blocks connectivity list
+C
+ subroutine negnec (idne, elem_blk_id, start_elem_num,
+ $ num_elems, connect, ierr)
+ implicit none
+ integer idne
+ integer elem_blk_id
+ integer start_elem_num
+ integer num_elems
+ integer connect(num_elems)
+ integer ierr
+C
+ integer*4 idne4
+ integer*4 ierr4
+C
+ idne4 = idne
+ call negnec4 (idne4, elem_blk_id, start_elem_num,
+ $ num_elems, connect, ierr4)
+ ierr = ierr4
+C
+ end
+
+C-----------------------------------------------------------------------
+C
+C Write an element blocks connectivity list
+C
+ subroutine nepnec (idne, elem_blk_id, start_elem_num,
+ $ num_elems, connect, ierr)
+ implicit none
+ integer idne
+ integer elem_blk_id
+ integer start_elem_num
+ integer num_elems
+ integer connect(num_elems)
+ integer ierr
+C
+ integer*4 idne4
+ integer*4 ierr4
+C
+ idne4 = idne
+ call nepnec4 (idne4, elem_blk_id, start_elem_num,
+ $ num_elems, connect, ierr4)
+ ierr = ierr4
+C
+ end
+
+C-----------------------------------------------------------------------
+C
+C Read an element blocks attributes
+C
+ subroutine negneat (idne, elem_blk_id, start_elem_num,
+ $ num_elems, attrib, ierr)
+ implicit none
+ integer idne
+ integer elem_blk_id
+ integer start_elem_num
+ integer num_elems
+ real attrib(num_elems)
+ integer ierr
+C
+ integer*4 idne4
+ integer*4 ierr4
+C
+ idne4 = idne
+ call negneat4 (idne4, elem_blk_id, start_elem_num,
+ $ num_elems, attrib, ierr4)
+ ierr = ierr4
+C
+ end
+
+C-----------------------------------------------------------------------
+C
+C Write an element blocks attributes
+C
+ subroutine nepneat (idne, elem_blk_id, start_elem_num,
+ $ num_elems, attrib, ierr)
+ implicit none
+ integer idne
+ integer elem_blk_id
+ integer start_elem_num
+ integer num_elems
+ real attrib(num_elems)
+ integer ierr
+C
+ integer*4 idne4
+ integer*4 ierr4
+C
+ idne4 = idne
+ call nepneat4 (idne4, elem_blk_id, start_elem_num,
+ $ num_elems, attrib, ierr4)
+ ierr = ierr4
+C
+ end
+C
+C-----------------------------------------------------------------------
+C Read the element type for a specific element block
+C
+ subroutine negelt (idne, elem_blk_id, elem_type, ierr)
+ implicit none
+ integer idne
+ integer elem_blk_id
+ character*(*) elem_type
+ integer ierr
+C
+ integer*4 idne4
+ integer*4 ierr4
+C
+ idne4 = idne
+ call negelt4 (idne4, elem_blk_id, elem_type, ierr4)
+ ierr = ierr4
+C
+ end
+
+C-----------------------------------------------------------------------
+C
+C Read a variable for an element block
+C
+ subroutine negnev (idne, time_step, elem_var_index,
+ $ elem_blk_id, num_elem_this_blk, start_elem_num,
+ $ num_elem, elem_var_vals, ierr)
+ implicit none
+ integer idne
+ integer time_step
+ integer elem_var_index
+ integer elem_blk_id
+ integer num_elem_this_blk
+ integer start_elem_num
+ integer num_elem
+ real elem_var_vals(num_elem)
+ integer ierr
+C
+ integer*4 idne4
+ integer*4 time_step4
+ integer*4 elem_var_index4
+ integer*4 ierr4
+C
+ idne4 = idne
+ time_step4 = time_step
+ elem_var_index4 = elem_var_index
+ call negnev4 (idne4, time_step4, elem_var_index4,
+ $ elem_blk_id, num_elem_this_blk, start_elem_num,
+ $ num_elem, elem_var_vals, ierr4)
+ ierr = ierr4
+C
+ end
+
+C-----------------------------------------------------------------------
+C
+C Write a variable slab for an element block
+C
+ subroutine nepevs (idne, time_step, elem_var_index,
+ $ elem_blk_id, start_pos, num_vals, elem_var_vals,
+ $ ierr)
+ implicit none
+ integer idne
+ integer time_step
+ integer elem_var_index
+ integer elem_blk_id
+ integer start_pos
+ integer num_vals
+ real elem_var_vals(num_vals)
+ integer ierr
+C
+ integer*4 idne4
+ integer*4 time_step4
+ integer*4 elem_var_index4
+ integer*4 ierr4
+C
+ idne4 = idne
+ time_step4 = time_step
+ elem_var_index4 = elem_var_index
+ call nepevs4 (idne4, time_step4, elem_var_index4,
+ $ elem_blk_id, start_pos, num_vals, elem_var_vals,
+ $ ierr4)
+ ierr = ierr4
+C
+ end
+
+C-----------------------------------------------------------------------
+C
+C Read the values of a single nodal variable for a single time step
+C
+ subroutine negnnv (idne, time_step, nodal_var_index,
+ $ start_node_num, num_nodes, nodal_vars, ierr)
+ implicit none
+ integer idne
+ integer time_step
+ integer nodal_var_index
+ integer start_node_num
+ integer num_nodes
+ real nodal_vars(num_nodes)
+ integer ierr
+C
+ integer*4 idne4
+ integer*4 time_step4
+ integer*4 nodal_var_index4
+ integer*4 ierr4
+C
+ idne4 = idne
+ time_step4 = time_step
+ nodal_var_index4 = nodal_var_index
+ call negnnv4 (idne4, time_step4, nodal_var_index4,
+ $ start_node_num, num_nodes, nodal_vars, ierr4)
+ ierr = ierr4
+C
+ end
+
+C-----------------------------------------------------------------------
+C
+C Write nodal variable slab
+C
+ subroutine nepnvs (idne, time_step, nodal_var_index,
+ $ start_pos, num_vals, nodal_var_vals, ierr)
+ implicit none
+ integer idne
+ integer time_step
+ integer nodal_var_index
+ integer start_pos
+ integer num_vals
+ real nodal_var_vals(num_vals)
+ integer ierr
+C
+ integer*4 idne4
+ integer*4 time_step4
+ integer*4 nodal_var_index4
+ integer*4 ierr4
+C
+ idne4 = idne
+ time_step4 = time_step
+ nodal_var_index4 = nodal_var_index
+ call nepnvs4 (idne4, time_step4, nodal_var_index4,
+ $ start_pos, num_vals, nodal_var_vals, ierr4)
+ ierr = ierr4
+C
+ end
+
+C-----------------------------------------------------------------------
+C
+C Read the element numbering map
+C
+ subroutine negnenm (idne, starte, num_ent, elem_map, ierr)
+ implicit none
+ integer idne
+ integer starte
+ integer num_ent
+ integer elem_map(num_ent)
+ integer ierr
+C
+ integer*4 idne4
+ integer*4 ierr4
+C
+ idne4 = idne
+ call negnenm4 (idne4, starte, num_ent, elem_map, ierr4)
+ ierr = ierr4
+C
+ end
+
+C-----------------------------------------------------------------------
+C
+C Write the element numbering map
+C
+ subroutine nepnenm (idne, starte, num_ent, elem_map, ierr)
+ implicit none
+ integer idne
+ integer starte
+ integer num_ent
+ integer elem_map(num_ent)
+ integer ierr
+C
+ integer*4 idne4
+ integer*4 ierr4
+C
+ idne4 = idne
+ call nepnenm4 (idne4, starte, num_ent, elem_map, ierr4)
+ ierr = ierr4
+C
+ end
+
+C-----------------------------------------------------------------------
+C
+C Read the node numbering map
+C
+ subroutine negnnnm (idne, startn, num_ent, node_map, ierr)
+ implicit none
+ integer idne
+ integer startn
+ integer num_ent
+ integer node_map(num_ent)
+ integer ierr
+C
+ integer*4 idne4
+ integer*4 ierr4
+C
+ idne4 = idne
+ call negnnnm4 (idne4, startn, num_ent, node_map, ierr4)
+ ierr = ierr4
+C
+ end
+
+C-----------------------------------------------------------------------
+C
+C Write the node numbering map
+C
+ subroutine nepnnnm (idne, startn, num_ent, node_map, ierr)
+ implicit none
+ integer idne
+ integer startn
+ integer num_ent
+ integer node_map(num_ent)
+ integer ierr
+C
+ integer*4 idne4
+ integer*4 ierr4
+C
+ idne4 = idne
+ call nepnnnm4 (idne4, startn, num_ent, node_map, ierr4)
+ ierr = ierr4
+C
+ end
+
+C-----------------------------------------------------------------------
+C
+C Read the node map for a processor
+C
+ subroutine negnm (idne, node_mapi, node_mapb, node_mape,
+ $ processor, ierr)
+ implicit none
+ integer idne
+ integer node_mapi(*)
+ integer node_mapb(*)
+ integer node_mape(*)
+ integer processor
+ integer ierr
+C
+ integer*4 idne4
+ integer*4 processor4
+ integer*4 ierr4
+C
+ idne4 = idne
+ processor4 = processor
+ call negnm4 (idne4, node_mapi, node_mapb, node_mape,
+ $ processor4, ierr4)
+ ierr = ierr4
+C
+ end
+
+C-----------------------------------------------------------------------
+C
+C Write a node map for a processor
+C
+ subroutine nepnm (idne, node_mapi, node_mapb, node_mape,
+ $ processor, ierr)
+ implicit none
+ integer idne
+ integer node_mapi(*)
+ integer node_mapb(*)
+ integer node_mape(*)
+ integer processor
+ integer ierr
+C
+ integer*4 idne4
+ integer*4 processor4
+ integer*4 ierr4
+C
+ idne4 = idne
+ processor4 = processor
+ call nepnm4 (idne4, node_mapi, node_mapb, node_mape,
+ $ processor4, ierr4)
+ ierr = ierr4
+C
+ end
+
+C-----------------------------------------------------------------------
+C
+C Read the element map for a processor
+C
+ subroutine negem (idne, elem_mapi, elem_mapb, processor, ierr)
+ implicit none
+ integer idne
+ integer elem_mapi(*)
+ integer elem_mapb(*)
+ integer processor
+ integer ierr
+C
+ integer*4 idne4
+ integer*4 processor4
+ integer*4 ierr4
+C
+ idne4 = idne
+ processor4 = processor
+ call negem4 (idne4, elem_mapi, elem_mapb, processor4, ierr4)
+ ierr = ierr4
+C
+ end
+
+C-----------------------------------------------------------------------
+C
+C Write the element map for a processor
+C
+ subroutine nepem (idne, elem_mapi, elem_mapb, processor, ierr)
+ implicit none
+ integer idne
+ integer elem_mapi(*)
+ integer elem_mapb(*)
+ integer processor
+ integer ierr
+C
+ integer*4 idne4
+ integer*4 processor4
+ integer*4 ierr4
+C
+ idne4 = idne
+ processor4 = processor
+ call nepem4 (idne4, elem_mapi, elem_mapb, processor4, ierr4)
+ ierr = ierr4
+C
+ end
+
+C-----------------------------------------------------------------------
+C
+C Read the communications map parameters for a single processor
+C
+ subroutine negcmp (idne, ncmap_ids, ncmap_node_cnts,
+ $ ecmap_ids, ecmap_elem_cnts, processor, ierr)
+ implicit none
+ integer idne
+ integer ncmap_ids(*)
+ integer ncmap_node_cnts(*)
+ integer ecmap_ids(*)
+ integer ecmap_elem_cnts(*)
+ integer processor
+ integer ierr
+C
+ integer*4 idne4
+ integer*4 processor4
+ integer*4 ierr4
+C
+ idne4 = idne
+ processor4 = processor
+ call negcmp4 (idne4, ncmap_ids, ncmap_node_cnts,
+ $ ecmap_ids, ecmap_elem_cnts, processor4, ierr4)
+ ierr = ierr4
+C
+ end
+
+C-----------------------------------------------------------------------
+C
+C Write the communications map parameters for a single processor
+C
+ subroutine nepcmp (idne, nmap_ids, nmap_node_cnts, emap_ids,
+ $ emap_elem_cnts, processor, ierr)
+ implicit none
+ integer idne
+ integer nmap_ids(*)
+ integer nmap_node_cnts(*)
+ integer emap_ids(*)
+ integer emap_elem_cnts(*)
+ integer processor
+ integer ierr
+
+ integer*4 idne4
+ integer*4 processor4
+ integer*4 ierr4
+C
+ idne4 = idne
+ processor4 = processor
+ call nepcmp4 (idne4, nmap_ids, nmap_node_cnts, emap_ids,
+ $ emap_elem_cnts, processor4, ierr4)
+ ierr = ierr4
+C
+ end
+
+C-----------------------------------------------------------------------
+C
+C Write the communications map parameters for all processors
+C
+ subroutine nepcmpc (idne, nmap_ids, nmap_node_cnts,
+ $ nproc_ptrs, emap_ids, emap_elem_cnts, eproc_ptrs, ierr)
+ implicit none
+ integer idne
+ integer nmap_ids(*)
+ integer nmap_node_cnts(*)
+ integer nproc_ptrs(*)
+ integer emap_ids(*)
+ integer emap_elem_cnts(*)
+ integer eproc_ptrs(*)
+ integer ierr
+
+ integer*4 idne4
+ integer*4 ierr4
+C
+ idne4 = idne
+ call nepcmpc4 (idne4, nmap_ids, nmap_node_cnts,
+ $ nproc_ptrs, emap_ids, emap_elem_cnts, eproc_ptrs, ierr4)
+ ierr = ierr4
+
+ end
+
+C-----------------------------------------------------------------------
+C
+C Read the nodal communications map for a single processor
+C
+ subroutine negncm (idne, map_id, node_ids, proc_ids,
+ $ processor, ierr)
+ implicit none
+ integer idne
+ integer map_id
+ integer node_ids(*)
+ integer proc_ids(*)
+ integer processor
+ integer ierr
+C
+ integer*4 idne4
+ integer*4 processor4
+ integer*4 ierr4
+C
+ idne4 = idne
+ processor4 = processor
+ call negncm4 (idne4, map_id, node_ids, proc_ids,
+ $ processor4, ierr4)
+ ierr = ierr4
+C
+ end
+
+C-----------------------------------------------------------------------
+C
+C Write the nodal communications map for a single processor
+C
+ subroutine nepncm (idne, map_id, node_ids, proc_ids,
+ $ processor, ierr)
+ implicit none
+ integer idne
+ integer map_id
+ integer node_ids(*)
+ integer proc_ids(*)
+ integer processor
+ integer ierr
+C
+ integer*4 idne4
+ integer*4 processor4
+ integer*4 ierr4
+C
+ idne4 = idne
+ processor4 = processor
+ call nepncm4 (idne4, map_id, node_ids, proc_ids,
+ $ processor4, ierr4)
+ ierr = ierr4
+C
+ end
+
+C-----------------------------------------------------------------------
+C
+C Read the elemental communications map for a single processor
+C
+ subroutine negecm (idne, map_id, elem_ids, side_ids,
+ $ proc_ids, processor, ierr)
+ implicit none
+ integer idne
+ integer map_id
+ integer elem_ids(*)
+ integer side_ids(*)
+ integer proc_ids(*)
+ integer processor
+ integer ierr
+
+ integer*4 idne4
+ integer*4 processor4
+ integer*4 ierr4
+C
+ idne4 = idne
+ processor4 = processor
+ call negecm4 (idne4, map_id, elem_ids, side_ids,
+ $ proc_ids, processor4, ierr4)
+ ierr = ierr4
+C
+ end
+
+C-----------------------------------------------------------------------
+C
+C Write the elemental communications map for a single processor
+C
+ subroutine nepecm (idne, map_id, elem_ids, side_ids,
+ $ proc_ids, processor, ierr)
+ implicit none
+ integer idne
+ integer map_id
+ integer elem_ids(*)
+ integer side_ids(*)
+ integer proc_ids(*)
+ integer processor
+ integer ierr
+
+ integer*4 idne4
+ integer*4 processor4
+ integer*4 ierr4
+
+ idne4 = idne
+ processor4 = processor
+ call nepecm4 (idne4, map_id, elem_ids, side_ids,
+ $ proc_ids, processor4, ierr4)
+ ierr = ierr4
+
+ end
+C-----------------------------------------------------------------------
+#endif
diff --git a/nemesis/forbind/ne_ftest.F b/nemesis/forbind/ne_ftest.F
new file mode 100644
index 0000000..08c3330
--- /dev/null
+++ b/nemesis/forbind/ne_ftest.F
@@ -0,0 +1,928 @@
+C Copyright (c) 1998 Sandia Corporation. Under the terms of Contract
+C DE-AC04-94AL85000 with Sandia Corporation, the U.S. Governement
+C retains certain rights in this software.
+C
+C Redistribution and use in source and binary forms, with or without
+C modification, are permitted provided that the following conditions are
+C met:
+C
+C * Redistributions of source code must retain the above copyright
+C notice, this list of conditions and the following disclaimer.
+C
+C * Redistributions in binary form must reproduce the above
+C copyright notice, this list of conditions and the following
+C disclaimer in the documentation and/or other materials provided
+C with the distribution.
+C
+C * Neither the name of Sandia Corporation nor the names of its
+C contributors may be used to endorse or promote products derived
+C from this software without specific prior written permission.
+C
+C THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+C "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+C LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+C A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+C OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+C SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+C LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+C DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+C THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+C (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+C OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+C
+C=================================================================
+C
+C This is just a simple test program to test the fortran interface
+C for the NEMESIS I library.
+C
+C This file was created by translating ne_test.c into fortran.
+C
+C=================================================================
+
+C=================================================================
+ PROGRAM NETEST
+C=================================================================
+ INCLUDE 'exodusII.inc'
+ INCLUDE 'ne_test.inc'
+
+C local variables
+ INTEGER NEID, IO_WS, CPU_WS, T_PASS, T_FAIL, DBG_FLAG, IERR
+ CHARACTER FNAME*256, YO*6
+ REAL VERSION
+
+ YO = 'NETEST'
+ IO_WS = 0
+ CPU_WS = 0
+ T_PASS = 0
+ T_FAIL = 0
+ DBG_FLAG = 0
+
+C now let's get going...
+
+C I don't care about input arguements, so the file name will be ne_test.nemI
+ FNAME = 'ne_test.nemI'
+C and set the debug flag to 0
+ DBG_FLAG = 0
+
+ PRINT*, '******************Output Tests*****************'
+C create the exodus II file
+ PRINT*, 'creating ExodusII file...'
+ NEID = EXCRE(FNAME, EXCLOB, CPU_WS, IO_WS, IERR)
+ IF (IERR.NE.0) THEN
+ PRINT*, '...FAILED'
+ T_FAIL = T_FAIL + 1
+ PRINT*, YO, ': ERROR, unable to create test file', FNAME, '!'
+ GOTO 100
+ ELSE
+ PRINT*, '...successful'
+ T_PASS = T_PASS + 1
+ END IF
+
+C Test the output of initial information
+ PRINT*, 'testing init info output...'
+ CALL NEPII(NEID, NPROC, NPROCF, 'S', IERR)
+ IF (IERR.NE.0) THEN
+ PRINT*, '...FAILED'
+ T_FAIL = T_FAIL + 1
+ IF (DBG_FLAG.EQ.1) THEN
+ GOTO 100
+ END IF
+ ELSE
+ PRINT*, '...successful'
+ T_PASS = T_PASS + 1
+ END IF
+
+C Test the output of initial global information
+ PRINT*, 'testing global init info output...'
+ CALL NEPIG(NEID, NNG, NEG, NEBG, NNSG, NSSG, IERR)
+ IF (IERR.NE.0) THEN
+ PRINT*, '...FAILED'
+ T_FAIL = T_FAIL + 1
+ IF (DBG_FLAG.EQ.1) THEN
+ GOTO 100
+ END IF
+ ELSE
+ PRINT*, '...successful'
+ T_PASS = T_PASS + 1
+ END IF
+
+C Test the output of the global element block IDs
+ PRINT*, 'testing global element block ID output...'
+ CALL NETPEBI(NEID, IERR)
+ IF (IERR.NE.0) THEN
+ PRINT*, '...FAILED'
+ T_FAIL = T_FAIL + 1
+ IF (DBG_FLAG.EQ.1) THEN
+ GOTO 100
+ END IF
+ ELSE
+ PRINT*, '...successful'
+ T_PASS = T_PASS + 1
+ END IF
+
+C Test the output of the global node-set info
+ PRINT*, 'testing global node-set params output...'
+ CALL NETPNSP(NEID, IERR)
+ IF (IERR.NE.0) THEN
+ PRINT*, '...FAILED'
+ T_FAIL = T_FAIL + 1
+ IF (DBG_FLAG.EQ.1) THEN
+ GOTO 100
+ END IF
+ ELSE
+ PRINT*, '...successful'
+ T_PASS = T_PASS + 1
+ END IF
+
+C Test the output of the global side-set info
+ PRINT*, 'testing global side-set params output...'
+ CALL NETPSSP(NEID, IERR)
+ IF (IERR.NE.0) THEN
+ PRINT*, '...FAILED'
+ T_FAIL = T_FAIL + 1
+ IF (DBG_FLAG.EQ.1) THEN
+ GOTO 100
+ END IF
+ ELSE
+ PRINT*, '...successful'
+ T_PASS = T_PASS + 1
+ END IF
+
+C Test the output of the concatenated load-balance parameters
+ PRINT*, 'testing concatenated load balance info output...'
+ CALL NETPLBPC(NEID, IERR)
+ IF (IERR.NE.0) THEN
+ PRINT*, '...FAILED'
+ T_FAIL = T_FAIL + 1
+ IF (DBG_FLAG.EQ.1) THEN
+ GOTO 100
+ END IF
+ ELSE
+ PRINT*, '...successful'
+ T_PASS = T_PASS + 1
+ END IF
+
+C Test the output of the node map
+ PRINT*, 'testing node map output...'
+ CALL NETPNM(NEID, IERR)
+ IF (IERR.NE.0) THEN
+ PRINT*, '...FAILED'
+ T_FAIL = T_FAIL + 1
+ IF (DBG_FLAG.EQ.1) THEN
+ GOTO 100
+ END IF
+ ELSE
+ PRINT*, '...successful'
+ T_PASS = T_PASS + 1
+ END IF
+
+C Test the output of the element map
+ PRINT*, 'testing element map output...'
+ CALL NETPEM(NEID, IERR)
+ IF (IERR.NE.0) THEN
+ PRINT*, '...FAILED'
+ T_FAIL = T_FAIL + 1
+ IF (DBG_FLAG.EQ.1) THEN
+ GOTO 100
+ END IF
+ ELSE
+ PRINT*, '...successful'
+ T_PASS = T_PASS + 1
+ END IF
+
+C Test the output of the concatenated communication map params
+ PRINT*, 'testing concatenated communication map params output...'
+ CALL NETPCMPC(NEID, IERR)
+ IF (IERR.NE.0) THEN
+ PRINT*, '...FAILED'
+ T_FAIL = T_FAIL + 1
+ IF (DBG_FLAG.EQ.1) THEN
+ GOTO 100
+ END IF
+ ELSE
+ PRINT*, '...successful'
+ T_PASS = T_PASS + 1
+ END IF
+
+C Test nodal communication map output
+ PRINT*, 'testing nodal communication map output...'
+ CALL NETPNCM(NEID, IERR)
+ IF (IERR.NE.0) THEN
+ PRINT*, '...FAILED'
+ T_FAIL = T_FAIL + 1
+ IF (DBG_FLAG.EQ.1) THEN
+ GOTO 100
+ END IF
+ ELSE
+ PRINT*, '...successful'
+ T_PASS = T_PASS + 1
+ END IF
+
+C Test elemental communication map output
+ PRINT*, 'testing elemental communication map output...'
+ CALL NETPECM(NEID, IERR)
+ IF (IERR.NE.0) THEN
+ PRINT*, '...FAILED'
+ T_FAIL = T_FAIL + 1
+ IF (DBG_FLAG.EQ.1) THEN
+ GOTO 100
+ END IF
+ ELSE
+ PRINT*, '...successful'
+ T_PASS = T_PASS + 1
+ END IF
+
+C Close the ExodusII/Nemesis test file
+ PRINT*, 'closing ExodusII file...'
+ CALL EXCLOS(NEID, IERR)
+ IF (IERR.NE.0) THEN
+ PRINT*, '...FAILED'
+ T_FAIL = T_FAIL + 1
+ PRINT*, YO, ': ERROR, unable to close test file', FNAME, '!'
+ GOTO 100
+ ELSE
+ PRINT*, '...successful'
+ T_PASS = T_PASS + 1
+ END IF
+
+C=================================================================
+C INPUT TEST SECTION
+C=================================================================
+
+ PRINT*, '******************Input Tests******************'
+
+C Re-open the ExodusII/NemesisI file
+ PRINT*, 'reopening ExodusII file...'
+ NEID = EXOPEN(FNAME, EXREAD, CPU_WS, IO_WS, VERSION, IERR)
+ IF (IERR.NE.0) THEN
+ PRINT*, '...FAILED'
+ T_FAIL = T_FAIL + 1
+ PRINT*, YO, ': ERROR, unable to open test file', FNAME, '!'
+ GOTO 100
+ ELSE
+ PRINT*, '...successful'
+ T_PASS = T_PASS + 1
+ END IF
+
+C Test read of of the initial information
+ PRINT*, 'testing init info input...'
+ CALL NETGII(NEID, IERR)
+ IF (IERR.NE.0) THEN
+ PRINT*, '...FAILED'
+ T_FAIL = T_FAIL + 1
+ IF (DBG_FLAG.EQ.1) THEN
+ GOTO 100
+ END IF
+ ELSE
+ PRINT*, '...successful'
+ T_PASS = T_PASS + 1
+ END IF
+
+C Test read of initial global information
+ PRINT*, 'testing global init info input...'
+ CALL NETGIG(NEID, IERR)
+ IF (IERR.NE.0) THEN
+ PRINT*, '...FAILED'
+ T_FAIL = T_FAIL + 1
+ IF (DBG_FLAG.EQ.1) THEN
+ GOTO 100
+ END IF
+ ELSE
+ PRINT*, '...successful'
+ T_PASS = T_PASS + 1
+ END IF
+
+C Test read of global element block IDs
+ PRINT*, 'testing global element block IDs input...'
+ CALL NETGEBI(NEID, IERR)
+ IF (IERR.NE.0) THEN
+ PRINT*, '...FAILED'
+ T_FAIL = T_FAIL + 1
+ IF (DBG_FLAG.EQ.1) THEN
+ GOTO 100
+ END IF
+ ELSE
+ PRINT*, '...successful'
+ T_PASS = T_PASS + 1
+ END IF
+
+C Test read of global node-set params
+ PRINT*, 'testing global node-set params input...'
+ CALL NETGNSP(NEID, IERR)
+ IF (IERR.NE.0) THEN
+ PRINT*, '...FAILED'
+ T_FAIL = T_FAIL + 1
+ IF (DBG_FLAG.EQ.1) THEN
+ GOTO 100
+ END IF
+ ELSE
+ PRINT*, '...successful'
+ T_PASS = T_PASS + 1
+ END IF
+
+C Test read of global side-set params
+ PRINT*, 'testing global side-set params input...'
+ CALL NETGSSP(NEID, IERR)
+ IF (IERR.NE.0) THEN
+ PRINT*, '...FAILED'
+ T_FAIL = T_FAIL + 1
+ IF (DBG_FLAG.EQ.1) THEN
+ GOTO 100
+ END IF
+ ELSE
+ PRINT*, '...successful'
+ T_PASS = T_PASS + 1
+ END IF
+
+C Test read of load-balance params
+ PRINT*, 'testing load-balance params input...'
+ CALL NETGLBP(NEID, IERR)
+ IF (IERR.NE.0) THEN
+ PRINT*, '...FAILED'
+ T_FAIL = T_FAIL + 1
+ IF (DBG_FLAG.EQ.1) THEN
+ GOTO 100
+ END IF
+ ELSE
+ PRINT*, '...successful'
+ T_PASS = T_PASS + 1
+ END IF
+
+C Test read of the node map
+ PRINT*, 'testing node map input...'
+ CALL NETGNM(NEID, IERR)
+ IF (IERR.NE.0) THEN
+ PRINT*, '...FAILED'
+ T_FAIL = T_FAIL + 1
+ IF (DBG_FLAG.EQ.1) THEN
+ GOTO 100
+ END IF
+ ELSE
+ PRINT*, '...successful'
+ T_PASS = T_PASS + 1
+ END IF
+
+C Test read of the element map
+ PRINT*, 'testing element map input...'
+ CALL NETGEM(NEID, IERR)
+ IF (IERR.NE.0) THEN
+ PRINT*, '...FAILED'
+ T_FAIL = T_FAIL + 1
+ IF (DBG_FLAG.EQ.1) THEN
+ GOTO 100
+ END IF
+ ELSE
+ PRINT*, '...successful'
+ T_PASS = T_PASS + 1
+ END IF
+
+C Test read of nodal communication maps
+ PRINT*, 'testing nodal communication map input...'
+ CALL NETGNCM(NEID, IERR)
+ IF (IERR.NE.0) THEN
+ PRINT*, '...FAILED'
+ T_FAIL = T_FAIL + 1
+ IF (DBG_FLAG.EQ.1) THEN
+ GOTO 100
+ END IF
+ ELSE
+ PRINT*, '...successful'
+ T_PASS = T_PASS + 1
+ END IF
+
+C Test read of elemental communication maps
+ PRINT*, 'testing elemental communication map input...'
+ CALL NETGECM(NEID, IERR)
+ IF (IERR.NE.0) THEN
+ PRINT*, '...FAILED'
+ T_FAIL = T_FAIL + 1
+ IF (DBG_FLAG.EQ.1) THEN
+ GOTO 100
+ END IF
+ ELSE
+ PRINT*, '...successful'
+ T_PASS = T_PASS + 1
+ END IF
+
+C Close the ExodusII/Nemesis test file
+ PRINT*, 'closing ExodusII file...'
+ CALL EXCLOS(NEID, IERR)
+ IF (IERR.NE.0) THEN
+ PRINT*, '...FAILED'
+ T_FAIL = T_FAIL + 1
+ PRINT*, YO, ': ERROR, unable to close test file', FNAME, '!'
+ GOTO 100
+ ELSE
+ PRINT*, '...successful'
+ T_PASS = T_PASS + 1
+ END IF
+
+ PRINT*, 'Tests Passed: ', T_PASS
+ PRINT*, 'Tests Failed: ', T_FAIL
+
+ 100 CONTINUE
+ END
+
+C=================================================================
+ SUBROUTINE NETPEBI(NEID, IERR)
+C=================================================================
+
+ INCLUDE 'ne_test.inc'
+
+ INTEGER I, EBLK_IDS(NEBG)
+ INTEGER EBLK_CNTS(NEBG)
+
+ DO 110 I=1,NEBG
+ EBLK_IDS(I) = I
+ EBLK_CNTS(I) = 10
+ 110 CONTINUE
+
+ CALL NEPEBIG(NEID, EBLK_IDS, EBLK_CNTS, IERR)
+
+ END
+
+C=================================================================
+ SUBROUTINE NETPNSP(NEID, IERR)
+C=================================================================
+
+ INCLUDE 'ne_test.inc'
+
+ INTEGER I, GLBL_IDS(NNSG), GLBL_NC(NNSG), GLBL_DFC(NNSG)
+
+ DO 120 I = 1,NNSG
+ GLBL_IDS(I) = 2 * I
+ GLBL_NC(I) = 3 * I
+ GLBL_DFC(I) = 1
+ 120 CONTINUE
+
+ CALL NEPNSPG(NEID, GLBL_IDS, GLBL_NC, GLBL_DFC, IERR)
+
+ END
+
+C=================================================================
+ SUBROUTINE NETPSSP(NEID, IERR)
+C=================================================================
+
+ INCLUDE 'ne_test.inc'
+
+ INTEGER I, GLBL_IDS(NSSG), GLBL_ELC(NSSG), GLBL_DFC(NSSG)
+
+ DO 130 I = 1,NSSG
+ GLBL_IDS(I) = 3 * I
+ GLBL_ELC(I) = 2 * I
+ GLBL_DFC(I) = 1
+ 130 CONTINUE
+
+ CALL NEPSSPG(NEID, GLBL_IDS, GLBL_ELC, GLBL_DFC, IERR)
+
+ END
+
+C=================================================================
+ SUBROUTINE NETPLBPC(NEID, IERR)
+C=================================================================
+
+ INCLUDE 'ne_test.inc'
+
+ INTEGER IPROC, NUM_IN(NPROCF), NUM_BN(NPROCF), NUM_EN(NPROCF),
+ 1 NUM_IE(NPROCF), NUM_BE(NPROCF), NUM_NCM(NPROCF), NUM_ECM(NPROCF)
+
+ DO 140 IPROC = 1,NPROCF
+ NUM_IN(IPROC) = NINTN
+ NUM_BN(IPROC) = NBORN
+ NUM_EN(IPROC) = NEXTN
+
+ NUM_IE(IPROC) = NINTE
+ NUM_BE(IPROC) = NBORE
+
+ NUM_NCM(IPROC) = NNCMAP
+ NUM_ECM(IPROC) = NECMAP
+ 140 CONTINUE
+
+ CALL NEPLBPC(NEID, NUM_IN, NUM_BN, NUM_EN, NUM_IE, NUM_BE,
+ 1 NUM_NCM, NUM_ECM, IERR)
+
+ END
+
+C=================================================================
+ SUBROUTINE NETPNM(NEID, IERR)
+C=================================================================
+
+ INCLUDE 'ne_test.inc'
+
+ INTEGER IPROC, I, J, NMAPI(NINTN), NMAPB(NBORN), NMAPE(NEXTN)
+
+ I = 0
+ DO 200 IPROC = 0,(NPROCF-1)
+ DO 150 J = 1,NINTN
+ NMAPI(J) = I
+ I = I + 1
+ 150 CONTINUE
+ DO 160 J = 1,NBORN
+ NMAPB(J) = I
+ I = I + 1
+ 160 CONTINUE
+ DO 170 J = 1,NEXTN
+ NMAPE(J) = I
+ I = I + 1
+ 170 CONTINUE
+
+ I = 0
+
+ CALL NEPNM(NEID, NMAPI, NMAPB, NMAPE, IPROC, IERR)
+ IF (IERR.NE.0) GOTO 210
+
+ 200 CONTINUE
+
+ 210 CONTINUE
+ END
+
+C=================================================================
+ SUBROUTINE NETPEM(NEID, IERR)
+C=================================================================
+
+ INCLUDE 'ne_test.inc'
+
+ INTEGER IPROC, I, J, EMAPI(NINTE), EMAPB(NBORE)
+
+ I = 0
+ DO 200 IPROC = 0,(NPROCF-1)
+ DO 150 J = 1,NINTE
+ EMAPI(J) = I
+ I = I + 1
+ 150 CONTINUE
+ DO 160 J = 1,NBORE
+ EMAPB(J) = I
+ I = I + 1
+ 160 CONTINUE
+
+ I = 0
+
+ CALL NEPEM(NEID, EMAPI, EMAPB, IPROC, IERR)
+ IF (IERR.NE.0) GOTO 210
+
+ 200 CONTINUE
+
+ 210 CONTINUE
+ END
+
+C=================================================================
+ SUBROUTINE NETPCMPC(NEID, IERR)
+C=================================================================
+
+ INCLUDE 'ne_test.inc'
+
+ INTEGER IPROC, I, NCNTR, ECNTR, NMAPIDS(NNCXNPF),
+ 1 NMAPCNT(NNCXNPF), NMAPPROC(NPROCF+1), EMAPIDS(NECXNPF),
+ 1 EMAPCNT(NECXNPF), EMAPPROC(NPROCF+1)
+
+ NMAPPROC(1) = 0
+ EMAPPROC(1) = 0
+ NCNTR = 1
+ ECNTR = 1
+ DO 200 IPROC = 1,NPROCF
+ DO 150 I = 1,NNCMAP
+ NMAPIDS(NCNTR) = I
+ NMAPCNT(NCNTR) = NCNTCM
+ NCNTR = NCNTR + 1
+ 150 CONTINUE
+ DO 160 I = 1,NECMAP
+ EMAPIDS(ECNTR) = 2*I
+ EMAPCNT(ECNTR) = ECNTCM
+ ECNTR = ECNTR + 1
+ 160 CONTINUE
+
+ NMAPPROC(IPROC+1) = NMAPPROC(IPROC) + NNCMAP
+ EMAPPROC(IPROC+1) = EMAPPROC(IPROC) + NECMAP
+
+ 200 CONTINUE
+
+ CALL NEPCMPC(NEID, NMAPIDS, NMAPCNT, NMAPPROC, EMAPIDS, EMAPCNT,
+ 1 EMAPPROC, IERR)
+
+ END
+
+C=================================================================
+ SUBROUTINE NETPNCM(NEID, IERR)
+C=================================================================
+
+ INCLUDE 'ne_test.inc'
+
+ INTEGER IPROC, I, NMAPIDS(NNCMAP), NIDS(NCNTCM), PIDS(NCNTCM)
+
+ DO 200 IPROC = 0,(NPROCF-1)
+ DO 150 I = 1,NNCMAP
+ NMAPIDS(I) = I
+ 150 CONTINUE
+ DO 160 I = 1,NCNTCM
+ NIDS(I) = 2*I
+ PIDS(I) = 3*I
+ 160 CONTINUE
+
+ DO 170 I=1,NNCMAP
+ CALL NEPNCM(NEID, NMAPIDS(I), NIDS, PIDS, IPROC, IERR)
+ IF (IERR.NE.0) GOTO 210
+ 170 CONTINUE
+
+ 200 CONTINUE
+
+ 210 CONTINUE
+ END
+
+C=================================================================
+ SUBROUTINE NETPECM(NEID, IERR)
+C=================================================================
+
+ INCLUDE 'ne_test.inc'
+
+ INTEGER IPROC, I, EMAPIDS(NECMAP), EIDS(ECNTCM), PIDS(ECNTCM),
+ 1 SIDS(ECNTCM)
+
+ DO 200 IPROC = 0,(NPROCF-1)
+ DO 150 I = 1,NECMAP
+ EMAPIDS(I) = 2*I
+ 150 CONTINUE
+ DO 160 I = 1,ECNTCM
+ EIDS(I) = 2*I
+ SIDS(I) = 3*I
+ PIDS(I) = 4*I
+ 160 CONTINUE
+
+ DO 170 I=1,NECMAP
+ CALL NEPECM(NEID, EMAPIDS(I), EIDS, SIDS, PIDS, IPROC, IERR)
+ IF (IERR.NE.0) GOTO 210
+ 170 CONTINUE
+
+ 200 CONTINUE
+
+ 210 CONTINUE
+ END
+
+C=================================================================
+ SUBROUTINE NETGII(NEID, IERR)
+C=================================================================
+
+ INCLUDE 'ne_test.inc'
+
+ INTEGER NP, NPF
+ CHARACTER FTYPE*2
+
+ CALL NEGII(NEID, NP, NPF, FTYPE, IERR)
+
+ IF (IERR.NE.0) GOTO 210
+
+ IF (NP.NE.NPROC) IERR = -1
+ IF (NPF.NE.NPROCF) IERR = -1
+ IF (NP.NE.NPROC) IERR = -1
+
+ 210 CONTINUE
+ END
+
+C=================================================================
+ SUBROUTINE NETGIG(NEID, IERR)
+C=================================================================
+
+ INCLUDE 'ne_test.inc'
+
+ INTEGER NUMNG, NUMEG, NUMEBG, NUMNSG, NUMSSG
+
+ CALL NEGIG(NEID, NUMNG, NUMEG, NUMEBG, NUMNSG, NUMSSG, IERR)
+
+ IF (IERR.NE.0) GOTO 210
+
+ IF (NUMNG.NE.NNG) IERR = -1
+ IF (NUMEG.NE.NEG) IERR = -1
+ IF (NUMEBG.NE.NEBG) IERR = -1
+ IF (NUMNSG.NE.NNSG) IERR = -1
+ IF (NUMSSG.NE.NSSG) IERR = -1
+
+ 210 CONTINUE
+ END
+
+C=================================================================
+ SUBROUTINE NETGEBI(NEID, IERR)
+C=================================================================
+
+ INCLUDE 'ne_test.inc'
+
+ INTEGER I, EBLK_IDS(NEBG)
+ INTEGER EBLK_CNTS(NEBG)
+
+ CALL NEGEBIG(NEID, EBLK_IDS, EBLK_CNTS, IERR)
+
+ IF (IERR.NE.0) GOTO 210
+
+ DO 150 I=1,NEBG
+ IF (EBLK_IDS(I).NE.I) IERR = -1
+ IF (EBLK_CNTS(I) .NE. 10) IERR = -1
+ 150 CONTINUE
+
+ 210 CONTINUE
+ END
+
+C=================================================================
+ SUBROUTINE NETGNSP(NEID, IERR)
+C=================================================================
+
+ INCLUDE 'ne_test.inc'
+
+ INTEGER I, GLBL_IDS(NNSG), GLBL_NC(NNSG), GLBL_DFC(NNSG)
+
+ CALL NEGNSPG(NEID, GLBL_IDS, GLBL_NC, GLBL_DFC, IERR)
+
+ IF (IERR.NE.0) GOTO 210
+
+ DO 150 I=1,NNSG
+ IF (GLBL_IDS(I).NE.(2*I)) IERR = -1
+ IF (GLBL_NC(I).NE.(3*I)) IERR = -1
+ IF (GLBL_DFC(I).NE.1) IERR = -1
+ 150 CONTINUE
+
+ 210 CONTINUE
+ END
+
+C=================================================================
+ SUBROUTINE NETGSSP(NEID, IERR)
+C=================================================================
+
+ INCLUDE 'ne_test.inc'
+
+ INTEGER I, GLBL_IDS(NSSG), GLBL_EC(NSSG), GLBL_DFC(NSSG)
+
+ CALL NEGSSPG(NEID, GLBL_IDS, GLBL_EC, GLBL_DFC, IERR)
+
+ IF (IERR.NE.0) GOTO 210
+
+ DO 150 I=1,NNSG
+ IF (GLBL_IDS(I).NE.(3*I)) IERR = -1
+ IF (GLBL_EC(I).NE.(2*I)) IERR = -1
+ IF (GLBL_DFC(I).NE.1) IERR = -1
+ 150 CONTINUE
+
+ 210 CONTINUE
+ END
+
+C=================================================================
+ SUBROUTINE NETGLBP(NEID, IERR)
+C=================================================================
+
+ INCLUDE 'ne_test.inc'
+
+ INTEGER IPROC, NUM_IN, NUM_BN, NUM_EN, NUM_IE, NUM_BE,
+ * NUM_NCM, NUM_ECM
+
+ DO 150 IPROC = 0,(NPROCF-1)
+ CALL NEGLBP(NEID, NUM_IN, NUM_BN, NUM_EN, NUM_IE, NUM_BE,
+ 1 NUM_NCM, NUM_ECM, IPROC, IERR)
+
+ IF (IERR.NE.0) GOTO 210
+
+ IF(NUM_IN.NE.NINTN) IERR = -1
+ IF(NUM_BN.NE.NBORN) IERR = -1
+ IF(NUM_EN.NE.NEXTN) IERR = -1
+ IF(NUM_IE.NE.NINTE) IERR = -1
+ IF(NUM_BE.NE.NBORE) IERR = -1
+ IF(NUM_NCM.NE.NNCMAP) IERR = -1
+ IF(NUM_ECM.NE.NECMAP) IERR = -1
+ 150 CONTINUE
+
+ 210 CONTINUE
+ END
+
+C=================================================================
+ SUBROUTINE NETGNM(NEID, IERR)
+C=================================================================
+
+ INCLUDE 'ne_test.inc'
+
+ INTEGER IPROC, I, J, NMAPI(NINTN), NMAPB(NBORN), NMAPE(NEXTN)
+
+ I = 0
+ DO 200 IPROC = 0,(NPROCF-1)
+
+ CALL NEGNM(NEID, NMAPI, NMAPB, NMAPE, IPROC, IERR)
+
+ IF (IERR.NE.0) GOTO 210
+
+ DO 150 J = 1,NINTN
+ IF (NMAPI(J).NE.I) ERR = -1
+ I = I + 1
+ 150 CONTINUE
+ DO 160 J = 1,NBORN
+ IF (NMAPB(J).NE.I) ERR = -1
+ I = I + 1
+ 160 CONTINUE
+ DO 170 J = 1,NEXTN
+ IF (NMAPE(J).NE.I) ERR = -1
+ I = I + 1
+ 170 CONTINUE
+
+ I = 0
+
+ IF (IERR.NE.0) GOTO 210
+
+ 200 CONTINUE
+
+ 210 CONTINUE
+ END
+
+C=================================================================
+ SUBROUTINE NETGEM(NEID, IERR)
+C=================================================================
+
+ INCLUDE 'ne_test.inc'
+
+ INTEGER IPROC, I, J, EMAPI(NINTE), EMAPB(NBORE)
+
+ I = 0
+ DO 200 IPROC = 0,(NPROCF-1)
+ CALL NEGEM(NEID, EMAPI, EMAPB, IPROC, IERR)
+
+ IF (IERR.NE.0) GOTO 210
+
+ DO 150 J = 1,NINTE
+ IF (EMAPI(J).NE.I) ERR = -1
+ I = I + 1
+ 150 CONTINUE
+ DO 160 J = 1,NBORE
+ IF (EMAPB(J).NE.I) ERR = -1
+ I = I + 1
+ 160 CONTINUE
+
+ I = 0
+
+ IF (IERR.NE.0) GOTO 210
+
+ 200 CONTINUE
+
+ 210 CONTINUE
+ END
+
+C=================================================================
+ SUBROUTINE NETGNCM(NEID, IERR)
+C=================================================================
+
+ INCLUDE 'ne_test.inc'
+
+ INTEGER IPROC, I, J, NMAPIDS(NNCMAP), NMAPCNT(NNCMAP),
+ 1 NIDS(NCNTCM), PIDS(NCNTCM), EMAPIDS(NECMAP), EMAPCNT(NECMAP)
+
+ DO 200 IPROC = 0,(NPROCF-1)
+ CALL NEGCMP(NEID, NMAPIDS, NMAPCNT, EMAPIDS, EMAPCNT,
+ 1 IPROC, IERR)
+
+ IF (IERR.NE.0) GOTO 210
+
+ DO 170 I = 1,NNCMAP
+ CALL NEGNCM(NEID, NMAPIDS(I), NIDS, PIDS, IPROC, IERR)
+
+ IF (IERR.NE.0) GOTO 210
+
+ IF (NMAPIDS(I).NE.I) IERR = -1
+ DO 160 J = 1,NCNTCM
+ IF (NIDS(J).NE.2*J) IERR = -1
+ IF (PIDS(J).NE.3*J) IERR = -1
+ 160 CONTINUE
+
+ IF (IERR.NE.0) GOTO 210
+ 170 CONTINUE
+
+ 200 CONTINUE
+
+ 210 CONTINUE
+ END
+
+C=================================================================
+ SUBROUTINE NETGECM(NEID, IERR)
+C=================================================================
+
+ INCLUDE 'ne_test.inc'
+
+ INTEGER IPROC, I, EMAPIDS(NECMAP), EMAPCNT(NECMAP), EIDS(ECNTCM),
+ 1 PIDS(ECNTCM), SIDS(ECNTCM), NMAPIDS(NNCMAP), NMAPCNT(NNCMAP)
+
+ DO 200 IPROC = 0,(NPROCF-1)
+ CALL NEGCMP(NEID, NMAPIDS, NMAPCNT, EMAPIDS, EMAPCNT,
+ 1 IPROC, IERR)
+
+ IF (IERR.NE.0) GOTO 210
+
+ DO 170 I = 1,NECMAP
+ CALL NEGECM(NEID, EMAPIDS(I), EIDS, SIDS, PIDS, IPROC, IERR)
+
+ IF (IERR.NE.0) GOTO 210
+
+ IF (EMAPIDS(I).NE.(2*I)) IERR = -1
+ DO 160 J = 1,ECNTCM
+ IF (EIDS(J).NE.2*J) IERR = -1
+ IF (SIDS(J).NE.3*J) IERR = -1
+ IF (PIDS(J).NE.4*J) IERR = -1
+ 160 CONTINUE
+
+ IF (IERR.NE.0) GOTO 210
+ 170 CONTINUE
+
+ 200 CONTINUE
+
+ 210 CONTINUE
+ END
+
diff --git a/nemesis/forbind/ne_test.inc b/nemesis/forbind/ne_test.inc
new file mode 100644
index 0000000..0f033a1
--- /dev/null
+++ b/nemesis/forbind/ne_test.inc
@@ -0,0 +1,66 @@
+C Copyright (c) 1998 Sandia Corporation. Under the terms of Contract
+C DE-AC04-94AL85000 with Sandia Corporation, the U.S. Governement
+C retains certain rights in this software.
+C
+C Redistribution and use in source and binary forms, with or without
+C modification, are permitted provided that the following conditions are
+C met:
+C
+C * Redistributions of source code must retain the above copyright
+C notice, this list of conditions and the following disclaimer.
+C
+C * Redistributions in binary form must reproduce the above
+C copyright notice, this list of conditions and the following
+C disclaimer in the documentation and/or other materials provided
+C with the distribution.
+C
+C * Neither the name of Sandia Corporation nor the names of its
+C contributors may be used to endorse or promote products derived
+C from this software without specific prior written permission.
+C
+C THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+C "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+C LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+C A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+C OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+C SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+C LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+C DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+C THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+C (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+C OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+C
+C==================================================
+C Parameters for the NE_TEST fortran interface test
+C program
+C==================================================
+
+C Constants for init_global functions
+ PARAMETER (NNG = 100)
+ PARAMETER (NEG = 50)
+ PARAMETER (NEBG = 5)
+ PARAMETER (NNSG = 2)
+ PARAMETER (NSSG = 3)
+
+C Constants for load-balance functions
+ PARAMETER (NPROC = 10)
+ PARAMETER (NPROCF = NPROC)
+ PARAMETER (NINTN = 200)
+ PARAMETER (NBORN = 10)
+ PARAMETER (NEXTN = 5)
+ PARAMETER (NINTE = 100)
+ PARAMETER (NBORE = 20)
+ INTEGER NNCMAP, NECMAP
+ PARAMETER (NNCMAP = 4)
+ PARAMETER (NECMAP = 2)
+
+C Constants for communication map
+ PARAMETER (NCNTCM = 20)
+ INTEGER ECNTCM
+ PARAMETER (ECNTCM = 17)
+
+C Some multiplied values
+C NNCMAP * NPROCF
+ PARAMETER (NNCXNPF = 40)
+C NECMAP * NPROCF
+ PARAMETER (NECXNPF = 20)
diff --git a/nemesis/ne_ctest_wrap.c b/nemesis/ne_ctest_wrap.c
new file mode 100644
index 0000000..ccc33be
--- /dev/null
+++ b/nemesis/ne_ctest_wrap.c
@@ -0,0 +1,1044 @@
+/*
+ * Copyright (c) 1998 Sandia Corporation. Under the terms of Contract
+ * DE-AC04-94AL85000 with Sandia Corporation, the U.S. Governement
+ * retains certain rights in this software.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ *
+ * * Neither the name of Sandia Corporation nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+/*****************************************************************************/
+/*****************************************************************************/
+/*****************************************************************************/
+/* This file contains the source code for the program used to test the
+ * Nemesis distribution.
+ *****************************************************************************
+ * Written By: Gary L. Hennigan (SNL, 1421)
+ *****************************************************************************
+ * Functions contained in this file:
+ * main() - Entry point and main calling program.
+ */
+/*****************************************************************************/
+/*****************************************************************************/
+/*****************************************************************************/
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <exodusII.h>
+
+#include "ne_nemesisI.h"
+
+/* Constants for init_global functions */
+#define NNG 100
+#define NEG 50
+#define NEBG 5
+#define NEBCG 10
+#define NNSG 2
+#define NSSG 3
+
+/* Constants for load-balance functions */
+#define NPROC 10
+#define NPROCF NPROC
+#define NINTN 200
+#define NBORN 10
+#define NEXTN 5
+#define NINTE 100
+#define NBORE 20
+#define NNCMAP 4
+#define NECMAP 2
+
+/* Constants for communication map */
+#define NCNTCM 20
+#define ECNTCM 17
+
+int main(int argc, char *argv[])
+{
+
+ /* Local function calls */
+ int ne_test_glbp(int);
+ int ne_test_piinf(int);
+ int ne_test_pinig(int);
+ int ne_test_pelbid(int);
+ int ne_test_pnsp(int);
+ int ne_test_pssp(int);
+ int ne_test_pnm(int);
+ int ne_test_pem(int);
+ int ne_test_pcmp(int);
+ int ne_test_pncm(int);
+ int ne_test_pecm(int);
+
+ int ne_test_giinf(int);
+ int ne_test_ginig(int);
+ int ne_test_gelbid(int);
+ int ne_test_gnsp(int);
+ int ne_test_gssp(int);
+ int ne_test_gnm(int);
+ int ne_test_gem(int);
+ int ne_test_gncm(int);
+ int ne_test_gecm(int);
+
+ int ne_test_plbpc(int);
+ int ne_test_pcmpc(int);
+
+ /* Unitialized local variables */
+ int ne_file_id;
+ char test_direc[256], file_name[256];
+ float version;
+
+ /* Initialized local variables */
+ int mode3 = EX_CLOBBER;
+ int mode4 = EX_CLOBBER|EX_NETCDF4|EX_NOCLASSIC;
+
+ char *yo="main";
+ int io_ws=0, cpu_ws=0, t_pass=0, t_fail=0;
+ int debug_flag=0;
+
+/*-----------------------------Execution Begins-----------------------------*/
+
+ /* Get the location of the temporary file to use for the test */
+ if (argc <= 1) {
+ /* Nothing specified. Use defaults. */
+ strcpy(file_name, "./ne_test.exoII");
+ }
+ else if (argc == 2) {
+ /* Test for the help flag */
+ if (strcmp(argv[1], "-h") == 0 || strcmp(argv[1], "-?") == 0) {
+ /* Output the help line */
+ printf("Usage:\n\tne_test <optional directory> <optional file name>\n");
+ exit(0);
+ }
+ /* Test for the debug flag */
+ else if (strcmp(argv[1], "-d") == 0 || strcmp(argv[1], "-d") == 0) {
+ printf("****DEBUG MODE****\n");
+ ex_opts(EX_VERBOSE | EX_DEBUG);
+ strcpy(file_name, "./ne_test.exoII");
+ debug_flag = 1;
+ }
+ /* Else get the directory name and assign default name */
+ else {
+ strcpy(test_direc, argv[1]);
+ if (test_direc[strlen(test_direc)-1] != '/') {
+ strcpy(file_name, test_direc);
+ strcat(file_name, "/ne_test.exoII");
+ }
+ else {
+ strcpy(file_name, test_direc);
+ strcat(file_name, "ne_test.exoII");
+ }
+ }
+ }
+ else if (argc == 3) {
+ /* Both directory and file name specified */
+ strcpy(test_direc, argv[1]);
+ if (test_direc[strlen(test_direc)-1] == '/') {
+ strcpy(file_name, test_direc);
+ strcat(file_name, "/");
+ strcat(file_name, argv[2]);
+ }
+ else {
+ strcpy(file_name, test_direc);
+ strcat(file_name, argv[2]);
+ }
+ }
+
+/*---------------------------------------------------------------------------*/
+/* OUTPUT TEST SECTION */
+/*---------------------------------------------------------------------------*/
+
+ printf("*********************Output Tests***********************\n");
+
+ /* Create the ExodusII/Nemesis file */
+ printf("creating ExodusII file..."); fflush(stdout);
+
+ /* Attempt to create a netcdf4-format file; if it fails, then assume
+ that the netcdf library does not support that mode and fall back
+ to classic netcdf3 format. If that fails, issue an error and
+ die.
+ */
+ if ((ne_file_id=ex_create(file_name, mode4, &cpu_ws, &io_ws)) < 0) {
+ /* netcdf4 create failed, try netcdf3 */
+ if ((ne_file_id=ex_create(file_name, mode3, &cpu_ws, &io_ws)) < 0) {
+ printf("FAILED\n");
+ t_fail++;
+ fprintf(stderr, "[%s]: ERROR, unable to create test file \"%s\"!\n",
+ yo, file_name);
+ exit(-1);
+ } else {
+ printf(" (netcdf3 format) ");
+ }
+ } else {
+ printf(" (netcdf4 format) ");
+ }
+ printf("successful\n"); fflush(stdout);
+ t_pass++;
+
+ /* Test the output of initial information */
+ printf("testing init info output..."); fflush(stdout);
+ if (ne_test_piinf(ne_file_id) < 0) {
+ printf("FAILED\n"); fflush(stdout);
+ t_fail++;
+ if (debug_flag == 1)
+ return 1;
+ }
+ else {
+ printf("successful\n"); fflush(stdout);
+ t_pass++;
+ }
+
+ /* Test the output of initial global information */
+ printf("testing global init info output..."); fflush(stdout);
+ if (ne_test_pinig(ne_file_id) < 0) {
+ printf("FAILED\n"); fflush(stdout);
+ t_fail++;
+ if (debug_flag == 1)
+ return 1;
+ }
+ else {
+ printf("successful\n"); fflush(stdout);
+ t_pass++;
+ }
+
+ /* Test the output of the global element block IDs */
+ printf("testing global element block ID output..."); fflush(stdout);
+ if (ne_test_pelbid(ne_file_id) < 0) {
+ printf("FAILED\n"); fflush(stdout);
+ t_fail++;
+ if (debug_flag == 1)
+ return 1;
+ }
+ else {
+ printf("successful\n"); fflush(stdout);
+ t_pass++;
+ }
+
+ /* Test the output of the global node-set info */
+ printf("testing global node-set params output..."); fflush(stdout);
+ if (ne_test_pnsp(ne_file_id) < 0) {
+ printf("FAILED\n"); fflush(stdout);
+ t_fail++;
+ if (debug_flag == 1)
+ return 1;
+ }
+ else {
+ printf("successful\n"); fflush(stdout);
+ t_pass++;
+ }
+
+ /* Test the output of the global side-set info */
+ printf("testing global side-set params output..."); fflush(stdout);
+ if (ne_test_pssp(ne_file_id) < 0) {
+ printf("FAILED\n"); fflush(stdout);
+ t_fail++;
+ if (debug_flag == 1)
+ return 1;
+ }
+ else {
+ printf("successful\n"); fflush(stdout);
+ t_pass++;
+ }
+
+ /* Test the output of the concatenated load-balance parameters */
+ printf("testing concatenated load balance info output...");
+ fflush(stdout);
+ if (ne_test_plbpc(ne_file_id) < 0) {
+ printf("FAILED\n"); fflush(stdout);
+ }
+ else {
+ printf("succesful\n"); fflush(stdout);
+ }
+
+ /* Test the output of the node map */
+ printf("testing node map output..."); fflush(stdout);
+ if (ne_test_pnm(ne_file_id) < 0) {
+ printf("FAILED\n"); fflush(stdout);
+ t_fail++;
+ if (debug_flag == 1)
+ return 1;
+ }
+ else {
+ printf("successful\n"); fflush(stdout);
+ t_pass++;
+ }
+
+ /* Test the output of the element map */
+ printf("testing element map output..."); fflush(stdout);
+ if (ne_test_pem(ne_file_id) < 0) {
+ printf("FAILED\n"); fflush(stdout);
+ t_fail++;
+ if (debug_flag == 1)
+ return 1;
+ }
+ else {
+ printf("successful\n"); fflush(stdout);
+ t_pass++;
+ }
+
+ /* Test the output of the concatenated communication map params */
+ printf("testing concatenated communication map params output...");
+ fflush(stdout);
+ if (ne_test_pcmpc(ne_file_id) < 0) {
+ printf("FAILED\n"); fflush(stdout);
+ t_fail++;
+ if (debug_flag == 1)
+ return 1;
+ }
+ else {
+ printf("successful\n"); fflush(stdout);
+ t_pass++;
+ }
+
+ /* Test nodal communication map output */
+ printf("testing nodal communication map output..."); fflush(stdout);
+ if (ne_test_pncm(ne_file_id) < 0) {
+ printf("FAILED\n"); fflush(stdout);
+ t_fail++;
+ if (debug_flag == 1)
+ return 1;
+ }
+ else {
+ printf("successful\n"); fflush(stdout);
+ t_pass++;
+ }
+
+ /* Test elemental communication map output */
+ printf("testing elemental communication map output..."); fflush(stdout);
+ if (ne_test_pecm(ne_file_id) < 0) {
+ printf("FAILED\n"); fflush(stdout);
+ t_fail++;
+ if (debug_flag == 1)
+ return 1;
+ }
+ else {
+ printf("successful\n"); fflush(stdout);
+ t_pass++;
+ }
+
+ /* Close the ExodusII/Nemesis test file */
+ printf("closing ExodusII file..."); fflush(stdout);
+ if (ex_close(ne_file_id) < 0) {
+ printf("FAILED\n"); fflush(stdout);
+ t_fail++;
+ if (debug_flag == 1)
+ return 1;
+ fprintf(stderr, "[%s]: ERROR, unable to close test file \"%s\"!\n",
+ yo, file_name);
+ exit(-1);
+ }
+ printf("successful\n"); fflush(stdout);
+ t_pass++;
+
+/*---------------------------------------------------------------------------*/
+/* INPUT TEST SECTION */
+/*---------------------------------------------------------------------------*/
+
+ printf("**********************Input Tests***********************\n");
+
+ /* Re-open the ExodusII/NemesisI file */
+ printf("reopening ExodusII file..."); fflush(stdout);
+ if (ex_open(file_name, EX_READ, &cpu_ws, &io_ws, &version) < 0) {
+ printf("FAILED\n"); fflush(stdout);
+ t_fail++;
+ if (debug_flag == 1)
+ return 1;
+ }
+ else {
+ printf("successful\n"); fflush(stdout);
+ t_pass++;
+ }
+
+ /* Test read of of the initial information */
+ printf("testing init info input..."); fflush(stdout);
+ if (ne_test_giinf(ne_file_id) < 0) {
+ printf("FAILED\n"); fflush(stdout);
+ t_fail++;
+ if (debug_flag == 1)
+ return 1;
+ }
+ else {
+ printf("successful\n"); fflush(stdout);
+ t_pass++;
+ }
+
+ /* Test read of initial global information */
+ printf("testing global init info input..."); fflush(stdout);
+ if (ne_test_ginig(ne_file_id) < 0) {
+ printf("FAILED\n"); fflush(stdout);
+ t_fail++;
+ if (debug_flag == 1)
+ return 1;
+ }
+ else {
+ printf("successful\n"); fflush(stdout);
+ t_pass++;
+ }
+
+ /* Test read of global element block IDs */
+ printf("testing global element block IDs input..."); fflush(stdout);
+ if (ne_test_gelbid(ne_file_id) < 0) {
+ printf("FAILED\n"); fflush(stdout);
+ t_fail++;
+ if (debug_flag == 1)
+ return 1;
+ }
+ else {
+ printf("successful\n"); fflush(stdout);
+ t_pass++;
+ }
+
+ /* Test read of global node-set params */
+ printf("testing global node-set params input..."); fflush(stdout);
+ if (ne_test_gnsp(ne_file_id) < 0) {
+ printf("FAILED\n"); fflush(stdout);
+ t_fail++;
+ if (debug_flag == 1)
+ return 1;
+ }
+ else {
+ printf("successful\n"); fflush(stdout);
+ t_pass++;
+ }
+
+ /* Test read of global side-set params */
+ printf("testing global side-set params input..."); fflush(stdout);
+ if (ne_test_gssp(ne_file_id) < 0) {
+ printf("FAILED\n"); fflush(stdout);
+ t_fail++;
+ if (debug_flag == 1)
+ return 1;
+ }
+ else {
+ printf("successful\n"); fflush(stdout);
+ t_pass++;
+ }
+
+ /* Test read of load-balance params */
+ printf("testing load-balance params input..."); fflush(stdout);
+ if (ne_test_glbp(ne_file_id) < 0) {
+ printf("FAILED\n"); fflush(stdout);
+ t_fail++;
+ if (debug_flag == 1)
+ return 1;
+ }
+ else {
+ printf("successful\n"); fflush(stdout);
+ t_pass++;
+ }
+
+ /* Test read of the node map */
+ printf("testing node map input..."); fflush(stdout);
+ if (ne_test_gnm(ne_file_id) < 0) {
+ printf("FAILED\n"); fflush(stdout);
+ t_fail++;
+ if (debug_flag == 1)
+ return 1;
+ }
+ else {
+ printf("successful\n"); fflush(stdout);
+ t_pass++;
+ }
+
+ /* Test read of element map */
+ printf("testing element map input..."); fflush(stdout);
+ if (ne_test_gem(ne_file_id) < 0) {
+ printf("FAILED\n"); fflush(stdout);
+ t_fail++;
+ if (debug_flag == 1)
+ return 1;
+ }
+ else {
+ printf("successful\n"); fflush(stdout);
+ t_pass++;
+ }
+
+ /* Test read of nodal communication maps */
+ printf("testing nodal communication map input..."); fflush(stdout);
+ if (ne_test_gncm(ne_file_id) < 0) {
+ printf("FAILED\n"); fflush(stdout);
+ t_fail++;
+ if (debug_flag == 1)
+ return 1;
+ }
+ else {
+ printf("successful\n"); fflush(stdout);
+ t_pass++;
+ }
+
+ /* Test read of elemental communication maps */
+ printf("testing elemental communication map input..."); fflush(stdout);
+ if (ne_test_gecm(ne_file_id) < 0) {
+ printf("FAILED\n"); fflush(stdout);
+ t_fail++;
+ if (debug_flag == 1)
+ return 1;
+ }
+ else {
+ printf("successful\n"); fflush(stdout);
+ t_pass++;
+ }
+
+ /* Close the ExodusII/Nemesis test file */
+ printf("closing ExodusII file..."); fflush(stdout);
+ if (ex_close(ne_file_id) < 0) {
+ printf("FAILED\n"); fflush(stdout);
+ t_fail++;
+ fprintf(stderr, "[%s]: ERROR, unable to close test file \"%s\"!\n",
+ yo, file_name);
+ exit(-1);
+ }
+ printf("successful\n"); fflush(stdout);
+ t_pass++;
+
+ /* Output a test summary */
+ printf("\n");
+ printf("Tests Passed: %d\n", t_pass);
+ printf("Tests Failed: %d\n", t_fail);
+
+ return 0;
+}
+
+/*****************************************************************************/
+int ne_test_piinf(int fileid)
+{
+ char ftype[3];
+
+ strcpy(ftype, "s");
+
+ return (ne_put_init_info(fileid, NPROC, NPROCF, ftype));
+}
+
+/*****************************************************************************/
+int ne_test_pinig(int fileid)
+{
+
+ int nng=NNG, neg=NEG, nebg=NEBG, nnsg=NNSG, nssg=NSSG;
+
+/*-----------------------------Execution Begins-----------------------------*/
+
+ return (ne_put_init_global(fileid, nng, neg, nebg, nnsg, nssg));
+}
+
+/*****************************************************************************/
+int ne_test_pelbid(int fileid)
+{
+ int i, elblk_ids[NEBG], elblk_cnt[NEBG];
+
+/*-----------------------------Execution Begins-----------------------------*/
+
+ for(i=0; i < NEBG; i++) {
+ elblk_ids[i]=(i+1);
+ elblk_cnt[i]=NEBCG;
+ }
+
+ return (ne_put_eb_info_global(fileid, elblk_ids, elblk_cnt));
+}
+
+/*****************************************************************************/
+int ne_test_pnsp(int fileid)
+{
+ int i, global_ids[NNSG], global_n_cnts[NNSG], global_df_cnts[NNSG];
+
+/*-----------------------------Execution Begins-----------------------------*/
+
+ for(i=0; i < NNSG; i++) {
+ global_ids[i]=2*(i+1);
+ global_n_cnts[i]=3*(i+1);
+ global_df_cnts[i]=1;
+ }
+
+ return (ne_put_ns_param_global(fileid, global_ids, global_n_cnts,
+ global_df_cnts));
+}
+
+/*****************************************************************************/
+int ne_test_pssp(int fileid)
+{
+ int i, global_ids[NSSG], global_el_cnts[NSSG], global_df_cnts[NSSG];
+
+/*-----------------------------Execution Begins-----------------------------*/
+
+ for(i=0; i < NSSG; i++) {
+ global_ids[i]=3*(i+1);
+ global_el_cnts[i]=2*(i+1);
+ global_df_cnts[i]=1;
+ }
+
+ return (ne_put_ss_param_global(fileid, global_ids, global_el_cnts,
+ global_df_cnts));
+}
+
+/*****************************************************************************/
+int ne_test_pnm(int fileid)
+{
+ int iproc, j, error, j1=0;
+ int node_mapi[NINTN], node_mapb[NBORN], node_mape[NEXTN];
+
+/*-----------------------------Execution Begins-----------------------------*/
+
+ for(iproc=0; iproc < NPROCF; iproc++) {
+ for(j=0; j < NINTN; node_mapi[j++]=j1++);
+ for(j=0; j < NBORN; node_mapb[j++]=j1++);
+ for(j=0; j < NEXTN; node_mape[j++]=j1++);
+ j1 = 0;
+ error = ne_put_node_map(fileid, node_mapi, node_mapb, node_mape, iproc);
+ if (error < 0) return error;
+ }
+
+ return 0;
+
+}
+
+/*****************************************************************************/
+int ne_test_pem(int fileid)
+{
+ int iproc, j, error, j1=0;
+ int elem_mapi[NINTE], elem_mapb[NBORE];
+
+/*-----------------------------Execution Begins-----------------------------*/
+
+ for(iproc=0; iproc < NPROCF; iproc++) {
+ for(j=0; j < NINTE; elem_mapi[j++]=j1++);
+ for(j=0; j < NBORE; elem_mapb[j++]=j1++);
+ j1 = 0;
+ error = ne_put_elem_map(fileid, elem_mapi, elem_mapb, iproc);
+ if (error < 0) return error;
+ }
+
+ return 0;
+
+}
+
+/*****************************************************************************/
+int ne_test_pcmp(int fileid)
+{
+ int i, iproc, error;
+ int node_map_ids[NNCMAP], node_map_node_cnts[NNCMAP];
+ int elem_map_ids[NECMAP], elem_map_elem_cnts[NECMAP];
+
+/*-----------------------------Execution Begins-----------------------------*/
+
+ for(iproc=0; iproc < NPROCF; iproc++) {
+ for(i=0; i < NNCMAP; i++) {
+ node_map_ids[i]=(i+1);
+ node_map_node_cnts[i]=NCNTCM;
+ }
+
+ for(i=0; i < NECMAP; i++) {
+ elem_map_ids[i]=2*(i+1);
+ elem_map_elem_cnts[i]=ECNTCM;
+ }
+
+ error = ne_put_cmap_params(fileid, node_map_node_cnts, node_map_ids,
+ elem_map_elem_cnts, elem_map_ids, iproc);
+ if (error < 0) return error;
+ }
+
+ return 0;
+
+}
+
+/*****************************************************************************/
+int ne_test_pncm(int fileid)
+{
+ int i, iproc, error;
+ int node_map_ids[NNCMAP], node_ids[NCNTCM], proc_ids[NCNTCM];
+
+/*-----------------------------Execution Begins-----------------------------*/
+
+ for(iproc=0; iproc < NPROCF; iproc++) {
+ for(i=0; i < NNCMAP; i++) {
+ node_map_ids[i]=(i+1);
+ }
+ for(i=0; i < NCNTCM; i++) {
+ node_ids[i] = 2*(i+1);
+ proc_ids[i] = 3*(i+1);
+ }
+
+ for(i=0; i < NNCMAP; i++) {
+ error = ne_put_node_cmap(fileid, node_map_ids[i], node_ids,
+ proc_ids, iproc);
+ if (error < 0) return error;
+ }
+ }
+
+ return 0;
+}
+
+/*****************************************************************************/
+int ne_test_pecm(int fileid)
+{
+ int i, iproc, error;
+ int elem_map_ids[NECMAP], elem_ids[ECNTCM], side_ids[ECNTCM];
+ int proc_ids[ECNTCM];
+
+/*-----------------------------Execution Begins-----------------------------*/
+
+ for(iproc=0; iproc < NPROCF; iproc++) {
+ for(i=0; i < NECMAP; i++) {
+ elem_map_ids[i]=2*(i+1);
+ }
+ for(i=0; i < ECNTCM; i++) {
+ elem_ids[i] = 2*(i+1);
+ side_ids[i] = 3*(i+1);
+ proc_ids[i] = 4*(i+1);
+ }
+
+ for(i=0; i < NECMAP; i++) {
+ error = ne_put_elem_cmap(fileid, elem_map_ids[i], elem_ids,
+ side_ids, proc_ids, iproc);
+ if (error < 0) return error;
+ }
+ }
+
+ return 0;
+}
+
+/*****************************************************************************/
+int ne_test_giinf(int fileid)
+{
+ int error, nproc, nprocf;
+ char ftype[2];
+
+/*-----------------------------Execution Begins-----------------------------*/
+ error = ne_get_init_info(fileid, &nproc, &nprocf, ftype);
+
+ if (error < 0) return error;
+
+ if (nproc != NPROC) return -1;
+ if (nprocf != NPROCF) return -1;
+ if (strcmp(ftype, "s") != 0) return -1;
+
+ return 0;
+}
+
+/*****************************************************************************/
+int ne_test_ginig(int fileid)
+{
+
+ int error;
+ int num_nodes_g, num_elems_g, num_elem_blks_g, num_ns_g, num_ss_g;
+
+/*-----------------------------Execution Begins-----------------------------*/
+
+ error = ne_get_init_global(fileid, &num_nodes_g, &num_elems_g,
+ &num_elem_blks_g, &num_ns_g, &num_ss_g);
+
+ if (error < 0) return error;
+
+ if (num_nodes_g != NNG) return -1;
+ if (num_elems_g != NEG) return -1;
+ if (num_elem_blks_g != NEBG) return -1;
+ if (num_ns_g != NNSG) return -1;
+ if (num_ss_g != NSSG) return -1;
+
+ return 0;
+}
+
+/*****************************************************************************/
+int ne_test_gelbid(int fileid)
+{
+
+ int i, error;
+ int el_blk_ids[NEBG], el_blk_cnt[NEBG];
+
+/*-----------------------------Execution Begins-----------------------------*/
+
+ error = ne_get_eb_info_global(fileid, el_blk_ids, el_blk_cnt);
+
+ if (error < 0) return error;
+
+ for(i=0; i < NEBG; i++) {
+ if (el_blk_ids[i] != (i+1)) return -1;
+ if (el_blk_cnt[i] != NEBCG) return -1;
+ }
+
+ return 0;
+}
+
+/*****************************************************************************/
+int ne_test_gnsp(int fileid)
+{
+
+ int i, error;
+ int global_ids[NNSG], global_n_cnts[NNSG], global_df_cnts[NNSG];
+
+/*-----------------------------Execution Begins-----------------------------*/
+
+ error = ne_get_ns_param_global(fileid, global_ids, global_n_cnts,
+ global_df_cnts);
+
+ if (error < 0) return error;
+
+ for(i=0; i < NNSG; i++) {
+ if (global_ids[i] != 2*(i+1)) return -1;
+ if (global_n_cnts[i] != 3*(i+1)) return -1;
+ if (global_df_cnts[i] != 1 ) return -1;
+ }
+
+ return 0;
+}
+
+/*****************************************************************************/
+int ne_test_gssp(int fileid)
+{
+
+ int i, error;
+ int global_ids[NSSG], global_e_cnts[NSSG], global_df_cnts[NSSG];
+
+/*-----------------------------Execution Begins-----------------------------*/
+
+ error = ne_get_ss_param_global(fileid, global_ids, global_e_cnts,
+ global_df_cnts);
+
+ if (error < 0) return error;
+
+ for(i=0; i < NSSG; i++) {
+ if (global_ids[i] != 3*(i+1)) return -1;
+ if (global_e_cnts[i] != 2*(i+1)) return -1;
+ if (global_df_cnts[i] != 1 ) return -1;
+ }
+
+ return 0;
+}
+
+/*****************************************************************************/
+int ne_test_glbp(int fileid)
+{
+
+ int iproc, error;
+ int nintn, nborn, nextn, ninte, nbore, nncmap, necmap;
+
+/*-----------------------------Execution Begins-----------------------------*/
+
+ for(iproc=0; iproc < NPROCF; iproc++) {
+ error = ne_get_loadbal_param(fileid, &nintn, &nborn, &nextn, &ninte,
+ &nbore, &nncmap, &necmap, iproc);
+
+ if (error < 0) return error;
+
+ if (nintn != NINTN ) return -1;
+ if (nborn != NBORN ) return -1;
+ if (nextn != NEXTN ) return -1;
+ if (ninte != NINTE ) return -1;
+ if (nbore != NBORE ) return -1;
+ if (nncmap != NNCMAP) return -1;
+ if (necmap != NECMAP) return -1;
+
+ }
+
+ return 0;
+}
+
+/*****************************************************************************/
+int ne_test_gnm(int fileid)
+{
+ int iproc, j, error, j1=0;
+ int node_mapi[NINTN], node_mapb[NBORN], node_mape[NEXTN];
+
+/*-----------------------------Execution Begins-----------------------------*/
+
+
+ for(iproc=0; iproc < NPROCF; iproc++) {
+ error = ne_get_node_map(fileid, node_mapi, node_mapb, node_mape, iproc);
+
+ if (error < 0) return error;
+
+ for(j=0; j < NINTN; j++) {
+ if (node_mapi[j] != j1++) return -1;
+ }
+ for(j=0; j < NBORN; j++) {
+ if (node_mapb[j] != j1++) return -1;
+ }
+ for(j=0; j < NEXTN; j++) {
+ if (node_mape[j] != j1++) return -1;
+ }
+
+ j1 = 0;
+ }
+
+ return 0;
+}
+
+/*****************************************************************************/
+int ne_test_gem(int fileid)
+{
+ int iproc, j, error, j1=0;
+ int elem_mapi[NINTE], elem_mapb[NBORE];
+
+/*-----------------------------Execution Begins-----------------------------*/
+
+ for(iproc=0; iproc < NPROCF; iproc++) {
+
+ error = ne_get_elem_map(fileid, elem_mapi, elem_mapb, iproc);
+
+ if (error < 0) return error;
+
+ for(j=0; j < NINTE; j++) {
+ if (elem_mapi[j] != j1++) return -1;
+ }
+ for(j=0; j < NBORE; j++) {
+ if (elem_mapb[j] != j1++) return -1;
+ }
+ j1 = 0;
+ }
+
+ return 0;
+
+}
+
+/*****************************************************************************/
+int ne_test_gncm(int fileid)
+{
+ int i, j, iproc, error;
+ int node_map_ids[NNCMAP], node_map_cnts[NNCMAP];
+ int node_ids[NCNTCM], proc_ids[NCNTCM];
+
+/*-----------------------------Execution Begins-----------------------------*/
+
+ for(iproc=0; iproc < NPROCF; iproc++) {
+
+ error = ne_get_cmap_params(fileid, node_map_ids, node_map_cnts,
+ NULL, NULL, iproc);
+
+ if (error < 0) return error;
+
+ for(i=0; i < NNCMAP; i++) {
+ error = ne_get_node_cmap(fileid, node_map_ids[i], node_ids,
+ proc_ids, iproc);
+
+ if (error < 0) return error;
+
+ for(j=0; j < NCNTCM; j++) {
+ if (node_ids[j] != 2*(j+1)) return -1;
+ if (proc_ids[j] != 3*(j+1)) return -1;
+ }
+ }
+ }
+
+ return 0;
+}
+
+/*****************************************************************************/
+int ne_test_gecm(int fileid)
+{
+ int i, j, iproc, error;
+ int elem_ids[ECNTCM], elem_map_cnts[NECMAP], proc_ids[ECNTCM];
+ int side_ids[ECNTCM], elem_map_ids[NECMAP];
+
+/*-----------------------------Execution Begins-----------------------------*/
+
+ for(iproc=0; iproc < NPROCF; iproc++) {
+
+ error = ne_get_cmap_params(fileid, NULL, NULL,
+ elem_map_ids, elem_map_cnts, iproc);
+
+ if (error < 0) return error;
+
+ for(i=0; i < NECMAP; i++) {
+ error = ne_get_elem_cmap(fileid, elem_map_ids[i], elem_ids,
+ side_ids, proc_ids, iproc);
+
+ if (error < 0) return error;
+
+ for(j=0; j < ECNTCM; j++) {
+ if (elem_ids[j] != 2*(j+1)) return -1;
+ if (side_ids[j] != 3*(j+1)) return -1;
+ if (proc_ids[j] != 4*(j+1)) return -1;
+ }
+ }
+ }
+
+ return 0;
+}
+
+/*****************************************************************************/
+int ne_test_plbpc(int fileid)
+{
+ int iproc;
+
+ int num_int_nodes[NPROCF], num_bor_nodes[NPROCF], num_ext_nodes[NPROCF];
+ int num_int_elems[NPROCF], num_bor_elems[NPROCF];
+ int num_node_cmaps[NPROCF], num_elem_cmaps[NPROCF];
+
+/*-----------------------------Execution Begins-----------------------------*/
+
+ /* Set up the vectors */
+ for(iproc=0; iproc < NPROCF; iproc++) {
+ num_int_nodes[iproc] = NINTN;
+ num_bor_nodes[iproc] = NBORN;
+ num_ext_nodes[iproc] = NEXTN;
+
+ num_int_elems[iproc] = NINTE;
+ num_bor_elems[iproc] = NBORE;
+
+ num_node_cmaps[iproc] = NNCMAP;
+ num_elem_cmaps[iproc] = NECMAP;
+ }
+
+ return (ne_put_loadbal_param_cc(fileid, num_int_nodes, num_bor_nodes,
+ num_ext_nodes, num_int_elems,
+ num_bor_elems, num_node_cmaps,
+ num_elem_cmaps));
+
+}
+
+/*****************************************************************************/
+int ne_test_pcmpc(int fileid)
+{
+ int iproc, j, n_cntr, e_cntr;
+
+ int nmap_ids[NNCMAP*NPROCF], nmap_n_cnts[NNCMAP*NPROCF];
+ int nmap_proc_ptr[NPROCF+1];
+ int emap_ids[NECMAP*NPROCF], emap_e_cnts[NECMAP*NPROCF];
+ int emap_proc_ptr[NPROCF+1];
+/*-----------------------------Execution Begins-----------------------------*/
+
+ nmap_proc_ptr[0] = 0;
+ emap_proc_ptr[0] = 0;
+ n_cntr = 0;
+ e_cntr = 0;
+ for(iproc=0; iproc < NPROCF; iproc++) {
+
+ for(j=0; j < NNCMAP; j++) {
+ nmap_ids[n_cntr] = (j+1);
+ nmap_n_cnts[n_cntr++] = NCNTCM;
+ }
+
+ for(j=0; j < NECMAP; j++) {
+ emap_ids[e_cntr] = 2*(j+1);
+ emap_e_cnts[e_cntr++] = ECNTCM;
+ }
+
+ nmap_proc_ptr[iproc+1] = nmap_proc_ptr[iproc] + NNCMAP;
+ emap_proc_ptr[iproc+1] = emap_proc_ptr[iproc] + NECMAP;
+ }
+
+
+ return (ne_put_cmap_params_cc(fileid, nmap_ids, nmap_n_cnts, nmap_proc_ptr,
+ emap_ids, emap_e_cnts, emap_proc_ptr));
+}
diff --git a/nemesis/ne_nemesisI.h b/nemesis/ne_nemesisI.h
new file mode 100644
index 0000000..cbd5b87
--- /dev/null
+++ b/nemesis/ne_nemesisI.h
@@ -0,0 +1,492 @@
+/*
+ * Copyright (c) 1998 Sandia Corporation. Under the terms of Contract
+ * DE-AC04-94AL85000 with Sandia Corporation, the U.S. Governement
+ * retains certain rights in this software.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ *
+ * * Neither the name of Sandia Corporation nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+/****************************************************************************
+ * This file contains prototypes for the functions found in the NEMESIS
+ * library.
+ ****************************************************************************/
+
+#ifndef _NE_NEMESIS_H
+#define _NE_NEMESIS_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef EXODUS_II_HDR
+#include <stdint.h>
+ /** Specifies that this argument is the id of an entity: element block, nodeset, sideset, ... */
+ typedef int64_t ex_entity_id;
+
+ /** The mechanism for passing double/float and int/int64_t both use a
+ void*; to avoid some confusion as to whether a function takes an
+ integer or a float/double, the following typedef is used for the
+ integer argument
+ */
+ typedef void void_int;
+#endif
+
+/*=============================================================================
+ * Initial Information Routines
+ *===========================================================================*/
+extern int
+ne_get_init_info(int neid, /* NemesisI file ID */
+ int *num_proc, /* Number of processors */
+ int *num_proc_in_f, /* Number of procs in this file */
+ char *ftype
+ );
+
+extern int
+ne_put_init_info(int neid, /* NemesisI file ID */
+ int num_proc, /* Number of processors */
+ int num_proc_in_f, /* Number of procs in this file */
+ char *ftype
+ );
+
+extern int
+ne_get_init_global(int neid, /* NemesisI file ID */
+ void_int *num_nodes_g, /* Number of global FEM nodes */
+ void_int *num_elems_g, /* Number of global FEM elements */
+ void_int *num_elem_blks_g, /* Number of global elem blocks */
+ void_int *num_node_sets_g, /* Number of global node sets */
+ void_int *num_side_sets_g /* Number of global side sets */
+ );
+extern int
+ne_put_init_global(int neid, /* NemesisI file ID */
+ int64_t num_nodes_g, /* Number of global FEM nodes */
+ int64_t num_elems_g, /* Number of global FEM elements */
+ int64_t num_elem_blks_g, /* Number of global elem blocks */
+ int64_t num_node_sets_g, /* Number of global node sets */
+ int64_t num_side_sets_g /* Number of global side sets */
+ );
+
+extern int
+ne_put_version(int neid);
+
+/*=============================================================================
+ * Loadbalance Parameter Routines
+ *===========================================================================*/
+extern int
+ne_get_loadbal_param(int neid, /* NetCDF/Exodus file ID */
+ void_int *num_int_nodes, /* Number of internal FEM nodes */
+ void_int *num_bor_nodes, /* Number of border FEM nodes */
+ void_int *num_ext_nodes, /* Number of external FEM nodes */
+ void_int *num_int_elems, /* Number of internal FEM elems */
+ void_int *num_bor_elems, /* Number of border FEM elems */
+ void_int *num_node_cmaps, /* Number of nodal comm maps */
+ void_int *num_elem_cmaps, /* Number of elemental comm maps */
+ int processor /* Processor ID */
+ );
+
+extern int
+ne_put_loadbal_param(int neid, /* NemesisI file ID */
+ int64_t num_int_nodes, /* Number of internal FEM nodes */
+ int64_t num_bor_nodes, /* Number of border FEM nodes */
+ int64_t num_ext_nodes, /* Number of external FEM nodes */
+ int64_t num_int_elems, /* Number of internal FEM elems */
+ int64_t num_bor_elems, /* Number of border FEM elems */
+ int64_t num_node_cmaps,/* Number of nodal comm maps */
+ int64_t num_elem_cmaps,/* Number of elemental comm maps */
+ int processor /* Processor ID */
+ );
+
+extern int
+ne_put_loadbal_param_cc(int neid, /* NetCDF/Exodus file ID */
+ void_int *num_int_nodes, /* Number of internal node IDs */
+ void_int *num_bor_nodes, /* Number of border node IDs */
+ void_int *num_ext_nodes, /* Number of external node IDs */
+ void_int *num_int_elems, /* Number of internal elem IDs */
+ void_int *num_bor_elems, /* Number of border elem IDs */
+ void_int *num_node_cmaps, /* Number of nodal comm maps */
+ void_int *num_elem_cmaps /* Number of elem comm maps */
+ );
+
+/*=============================================================================
+ * NS, SS & EB Global Parameter Routines
+ *===========================================================================*/
+extern int
+ne_get_ns_param_global(int neid, /* NetCDF/Exodus file ID */
+ void_int *ns_ids_glob, /* Global IDs of node sets */
+ void_int *ns_n_cnt_glob, /* Count of nodes in node sets */
+ void_int *ns_df_cnt_glob /* Count of dist. factors in ns */
+ );
+
+extern int
+ne_put_ns_param_global(int neid, /* NemesisI file ID */
+ void_int *global_ids, /* Vector of global node-set IDs */
+ void_int *global_n_cnts, /* Vector of node counts in node-sets */
+ void_int *global_df_cnts /* Vector of dist factor counts in node-sets */
+ );
+
+extern int
+ne_get_ss_param_global(int neid, /* NetCDF/Exodus file ID */
+ void_int *ss_ids_glob, /* Global side-set IDs */
+ void_int *ss_s_cnt_glob, /* Global side count */
+ void_int *ss_df_cnt_glob /* Global dist. factor count */
+ );
+
+extern int
+ne_put_ss_param_global(int neid, /* NemesisI file ID */
+ void_int *global_ids, /* Vector of global side-set IDs */
+ void_int *global_el_cnts, /* Vector of element/side */
+ /* counts in each side set */
+ void_int *global_df_cnts /* Vector of dist. factor */
+ /* counts in each side set */
+ );
+
+extern int
+ne_get_eb_info_global(int neid, /* NemesisI file ID */
+ void_int *el_blk_ids, /* Vector of global element IDs */
+ void_int *el_blk_cnts /* Vector of global element counts */
+ );
+
+extern int
+ne_put_eb_info_global(int neid, /* NemesisI file ID */
+ void_int *el_blk_ids, /* Vector of global element IDs */
+ void_int *el_blk_cnts /* Vector of global element counts */
+ );
+
+/*=============================================================================
+ * NS, SS & EB Subset Routines
+ *===========================================================================*/
+extern int
+ne_get_n_side_set(int neid, /* NetCDF/Exodus file ID */
+ ex_entity_id side_set_id, /* Side-set ID to read */
+ int64_t start_side_num, /* Starting element number */
+ int64_t num_sides, /* Number of sides to read */
+ void_int *side_set_elem_list, /* List of element IDs */
+ void_int *side_set_side_list /* List of side IDs */
+ );
+
+extern int
+ne_put_n_side_set(int neid, /* NetCDF/Exodus file ID */
+ ex_entity_id side_set_id, /* Side-set ID to write */
+ int64_t start_side_num, /* Starting element number */
+ int64_t num_sides, /* Number of sides to write */
+ const void_int *side_set_elem_list, /* List of element IDs */
+ const void_int *side_set_side_list /* List of side IDs */
+ );
+
+extern int
+ne_get_n_side_set_df(int neid, /* NetCDF/Exodus file ID */
+ ex_entity_id side_set_id, /* Side-set ID */
+ int64_t start_num, /* Starting df number */
+ int64_t num_df_to_get, /* Number of df's to read */
+ void *side_set_df /* Distribution factors */
+ );
+
+extern int
+ne_put_n_side_set_df(int neid, /* NetCDF/Exodus file ID */
+ ex_entity_id side_set_id, /* Side-set ID */
+ int64_t start_num, /* Starting df number */
+ int64_t num_df_to_get, /* Number of df's to write */
+ void *side_set_df /* Distribution factors */
+ );
+
+extern int
+ne_get_n_node_set(int neid, /* NetCDF/Exodus file ID */
+ ex_entity_id node_set_id, /* Node set ID */
+ int64_t start_node_num, /* Node index to start reading at */
+ int64_t num_node, /* Number of nodes to read */
+ void_int *node_set_node_list /* List of nodes in node set */
+ );
+
+extern int
+ne_put_n_node_set(int neid, /* NetCDF/Exodus file ID */
+ ex_entity_id node_set_id, /* Node set ID */
+ int64_t start_node_num, /* Node index to start writing at */
+ int64_t num_node, /* Number of nodes to write */
+ const void_int *node_set_node_list /* List of nodes in node set */
+ );
+
+extern int
+ne_get_n_node_set_df(int neid, /* NetCDF/Exodus file ID */
+ ex_entity_id node_set_id, /* Node-set ID */
+ int64_t start_num, /* Starting df number */
+ int64_t num_df_to_get, /* Number of df's to read */
+ void *node_set_df /* Distribution factors */
+ );
+
+extern int
+ne_put_n_node_set_df(int neid, /* NetCDF/Exodus file ID */
+ ex_entity_id node_set_id, /* Node-set ID */
+ int64_t start_num, /* Starting df number */
+ int64_t num_df_to_get, /* Number of df's to write */
+ void *node_set_df /* Distribution factors */
+ );
+
+extern int
+ne_get_n_coord(int neid, /* NetCDF/Exodus file ID */
+ int64_t start_node_num, /* Starting position to read from */
+ int64_t num_nodes, /* Number of coords to read */
+ void *x_coor, /* Vector of X coordinates */
+ void *y_coor, /* Vector of Y coordinates */
+ void *z_coor /* Vector of Z coordinates */
+ );
+
+extern int
+ne_put_n_coord(int neid, /* NetCDF/Exodus file ID */
+ int64_t start_node_num, /* Starting position to write to */
+ int64_t num_nodes, /* Number of coords to write */
+ void *x_coor, /* Vector of X coordinates */
+ void *y_coor, /* Vector of Y coordinates */
+ void *z_coor /* Vector of Z coordinates */
+ );
+
+extern int
+ne_get_n_elem_conn (int neid, /* NetCDF/Exodus file ID */
+ ex_entity_id elem_blk_id, /* Element block ID */
+ int64_t start_elem_num, /* Starting position to read from */
+ int64_t num_elems, /* Number of elements to read */
+ void_int *connect /* Connectivity vector */
+ );
+
+extern int
+ne_put_n_elem_conn (int neid, /* NetCDF/Exodus file ID */
+ ex_entity_id elem_blk_id, /* Element block ID */
+ int64_t start_elem_num, /* Starting position to write to */
+ int64_t num_elems, /* Number of elements to write */
+ const void_int *connect /* Connectivity vector */
+);
+
+extern int
+ne_get_n_elem_attr (int neid, /* NetCDF/Exodus file ID */
+ ex_entity_id elem_blk_id, /* Element block ID */
+ int64_t start_elem_num, /* Starting position to read from */
+ int64_t num_elems, /* Number of elements to read */
+ void *attrib /* Attribute */
+ );
+
+extern int
+ne_put_n_elem_attr (int neid, /* NetCDF/Exodus file ID */
+ ex_entity_id elem_blk_id, /* Element block ID */
+ int64_t start_elem_num, /* Starting position to write to */
+ int64_t num_elems, /* Number of elements to write */
+ void *attrib /* Attribute */
+ );
+
+extern int
+ne_get_elem_type(int neid, /* NetCDF/Exodus file ID */
+ ex_entity_id elem_blk_id, /* Element block ID */
+ char *elem_type /* The name of the element type */
+ );
+
+/*=============================================================================
+ * Variable Routines
+ *===========================================================================*/
+extern int
+ne_get_n_elem_var (int neid, /* NetCDF/Exodus file ID */
+ int time_step, /* time index */
+ int elem_var_index, /* elemental variable index */
+ ex_entity_id elem_blk_id, /* elemental block id */
+ int64_t num_elem_this_blk, /* number of elements in block */
+ int64_t start_elem_num, /* Starting position for read */
+ int64_t num_elem, /* Number of elements to read */
+ void *elem_var_vals /* variable values */
+ );
+
+extern int
+ne_put_elem_var_slab (int neid, /* NetCDF/Exodus file ID */
+ int time_step, /* time index */
+ int elem_var_index, /* elemental variable index */
+ ex_entity_id elem_blk_id, /* elemental block id */
+ int64_t start_pos, /* Starting position to write to */
+ int64_t num_vals, /* Number of elements to write */
+ void *elem_var_vals /* variable values */
+ );
+
+extern int
+ne_get_n_nodal_var(int neid, /* NetCDF/Exodus file ID */
+ int time_step, /* whole time step number */
+ int nodal_var_index, /* index of desired nodal var */
+ int64_t start_node_num, /* starting node number */
+ int64_t num_nodes, /* number of nodes to read */
+ void *nodal_vars /* array of nodal var values */
+ );
+
+extern int
+ne_put_nodal_var_slab(int neid, /* NetCDF/Exodus file ID */
+ int time_step, /* The time step index */
+ int nodal_var_index, /* Nodal variable index */
+ int64_t start_pos, /* Start position for write */
+ int64_t num_vals, /* Number of nodal variables */
+ void *nodal_var_vals /* Nodal variable values */
+ );
+
+/*=============================================================================
+ * Number Map Routines
+ *===========================================================================*/
+extern int
+ne_get_n_elem_num_map (int neid, /* NetCDF/Exodus file ID */
+ int64_t start_ent, /* Starting position to read from */
+ int64_t num_ents, /* Number of elements to read */
+ void_int *elem_map /* element map numbers */
+ );
+
+extern int
+ne_put_n_elem_num_map (int neid, /* NetCDF/Exodus file ID */
+ int64_t start_ent, /* Starting position to read from */
+ int64_t num_ents, /* Number of elements to read */
+ const void_int *elem_map /* element map numbers */
+ );
+
+extern int
+ne_get_n_node_num_map(int neid, /* NetCDF/Exodus file ID */
+ int64_t start_ent, /* starting node number */
+ int64_t num_ents, /* number of nodes to read */
+ void_int *node_map /* vector for node map */
+ );
+
+extern int
+ne_put_n_node_num_map(int neid, /* NetCDF/Exodus file ID */
+ int64_t start_ent, /* starting node number */
+ int64_t num_ents, /* number of nodes to read */
+ const void_int *node_map /* vector for node map */
+ );
+
+extern int
+ne_get_node_map(int neid, /* NetCDF/Exodus file ID */
+ void_int *node_mapi, /* Internal FEM node IDs */
+ void_int *node_mapb, /* Border FEM node IDs */
+ void_int *node_mape, /* External FEM node IDs */
+ int processor /* Processor IDs */
+ );
+
+extern int
+ne_put_node_map(int neid, /* NetCDF/Exodus file ID */
+ void_int *node_mapi, /* Internal FEM node IDs */
+ void_int *node_mapb, /* Border FEM node IDs */
+ void_int *node_mape, /* External FEM node IDs */
+ int processor /* This processor ID */
+ );
+
+extern int
+ne_get_elem_map(int neid, /* NetCDF/Exodus file ID */
+ void_int *elem_mapi, /* Internal element IDs */
+ void_int *elem_mapb, /* Border element IDs */
+ int processor /* Processor ID */
+ );
+
+extern int
+ne_put_elem_map(int neid, /* NetCDF/Exodus file ID */
+ void_int *elem_mapi, /* Internal FEM element IDs */
+ void_int *elem_mapb, /* Border FEM element IDs */
+ int processor /* This processor ID */
+ );
+
+
+/*=============================================================================
+ * Communications Maps Routines
+ *===========================================================================*/
+
+extern int
+ne_get_cmap_params(int neid, /* NetCDF/Exodus file ID */
+ void_int *node_cmap_ids, /* Nodal comm. map IDs */
+ void_int *node_cmap_node_cnts, /* Number of nodes in each map */
+ void_int *elem_cmap_ids, /* Elemental comm. map IDs */
+ void_int *elem_cmap_elem_cnts, /* Number of elems in each map */
+ int processor /* This processor ID */
+ );
+
+extern int
+ne_put_cmap_params(int neid, /* NetCDF/Exodus file ID */
+ void_int *node_map_ids, /* Node map IDs */
+ void_int *node_map_node_cnts,/* Nodes in nodal comm */
+ void_int *elem_map_ids, /* Elem map IDs */
+ void_int *elem_map_elem_cnts,/* Elems in elemental comm */
+ int64_t processor /* This processor ID */
+ );
+
+extern int
+ne_put_cmap_params_cc(int neid, /* NetCDF/Exodus file ID */
+ void_int *node_map_ids, /* Node map IDs */
+ void_int *node_map_node_cnts, /* Nodes in nodal comm */
+ void_int *node_proc_ptrs, /* Pointer into array for */
+ /* node maps */
+ void_int *elem_map_ids, /* Elem map IDs */
+ void_int *elem_map_elem_cnts, /* Elems in elemental comm */
+ void_int *elem_proc_ptrs /* Pointer into array for */
+ /* elem maps */
+ );
+
+extern int
+ne_get_node_cmap(int neid, /* NetCDF/Exodus file ID */
+ ex_entity_id map_id, /* Map ID */
+ void_int *node_ids, /* FEM node IDs */
+ void_int *proc_ids, /* Processor IDs */
+ int processor /* This processor ID */
+ );
+
+extern int
+ne_put_node_cmap(int neid, /* NetCDF/Exodus file ID */
+ ex_entity_id map_id, /* Nodal comm map ID */
+ void_int *node_ids, /* FEM node IDs */
+ void_int *proc_ids, /* Processor IDs */
+ int processor /* This processor ID */
+ );
+
+extern int
+ne_get_elem_cmap(int neid, /* NetCDF/Exodus file ID */
+ ex_entity_id map_id, /* Elemental comm map ID */
+ void_int *elem_ids, /* Element IDs */
+ void_int *side_ids, /* Element side IDs */
+ void_int *proc_ids, /* Processor IDs */
+ int processor /* This processor ID */
+ );
+
+extern int
+ne_put_elem_cmap(int neid, /* NetCDF/Exodus file ID */
+ ex_entity_id map_id, /* Elemental comm map ID */
+ void_int *elem_ids, /* Vector of element IDs */
+ void_int *side_ids, /* Vector of side IDs */
+ void_int *proc_ids, /* Vector of processor IDs */
+ int processor /* This processor ID */
+ );
+
+ /* Should be internal use only, but was in external include file for
+ nemesis and some codes are using the function
+ */
+ int ne_get_idx(int neid, /* NetCDF/Exodus file ID */
+ const char *ne_var_name, /* Nemesis index variable name */
+ int64_t *index, /* array of length 2 to hold results */
+ int pos /* position of this proc/cmap in index */
+ );
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _NE_NEMESIS_H */
diff --git a/nemesis/ne_nemesisI_int.h b/nemesis/ne_nemesisI_int.h
new file mode 100644
index 0000000..23a76ea
--- /dev/null
+++ b/nemesis/ne_nemesisI_int.h
@@ -0,0 +1,3 @@
+/* Dummy file -- Not needed after integration of nemesis library into exodus. */
+
+/* Provided in case an application used to include this file in the past. */
diff --git a/nemesis/nemesis_cfg.h.in b/nemesis/nemesis_cfg.h.in
new file mode 100755
index 0000000..dd32b4a
--- /dev/null
+++ b/nemesis/nemesis_cfg.h.in
@@ -0,0 +1,25 @@
+#ifndef __nemesis_cfg_h
+#define __nemesis_cfg_h
+
+#define NEMESIS_VERSION_MAJOR @NEMESIS_VERSION_MAJOR@
+#define NEMESIS_VERSION_MINOR @NEMESIS_VERSION_MINOR@
+#define NEMESIS_VERSION_PATCH @NEMESIS_VERSION_PATCH@
+#define NEMESIS_VERSION "@NEMESIS_VERSION_MAJOR at .@NEMESIS_VERSION_MINOR at .@NEMESIS_VERSION_PATCH@"
+
+#if defined(_WIN32) && !defined(WIN32)
+# define WIN32
+#endif
+
+#cmakedefine NEMESIS_BUILD_SHARED_LIBS
+#if defined(WIN32) && defined(NEMESIS_BUILD_SHARED_LIBS)
+# if defined(nemc_EXPORTS)
+# define NEMESIS_EXPORT __declspec( dllexport ) extern
+# else
+# define NEMESIS_EXPORT __declspec( dllimport ) extern
+# endif
+#else
+# define NEMESIS_EXPORT extern
+#endif
+
+#endif
+
diff --git a/nemesis/nemesis_wrapper.c b/nemesis/nemesis_wrapper.c
new file mode 100644
index 0000000..531998a
--- /dev/null
+++ b/nemesis/nemesis_wrapper.c
@@ -0,0 +1,596 @@
+#include <exodusII.h>
+#include <exodusII_int.h>
+#include <ne_nemesisI.h>
+
+/*=============================================================================
+ * Initial Information Routines
+ *===========================================================================*/
+int
+ne_get_init_info(int neid, /* NemesisI file ID */
+ int *num_proc, /* Number of processors */
+ int *num_proc_in_f, /* Number of procs in this file */
+ char *ftype)
+{
+ return ex_get_init_info(neid, num_proc, num_proc_in_f, ftype);
+}
+
+int
+ne_put_init_info(int neid, /* NemesisI file ID */
+ int num_proc, /* Number of processors */
+ int num_proc_in_f, /* Number of procs in this file */
+ char *ftype)
+{
+ return ex_put_init_info(neid, num_proc, num_proc_in_f, ftype);
+}
+
+int
+ne_get_init_global(int neid, /* NemesisI file ID */
+ void_int *num_nodes_g, /* Number of global FEM nodes */
+ void_int *num_elems_g, /* Number of global FEM elements */
+ void_int *num_elem_blks_g, /* Number of global elem blocks */
+ void_int *num_node_sets_g, /* Number of global node sets */
+ void_int *num_side_sets_g /* Number of global side sets */
+ )
+{
+ return ex_get_init_global(neid, num_nodes_g, num_elems_g, num_elem_blks_g, num_node_sets_g, num_side_sets_g);
+}
+
+int
+ne_put_init_global(int neid, /* NemesisI file ID */
+ int64_t num_nodes_g, /* Number of global FEM nodes */
+ int64_t num_elems_g, /* Number of global FEM elements */
+ int64_t num_elem_blks_g, /* Number of global elem blocks */
+ int64_t num_node_sets_g, /* Number of global node sets */
+ int64_t num_side_sets_g /* Number of global side sets */
+ )
+{
+ return ex_put_init_global(neid, num_nodes_g, num_elems_g, num_elem_blks_g, num_node_sets_g, num_side_sets_g);
+}
+
+int ne_put_version(int neid)
+{
+ return ex_put_nemesis_version(neid);
+}
+
+/*=============================================================================
+ * Loadbalance Parameter Routines
+ *===========================================================================*/
+int
+ne_get_loadbal_param(int neid, /* NetCDF/Exodus file ID */
+ void_int *num_int_nodes, /* Number of internal FEM nodes */
+ void_int *num_bor_nodes, /* Number of border FEM nodes */
+ void_int *num_ext_nodes, /* Number of external FEM nodes */
+ void_int *num_int_elems, /* Number of internal FEM elems */
+ void_int *num_bor_elems, /* Number of border FEM elems */
+ void_int *num_node_cmaps, /* Number of nodal comm maps */
+ void_int *num_elem_cmaps, /* Number of elemental comm maps */
+ int processor /* Processor ID */
+ )
+{
+ return ex_get_loadbal_param(neid,
+ num_int_nodes, num_bor_nodes, num_ext_nodes,
+ num_int_elems, num_bor_elems,
+ num_node_cmaps, num_elem_cmaps, processor);
+}
+
+int
+ne_put_loadbal_param(int neid, /* NemesisI file ID */
+ int64_t num_int_nodes, /* Number of internal FEM nodes */
+ int64_t num_bor_nodes, /* Number of border FEM nodes */
+ int64_t num_ext_nodes, /* Number of external FEM nodes */
+ int64_t num_int_elems, /* Number of internal FEM elems */
+ int64_t num_bor_elems, /* Number of border FEM elems */
+ int64_t num_node_cmaps,/* Number of nodal comm maps */
+ int64_t num_elem_cmaps,/* Number of elemental comm maps */
+ int processor /* Processor ID */
+ )
+{
+ return ex_put_loadbal_param(neid,
+ num_int_nodes, num_bor_nodes, num_ext_nodes,
+ num_int_elems, num_bor_elems,
+ num_node_cmaps, num_elem_cmaps, processor);
+}
+
+int
+ne_put_loadbal_param_cc(int neid, /* NetCDF/Exodus file ID */
+ void_int *num_int_nodes, /* Number of internal node IDs */
+ void_int *num_bor_nodes, /* Number of border node IDs */
+ void_int *num_ext_nodes, /* Number of external node IDs */
+ void_int *num_int_elems, /* Number of internal elem IDs */
+ void_int *num_bor_elems, /* Number of border elem IDs */
+ void_int *num_node_cmaps, /* Number of nodal comm maps */
+ void_int *num_elem_cmaps /* Number of elem comm maps */
+ )
+{
+ return ex_put_loadbal_param_cc(neid,
+ num_int_nodes, num_bor_nodes, num_ext_nodes,
+ num_int_elems, num_bor_elems,
+ num_node_cmaps, num_elem_cmaps);
+}
+
+
+/*=============================================================================
+ * NS, SS & EB Global Parameter Routines
+ *===========================================================================*/
+int
+ne_get_ns_param_global(int neid, /* NetCDF/Exodus file ID */
+ void_int *ns_ids_glob, /* Global IDs of node sets */
+ void_int *ns_n_cnt_glob, /* Count of nodes in node sets */
+ void_int *ns_df_cnt_glob /* Count of dist. factors in ns */
+ )
+{
+ return ex_get_ns_param_global(neid, ns_ids_glob, ns_n_cnt_glob, ns_df_cnt_glob);
+}
+
+int
+ne_put_ns_param_global(int neid, /* NemesisI file ID */
+ void_int *global_ids, /* Vector of global node-set IDs */
+ void_int *global_n_cnts, /* Vector of node counts in node-sets */
+ void_int *global_df_cnts /* Vector of dist factor counts in node-sets */
+ )
+{
+ return ex_put_ns_param_global(neid, global_ids, global_n_cnts, global_df_cnts);
+}
+
+int
+ne_get_ss_param_global(int neid, /* NetCDF/Exodus file ID */
+ void_int *ss_ids_glob, /* Global side-set IDs */
+ void_int *ss_s_cnt_glob, /* Global side count */
+ void_int *ss_df_cnt_glob /* Global dist. factor count */
+ )
+{
+ return ex_get_ss_param_global(neid, ss_ids_glob, ss_s_cnt_glob, ss_df_cnt_glob);
+}
+
+int
+ne_put_ss_param_global(int neid, /* NemesisI file ID */
+ void_int *global_ids, /* Vector of global side-set IDs */
+ void_int *global_el_cnts, /* Vector of element/side */
+ /* counts in each side set */
+ void_int *global_df_cnts /* Vector of dist. factor */
+ /* counts in each side set */
+ )
+{
+ return ex_put_ss_param_global(neid, global_ids, global_el_cnts, global_df_cnts);
+}
+
+
+int
+ne_get_eb_info_global(int neid, /* NemesisI file ID */
+ void_int *el_blk_ids, /* Vector of global element IDs */
+ void_int *el_blk_cnts /* Vector of global element counts */
+ )
+{
+ return ex_get_eb_info_global(neid, el_blk_ids, el_blk_cnts);
+}
+
+int
+ne_put_eb_info_global(int neid, /* NemesisI file ID */
+ void_int *el_blk_ids, /* Vector of global element IDs */
+ void_int *el_blk_cnts /* Vector of global element counts */
+ )
+{
+ return ex_put_eb_info_global(neid, el_blk_ids, el_blk_cnts);
+}
+
+
+/*=============================================================================
+ * NS, SS & EB Subset Routines
+ *===========================================================================*/
+int
+ne_get_n_side_set(int neid, /* NetCDF/Exodus file ID */
+ ex_entity_id side_set_id, /* Side-set ID to read */
+ int64_t start_side_num, /* Starting element number */
+ int64_t num_sides, /* Number of sides to read */
+ void_int *side_set_elem_list, /* List of element IDs */
+ void_int *side_set_side_list /* List of side IDs */
+ )
+{
+ return ex_get_n_side_set(neid, side_set_id, start_side_num, num_sides, side_set_elem_list, side_set_side_list);
+}
+
+int
+ne_put_n_side_set(int neid, /* NetCDF/Exodus file ID */
+ ex_entity_id side_set_id, /* Side-set ID to write */
+ int64_t start_side_num, /* Starting element number */
+ int64_t num_sides, /* Number of sides to write */
+ const void_int *side_set_elem_list, /* List of element IDs */
+ const void_int *side_set_side_list /* List of side IDs */
+ )
+{
+ return ex_put_n_side_set(neid, side_set_id, start_side_num, num_sides, side_set_elem_list, side_set_side_list);
+}
+
+
+int
+ne_get_n_side_set_df(int neid, /* NetCDF/Exodus file ID */
+ ex_entity_id side_set_id, /* Side-set ID */
+ int64_t start_num, /* Starting df number */
+ int64_t num_df_to_get, /* Number of df's to read */
+ void *side_set_df /* Distribution factors */
+ )
+{
+ return ex_get_n_side_set_df(neid, side_set_id, start_num, num_df_to_get, side_set_df);
+}
+
+int
+ne_put_n_side_set_df(int neid, /* NetCDF/Exodus file ID */
+ ex_entity_id side_set_id, /* Side-set ID */
+ int64_t start_num, /* Starting df number */
+ int64_t num_df_to_get, /* Number of df's to write */
+ void *side_set_df /* Distribution factors */
+ )
+{
+ return ex_put_n_side_set_df(neid, side_set_id, start_num, num_df_to_get, side_set_df);
+}
+
+
+int
+ne_get_n_node_set(int neid, /* NetCDF/Exodus file ID */
+ ex_entity_id node_set_id, /* Node set ID */
+ int64_t start_node_num, /* Node index to start reading at */
+ int64_t num_node, /* Number of nodes to read */
+ void_int *node_set_node_list /* List of nodes in node set */
+ )
+{
+ return ex_get_n_node_set(neid, node_set_id, start_node_num, num_node, node_set_node_list);
+}
+
+int
+ne_put_n_node_set(int neid, /* NetCDF/Exodus file ID */
+ ex_entity_id node_set_id, /* Node set ID */
+ int64_t start_node_num, /* Node index to start writing at */
+ int64_t num_node, /* Number of nodes to write */
+ const void_int *node_set_node_list /* List of nodes in node set */
+ )
+{
+ return ex_put_n_node_set(neid, node_set_id, start_node_num, num_node, node_set_node_list);
+}
+
+int
+ne_get_n_node_set_df(int neid, /* NetCDF/Exodus file ID */
+ ex_entity_id node_set_id, /* Node-set ID */
+ int64_t start_num, /* Starting df number */
+ int64_t num_df_to_get, /* Number of df's to read */
+ void *node_set_df /* Distribution factors */
+ )
+{
+ return ex_get_n_node_set_df(neid, node_set_id, start_num, num_df_to_get, node_set_df);
+}
+
+int
+ne_put_n_node_set_df(int neid, /* NetCDF/Exodus file ID */
+ ex_entity_id node_set_id, /* Node-set ID */
+ int64_t start_num, /* Starting df number */
+ int64_t num_df_to_get, /* Number of df's to write */
+ void *node_set_df /* Distribution factors */
+ )
+{
+ return ex_put_n_node_set_df(neid, node_set_id, start_num, num_df_to_get, node_set_df);
+}
+
+int
+ne_get_n_coord(int neid, /* NetCDF/Exodus file ID */
+ int64_t start_node_num, /* Starting position to read from */
+ int64_t num_nodes, /* Number of coords to read */
+ void *x_coor, /* Vector of X coordinates */
+ void *y_coor, /* Vector of Y coordinates */
+ void *z_coor /* Vector of Z coordinates */
+ )
+{
+ return ex_get_n_coord(neid, start_node_num, num_nodes, x_coor, y_coor, z_coor);
+}
+
+int
+ne_put_n_coord(int neid, /* NetCDF/Exodus file ID */
+ int64_t start_node_num, /* Starting position to write to */
+ int64_t num_nodes, /* Number of coords to write */
+ void *x_coor, /* Vector of X coordinates */
+ void *y_coor, /* Vector of Y coordinates */
+ void *z_coor /* Vector of Z coordinates */
+ )
+{
+ return ex_put_n_coord(neid, start_node_num, num_nodes, x_coor, y_coor, z_coor);
+}
+
+int
+ne_get_n_elem_conn (int neid, /* NetCDF/Exodus file ID */
+ ex_entity_id elem_blk_id, /* Element block ID */
+ int64_t start_elem_num, /* Starting position to read from */
+ int64_t num_elems, /* Number of elements to read */
+ void_int *connect /* Connectivity vector */
+ )
+{
+ return ex_get_n_elem_conn(neid, elem_blk_id, start_elem_num, num_elems, connect);
+}
+
+int
+ne_put_n_elem_conn (int neid, /* NetCDF/Exodus file ID */
+ ex_entity_id elem_blk_id, /* Element block ID */
+ int64_t start_elem_num, /* Starting position to write to */
+ int64_t num_elems, /* Number of elements to write */
+ const void_int *connect /* Connectivity vector */
+ )
+{
+ return ex_put_n_elem_conn(neid, elem_blk_id, start_elem_num, num_elems, connect);
+}
+
+int
+ne_get_n_elem_attr (int neid, /* NetCDF/Exodus file ID */
+ ex_entity_id elem_blk_id, /* Element block ID */
+ int64_t start_elem_num, /* Starting position to read from */
+ int64_t num_elems, /* Number of elements to read */
+ void *attrib /* Attribute */
+ )
+{
+ return ex_get_n_elem_attr(neid, elem_blk_id, start_elem_num, num_elems, attrib);
+}
+
+int
+ne_put_n_elem_attr (int neid, /* NetCDF/Exodus file ID */
+ ex_entity_id elem_blk_id, /* Element block ID */
+ int64_t start_elem_num, /* Starting position to write to */
+ int64_t num_elems, /* Number of elements to write */
+ void *attrib /* Attribute */
+ )
+{
+ return ex_put_n_elem_attr(neid, elem_blk_id, start_elem_num, num_elems, attrib);
+}
+
+int
+ne_get_elem_type(int neid, /* NetCDF/Exodus file ID */
+ ex_entity_id elem_blk_id, /* Element block ID */
+ char *elem_type /* The name of the element type */
+ )
+{
+ return ex_get_elem_type(neid, elem_blk_id, elem_type);
+}
+
+/*=============================================================================
+ * Variable Routines
+ *===========================================================================*/
+int
+ne_get_n_elem_var (int neid, /* NetCDF/Exodus file ID */
+ int time_step, /* time index */
+ int elem_var_index, /* elemental variable index */
+ ex_entity_id elem_blk_id, /* elemental block id */
+ int64_t num_elem_this_blk, /* number of elements in block */
+ int64_t start_elem_num, /* Starting position for read */
+ int64_t num_elem, /* Number of elements to read */
+ void *elem_var_vals /* variable values */
+ )
+{
+ return ex_get_n_var(neid, time_step, EX_ELEM_BLOCK,
+ elem_var_index, elem_blk_id,
+ start_elem_num, num_elem,
+ elem_var_vals);
+}
+
+int
+ne_put_elem_var_slab (int neid, /* NetCDF/Exodus file ID */
+ int time_step, /* time index */
+ int elem_var_index, /* elemental variable index */
+ ex_entity_id elem_blk_id, /* elemental block id */
+ int64_t start_pos, /* Starting position to write to */
+ int64_t num_vals, /* Number of elements to write */
+ void *elem_var_vals /* variable values */
+ )
+{
+ return ex_put_elem_var_slab(neid, time_step, elem_var_index, elem_blk_id, start_pos, num_vals, elem_var_vals);
+}
+
+int
+ne_get_n_nodal_var(int neid, /* NetCDF/Exodus file ID */
+ int time_step, /* whole time step number */
+ int nodal_var_index, /* index of desired nodal var */
+ int64_t start_node_num, /* starting node number */
+ int64_t num_nodes, /* number of nodes to read */
+ void *nodal_vars /* array of nodal var values */
+ )
+{
+ return ex_get_n_var(neid, time_step, EX_NODAL,
+ nodal_var_index, 1,
+ start_node_num, num_nodes,
+ nodal_vars);
+}
+
+int
+ne_put_nodal_var_slab(int neid, /* NetCDF/Exodus file ID */
+ int time_step, /* The time step index */
+ int nodal_var_index, /* Nodal variable index */
+ int64_t start_pos, /* Start position for write */
+ int64_t num_vals, /* Number of nodal variables */
+ void *nodal_var_vals /* Nodal variable values */
+ )
+{
+ return ex_put_nodal_var_slab(neid, time_step, nodal_var_index, start_pos, num_vals, nodal_var_vals);
+}
+
+/*=============================================================================
+ * Number Map Routines
+ *===========================================================================*/
+int
+ne_get_n_elem_num_map (int neid, /* NetCDF/Exodus file ID */
+ int64_t start_ent, /* Starting position to read from */
+ int64_t num_ents, /* Number of elements to read */
+ void_int *elem_map /* element map numbers */
+ )
+{
+ return ex_get_n_elem_num_map(neid, start_ent, num_ents, elem_map);
+}
+
+int
+ne_put_n_elem_num_map (int neid, /* NetCDF/Exodus file ID */
+ int64_t start_ent, /* Starting position to read from */
+ int64_t num_ents, /* Number of elements to read */
+ const void_int *elem_map /* element map numbers */
+ )
+{
+ return ex_put_partial_id_map(neid, EX_ELEM_MAP, start_ent, num_ents, elem_map);
+}
+
+int
+ne_get_n_node_num_map(int neid, /* NetCDF/Exodus file ID */
+ int64_t start_ent, /* starting node number */
+ int64_t num_ents, /* number of nodes to read */
+ void_int *node_map /* vector for node map */
+ )
+{
+ return ex_get_n_node_num_map(neid, start_ent, num_ents, node_map);
+}
+
+int
+ne_put_n_node_num_map(int neid, /* NetCDF/Exodus file ID */
+ int64_t start_ent, /* starting node number */
+ int64_t num_ents, /* number of nodes to read */
+ const void_int *node_map /* vector for node map */
+ )
+{
+ return ex_put_partial_id_map(neid, EX_NODE_MAP, start_ent, num_ents, node_map);
+}
+
+int
+ne_get_node_map(int neid, /* NetCDF/Exodus file ID */
+ void_int *node_mapi, /* Internal FEM node IDs */
+ void_int *node_mapb, /* Border FEM node IDs */
+ void_int *node_mape, /* External FEM node IDs */
+ int processor /* Processor IDs */
+ )
+{
+ return ex_get_processor_node_maps(neid, node_mapi, node_mapb, node_mape, processor);
+}
+
+int
+ne_put_node_map(int neid, /* NetCDF/Exodus file ID */
+ void_int *node_mapi, /* Internal FEM node IDs */
+ void_int *node_mapb, /* Border FEM node IDs */
+ void_int *node_mape, /* External FEM node IDs */
+ int processor /* This processor ID */
+ )
+{
+ return ex_put_processor_node_maps(neid, node_mapi, node_mapb, node_mape, processor);
+}
+
+int
+ne_get_elem_map(int neid, /* NetCDF/Exodus file ID */
+ void_int *elem_mapi, /* Internal element IDs */
+ void_int *elem_mapb, /* Border element IDs */
+ int processor /* Processor ID */
+ )
+{
+ return ex_get_processor_elem_maps(neid, elem_mapi, elem_mapb, processor);
+}
+
+int
+ne_put_elem_map(int neid, /* NetCDF/Exodus file ID */
+ void_int *elem_mapi, /* Internal FEM element IDs */
+ void_int *elem_mapb, /* Border FEM element IDs */
+ int processor /* This processor ID */
+ )
+{
+ return ex_put_processor_elem_maps(neid, elem_mapi, elem_mapb, processor);
+}
+
+
+/*=============================================================================
+ * Communications Maps Routines
+ *===========================================================================*/
+
+int
+ne_get_cmap_params(int neid, /* NetCDF/Exodus file ID */
+ void_int *node_cmap_ids, /* Nodal comm. map IDs */
+ void_int *node_cmap_node_cnts, /* Number of nodes in each map */
+ void_int *elem_cmap_ids, /* Elemental comm. map IDs */
+ void_int *elem_cmap_elem_cnts, /* Number of elems in each map */
+ int processor /* This processor ID */
+ )
+{
+ return ex_get_cmap_params(neid, node_cmap_ids, node_cmap_node_cnts, elem_cmap_ids, elem_cmap_elem_cnts, processor);
+}
+
+int
+ne_put_cmap_params(int neid, /* NetCDF/Exodus file ID */
+ void_int *node_map_ids, /* Node map IDs */
+ void_int *node_map_node_cnts,/* Nodes in nodal comm */
+ void_int *elem_map_ids, /* Elem map IDs */
+ void_int *elem_map_elem_cnts,/* Elems in elemental comm */
+ int64_t processor /* This processor ID */
+ )
+{
+ return ex_put_cmap_params(neid, node_map_ids, node_map_node_cnts, elem_map_ids, elem_map_elem_cnts, processor);
+}
+
+int
+ne_put_cmap_params_cc(int neid, /* NetCDF/Exodus file ID */
+ void_int *node_map_ids, /* Node map IDs */
+ void_int *node_map_node_cnts, /* Nodes in nodal comm */
+ void_int *node_proc_ptrs, /* Pointer into array for */
+ /* node maps */
+ void_int *elem_map_ids, /* Elem map IDs */
+ void_int *elem_map_elem_cnts, /* Elems in elemental comm */
+ void_int *elem_proc_ptrs /* Pointer into array for */
+ /* elem maps */
+ )
+{
+ return ex_put_cmap_params_cc(neid,
+ node_map_ids, node_map_node_cnts, node_proc_ptrs,
+ elem_map_ids, elem_map_elem_cnts, elem_proc_ptrs);
+}
+
+
+int
+ne_get_node_cmap(int neid, /* NetCDF/Exodus file ID */
+ ex_entity_id map_id, /* Map ID */
+ void_int *node_ids, /* FEM node IDs */
+ void_int *proc_ids, /* Processor IDs */
+ int processor /* This processor ID */
+ )
+{
+ return ex_get_node_cmap(neid, map_id, node_ids, proc_ids, processor);
+}
+
+int
+ne_put_node_cmap(int neid, /* NetCDF/Exodus file ID */
+ ex_entity_id map_id, /* Nodal comm map ID */
+ void_int *node_ids, /* FEM node IDs */
+ void_int *proc_ids, /* Processor IDs */
+ int processor /* This processor ID */
+ )
+{
+ return ex_put_node_cmap(neid, map_id, node_ids, proc_ids, processor);
+}
+
+int
+ne_get_elem_cmap(int neid, /* NetCDF/Exodus file ID */
+ ex_entity_id map_id, /* Elemental comm map ID */
+ void_int *elem_ids, /* Element IDs */
+ void_int *side_ids, /* Element side IDs */
+ void_int *proc_ids, /* Processor IDs */
+ int processor /* This processor ID */
+ )
+{
+ return ex_get_elem_cmap(neid, map_id, elem_ids, side_ids, proc_ids, processor);
+}
+
+
+int
+ne_put_elem_cmap(int neid, /* NetCDF/Exodus file ID */
+ ex_entity_id map_id, /* Elemental comm map ID */
+ void_int *elem_ids, /* Vector of element IDs */
+ void_int *side_ids, /* Vector of side IDs */
+ void_int *proc_ids, /* Vector of processor IDs */
+ int processor /* This processor ID */
+ )
+{
+ return ex_put_elem_cmap(neid, map_id, elem_ids, side_ids, proc_ids, processor);
+}
+
+int ne_get_idx(int neid, /* NetCDF/Exodus file ID */
+ const char *ne_var_name, /* Nemesis index variable name */
+ int64_t *index, /* array of length 2 to hold results */
+ int pos /* position of this proc/cmap in index */
+ )
+{
+ return ex_get_idx(neid, ne_var_name, index, pos);
+}
+
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/exodus.git
More information about the debian-science-commits
mailing list