[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