diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..76fe47b --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +build/ +lib/ +include/ +SeacasRepoVersion.txt diff --git a/SETUP b/SETUP index 6df3d56..dfa46bd 100755 --- a/SETUP +++ b/SETUP @@ -6,7 +6,7 @@ then exit 1 fi -# $2 netcdf-c hdf5 +# $2 = NetCDF-C $3 = HDF5 cd $(dirname $0) libname=$(basename $(pwd)) mkdir -p build diff --git a/cmake/tribits/win_interface/include/gettimeofday.c b/cmake/tribits/win_interface/include/gettimeofday.c deleted file mode 100644 index 5b1a573..0000000 --- a/cmake/tribits/win_interface/include/gettimeofday.c +++ /dev/null @@ -1,50 +0,0 @@ -#include -#include /* to get timeval struct */ - -struct timezone -{ - int tz_minuteswest; /* minutes W of Greenwich */ - int tz_dsttime; /* type of dst correction */ -}; -#if defined(_MSC_VER) || defined(_MSC_EXTENSIONS) -#define DELTA_EPOCH_IN_MICROSECS 11644473600000000Ui64 -#else -#define DELTA_EPOCH_IN_MICROSECS 11644473600000000ULL -#endif - -static int gettimeofday(struct timeval *tv, struct timezone *tz) -{ - FILETIME ft; - unsigned __int64 tmpres = 0; - static int tzflag; - - if (NULL != tv) - { - GetSystemTimeAsFileTime(&ft); - - tmpres |= ft.dwHighDateTime; - tmpres <<= 32; - tmpres |= ft.dwLowDateTime; - - /*converting file time to unix epoch*/ - tmpres /= 10; /*convert into microseconds*/ - tmpres -= DELTA_EPOCH_IN_MICROSECS; - tv->tv_sec = (long)(tmpres / 1000000UL); - tv->tv_usec = (long)(tmpres % 1000000UL); - } - - if (NULL != tz) - { - if (!tzflag) - { - _tzset(); - tzflag++; - } - tz->tz_minuteswest = _timezone / 60; - tz->tz_dsttime = _daylight; - } - - return 0; -} - - diff --git a/cmake/tribits/win_interface/include/strings.h b/cmake/tribits/win_interface/include/strings.h deleted file mode 100644 index 19f87be..0000000 --- a/cmake/tribits/win_interface/include/strings.h +++ /dev/null @@ -1,5 +0,0 @@ -// On windows stricmp and strnicmp -// are strcasecmp and strncasecmp, and are -// include in other header files -#define strcasecmp stricmp -#define strncasecmp strnicmp diff --git a/cmake/tribits/win_interface/include/unistd.h b/cmake/tribits/win_interface/include/unistd.h deleted file mode 100644 index e69de29..0000000 diff --git a/cmake/tribits/win_interface/include/winmath.h b/cmake/tribits/win_interface/include/winmath.h deleted file mode 100644 index 7a360d4..0000000 --- a/cmake/tribits/win_interface/include/winmath.h +++ /dev/null @@ -1,209 +0,0 @@ -#ifndef WINMATH_H -#define WINMATH_H - -/********************************************************************** - - acosh.c - - - $Author$ - $Date$ - created at: Fri Apr 12 00:34:17 JST 2002 - - public domain rewrite of acosh(3), asinh(3) and atanh(3) - -**********************************************************************/ - -#include -#include -#include -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -/* DBL_MANT_DIG must be less than 4 times of bits of int */ -#ifndef DBL_MANT_DIG -#define DBL_MANT_DIG 53 /* in this case, at least 12 digit precision */ -#endif -#define BIG_CRITERIA_BIT (1< 0 -#define BIG_CRITERIA (1.0*BIG_CRITERIA_BIT) -#else -#define BIG_CRITERIA (1.0*(1< 0 -#define SMALL_CRITERIA (1.0/SMALL_CRITERIA_BIT) -#else -#define SMALL_CRITERIA (1.0*(1< BIG_CRITERIA) - x += x; - else - x += sqrt((x + 1) * (x - 1)); - return log(x); -} - -inline double asinh(double x) -{ - int neg = x < 0; - double z = fabs(x); - - if (z < SMALL_CRITERIA) return x; - if (z < (1.0/(1< BIG_CRITERIA) { - z = log(z + z); - } - else { - z = log(z + sqrt(z * z + 1)); - } - if (neg) z = -z; - return z; -} - -inline double atanh(double x) -{ - int neg = x < 0; - double z = fabs(x); - - if (z < SMALL_CRITERIA) return x; - z = log(z > 1 ? -1 : (1 + z) / (1 - z)) / 2; - if (neg) z = -z; - return z; -} - -inline double round(double val) -{ - return floor(val + 0.5); -} - -inline void srand48(double seed) -{ - srand(seed); -} - -inline double drand48() -{ - return (double(rand()) / RAND_MAX); -} - -inline float tgammaf(float z){ - static unsigned int c = 9; - static float lanczos_coefficients[] = {1.000000000000000174663f, - 5716.400188274341379136f, - -14815.30426768413909044f, - 14291.49277657478554025f, - -6348.160217641458813289f, - 1301.608286058321874105f, - -108.1767053514369634679f, - 2.605696505611755827729f, - -0.7423452510201416151527e-2f, - 0.5384136432509564062961e-7f, - -0.4023533141268236372067e-8f - }; - float return_val = 0.0f; - - z -= 1.0f; - float temp = z + c + 0.5f; - float A = lanczos_coefficients[0]; - int i = 0; - for(i = 1; i < c+2; ++i){ - A += lanczos_coefficients[i]/(z+i); - } - return_val = sqrt(2 * M_PI)* pow(temp, z + 0.5f) * exp(-temp) * A; - - return return_val; -} - -inline double tgamma(double z){ - static unsigned int c = 9; - static double lanczos_coefficients[] = {1.000000000000000174663, - 5716.400188274341379136, - -14815.30426768413909044, - 14291.49277657478554025, - -6348.160217641458813289, - 1301.608286058321874105, - -108.1767053514369634679, - 2.605696505611755827729, - -0.7423452510201416151527e-2, - 0.5384136432509564062961e-7, - -0.4023533141268236372067e-8 - }; - double return_val = 0.0; - - z -= 1.0; - double temp = z + c + 0.5; - double A = lanczos_coefficients[0]; - int i = 0; - for(i = 1; i < c+2; ++i){ - A += lanczos_coefficients[i]/(z+i); - } - return_val = sqrt(2 * M_PI)* pow(temp, z + 0.5) * exp(-temp) * A; - - return return_val; -} - -inline long double tgammal(long double z){ - static unsigned int c = 9; - static long double lanczos_coefficients[] = {1.000000000000000174663, - 5716.400188274341379136, - -14815.30426768413909044, - 14291.49277657478554025, - -6348.160217641458813289, - 1301.608286058321874105, - -108.1767053514369634679, - 2.605696505611755827729, - -0.7423452510201416151527e-2, - 0.5384136432509564062961e-7, - -0.4023533141268236372067e-8 - }; - long double return_val = 0.0; - - z -= 1.0; - long double temp = z + c + 0.5; - long double A = lanczos_coefficients[0]; - int i = 0; - for(i = 1; i < c+2; ++i){ - A += lanczos_coefficients[i]/(z+i); - } - return_val = sqrt(2 * M_PI)* pow(temp, z + 0.5) * exp(-temp) * A; - - return return_val; -} - -// This function was adapted from a public domain implementation of erf -// which is available at http://www.johndcook.com/cpp_erf.html. The only -// changes made were to change the type from double to float. -inline float erff(float x) -{ - // constants - float a1 = 0.254829592f; - float a2 = -0.284496736f; - float a3 = 1.421413741f; - float a4 = -1.453152027f; - float a5 = 1.061405429f; - float p = 0.3275911f; - - // Save the sign of x - int sign = 1; - if (x < 0) - sign = -1; - x = fabs(x); - - // A&S formula 7.1.26 - float t = 1.0f/(1.0f + p*x); - float y = 1.0f - (((((a5*t + a4)*t) + a3)*t + a2)*t + a1)*t*exp(-x*x); - - return sign*y; -} - -#endif diff --git a/cmake/tribits/win_interface/include/winprocess.h b/cmake/tribits/win_interface/include/winprocess.h deleted file mode 100644 index d313c6d..0000000 --- a/cmake/tribits/win_interface/include/winprocess.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifdef _MSC_VER -# define NOMINMAX -# include -# include -# define getpid _getpid -inline void sleep(int sec) -{ - Sleep(sec * 1000); -} -#pragma comment(lib, "Ws2_32.lib") -#endif diff --git a/packages/seacas/doc-source/include/appxexodus.tex b/packages/seacas/doc-source/include/appxexodus.tex deleted file mode 100644 index c1afc3b..0000000 --- a/packages/seacas/doc-source/include/appxexodus.tex +++ /dev/null @@ -1,220 +0,0 @@ -\chapter{The EXODUS Database Format} \label{appx:exodus} - -The following code segment reads an EXODUS database. The first segment -is the GENESIS database format. - -\begin{verbatim} -C --Open the EXODUS database file - - NDB = 9 - OPEN (UNIT=NDB, ..., STATUS='OLD', FORM='UNFORMATTED') - -C --Read the title - - READ (NDB) TITLE -C --TITLE - the title of the database (CHARACTER*80) - -C --Read the database sizing parameters - - READ (NDB) NUMNP, NDIM, NUMEL, NELBLK, - & NUMNPS, LNPSNL, NUMESS, LESSEL, LESSNL, NVERSN -C --NUMNP - the number of nodes -C --NDIM - the number of coordinates per node -C --NUMEL - the number of elements -C --NELBLK - the number of element blocks -C --NUMNPS - the number of node sets -C --LNPSNL - the length of the node sets node list -C --NUMESS - the number of side sets -C --LESSEL - the length of the side sets element list -C --LESSNL - the length of the side sets node list -C --NVERSN - the file format version number - -C --Read the nodal coordinates - - READ (NDB) ((CORD(INP,I), INP=1,NUMNP), I=1,NDIM) - -C --Read the element order map (each element must be listed once) - - READ (NDB) (MAPEL(IEL), IEL=1,NUMEL) -\end{verbatim} -\newpage -\begin{verbatim} -C --Read the element blocks - - DO 100 IEB = 1, NELBLK - -C --Read the sizing parameters for this element block - - READ (NDB) IDELB, NUMELB, NUMLNK, NATRIB -C --IDELB - the element block identification (must be unique) -C --NUMELB - the number of elements in this block -C -- (the sum of NUMELB for all blocks must equal NUMEL) -C --NUMLNK - the number of nodes defining the connectivity -C -- for an element in this block -C --NATRIB - the number of element attributes for an element -C -- in this block - -C --Read the connectivity for all elements in this block - - READ (NDB) ((LINK(J,I), J=1,NUMLNK, I=1,NUMELB) - -C --Read the attributes for all elements in this block - - READ (NDB) ((ATRIB(J,I), J=1,NATRIB, I=1,NUMELB) - - 100 CONTINUE -\end{verbatim} -\newpage -\begin{verbatim} -C --Read the node sets - - READ (NDB) (IDNPS(I), I=1,NUMNPS) -C --IDNPS - the ID of each node set - READ (NDB) (NNNPS(I), I=1,NUMNPS) -C --NNNPS - the number of nodes in each node set - READ (NDB) (IXNNPS(I), I=1,NUMNPS) -C --IXNNPS - the index of the first node in each node set -C -- (in LTNNPS and FACNPS) - - READ (NDB) (LTNNPS(I), I=1,LNPSNL) -C --LTNNPS - the nodes in all the node sets - READ (NDB) (FACNPS(I), I=1,LNPSNL) -C --FACNPS - the factor for each node in LTNNPS - -C --Read the side sets - - READ (NDB) (IDESS(I), I=1,NUMESS) -C --IDESS - the ID of each side set - READ (NDB) (NEESS(I), I=1,NUMESS) -C --NEESS - the number of elements in each side set - READ (NDB) (NNESS(I), I=1,NUMESS) -C --NNESS - the number of nodes in each side set - READ (NDB) (IXEESS(I), I=1,NUMESS) -C --IXEESS - the index of the first element in each side set -C -- (in LTEESS) - READ (NDB) (IXNESS(I), I=1,NUMESS) -C --IXNESS - the index of the first node in each side set -C -- (in LTNESS and FACESS) - - READ (NDB) (LTEESS(I), I=1,LESSEL) -C --LTEESS - the elements in all the side sets - READ (NDB) (LTNESS(I), I=1,LESSNL) -C --LTNESS - the nodes in all the side sets - READ (NDB) (FACESS(I), I=1,LESSNL) -C --FACESS - the factor for each node in LTNESS -\end{verbatim} -\newpage - -A valid GENESIS database may end at this point or at any point until the -number of variables is read. - -\begin{verbatim} -C --Read the QA header information - - READ (NDB, END=900) NQAREC -C --NQAREC - the number of QA records (must be at least 1) - - DO 110 IQA = 1, MAX(1,NQAREC) - READ (NDB) (QATITL(I,IQA), I=1,4) -C --QATITL - the QA title records; each record contains: -C -- 1) analysis code name (CHARACTER*8) -C -- 2) analysis code qa descriptor (CHARACTER*8) -C -- 3) analysis date (CHARACTER*8) -C -- 4) analysis time (CHARACTER*8) - 110 CONTINUE - -C --Read the optional header text - - READ (NDB, END=900) NINFO -C --NINFO - the number of information records - - DO 120 I = 1, NINFO - READ (NDB) INFO(I) -C --INFO - extra information records (optional) that contain -C -- any supportive documentation that the analysis code -C -- developer wishes (CHARACTER*80) - 120 CONTINUE - -C --Read the coordinate names - - READ (NDB, END=900) (NAMECO(I), I=1,NDIM) -C --NAMECO - the coordinate names (CHARACTER*8) - -C --Read the element type names - - READ (NDB, END=900) (NAMELB(I), I=1,NELBLK) -C --NAMELB - the element type names (CHARACTER*8) -\end{verbatim} - -The GENESIS section of the database ends at this point. - -\newpage -\begin{verbatim} -C --Read the history, global, nodal, and element variable information - - READ (NDB, END=900) NVARHI, NVARGL, NVARNP, NVAREL -C --NVARHI - the number of history variables -C --NVARGL - the number of global variables -C --NVARNP - the number of nodal variables -C --NVAREL - the number of element variables - - READ (NDB) - & (NAMEHV(I), I=1,NVARHI), - & (NAMEGV(I), I=1,NVARGL), - & (NAMENV(I), I=1,NVARNP), - & (NAMEEV(I), I=1,NVAREL) -C --NAMEHI - the history variable names (CHARACTER*8) -C --NAMEGV - the global variable names (CHARACTER*8) -C --NAMENV - the nodal variable names (CHARACTER*8) -C --NAMEEV - the element variable names (CHARACTER*8) - - READ (NDB) ((ISEVOK(I,J), I=1,NVAREL), J=1,NELBLK) -C --ISEVOK - the name truth table for the element blocks; -C -- ISEVOK(i,j) refers to variable i of element block j; -C -- the value is 0 if and only if data will NOT be output for -C -- variable i for element block j (otherwise the value is 1) -\end{verbatim} -\newpage -\begin{verbatim} -C --Read the time steps - - 130 CONTINUE - READ (NDB, END=900) TIME, HISTFL -C --TIME - the time step value -C --HISTFL - the time step type flag: -C -- 0.0 for all variables output ("whole" time step) else -C -- only history variables output ("history-only" time step) -C - READ (NDB) (VALHV(IVAR), IVAR=1,NVARGL) -C --VALHV - the history values for the current time step - - IF (HISTFL .EQ. 0.0) THEN - READ (NDB) (VALGV(IVAR), IVAR=1,NVARGL) -C --VALGV - the global values for the current time step - - DO 140 IVAR = 1, NVARNP - READ (NDB) (VALNV(INP,IVAR), INP=1,NUMNP) -C --VALNV - the nodal variables at each node -C -- for the current time step - 140 CONTINUE - - DO 160 IBLK = 1, NELBLK - DO 150 IVAR = 1, NVAREL - IF (ISEVOK(IVAR,IBLK) .NE. 0) THEN - READ (NDB) (VALEV(IEL,IVAR,IBLK), - & IEL=1,NUMELB(IBLK)) -C --VALEV - the element variables at each element -C -- for the current time step - END IF - 150 CONTINUE - 160 CONTINUE - END IF - -C --Handle time step data - ... - GOTO 130 - - 900 CONTINUE -C --Handle end of file on database - ... -\end{verbatim} diff --git a/packages/seacas/doc-source/include/appxgenesis.tex b/packages/seacas/doc-source/include/appxgenesis.tex deleted file mode 100644 index d2e1c06..0000000 --- a/packages/seacas/doc-source/include/appxgenesis.tex +++ /dev/null @@ -1,145 +0,0 @@ -\chapter{The GENESIS Database Format} \label{appx:genesis} - -The following code segment reads a GENESIS database. - -\begin{verbatim} -C --Open the GENESIS database file - - NDB = 9 - OPEN (UNIT=NDB, ..., STATUS='OLD', FORM='UNFORMATTED') - -C --Read the title - - READ (NDB) TITLE -C --TITLE - the title of the database (CHARACTER*80) - -C --Read the database sizing parameters - - READ (NDB) NUMNP, NDIM, NUMEL, NELBLK, - & NUMNPS, LNPSNL, NUMESS, LESSEL, LESSNL -C --NUMNP - the number of nodes -C --NDIM - the number of coordinates per node -C --NUMEL - the number of elements -C --NELBLK - the number of element blocks -C --NUMNPS - the number of node sets -C --LNPSNL - the length of the node sets node list -C --NUMESS - the number of side sets -C --LESSEL - the length of the side sets element list -C --LESSNL - the length of the side sets node list - -C --Read the nodal coordinates - - READ (NDB) ((CORD(INP,I), INP=1,NUMNP), I=1,NDIM) - -C --Read the element order map (each element must be listed once) - - READ (NDB) (MAPEL(IEL), IEL=1,NUMEL) -\end{verbatim} -\newpage -\begin{verbatim} -C --Read the element blocks - - DO 100 IEB = 1, NELBLK - -C --Read the sizing parameters for this element block - - READ (NDB) IDELB, NUMELB, NUMLNK, NATRIB -C --IDELB - the element block identification (must be unique) -C --NUMELB - the number of elements in this block -C -- (the sum of NUMELB for all blocks must equal NUMEL) -C --NUMLNK - the number of nodes defining the connectivity -C -- for an element in this block -C --NATRIB - the number of element attributes for an element -C -- in this block - -C --Read the connectivity for all elements in this block - - READ (NDB) ((LINK(J,I), J=1,NUMLNK, I=1,NUMELB) - -C --Read the attributes for all elements in this block - - READ (NDB) ((ATRIB(J,I), J=1,NATRIB, I=1,NUMELB) - - 100 CONTINUE -\end{verbatim} -\newpage -\begin{verbatim} -C --Read the node sets - - READ (NDB) (IDNPS(I), I=1,NUMNPS) -C --IDNPS - the ID of each node set - READ (NDB) (NNNPS(I), I=1,NUMNPS) -C --NNNPS - the number of nodes in each node set - READ (NDB) (IXNNPS(I), I=1,NUMNPS) -C --IXNNPS - the index of the first node in each node set -C -- (in LTNNPS and FACNPS) - - READ (NDB) (LTNNPS(I), I=1,LNPSNL) -C --LTNNPS - the nodes in all the node sets - READ (NDB) (FACNPS(I), I=1,LNPSNL) -C --FACNPS - the factor for each node in LTNNPS - -C --Read the side sets - - READ (NDB) (IDESS(I), I=1,NUMESS) -C --IDESS - the ID of each side set - READ (NDB) (NEESS(I), I=1,NUMESS) -C --NEESS - the number of elements in each side set - READ (NDB) (NNESS(I), I=1,NUMESS) -C --NNESS - the number of nodes in each side set - READ (NDB) (IXEESS(I), I=1,NUMESS) -C --IXEESS - the index of the first element in each side set -C -- (in LTEESS) - READ (NDB) (IXNESS(I), I=1,NUMESS) -C --IXNESS - the index of the first node in each side set -C -- (in LTNESS and FACESS) - - READ (NDB) (LTEESS(I), I=1,LESSEL) -C --LTEESS - the elements in all the side sets - READ (NDB) (LTNESS(I), I=1,LESSNL) -C --LTNESS - the nodes in all the side sets - READ (NDB) (FACESS(I), I=1,LESSNL) -C --FACESS - the factor for each node in LTNESS -\end{verbatim} -\newpage - -A valid GENESIS database may end at this point or after any point -described below. - -\begin{verbatim} -C --Read the QA header information - - READ (NDB, END=...) NQAREC -C --NQAREC - the number of QA records (must be at least 1) - - DO 110 IQA = 1, MAX(1,NQAREC) - READ (NDB) (QATITL(I,IQA), I=1,4) -C --QATITL - the QA title records; each record contains: -C -- 1) analysis code name (CHARACTER*8) -C -- 2) analysis code qa descriptor (CHARACTER*8) -C -- 3) analysis date (CHARACTER*8) -C -- 4) analysis time (CHARACTER*8) - 110 CONTINUE - -C --Read the optional header text - - READ (NDB, END=...) NINFO -C --NINFO - the number of information records - - DO 120 I = 1, NINFO - READ (NDB) INFO(I) -C --INFO - extra information records (optional) that contain -C -- any supportive documentation that the analysis code -C -- developer wishes (CHARACTER*80) - 120 CONTINUE - -C --Read the coordinate names - - READ (NDB, END=...) (NAMECO(I), I=1,NDIM) -C --NAMECO - the coordinate names (CHARACTER*8) - -C --Read the element type names - - READ (NDB, END=...) (NAMELB(I), I=1,NELBLK) -C --NAMELB - the element type names (CHARACTER*8) -\end{verbatim} diff --git a/packages/seacas/doc-source/include/appxgrafaid.tex b/packages/seacas/doc-source/include/appxgrafaid.tex deleted file mode 100644 index bbbee08..0000000 --- a/packages/seacas/doc-source/include/appxgrafaid.tex +++ /dev/null @@ -1,109 +0,0 @@ -\chapter{The GRAFAID Neutral File Format} \label{appx:grafaid} - -The \caps{GRAFAID} neutral file format is described in Section 9-2 of -the \caps{GRAFAID} Code User Manual~\cite{bib:grafaid}. The -following description covers only those parts that are relevant to the -\caps{\PROGRAM} program. - -The neutral file is a sequential file written in \caps{ASCII} format. -Each record is free format with fields separated by a comma. - -The general structure of the \caps{GRAFAID} neutral file is: -\cenlinesbegin -Neutral file title record (optional) \\ -\nth{1}{st} Curve Definition Record Set \\ -\nth{2}{nd} Curve Definition Record Set \\ -\ldots\ \\ -\nth{N}{th} Curve Definition Record Set \\ -\cmd{END NEUTRAL FILE} -\cenlinesend - -The neutral file title contains the name of the program which wrote the -neutral file (\caps{\PROGRAM}) and the name, date, and time of the -programs that created and last modified the database. - -The format of the records in a curve definition record set is: -\cenlinesbegin -\cmd{BEGIN CURVE},\param{curve-name} \\ -\param{ntitle},\param{title$_{1}$} \\ -\param{title$_{2}$} \\ -\ldots\ \\ -\param{title$_{ntitle}$} \\ -\param{x-label} \\ -\param{y-label} \\ -\param{x-min},\param{x-max},\param{y-min},\param{y-max},\param{npts},\param{aux-data} -\\ -\param{axis-type},\param{x-type},\param{aux-type} \\ -\param{x$_{1}$},\param{y$_{1}$} \\ -\param{x$_{2}$},\param{y$_{2}$} \\ -\ldots\ \\ -\param{x$_{npts}$},\param{y$_{npts}$} \\ -\cmd{END CURVE},\param{curve-name} -\cenlinesend - -\newpage -\newlength{\graftag} -\newlength{\grafdesc} -\settowidth{\graftag}{\param{curve-name} 15 characters } -\setlength{\grafdesc}{\textwidth} -\addtolength{\grafdesc}{-\graftag} -\addtolength{\grafdesc}{-\tabbingsep} - -\begin{tabular}{lcp{\grafdesc}} -% -\multicolumn{1}{c}{Field} & -\multicolumn{1}{c}{Type} & -\multicolumn{1}{c}{Description} -\\ \hline \\ -% -\param{curve-name} & 15 characters & The curve name, set by the -\cmd{ACURVE} and \cmd{NCURVE} commands. -\medskip -\\ -\param{ntitle} & integer & The number of title lines (5 maximum). \\ -\param{title$_{i}$} & 80 characters & The \nth{i}{th} curve title line. -If the user has requested QA information with the \cmd{QA} command, the -database title is the first title line. The caption lines set by the -\cmd{CAPTION} command are the next title lines. The last title line is a -description of the curve. -\medskip -\\ -\param{x-label} & 40 characters & The X axis label, set by the -\cmd{XLABEL} command. \\ -\param{y-label} & 40 characters & The Y axis label, set by the -\cmd{YLABEL} command. -\medskip -\\ -\param{x-min} & real & The X axis lower plot limit, set by the -\cmd{XSCALE} command. \\ -\param{x-max} & real & The X axis upper plot limit, set by the -\cmd{XSCALE} command. \\ -\param{y-min} & real & The Y axis lower plot limit, set by the -\cmd{YSCALE} command. \\ -\param{y-max} & real & The Y axis upper plot limit, set by the -\cmd{YSCALE} command. -\medskip -\\ -\param{npts} & integer & The number of curve data X-Y pairs. -\medskip -\\ -\param{aux-data} & 1 character & \cmd{F} to indicate that no auxiliary -data exists. -\medskip -\\ -\param{axis-type} & 4 characters & \cmd{NOLO} to indicate a linear scale -on both axes. -\medskip -\\ -\param{x-type} & 4 characters & \cmd{NONM} if the X data is nonmonotonic -or \cmd{MONO} if the X data is monotonic. -\medskip -\\ -\param{aux-type} & 1 character & Blank field to indicate that no -auxiliary data exists. -\medskip -\\ -\param{x$_{i}$} & real & The \nth{i}{th} X data value. \\ -\param{y$_{i}$} & real & The \nth{i}{th} Y data value. -% -\end{tabular} diff --git a/packages/seacas/doc-source/include/appxplt.tex b/packages/seacas/doc-source/include/appxplt.tex deleted file mode 100644 index a4db5f5..0000000 --- a/packages/seacas/doc-source/include/appxplt.tex +++ /dev/null @@ -1,69 +0,0 @@ -\chapter{Special Plot Text Capabilities} \label{appx:plt} - -There are several special capabilities available for user-defined text -that appears on a plot (such as the plot caption). For example, the text -can include subscripted text, Greek letters, and special symbols. The -user requests a capability by inserting an ``escape sequence'' in the -text. The escape sequence starts with a backslash (``\verb|\|'') and -(unless otherwise noted) must end with a space which is -deleted from the text string. Escape sequences are translated only when -{\bf software} characters are plotted. If an invalid escape sequence is -entered, an error message appears when the plot is drawn and the -sequence is ignored. -The following escape sequences are available: - -\begin{center} \begin{tabbing} -\verb|\|\cmd{XXXXXXX} \= explanation of symbol xx \= -\verb|\|\cmd{XXXXXXX} \= explanation of symbol xx \kill -% -\verb|\|\cmd{SQ} \> square \> -\verb|\|\cmd{CSQ} \> centered square \\ -\verb|\|\cmd{DI} \> diamond \> -\verb|\|\cmd{CDI} \> centered diamond \\ -\verb|\|\cmd{CS} \> cross \> -\verb|\|\cmd{CCS} \> centered cross \\ -\verb|\|\cmd{X} \> X \> -\verb|\|\cmd{CX} \> centered X \\ -\verb|\|\cmd{TR} \> triangle \> -\verb|\|\cmd{CTR} \> centered triangle \\ -\verb|\|\cmd{CI} \> circle \> -\verb|\|\cmd{CCI} \> centered circle \\ -\verb|\|\cmd{DO} \> dot \> -\verb|\|\cmd{CDO} \> centered dot \\ -\verb|\|\cmd{LO} \> logo \> -\verb|\|\cmd{CLO} \> centered logo \\ -\\ -\verb|\|\cmd{SLINE} \> solid line \> -\verb|\|\cmd{DLINE} \> dotted line \\ -\verb|\|\cmd{DDLINE} \> dot-dash line \> -\verb|\|\cmd{SDLINE} \> short dash line \\ -\verb|\|\cmd{LDLINE} \> long dash line \> -\verb|\|\cmd{MDLINE} \> medium dash line \\ -\\ -\verb|\|\cmd{NEQ} \> not equal to \\ -\verb|\|\cmd{LEQ} \> less than or equal to \> -\verb|\|\cmd{GEQ} \> greater than or equal to \\ -\verb|\|\cmd{NLEQ} \> not less than or equal to \> -\verb|\|\cmd{NGEQ} \> not greater than or equal to \\ -\verb|\|\cmd{NLT} \> not less than \> -\verb|\|\cmd{NGT} \> not greater than \\ -\verb|\|\cmd{LL} \> much less than \> -\verb|\|\cmd{GG} \> much greater than \\ -\\ -\verb|\|\cmd{PLUSMIN} \> plus or minus \> -\verb|\|\cmd{PRIME} \> prime \\ -\verb|\|\cmd{SUM} \> summation \> -\verb|\|\cmd{APPROX} \> approximation sign \\ -\verb|\\| \> single backslash (with no ending space) \\ -\\ -\verb|\|\cmd{GR} \> Greek font \> -\verb|\|\cmd{ENG} \> normal font \\ -\\ -\verb|\^| \> start superscript (with no ending space) \\ -\verb|\_| \> start subscript (with no ending space) \\ -\verb|\-| \> end superscript or subscript (with no ending space) \\ -\end{tabbing} \end{center} -%\\ -%\verb|\|\cmd{CR} \> carriage return \> -%\verb|\|\cmd{LF} \> linefeed \\ -%\verb|\|\cmd{CL} \> carriage return and linefeed \\ diff --git a/packages/seacas/doc-source/include/appxseaco.tex b/packages/seacas/doc-source/include/appxseaco.tex deleted file mode 100644 index 47087d1..0000000 --- a/packages/seacas/doc-source/include/appxseaco.tex +++ /dev/null @@ -1,116 +0,0 @@ -\chapter{The SEACO Database Format} \label{appx:seaco} - -The following code segment reads a SEACO database. - -\begin{verbatim} -C --Open the database file - - NDB = 11 - OPEN (UNIT=NDB, ..., STATUS='OLD', FORM='UNFORMATTED') - -C --Read the header information - - READ (NDB) TITLE, CNAME, CDATE, CTIME, MNAME, MDATE, MTIME -C --TITLE - the title of the database (CHARACTER*80) -C --CNAME - the program which created the database (CHARACTER*8) -C --CDATE, CTIME - the date (DD-MM-YY) and time (HH:MM:SS) -C -- the database was created (both CHARACTER*8) -C --MNAME - the program which last modified the database -C -- (CHARACTER*8) -C --MDATE, MTIME - the date (DD-MM-YY) and time (HH:MM:SS) -C -- the database was last modified (both CHARACTER*8) - - READ (NDB) NDIM, NUMNP, NUMEL, NLINK, NUMMAT, - & NVARNP, NVAREL, NVARGL, IBLKNV, IBLKEV, IPACK -C --NDIM - the number of coordinates per node -C --NUMNP - the number of nodes -C --NUMEL - the number of elements -C --NLINK - the number of nodes per element -C --NUMMAT - the number of materials -C --NVARNP - the number of nodal variables -C --NVAREL - the number of element variables -C --NVARGL - the number of global variables -C --IBLKNV - the nodal variable blocking flag, must be 0 -C --IBLKEV - the element variable blocking flag, must be 0 -C --IPACK - the packed data flag, must be 1 -\end{verbatim} -\newpage -\begin{verbatim} -C --Read the coordinate and variable names - - IF (NDIM .GT. 0) THEN - READ (NDB) (NAMECO(I), I=1,NDIM) -C --NAMECO - the names of the coordinates (CHARACTER*8) - END IF - - IF (NVARNP .GT. 0) THEN - READ (NDB) (NAMENV(I), I=1,NVARNP) -C --NAMENV - the names of the nodal variables (CHARACTER*8) - END IF - IF (NVAREL .GT. 0) THEN - READ (NDB) (NAMEEV(I), I=1,NVAREL) -C --NAMEEV - the names of the element variables (CHARACTER*8) - END IF - IF (NVARGL .GT. 0) THEN - READ (NDB) (NAMEGV(I), I=1,NVARGL) -C --NAMEGV - the names of the global variables (CHARACTER*8) - END IF - -C --Read the coordinate, connectivity, and material arrays - - IF (NDIM .GT. 0) THEN - READ (NDB) ((CORD(I,INP), INP=1,NUMNP), I=1,NDIM) -C --CORD - the coordinates for each node - END IF - - IF (NUMEL .GT. 0) THEN - DO 100 IEL = 1, NUMEL - READ (NDB) (LINK(I,IEL), I=1,NLINK) -C --LINK - the connectivity array (nodes of each element) - 100 CONTINUE - END IF - - IF (NUMMAT .GT. 1) THEN - READ (NDB) (MAT(IEL), IEL=1,NUMEL) -C --MAT - the material for each element - END IF -\end{verbatim} -\newpage -\begin{verbatim} -C --Read the time steps - - 110 CONTINUE - - READ (NDB, END=900) TIME -C --TIME - the current time step time - - IF (NVARNP .GT. 0) THEN - DO 120 NV = 1, NVARNP - READ (NDB) (VARNP(NV,INP), INP=1,NUMNP) -C --VARNP - the nodal variables at each node -C -- for the current time step - 120 CONTINUE - END IF - - IF (NVAREL .GT. 0) THEN - DO 130 NV = 1, NVAREL - READ (NDB) (VAREL(NV,IEL), IEL=1,NUMEL) -C --VAREL - the element variables at each element -C -- for the current time step - 130 CONTINUE - END IF - - IF (NVARGL .GT. 0) THEN - READ (NDB) (GLOBL(NV), NV=1,NVARGL) -C --GLOBL - the global variables for the current time step - END IF - -C --Handle time step data - ... - - GOTO 110 - - 900 CONTINUE -C --Handle end of file on database - ... -\end{verbatim} diff --git a/packages/seacas/doc-source/include/cominput.tex b/packages/seacas/doc-source/include/cominput.tex deleted file mode 100644 index b288f7a..0000000 --- a/packages/seacas/doc-source/include/cominput.tex +++ /dev/null @@ -1,135 +0,0 @@ -The commands are in free-format and must adhere to the following syntax -rules. -\setlength{\itemsep}{\medskipamount} \begin{itemize} -\item -Valid delimiters are a comma or one or more blanks. -\item -\ifx\PROGRAM\BLOT -Either lowercase or uppercase letters are acceptable, but lowercase -letters are converted to uppercase except in user-defined text that -appears on a plot (such as the plot caption). -\else -Either lowercase or uppercase letters are acceptable, but lowercase -letters are converted to uppercase. -\fi -\item -\ifx\PROGRAM\ALGEBRA -A ``\verb|'|'' character in any command line starts a comment. The -``\verb|'|'' and any characters following it on the line are ignored. -\else -A ``\cmd{\$}'' character in any command line starts a comment. The -``\cmd{\$}'' and any characters following it on the line are ignored. -\fi -\item -\ifx\PROGRAM\ALGEBRA -A command may be continued over several lines with an ``\verb|>|'' -character. The ``\verb|>|'' and any characters following it on the -current line are ignored and the next line is appended to the current -line. -\else -A command may be continued over several lines with an ``\verb|>|'' -character. The ``\verb|>|'' and any characters following it on the -current line are ignored and the next line is appended to the current -line. -\fi -\end{itemize} - -Each command has an action keyword or ``verb'' followed by a variable -number of parameters. - -The command verb is a character string. It may be abbreviated, as long -as enough characters are given to distinguish it from other commands. - -The meaning and type of the parameters is dependent on the command verb. -Most command parameters are optional. If an optional parameter field is -blank, a command-dependent default value is supplied. Below is a -description of the valid entries for parameters. -\setlength{\itemsep}{\medskipamount} \begin{itemize} -% -\item -A numeric parameter may be a real number or an integer. A real number -may be in any legal \caps{FORTRAN} numeric format (e.g., \cmd{1}, -\cmd{0.2}, \cmd{-1E-2}). An integer parameter may be in any legal -integer format. -\item -A string parameter is a literal character string. Most string parameters -may be abbreviated. -% -\newcommand{\okname}{f} -\ifx\PROGRAM\BLOT \renewcommand{\okname}{t} \fi -\ifx\PROGRAM\ALGEBRA \renewcommand{\okname}{t} \fi -\ifx\PROGRAM\GROPE \renewcommand{\okname}{t} \fi -\if\okname t -\item -Variable names must be fully specified. The blank delimiter creates a -problem with database variable names with embedded blanks. The program -handles this by deleting all embedded blanks from the input database -names. For example, the variable name ``\cmd{SIG~R}'' must be entered as -``\cmd{SIGR}''. The blank must be deleted in any references to the -variable. -\ifx\PROGRAM\GROPE -All database names appear exactly as input in all displays. -\else -All database names appear in uppercase without the embedded blanks in -all displays. -\fi -\fi -\ifx\PROGRAM\BLOT -\item -Screen and mesh positions may be selected with the graphics cursor (also -known as the graphics locator). Cursor input is device-dependent and -uses the VDI graphics locator routines. When the program prompts for the -position, the user positions the graphics cursor (e.g., the crosshairs) -on the screen, then selects the position by pressing any printable -keyboard character (e.g., the space bar). -\fi -\newcommand{\okrange}{f} -\ifx\PROGRAM\BLOT \renewcommand{\okrange}{t} \fi -\ifx\PROGRAM\GROPE \renewcommand{\okrange}{t} \fi -\if\okrange t -\ifx\PROGRAM\GROPE \newpage \fi %%% -\item -Several parameters allow a range of values. A range is in one of the -following forms: -\setlength{\itemsep}{\medskipamount} \begin{itemize} -\item ``\param{n$_{1}$}'' selects value \param{n$_{1}$}, -\item ``\param{n$_{1}$} \cmd{TO} \param{n$_{2}$}'' selects all values from -\param{n$_{1}$} to \param{n$_{2}$}, -\item ``\param{n$_{1}$} \cmd{TO} \param{n$_{2}$} \cmd{BY} \param{n$_{3}$}'' -selects all values from \param{n$_{1}$} to \param{n$_{2}$} stepping by -\param{n$_{3}$}, where \param{n$_{3}$} may be positive or negative. -\end{itemize} -If the upper limit of the range is greater than the maximum allowable -value, the upper limit is changed to the maximum without a message. -\fi -\end{itemize} - -\ifx\PROGRAM\ALGEBRA \newpage \fi %%% -The notation conventions used in the command descriptions are: -\setlength{\itemsep}{\medskipamount} \begin{itemize} -\item -The command verb is in \cmdverb{bold} type. -\item -A literal string is in all uppercase \cmd{SANSERIF} type and should be -entered as shown (or abbreviated). -\item -The value of a parameter is represented by the parameter name in -\param{italics}. -\newcommand{\okoptpar}{f} -\ifx\PROGRAM\BLOT \renewcommand{\okoptpar}{t} \fi -\ifx\PROGRAM\ALGEBRA \renewcommand{\okoptpar}{t} \fi -\ifx\PROGRAM\GROPE \renewcommand{\okoptpar}{t} \fi -\if\okoptpar t -\item -A literal string in square brackets (``[~]'') represents a parameter -option which is omitted entirely (including any following comma) if not -appropriate. These parameters are distinct from most parameters in that -they do not require a comma as a place holder to request the default -value. -\fi -\item -The default value of a parameter is in angle brackets (``$<$~$>$''). The -initial value of a parameter set by a command is usually the default -parameter value. If not, the initial setting is given with the default -or in the command description. -\end{itemize} diff --git a/packages/seacas/doc-source/include/distrinter.tex b/packages/seacas/doc-source/include/distrinter.tex deleted file mode 100644 index 7fdab96..0000000 --- a/packages/seacas/doc-source/include/distrinter.tex +++ /dev/null @@ -1,42 +0,0 @@ -\cleardoublepage -% -% Distribution list for INTERNAL Memorandum (August 16, 1988) -% -\twocolumn % starts a new page -% -{\bf Distribution:} -\par -% -{\tt % begin typewriter type -\begin{tabbing} -1500xxx \= \kill -1510 \> J. W. Nunziato \\ -1511 \> D. K. Gartling \\ -1520 \> L. W. Davison \\ -1521 \> R. D. Krieg and Staff (12) \\ -1522 \> R. C. Reuter, Jr.\ and Staff (15) \\ -1523 \> J. H. Biffle and Staff (12) \\ -1523 \> A. P. Gilkey (30) \\ -1524 \> A. K. Miller and Staff (12) \\ -1530 \> W. Herrmann, Actg. \\ -1531 \> S. L. Thompson \\ -%%% 1531 \> J. M. McGlaun \\ -1533 \> S. T. Montgomery \\ -1550 \> C. W. Peterson, Jr.\ \\ -1556 \> W. L. Oberkampf \\ -3141 \> S. A. Landenberger (5) \\ -%%% 6248 \> G. W. Brown \\ -%%% 6248 \> R. T. McGrath \\ -%%% 6248 \> R. D. Watson \\ -6258 \> D. S. Preece \\ -%%% 6314 \> L. S. Costin \\ -6334 \> H. J. Iuzzolino \\ -6334 \> R. D. McCurley \\ -6334 \> J. S. Rath \\ -6334 \> R. P. Rechard \\ -6334 \> E. Shepherd \\ -8524 \> P. W. Dean \\ -\end{tabbing} -} -% -% Issue a "\onecolumn" command to start a new page diff --git a/packages/seacas/doc-source/include/distrmemo.tex b/packages/seacas/doc-source/include/distrmemo.tex deleted file mode 100644 index 74e88fe..0000000 --- a/packages/seacas/doc-source/include/distrmemo.tex +++ /dev/null @@ -1,36 +0,0 @@ -% -% Distribution list for MEMO (August 16, 1988) -% -{\bf Distribution:} -\par -% -{\tt % begin typewriter type -\begin{tabbing} -1500xxx \= \kill -1500 \> W. Herrmann \\ -1510 \> J. W. Nunziato \\ -1511 \> D. K. Gartling \\ -1520 \> L. W. Davison \\ -1521 \> R. D. Krieg and Staff (12) \\ -1522 \> R. C. Reuter, Jr.\ and Staff (15) \\ -1523 \> J. H. Biffle and Staff (12) \\ -1523 \> A. P. Gilkey (5) \\ -1524 \> A. K. Miller and Staff (12) \\ -1530 \> W. Herrmann, Actg. \\ -1531 \> S. L. Thompson \\ -%%% 1531 \> J. M. McGlaun \\ -1533 \> S. T. Montgomery \\ -1550 \> C. W. Peterson, Jr.\ \\ -1556 \> W. L. Oberkampf \\ -%%% 6248 \> G. W. Brown \\ -%%% 6248 \> R. T. McGrath \\ -%%% 6248 \> R. D. Watson \\ -6258 \> D. S. Preece \\ -%%% 6314 \> L. S. Costin \\ -6334 \> H. J. Iuzzolino \\ -6334 \> R. D. McCurley \\ -6334 \> J. S. Rath \\ -6334 \> R. P. Rechard \\ -6334 \> E. Shepherd \\ -\end{tabbing} -} diff --git a/packages/seacas/doc-source/include/distrsand.tex b/packages/seacas/doc-source/include/distrsand.tex deleted file mode 100644 index e7def00..0000000 --- a/packages/seacas/doc-source/include/distrsand.tex +++ /dev/null @@ -1,50 +0,0 @@ -\cleardoublepage -% -% Distribution list for SAND Report (August 16, 1988) -% -\twocolumn % starts a new page -% -{\bf Distribution:} -\par -% -{\tt % begin typewriter type -\begin{tabbing} -1500xxx \= \kill -1510 \> J. W. Nunziato \\ -1511 \> D. K. Gartling \\ -1520 \> L. W. Davison \\ -1521 \> R. D. Krieg and Staff (12) \\ -1522 \> R. C. Reuter, Jr.\ and Staff (15) \\ -1523 \> J. H. Biffle and Staff (12) \\ -1523 \> A. P. Gilkey (30) \\ -1524 \> A. K. Miller and Staff (12) \\ -1530 \> W. Herrmann, Actg. \\ -1531 \> S. L. Thompson \\ -%%% 1531 \> J. M. McGlaun \\ -1533 \> S. T. Montgomery \\ -1550 \> C. W. Peterson, Jr.\ \\ -1556 \> W. L. Oberkampf \\ -3141 \> S. A. Landenberger (5) \\ -3151 \> W. I. Klein (3) \\ -3154 \> for DOE/OSTI (8) \\ -%%% 6248 \> G. W. Brown \\ -%%% 6248 \> R. T. McGrath \\ -%%% 6248 \> R. D. Watson \\ -6258 \> D. S. Preece \\ -%%% 6314 \> L. S. Costin \\ -6334 \> H. J. Iuzzolino \\ -6334 \> R. D. McCurley \\ -6334 \> J. S. Rath \\ -6334 \> R. P. Rechard \\ -6334 \> E. Shepherd \\ -8240 \> C. W. Robinson \\ -8241 \> G. A. Benedetti \\ -8242 \> M. R. Birnbaum \\ -8243 \> M. L. Callabresi \\ -8244 \> C. M. Hartwig \\ -8245 \> R. J. Kee \\ -8524 \> P. W. Dean \\ -\end{tabbing} -} -% -% Issue a "\onecolumn" command to start a new page diff --git a/packages/seacas/doc-source/include/execsite.tex b/packages/seacas/doc-source/include/execsite.tex deleted file mode 100644 index 95ce2b5..0000000 --- a/packages/seacas/doc-source/include/execsite.tex +++ /dev/null @@ -1,5 +0,0 @@ -The details of executing \caps{\PROGRAM} are dependent on the system -being used. The system manager of any system that runs \caps{\PROGRAM} -should provide a supplement to this manual that explains how to run the -program on that particular system. Site supplements for all currently -supported systems are in Appendix~\ref{appx:site}. diff --git a/packages/seacas/doc-source/include/genesis.f b/packages/seacas/doc-source/include/genesis.f deleted file mode 100644 index f3a67c1..0000000 --- a/packages/seacas/doc-source/include/genesis.f +++ /dev/null @@ -1,132 +0,0 @@ -C --Open the GENESIS database file - - NDB = 9 - OPEN (UNIT=NDB, ..., STATUS='OLD', FORM='UNFORMATTED') - -C --Read the title - - READ (NDB) TITLE -C --TITLE - the title of the database (CHARACTER*80) - -C --Read the database sizing parameters - - READ (NDB) NUMNP, NDIM, NUMEL, NELBLK, - & NUMNPS, LNPSNL, NUMESS, LESSEL, LESSNL -C --NUMNP - the number of nodes -C --NDIM - the number of coordinates per node -C --NUMEL - the number of elements -C --NELBLK - the number of element blocks -C --NUMNPS - the number of node sets -C --LNPSNL - the length of the node sets node list -C --NUMESS - the number of side sets -C --LESSEL - the length of the side sets element list -C --LESSNL - the length of the side sets node list - -C --Read the nodal coordinates - - READ (NDB) ((CORD(INP,I), INP=1,NUMNP), I=1,NDIM) - -C --Read the element order map (each element must be listed once) - - READ (NDB) (MAPEL(IEL), IEL=1,NUMEL) - -C --Read the element blocks - - DO 100 IEB = 1, NELBLK - -C --Read the sizing parameters for this element block - - READ (NDB) IDELB, NUMELB, NUMLNK, NATRIB -C --IDELB - the element block identification (must be unique) -C --NUMELB - the number of elements in this block -C -- (the sum of NUMELB for all blocks must equal NUMEL) -C --NUMLNK - the number of nodes defining the connectivity -C -- for an element in this block -C --NATRIB - the number of element attributes for an element -C -- in this block - -C --Read the connectivity for all elements in this block - - READ (NDB) ((LINK(J,I), J=1,NUMLNK, I=1,NUMELB) - -C --Read the attributes for all elements in this block - - READ (NDB) ((ATRIB(J,I), J=1,NATRIB, I=1,NUMELB) - - 100 CONTINUE - -C --Read the node sets - - READ (NDB) (IDNPS(I), I=1,NUMNPS) -C --IDNPS - the ID of each node set - READ (NDB) (NNNPS(I), I=1,NUMNPS) -C --NNNPS - the number of nodes in each node set - READ (NDB) (IXNNPS(I), I=1,NUMNPS) -C --IXNNPS - the index of the first node in each node set -C -- (in LTNNPS and FACNPS) - - READ (NDB) (LTNNPS(I), I=1,LNPSNL) -C --LTNNPS - the nodes in all the node sets - READ (NDB) (FACNPS(I), I=1,LNPSNL) -C --FACNPS - the factor for each node in LTNNPS - -C --Read the side sets - - READ (NDB) (IDESS(I), I=1,NUMESS) -C --IDESS - the ID of each side set - READ (NDB) (NEESS(I), I=1,NUMESS) -C --NEESS - the number of elements in each side set - READ (NDB) (NNESS(I), I=1,NUMESS) -C --NNESS - the number of nodes in each side set - READ (NDB) (IXEESS(I), I=1,NUMESS) -C --IXEESS - the index of the first element in each side set -C -- (in LTEESS) - READ (NDB) (IXNESS(I), I=1,NUMESS) -C --IXNESS - the index of the first node in each side set -C -- (in LTNESS and FACESS) - - READ (NDB) (LTEESS(I), I=1,LESSEL) -C --LTEESS - the elements in all the side sets - READ (NDB) (LTNESS(I), I=1,LESSNL) -C --LTNESS - the nodes in all the side sets - READ (NDB) (FACESS(I), I=1,LESSNL) -C --FACESS - the factor for each node in LTNESS - -C ...A valid GENESIS database may end at this point or after any point -C ...described below. - -C --Read the QA header information - - READ (NDB, END=...) NQAREC -C --NQAREC - the number of QA records (must be at least 1) - - DO 110 IQA = 1, MAX(1,NQAREC) - READ (NDB) (QATITL(I,IQA), I=1,4) -C --QATITL - the QA title records; each record contains: -C -- 1) analysis code name (CHARACTER*8) -C -- 2) analysis code qa descriptor (CHARACTER*8) -C -- 3) analysis date (CHARACTER*8) -C -- 4) analysis time (CHARACTER*8) - 110 CONTINUE - -C --Read the optional header text - - READ (NDB, END=...) NINFO -C --NINFO - the number of information records - - DO 120 I = 1, NINFO - READ (NDB) INFO(I) -C --INFO - extra information records (optional) that contain -C -- any supportive documentation that the analysis code -C -- developer wishes (CHARACTER*80) - 120 CONTINUE - -C --Read the coordinate names - - READ (NDB, END=...) (NAMECO(I), I=1,NDIM) -C --NAMECO - the coordinate names (CHARACTER*8) - -C --Read the element type names - - READ (NDB, END=...) (NAMELB(I), I=1,NELBLK) -C --NAMELB - the element type names (CHARACTER*8) diff --git a/packages/seacas/doc-source/include/intermemo.tex b/packages/seacas/doc-source/include/intermemo.tex deleted file mode 100644 index c99cde7..0000000 --- a/packages/seacas/doc-source/include/intermemo.tex +++ /dev/null @@ -1,59 +0,0 @@ -% -\newcommand{\Covertitle}{} -\renewcommand{\title}[1] {\newcommand{\Title}{#1} - \renewcommand{\Covertitle}{\Title}} -\newcommand{\covertitle}[1] {\renewcommand{\Covertitle}{#1}} -\newcommand{\division}[1] {\newcommand{\Division}{#1}} -\renewcommand{\author}[1] {\newcommand{\Author}{#1}} -\renewcommand{\abstract}[1] {\newcommand{\Abstract}{#1}} -\newcommand{\Date}{\Month} -\renewcommand{\date}[1] {\renewcommand{\Date}{#1}} -\renewcommand{\Release}[1] {\newcommand{\Rlse}{#1}} -\newcommand{\Previous}[1] {\newcommand{\Prerel}{#1}} -\newcommand{\RS}[1] {\newcommand{\Rs}{RS#1}} -% -%%% \memocover creates a cover page and title page for an internal memorandum. -\newcommand{\memocover}{ -% -\setcounter{page}{0} \pagestyle{empty} -\par \Rs \\ -Internal Distribution Only \\ -\vspace*{0.5in} -\par \Covertitle\ (U) \\ -\vspace*{0.5in} -\par \Author \\ -\\ -Printed \Month \\ -%-% \vspace*{2.1in} -\vfill -%-% \openin2={\Abstract} -%-% \ifeof2 -%-% \typeout{File \Abstract\ not open} -%-% \relax -%-% \else -%-% \closein2 -%-% \typeout{File \Abstract\ open} - \par \begin{center} Abstract \end{center} - \vspace*{\smallskipamount} - \par \input{\Abstract} -%-% \fi -\vspace*{0.5in} -\clearpage \pagestyle{plain} -} -%%% \memotitle creates a title page for an internal memorandum. -\newcommand{\memotitle}{ -% -\setcounter{page}{0} \pagestyle{empty} -\vspace*{0.5in} -\par \begin{flushright} {\Rs} \end{flushright} -\vspace*{2.0in} -\begin{center} - \par {\Large\bf \Title} - \vspace*{0.5in} - \large - \par \Author \\ - \Division \\ - \normalsize -\end{center} -\clearpage \pagestyle{plain} -} diff --git a/packages/seacas/doc-source/include/refblot.tex b/packages/seacas/doc-source/include/refblot.tex deleted file mode 100644 index 6c40930..0000000 --- a/packages/seacas/doc-source/include/refblot.tex +++ /dev/null @@ -1,5 +0,0 @@ -\bibitem{bib:blot} -Amy P. Gilkey, -``BLOT -- A Mesh and Curve Plot Program -for the Output of a Finite Element Analysis,'' -SAND88-1432, \SNLA, in preparation. diff --git a/packages/seacas/doc-source/include/refexodus.tex b/packages/seacas/doc-source/include/refexodus.tex deleted file mode 100644 index 8d9d5c4..0000000 --- a/packages/seacas/doc-source/include/refexodus.tex +++ /dev/null @@ -1,4 +0,0 @@ -\bibitem{bib:exodus} -William C. Mills-Curran, Amy P. Gilkey, Dennis P. Flanagan, -``EXODUS: A Finite Element File Format for Pre- and Post-Processing,'' -SAND87-2997, \SNLA, in preparation. diff --git a/packages/seacas/doc-source/include/reff77.tex b/packages/seacas/doc-source/include/reff77.tex deleted file mode 100644 index 5a06111..0000000 --- a/packages/seacas/doc-source/include/reff77.tex +++ /dev/null @@ -1,3 +0,0 @@ -\bibitem{bib:f77} -{\em American National Standard Programming Language FORTRAN}, -American National Standards Institute, ANSI X3.9-1978, New York, 1978. diff --git a/packages/seacas/doc-source/include/refgenesis.tex b/packages/seacas/doc-source/include/refgenesis.tex deleted file mode 100644 index afc5261..0000000 --- a/packages/seacas/doc-source/include/refgenesis.tex +++ /dev/null @@ -1,4 +0,0 @@ -\bibitem{bib:genesis} -Lee M. Taylor, Dennis P. Flanagan, and William C. Curran, -``The GENESIS Finite Element Mesh File Format,'' -SAND86-0910, \SNLA, May 1986. diff --git a/packages/seacas/doc-source/include/refgrope.tex b/packages/seacas/doc-source/include/refgrope.tex deleted file mode 100644 index 26955ef..0000000 --- a/packages/seacas/doc-source/include/refgrope.tex +++ /dev/null @@ -1,4 +0,0 @@ -\bibitem{bib:grope} -Amy P. Gilkey, -``GROPE -- A GENESIS / EXODUS Database Examination Program,'' -Internal Memorandum RS1523/88/02, \SNL, in preparation. diff --git a/packages/seacas/doc-source/include/refseaco.tex b/packages/seacas/doc-source/include/refseaco.tex deleted file mode 100644 index 6709c05..0000000 --- a/packages/seacas/doc-source/include/refseaco.tex +++ /dev/null @@ -1,4 +0,0 @@ -\bibitem{bib:seaco} -Zelma E. Beisinger, -``SEACO: Sandia Engineering Analysis Department Code Output Data Base,'' -SAND84-2004, \SNLA, in preparation. diff --git a/packages/seacas/doc-source/include/refsupes.tex b/packages/seacas/doc-source/include/refsupes.tex deleted file mode 100644 index cb8b058..0000000 --- a/packages/seacas/doc-source/include/refsupes.tex +++ /dev/null @@ -1,4 +0,0 @@ -\bibitem{bib:supes} -John R. Red-Horse, William C. Curran, and Dennis P. Flanagan, -``SUPES Version 2.1 -- A Software Utility Package for the Engineering -Sciences ,'' SAND90--0247, \SNLA, May 1990. diff --git a/packages/seacas/doc-source/include/setup.tex b/packages/seacas/doc-source/include/setup.tex deleted file mode 100644 index da5e193..0000000 --- a/packages/seacas/doc-source/include/setup.tex +++ /dev/null @@ -1,205 +0,0 @@ -% -% STANDARD SETUP FOR MANUALS -% -%%% set up so item does not have so much space between items and top -\setlength{\parindent}{0pt} -\setlength{\topsep}{0pt} \setlength{\parsep}{0pt} -%%% \setlength{\itemsep}{\smallskipamount} \begin{itemize} ... -% -%%% \myindent is a nice amount to indent -\newlength{\myindent} -\setlength{\myindent}{30pt} -\newlength{\myhalfind} -\setlength{\myhalfind}{15pt} -% -%%% \cenlinesbegin and end start a block of centered text (each line to left) -\newcommand{\cenlinesbegin} - { \begin{center} \begin{tabular}{l} } -\newcommand{\cenlinesend} - { \end{tabular} \end{center} } -% -%%% these commands are used for all-capital-letter words (\caps), -%%% typed literals (\cmd), parameters (\param), bold font (\bold) -\newcommand{\caps}[1] - {\uppercase{#1}\null} -\newcommand{\cmd}[1] - {\mbox{\sf\uppercase{#1}}\null} -\newcommand{\lcmd}[1] - {\mbox{\sf#1}\null} -\newcommand{\param}[1] - {{\em #1}\null} -\newcommand{\optparam}[1] - {[{\em #1\/}]\null} -% -%%% \negmedskip produces a medium negative space -\newcommand{\negmedskip} - {\vspace{-\medskipamount}} -% -%%% \doublehline[#columns] produces a double horizontal line in tabular -\newcommand{\doublehline}[1] - {\hline\multicolumn{#1}{c}{\vspace{-.17in}}\\ \hline} -% -%%% \SNL produces the text "Sandia National Laboratories" -%%% \SNLA adds "Albuquerque, NM" -\def\SNL{Sandia National Laboratories} -\def\SNLA{Sandia National Laboratories, Albuquerque, NM} -%%% -%%% \nth produces text like 1st with the "st" raised -\newcommand{\nth}[2] - {{#1}\raisebox{.6ex}{#2}} -% -%%% \cmdverb is used to produce the command verb -\newfont{\bldsf}{cmssbx10 scaled \magstep1} % bold sans serif -\newcommand{\cmdverb}[1]{\mbox{\bldsf #1}\null} -% -%%% \default produces the command parameter default in braces; -%%% \nodefault is used for a command parameter with no default -\newcommand{\default}[1]{$<${#1}$>$} -\newcommand{\nodefault}[0]{$<$no default$>$} -% -%%% \topicbegin and end indents a block of text -\newcommand{\topicbegin}{ - \par\addtolength{\leftskip}{\myindent} - \addtolength{\leftmargin}{\myindent} - \addtolength{\leftmargini}{\myindent} - } -\newcommand{\topicend}{ - \par\addtolength{\leftskip}{-\myindent} - \addtolength{\leftmargin}{-\myindent} - \addtolength{\leftmargini}{-\myindent} - } -% -%%% \cmddef produces the command descriptions -\newcommand{\cmddef}[2]{ - \par \hangindent=\myhalfind \hangafter=1 {#1} - \par \topicbegin {#2} \topicend - } -% -%%% \cmdnext precedes a second command definition line -\newcommand{\cmdnext}{ - \par \hangindent=\myhalfind \hangafter=1 \negmedskip - } -% \newcommand{\cmdnext}{ -% \par \hangindent=\myhalfind \hangafter=1 \vspace{-\bigskipamount} -% } -% -%%% \cmdoption produces a heading and an indented block of text -\newcommand{\cmdoption}[2]{ - \par \hangindent=\myhalfind \hangafter=1 {#1} - \par \vspace{-\medskipamount} - \topicbegin {#2} \topicend - } -% -%%% \cmdsum produces a command summary line -\newcommand{\cmdsum}[2]{ - \par {#1} - \par \vspace{-\medskipamount} - \topicbegin {#2} \topicend - } -% -%%% \errfmt produces a centered error message -\newcommand{\errfmt}[1]{ - \begin{center} \vspace{-\smallskipamount} - {#1} - \vspace{-\smallskipamount} \end{center} - } -% -%%% \notetome produces a message to me -\newcommand{\notetome}[1]{ -%%% \begin{center} {\bf *** {#1} ***} \end{center} - \typeout{*** #1 ***} - } -% -%%% The following are symbols set up for the names of the manuals. -%%% These symbols are used to check for equality. -\newcommand{\ABAEXO}{ABAEXO} -\newcommand{\ALGEBRA}{ALGEBRA} -\newcommand{\BLOT}{\sf Blot} -\newcommand{\GENTD}{GENTD} -\newcommand{\GJOIN}{GJOIN} -\newcommand{\GROPE}{GROPE} -\newcommand{\NUMBERS}{NUMBERS} - -\newcommand{\superscript}[1]{\ensuremath{^{\textrm{#1}}}} -\newcommand{\subscript}[1]{\ensuremath{_{\textrm{#1}}}} -% Welcome to the 21\superscript{st} century. -\renewcommand{\th}[0]{\superscript{th}} -\newcommand{\st}[0]{\superscript{st}} -\newcommand{\nd}[0]{\superscript{nd}} -\newcommand{\rd}[0]{\superscript{rd}} -% Carl took 1\st place. Elly, Tom and Ann came in 2\nd, 3\rd and 4\th. - -\newcommand{\texifylineno}[1]{{\footnotesize\hspace{-4em}\makebox[4em][r]{#1\hspace{1.5ex}}}} - -\newcommand{\sectionline}{% - \nointerlineskip \vspace{\baselineskip}% - \hspace{\fill}\rule{\linewidth}{.7pt}\hspace{\fill}% - \par\nointerlineskip -} -\def\SNLA{Sandia National Laboratories, Albuquerque, NM} - -\newcommand\dash{\raise2.1pt\hbox{\rule{5pt}{0.3pt}}\hspace{1pt}} -\newcommand{\gap}{\hspace{12pt}} - -\newcommand{\paramdef}[2] - {\color{red}\begin{tabular}{@{}l@{}p{6.0in}}\bf\tt #1\enspace\enspace &\tt #2\\\index{#1!Parameter}\index{Parameter!#1}\end{tabular}\color{black}} - -\newcommand{\funcdef}[2] - {\color{red}\begin{tabular}{@{}l@{}p{0.5in}}\Large\bf\tt int #1\enspace(&\Large\bf\tt #2)\\\index{#1!Definition}\index{Functions!#1!Definition}\end{tabular}\color{black}} -\newcommand{\funcdefv}[2] - {\color{red}\begin{tabular}{@{}l@{}p{3.7in}}\Large\bf\tt void #1\enspace(&\Large\bf\tt #2)\\\index{#1!Definition}\index{Functions!#1!Definition}\end{tabular}\color{black}} -% -% Set left margin and counter -\setlength{\oddsidemargin}{0.25in} -\setlength{\evensidemargin}{0.25in} -\setcounter{secnumdepth}{10} -\setcounter{tocdepth}{3} -\setlength{\textwidth}{6in} -\setlength{\topmargin}{-0.25in} -\setlength{\textheight}{8.5in} -\parskip 0.2cm -\parindent 0.0cm - -\newenvironment{syntax} -{\begin{quote}\begin{alltt}\color{blue}} -{\end{alltt}\end{quote}} - -\newenvironment{csource} -{\small\begin{quote}\color{blue}\begin{alltt}} -{\end{alltt}\end{quote}\normalsize} - -\newenvironment{fsource} -{\small\begin{quote}\color{red}\begin{alltt}} -{\end{alltt}\end{quote}\normalsize} - -\newcommand{\api} - {\mbox{\em API Functions:\hspace{0.1in}}\null} - -\newcommand{\exo} - {\mbox{\sf Exodus}\null} - -\newcommand{\exodiff} - {\mbox{\sf Exodiff}\null} - -\newcommand{\epu} - {\mbox{\sf EPU}\null} - -\newcommand{\ejoin} - {\mbox{\sf EJoin}\null} - -\newcommand{\conjoin} - {\mbox{\sf Conjoin}\null} - -\newcommand{\entrylabel}[1]{ - {\parbox[b]{\labelwidth-4pt}{\makebox[0pt][l]{\color{red}\tt\textbf{#1}}\vspace{1.0\baselineskip}}}} -\newenvironment{parameters} -{\begin{list}{} - { - \settowidth{\labelwidth}{80pt} - \setlength{\leftmargin}{\labelwidth} - \setlength{\parsep}{-10pt} - \setlength{\itemsep}{24pt} % Between items - \renewcommand{\makelabel}{\entrylabel} - } -} -{\end{list}} diff --git a/packages/seacas/doc-source/include/timecmd.tex b/packages/seacas/doc-source/include/timecmd.tex deleted file mode 100644 index 6edc3b0..0000000 --- a/packages/seacas/doc-source/include/timecmd.tex +++ /dev/null @@ -1,89 +0,0 @@ -\cmddef{\cmdverb{TMIN} - \param{tmin} \default{minimum database time} -} { -\cmd{TMIN} sets the minimum selected time \param{tmin} to the specified -parameter value. If the user-selected-times mode is in effect, the mode -is changed to the all-available-times mode. - -In interval-times mode, if \param{nintv} is selected (by a \cmd{NINTV} -or \cmd{ZINTV} command), \param{delt} is calculated. If \param{delt} is -selected (by a \cmd{DELTIME} command), \param{nintv} is calculated. -} - -\cmddef{\cmdverb{TMAX} - \param{tmax} \default{maximum database time} -} { -\cmd{TMAX} sets the maximum selected time \param{tmax} to the specified -parameter value. If the user-selected-times mode is in effect, the mode -is changed to the all-available-times mode. - -In interval-times mode, if \param{nintv} is selected (by a \cmd{NINTV} -or \cmd{ZINTV} command), \param{delt} is calculated. If \param{delt} is -selected (by a \cmd{DELTIME} command), \param{nintv} is calculated. -} - -\cmddef{\cmdverb{NINTV} - \param{nintv} \default{10 or the number of database time steps $-$ 1, - whichever is smaller} -} { -\cmd{NINTV} sets the number of selected time intervals \param{nintv} to -the specified parameter value and changes the mode to the interval-times -mode with a delta offset. The selected time interval \param{delt} is -calculated. -} - -\cmddef{\cmdverb{ZINTV} - \param{nintv} \default{10 or the number of database time steps, - whichever is smaller} -} { -\cmd{ZINTV} sets the number of selected time intervals \param{nintv} to -the specified parameter value and changes the mode to the interval-times -mode with a zero offset. The selected time interval \param{delt} is -calculated. -} - -\cmddef{\cmdverb{DELTIME} - \param{delt} - \default{$(tmax-tmin) / (nintv-1)$, where \param{nintv} is 10 - or the number of database time steps, whichever is smaller} -} { -\cmd{DELTIME} sets the selected time interval \param{delt} to the -specified parameter value and changes the mode to the interval-times -mode with a zero offset. The number of selected time intervals -\param{nintv} is calculated. -} - -\cmddef{\cmdverb{ALLTIMES} -} { -\cmd{ALLTIMES} changes the mode to the all-available-times mode. -} - -\newpage -\cmddef{\cmdverb{TIMES} - [\cmd{ADD},] - \param{t$_{1}$}, \param{t$_{2}$}, \ldots\ - \default{no times selected} -} { -\cmd{TIMES} changes the mode to the user-selected-times mode and selects -times \param{t$_{1}$}, \param{t$_{2}$}, etc. The closest time step from the -database is selected for each specified time. - -Normally, a \cmd{TIMES} command selects only the listed time steps. If -\cmd{ADD} is the first parameter, the listed steps are added to the -current selected times. Any other time step selection command clears all -\cmd{TIMES} selected times. - -Up to the maximum number of time steps in the database may be specified. -Times are selected in the order encountered on the database, regardless -of the order the times are specified in the command. Duplicate -references to a time step are ignored. -} - -\cmddef{\cmdverb{STEPS} - [\cmd{ADD},] - \param{n$_{1}$}, \param{n$_{2}$}, \ldots\ - \default{no steps selected} -} { -The \cmd{STEPS} command is equivalent to the \cmd{TIMES} command except -that it selects time steps by the step number, not by the step time. -} diff --git a/packages/seacas/doc-source/include/timeexample.tex b/packages/seacas/doc-source/include/timeexample.tex deleted file mode 100644 index 1dd2f06..0000000 --- a/packages/seacas/doc-source/include/timeexample.tex +++ /dev/null @@ -1,19 +0,0 @@ -\bigskip -For example, if the times from the database are 0.0, 0.5, 1.0, 1.5, -etc.\null, the commands -\cenlinesbegin -\cmd{TMIN 0.0} \\ -\cmd{TMAX 5.0} \\ -\cmd{NINTV 5} -\cenlinesend -select times 1.0, 2.0, 3.0, 4.0, and 5.0. If the \cmd{NINTV} command is -replaced by -\cenlinesbegin -\cmd{ZINTV 3} -\cenlinesend -then times 0.0, 2.5, and 5.0 are selected. If the \cmd{NINTV} command is -replaced by -\cenlinesbegin -\cmd{DELTIME 2.0} -\cenlinesend -then times 0.0, 2.0, 4.0 are selected. diff --git a/packages/seacas/doc-source/include/timeintro.tex b/packages/seacas/doc-source/include/timeintro.tex deleted file mode 100644 index 06f76e6..0000000 --- a/packages/seacas/doc-source/include/timeintro.tex +++ /dev/null @@ -1,38 +0,0 @@ -The following are the time step selection parameters: -\negmedskip -\setlength{\itemsep}{0pt} \begin{itemize} -\item \param{tmin} is the minimum selected time, -\item \param{tmax} is the maximum selected time, -\item \param{nintv} is the number of selected time intervals, and -\item \param{delt} is the selected time interval. -\end{itemize} - -In the interval-times mode, up to \param{nintv} time steps at interval -\param{delt} between \param{tmin} and \param{tmax} are selected. The -mode may have a delta offset or a zero offset. With a delta offset, the -first selected time is \param{tmin}+\param{delt}; with a zero offset, it -is \param{tmin}. - -In the interval-times mode with a delta offset, the number of selected -time intervals \param{nintv} and the selected time interval \param{delt} -are related mathematically by the equations: -\begin{center} \begin{tabular}{cl} -$delt$ = $(tmax-tmin) / nintv$ & (1) \\ -$nintv$ = \cmd{int} $((tmin-tmax) / delt)$ & (2) \\ -\end{tabular} \end{center} -With a zero offset, \param{nintv} and \param{delt} are related -mathematically by the equations: -\begin{center} \begin{tabular}{cl} -$delt$ = $(tmax-tmin) / (nintv-1)$ & (1) \\ -$nintv$ = \cmd{int} $((tmin-tmax) / delt) + 1$ & (2) \\ -\end{tabular} \end{center} - -The user specifies either \param{nintv} or \param{delt}. If -\param{nintv} is specified, \param{delt} is calculated using equation 1. -If \param{delt} is specified, \param{nintv} is calculated using equation -2. - -In the all-available-times mode, all database time steps between -\param{tmin} and \param{tmax} are selected (parameters \param{nintv} and -\param{delt} are ignored). In the user-selected-times mode, the -specified times are selected (all parameters are ignored). diff --git a/packages/seacas/doc-source/include/timemode.tex b/packages/seacas/doc-source/include/timemode.tex deleted file mode 100644 index 8c87311..0000000 --- a/packages/seacas/doc-source/include/timemode.tex +++ /dev/null @@ -1,30 +0,0 @@ -Time step selection is performed in one of the following modes: -\setlength{\itemsep}{\bigskipamount} \begin{itemize} -\item -\ifx\PROGRAM\BLOT -\bold{Interval-Times Mode} -\else -Interval-Times Mode -\fi -selects time steps at uniform intervals between a minimum and a maximum -time. If this mode has a delta offset, the first selected time is not -the minimum time, but the minimum time plus the interval. If this mode -has a zero offset, the first selected time is the minimum time. -\item -\ifx\PROGRAM\BLOT -\bold{All-Available-Times Mode} -\else -All-Available-Times Mode -\fi -selects all time steps between a minimum and a maximum time. -\item -\ifx\PROGRAM\BLOT -\bold{User-Selected-Times Mode} -\else -User-Selected-Times Mode -\fi -selects time steps which are explicitly specified by the user. -\end{itemize} - -The nearest time step from the database is chosen for each selected -time. diff --git a/packages/seacas/doc-source/include/timesum.tex b/packages/seacas/doc-source/include/timesum.tex deleted file mode 100644 index ed5971d..0000000 --- a/packages/seacas/doc-source/include/timesum.tex +++ /dev/null @@ -1,51 +0,0 @@ -\cmdsum{\cmd{TMIN} - \param{tmin} -} { -sets the minimum selected time to \param{tmin}. -} - -\cmdsum{\cmd{TMAX} - \param{tmax} -} { -sets the maximum selected time to \param{tmax}. -} - -\cmdsum{\cmd{NINTV} - \param{nintv} -} { -sets the number of selected time intervals to \param{nintv} (delta -offset). -} - -\cmdsum{\cmd{ZINTV} - \param{nintv} -} { -sets the number of selected time intervals to \param{nintv} (zero -offset). -} - -\cmdsum{\cmd{DELTIME} - \param{delt} -} { -sets the selected time interval to \param{delt}. -} - -\cmdsum{\cmd{ALLTIMES} -} { -selects all time steps between \param{tmin} and \param{tmax}. -} - -\ifx\PROGRAM\ALGEBRA \newpage \fi %%% -\cmdsum{\cmd{TIMES} - [\cmd{ADD},] - \param{t$_{1}$}, \param{t$_{2}$}, \ldots\ -} { -selects times \param{t$_{1}$}, \param{t$_{2}$}, etc. -} - -\cmdsum{\cmd{STEPS} - [\cmd{ADD},] - \param{n$_{1}$}, \param{n$_{2}$}, \ldots\ -} { -selects time steps \param{n$_{1}$}, \param{n$_{2}$}, etc. -} diff --git a/packages/seacas/libraries/exodus/include/Exodus-Formats.md b/packages/seacas/libraries/exodus/include/Exodus-Formats.md deleted file mode 100644 index 8add542..0000000 --- a/packages/seacas/libraries/exodus/include/Exodus-Formats.md +++ /dev/null @@ -1,64 +0,0 @@ -\page exodus_formats Exodus Formats - -\section large Large Model (64-bit offset) - -This is the current default format for exodus files. In this format, -the size of an *individual* dataset within the file is limited -to 4 GiB (2 GiB for older versions of netcdf library). - -Typically, the two largest datasets are an individual component of the -nodal coordinates and the connectivity for an element block. - -An individual component of the nodal coordinates stored in double -precision limits the model to about 2^29 (537 Million) nodes. - -The other dataset size is the connectivity of a single element -block. For 8-node hexes, the maximum number of elements in an element -block is 2^27 (134 Million) elements; for 27-node hexes, this is -reduced to 39.7 million elements per element block. - -Since a complex model typically has many element blocks, the -node count is typically the controlling dataset, but -connectivity datasets can also be the limiting factor. - -Note that the model can typically split a large element block -into two or more element blocks to avoid the connectivity -limit, but there is no way to split the node coordinate -dataset, so 2^29 is the hard upper limit on the number of -nodes stored in a Large Model (64-bit offset) format exodus -file. - -\section normal Normal, or Classic - -The non-transient portion of the model definition is limited to 2 GiB. -This means that the size of the coordinates, connectivtity, nodeset, -sideset, maps, and other datasets must total less than 2 GiB. This -typically limits the model to about 35 million elements. - -This is no longer supported for writing by the exodus library, but old -files in this format can still be read. - -\section nc4 Netcdf-4 Classic - -The netcdf-4 classic format uses HDF5 as the underlying file format -on disk. This format eliminates the dataset size limits. However, -since it only supports the use of 32-bit signed integers, the model -is limited to 2^31 nodes and 2^31 elements. - -\section nc4nc Netcdf-4 Non-Classic - -This netcdf-4 non-classic format also uses HDF5 as the underlying -file format on disk. There are no dataset size limits and it -supports datasets storing 64-bit integers. With this format, the -maximum model size should be unlimited. Models well in excess of 2 -Billion nodes and elements have been defined with this format -verifying that the previous limits do not exist in this format. -Currently when exodus uses this format, the only extension over the -classic model is the use of 64-bit integers in some of the -datasets. In the future, uses of additional netcdf-4 functionality -(groups, compound datatypes) is planned. - -\section cdf5 CDF5 - -A PNetCDF developed format which provides 64-bit integer capability -in a non-HDF5-based file format. Being evaluated at this time. diff --git a/packages/seacas/libraries/exodus/include/ExodusLargeModel.md b/packages/seacas/libraries/exodus/include/ExodusLargeModel.md deleted file mode 100644 index 5206cf0..0000000 --- a/packages/seacas/libraries/exodus/include/ExodusLargeModel.md +++ /dev/null @@ -1,207 +0,0 @@ -\page large_model Large model modifications to the Exodus library -\section large_model_ Large model modifications to the Exodus library - -\note The changes documented below are now the default method for -storing an Exodus database. There is no reason to write a "non-large" -model database. - -The changes are to support the storage of larger models. There are two -pieces of this. The first is the setting of the type of netCDF file -that will be created; either one with 32-bit offsets or one with -64-bit offsets. (Note that this is *not* related to storing 64-bit -integers). This can be specified in a couple ways: - -1. Pass the `EX_LARGE_MODEL` flag in the mode argument to ex_create. -2. Set the environment variable `EXODUS_LARGE_MODEL`. - -If either of these are set, then the library will pass the -`NC_64BIT_OFFSET` flag to the netCDF library. See the commit log for -netCDF library for more details. - -The other change is to reduce the size of some of the datasets in an -Exodus library. Even with the netCDF changes, the maximum dataset -size is still 2 GiB. To reduce the size of the datasets, the nodal -coordinates and the nodal variables have been split to store by -component. The old behavior stored all x, y, and z coordinates in a -single dataset; in the new behavior, each component is stored -separately -- there is a coordx, coordy, and coordz dataset. - -The nodal variables used to be stored in a single blob of dimension -`(#times,#nodes,#variables)`. This has now been split into `#variable` -datasets of size `(#times,#nodes)`. - -These two changes should increase the maximum model sizes -significantly. Prior to the change, the maximum number of nodes that -could be stored in the coordinate dataset was about 90 Million nodes; -the new storage permits 270 Million nodes in double precision. The old -model was more restrictive if there were multiple nodal variables, but -the new storage should not depend on the number of nodal variables. - -These changes were made such that the new library would create -old-style files by default and would read either old or new style -files. The version has been changed to 3.01 for the file version and -4.01 for the API version. - -An additional attribute is now written to the file. It is called -"file_size" or `ATT_FILESIZE`. If it is 0 or not present, then the old -format is assumed; if it is 1, then the new format is assumed. - -There is also a new internal function called `ex_large_model(int exoid)` -which will return 1 if new version; 0 if old version. - -If the function is passed a negative exoid, then it will check the -environment variable `EXODUS_LARGE_MODEL` and return 1 if it is -defined. It also currently prints a warning message saying that the -large model size was selected via the environment variable. - -If you are using the Exodus api, then the only change to the client -application is the passing of the `EX_LARGE_MODEL` flag to `ex_create` or -the setting of the `EXODUS_LARGE_MODEL` environment variable. If your -client application is reading the database, no changes are needed. - -======================================================================== -If your client application bypasses some or all of the Exodus API -and makes direct netCDF calls, you will need to modify the calls. The -changes that were made are shown below along with the name of the -Exodus API function in which the changes were made. - -Alternatively, you can look at the changes that were made to the API at -http://github.com/sandialabs/seacas/packages/seacas/libraries/exodus/src. -The files that were changed are: - -\note The filenames have been changed since this was written. -* exgnvt.c -* expcor.c -* expini.c -* expnv.c -* expvp.c -* expvpc.c -* ex_utils.c -* excopy.c -* excre.c -* exgcor.c -* exgnv.c - -\section ex_create ex_create(): --- Check whether the `EX_LARGE_MODEL` mode was set. If so, then the -mode passed to nccreate must have the `NC_64BIT_OFFSET` bit set. For -example, `mode |= NC_64BIT_OFFSET;` - - NOTE: `NC_64BIT_OFFSET` is defined in the Sandia's netCDF version - "3.4-snl10X". It should also be in netCDF-3.6.0 once it is released. - --- Write the exodus file size `ATT_FILESIZE` attribute (1=large, 0=normal): - -``` -filesiz = (nclong)(((cmode & EX_LARGE_MODEL) != 0) || (ex_large_model(-1) == 1)); - if (ncattput (exoid, NC_GLOBAL, ATT_FILESIZE, NC_LONG, 1, &filesiz) == -1) - ... handle errors... -``` - -\section ex_put_init ex_put_init(): --- If writing a "large model" capable database, then the coordinates -are defined as components instead of an array. The variables are -`VAR_COORD_X`, `VAR_COORD_Y` (if 2D or 3D), `VAR_COORD_Z` (if 3D). If not, -define the `VAR_COORD` variable as is currently done. - -``` - if (ex_large_model(exoid) == 1) { - /* node coordinate arrays -- separate storage... */ - dim[0] = numnoddim; - if (ncvardef (exoid, VAR_COORD_X, nc_flt_code(exoid), 1, dim) == -1) - { ... handle error } - - if (num_dim > 1) { - if (ncvardef (exoid, VAR_COORD_Y, nc_flt_code(exoid), 1, dim) == -1) - { ... handle error } - } - - if (num_dim > 2) { - if (ncvardef (exoid, VAR_COORD_Z, nc_flt_code(exoid), 1, dim) == -1) - { ... handle error } - } - } else { - /* node coordinate arrays: -- all stored together (old method) */ - .... define the old way... - } -``` - -\section ex_put_coord ex_put_coord(): --- If writing a "large model" capable database, then the coordinates -are written a component at a time, otherwise write the old way as a single blob. - -``` - if (ex_large_model(exoid) == 0) { - ... write coordinates old way... - } else { - if ((coordidx = ncvarid (exoid, VAR_COORD_X)) == -1) - { ... handle error } - - if (num_dim > 1) { - if ((coordidy = ncvarid (exoid, VAR_COORD_Y)) == -1) - { ... handle error } - } else { - coordidy = 0; - } - if (num_dim > 2) { - if ((coordidz = ncvarid (exoid, VAR_COORD_Z)) == -1) - { ... handle error } - } else { - coordidz = 0; - } - /* write out the coordinates */ - for (i=0; i<= num_vars; i++) { - dims[0] = time_dim; - dims[1] = num_nod_dim; - if ((ncvardef (exoid, VAR_NOD_VAR_NEW(i), - nc_flt_code(exoid), 2, dims)) == -1) - { ... handle error ... } - } - } -``` - -\section ex_put_nodal_var ex_put_nodal_var(): - -- If the large model method, write the nodal variable data to the correct variable; - if the old method, determine the location within the blob - -``` - if (ex_large_model(exoid) == 0) { - /* write values of the nodal variable */ - if ((varid = ncvarid (exoid, VAR_NOD_VAR)) == -1) { - ... handle error... - } - start[0] = --time_step; - start[1] = --nodal_var_index; - start[2] = 0; - - count[0] = 1; - count[1] = 1; - count[2] = num_nodes; - } else { - /* nodal variables stored separately, find variable for this variable - index */ - if ((varid = ncvarid (exoid, VAR_NOD_VAR_NEW(nodal_var_index))) == -1) { - ... handle error ... - } - - start[0] = --time_step; - start[1] = 0; - - count[0] = 1; - count[1] = num_nodes; - } - - if (ncvarput (exoid, varid, start, count, - ex_conv_array(exoid,WRITE_CONVERT,nodal_var_vals,num_nodes)) == -1) { - ...handle error ... - } -``` - -There are similar modifications to the reading of the nodal coordinates -and the reading of nodal variables. If interested in those functions, see the viewcvs URL -listed above. - -If there are any questions, contact: - Greg Sjaardema - gdsjaar@sandia.gov - 505-844-2701 diff --git a/packages/seacas/libraries/exodus/include/doxygen.h b/packages/seacas/libraries/exodus/include/doxygen.h deleted file mode 100644 index 1478752..0000000 --- a/packages/seacas/libraries/exodus/include/doxygen.h +++ /dev/null @@ -1,462 +0,0 @@ -/* clang-format off */ - -/*! \mainpage Exodus API Documentation - -\section intro Introduction - -EXODUS is the successor of the widely used finite element (FE) data file format EXODUS -(henceforth referred to as EXODUS I) developed by Mills-Curran and Flanagan. It -continues the concept of a common database for multiple application codes (mesh generators, -analysis codes, visualization software, etc.) rather than code-specific utilities, affording -flexibility and robustness for both the application code developer and application code user. -By using the EXODUS data model, a user inherits the flexibility of using a large array of -application codes (including vendor-supplied codes) which access this common data file -directly or via translators. - -The uses of the EXODUS data model include the following: - - Problem definition -- mesh generation, specification of locations of boundary conditions and -load application, specification of material types. - - Simulation -- model input and results output. - - Visualization -- model verification, results postprocessing, data interrogation, and analysis -tracking. - -\section avail Availability - -The Exodus library source code is available on Github at -https://github.com/sandialabs/seacas - -For bug reports, documentation errors, and enhancement suggestions, contact: -- Gregory D. Sjaardema -- WEB: https://github.com/sandialabs/seacas/issues -- EMAIL: gdsjaar@sandia.gov -- EMAIL: gsjaardema@gmail.com -- PHONE: (505) 844-2701 (office) - -\section license License -The EXODUS library is licensed under the BSD open source license. - - Copyright(C) 1999-2022 National Technology & Engineering Solutions - of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with - NTESS, the U.S. Government retains certain rights in this software. - - See packages/seacas/LICENSE for details - - 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 NTESS 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. - -\section devel Development of EXODUS - -The evolution of the EXODUS data model has been steered by FE application code developers -who desire the advantages of a common data format. The EXODUS model has been -designed to overcome deficiencies in the EXODUS I file format and meet the following -functional requirements as specified by these developers: - - Random read/write access. - - Application programming interface (API) -- provide routines callable from FORTRAN, C, and C++ -application codes. - - Extensible -- allow new data objects to be added without modifying the application programs -that use the file format. - - Machine independent -- data should be independent of the machine which generated it. - - Real-time access during analysis -- allow access to the data in a file while the file is -being created. - -To address these requirements, the open source database library -NetCDF (http://www.unidata.ucar.edu/software/netcdf/) was selected to handle the low-level data -storage. The EXODUS -II library functions provide the mapping between FE data objects and -NetCDF dimensions, attributes, and variables. Thus, the code developer -interacts with the data model using the vocabulary of an FE analyst -(element connectivity, nodal coordinates, etc.) and is relieved of the -details of the data access mechanism. - -Because an EXODUS file is a NetCDF file, an application program can -access data via the EXODUS API or the NetCDF API directly. Although -accessing the data directly via the NetCDF API requires more in-depth -understanding of NetCDF, this capability is a powerful feature that -allows the development of auxiliary libraries of special purpose -functions not offered in the standard EXODUS library. For example, -if an application required access to the coordinates of a single node -(the standard library function returns the coordinates for all of the -nodes in the model), a simple function could be written that calls -NetCDF routines directly to read the data of interest. - -\section descrip Description of Data Objects - -The data in EXODUS files can be divided into three primary -categories: initialization data, model, and results. - -Initialization data includes sizing parameters (number of nodes, -number of elements, etc.), optional quality assurance information -(names of codes that have operated on the data), and optional -informational text. - -The model is described by data which are static (do not change through -time). These data include nodal coordinates, element connectivity -(node lists for each element), element attributes, and node sets and -side sets (used to aid in applying loading conditions and boundary -constraints). - -The results are optional and include five types of variables -- nodal, -element, nodeset, sideset, and global -- each of which is stored -through time. Nodal results are output (at each time step) for all the -nodes in the model. An example of a nodal variable is displacement in -the X direction. Element, nodeset, and sideset results are output (at -each time step) for all entities (elements, nodes, sides) in one or -more entity block. For example, stress may be an element -variable. Another use of element variables is to record element status -(a binary flag indicating whether each element is "alive" or "dead") -through time. Global results are output (at each time step) for a -single element or node, or for a single property. Linear momentum of a -structure and the acceleration at a particular point are both examples -of global variables. Although these examples correspond to typical FE -applications, the data format is flexible enough to accommodate a -spectrum of uses. - -A few conventions and limitations must be cited: - - - There are no restrictions on the frequency of results output except - that the time value associated with each successive time step must - increase monotonically. - - To output results at different frequencies (i.e., variable A at - every simulation time step, variable B at every other time step) - multiple EXODUS files must be used. - - There are no limits to the number of each type of results, but once - declared, the number cannot change. - - If the mesh geometry or topology changes in time (i.e., number of - nodes increases, connectivity changes), then the new geometry must be - output to a new EXODUS file. - -\section int64 Integer Bulkdata Storage Details (32-bit and 64-bit integers) - -The EXODUS database can store integer bulk data, entity map data, and -mesh entity (block/set) ids in either 32-bit or 64-bit integer format. The data -considered "bulk data" are: - - - element, face, and edge connectivity lists, - - element, face, edge, and node set entity lists, - -The entity map data is any data stored in one of the 'map' objects on -the exodus file. This includes: - - id maps - - number maps - - order maps - - processor node maps - - processor element maps. - -A mesh entity id is the id of any block (element block, edge block, -...); set (node set, face set, ...), coordinate frame, and -communication map. - -When an EXODUS file is created via the ex_create() function, the -'mode' argument provides the mechanism for specifying how integer data -will be passed as arguments to the API functions and also how the -integer data will be stored on the database. The ex_open() function -also provides a mechanism for specifying how integer data will be -passed as arguments. - -The method uses the 'mode' argument to the ex_open() and -ex_create() functions. The mode is a 32-bit integer in which certain -bits are turned on by or'ing certain predefined constants. - - exoid = ex_create( "test.exo", - EX_CLOBBER|EX_MAPS_INT64_DB|EX_MAPS_INT64_API, - &appWordSize, &diskWordSize ); - -The constants related to the integer size (32-bit or 64-bit) -specification are: - -| Constant Name | Which data are 64-bit ----------------------|---------------------- -| #EX_MAPS_INT64_DB | entity map data -| #EX_IDS_INT64_DB | mesh entity ids -| #EX_BULK_INT64_DB | bulk data -| #EX_ALL_INT64_DB | (the above 3 or'd together) -| #EX_MAPS_INT64_API | entity map data -| #EX_IDS_INT64_API | mesh entity ids -| #EX_BULK_INT64_API | bulk data -| #EX_INQ_INT64_API | integers passed to/from ex_inquire() -| #EX_ALL_INT64_API | (the above 4 or'd together) - -The constants that end with `_DB` specify that that particular integer -data is stored on the database as 64-bit integers; the constants that -end with `_API` specify that that particular integer data is passed -to/from API functions as 64-bit integers. - -If the range of the data being transmitted is larger than the -permitted integer range (for example, if the data is stored on the -database as 64-bit ints and the application specifies passing data as -32-bit ints), the API function will return an error. - -The three types of integer data whose storage can be specified are -- maps (`EX_MAPS_INT64_`), -- "bulk data" including connectivity lists and entity lists (`EX_BULK_INT64_`), and -- entity ids which are the ids of element, face, edge, and node sets - and blocks; and map ids (`EX_IDS_INT64_`) - -The function ex_int64_status()(exoid) is used to determine the integer -storage types being used for the EXODUS database `exoid`. It returns -an integer which can be and'ed with the above flags to determine -either the storage type or function parameter type. - -For example, if -`(#EX_MAPS_INT64_DB & ex_int64_status()(exoid))` is true, then map data is -being stored as 64-bit integers for that database. - -It is not possible to determine the integer data size on a database -without opening the database via an ex_open() call. However, the -integer size specification for API functions can be changed at any -time via the ex_set_int64_status()(exoid, mode) function. The mode is -one or more of `#EX_MAPS_INT64_API`, `#EX_IDS_INT64_API`, or -`#EX_BULK_INT64_API`, or'd together. Any exodus function calls after -that point will use the specified integer size. Note that a call to -ex_set_int64_status()(exoid, mode) overrides any previous setting for -the integer sizes used in the API. The ex_create() function is the -only way to specify the integer sizes specification for database -integers. - -\subsection int64_fortran_api Fortran API -The fortran API is uses the same mechanism as was described above for -the C API. If using the "8-byte real and 8-byte int" fortran mode -typically used by the SEACAS applications (the compiler automatically -promotes all integers and reals to 8-byte quantities), then the -fortran exodus library will automatically enable the `EX_*_INT64_API` -options; the client still needs to specify the `EX_*_INT64_DB` options. - -\subsection int64_fortran_imp Fortran Implementation - -The new capability to pass 64-bit integer data through the fortran and -C API functions simplifies the implementation of the "8-byte real -8-byte int" usage of the exodus library. Previously, the wrapper -routines in addrwrap.F were required to convert the 8-byte integer -data on the client side to/from 4-byte integers on the library -side. This required extra memory allocation and complications that are -now handled at the lowest level in the NetCDF library. The -functions in the fortran API have all been converted to -pass 64-bit integers down to the C API which has removed some code and -simplified those functions. - - -\section db_options Database Options (Compression, Name Length, File Type) - -The ex_set_option() function call is used to set various options on the -database. Valid values for 'option' are: - -| Option Name | Option Values | --------------------------|---------------| -| #EX_OPT_MAX_NAME_LENGTH | Maximum length of names that will be returned/passed via API call. | -| #EX_OPT_COMPRESSION_TYPE | Not currently used; default is gzip | -| #EX_OPT_COMPRESSION_LEVEL | In the range [0..9]. A value of 0 indicates no compression | -| #EX_OPT_COMPRESSION_SHUFFLE | 1 if enabled, 0 if disabled | -| #EX_OPT_INTEGER_SIZE_API | 4 or 8 indicating byte size of integers used in API functions. | -| #EX_OPT_INTEGER_SIZE_DB | Query only, returns 4 or 8 indicating byte size of integers stored on the database. | - -The compression-related options are only available on NetCDF-4 files -since the underlying hdf5 compression functionality is used for the -implementation. The compression level indicates how much effort should -be expended in the compression and the computational expense increases -with higher levels; in many cases, a compression level of 1 is -sufficient. - -\section names Variable, Attribute, and Entity Block/Set Names -The length of the Variables, Attributes, and Entity Block/Set names is -variable. The default length is 32 characters to provide backward -compatibility. This is the default on both read and write, so if -there is a database with longer names and the reader does not change -the length of names to be returned, any API call that returns a name -will truncate the name at 32 characters. - -To avoid this, the reading application can all -~~~{.c} - // Determine maximum length of names stored on database - int max_name_length = ex_inquire_int(exoid, EX_INQ_DB_MAX_USED_NAME_LENGTH); - - // Tell the library to return names this length - ex_set_max_name_length(exodusFilePtr, max_name_length); -~~~ - -On write, you can call: - -~~~{.c} - ex_set_option(exoid, EX_OPT_MAX_NAME_LENGTH, {max_name_length}); - - // or equivalently - ex_set_max_name_length(exoid, {max_name_length}); -~~~ - -which tells the database that you will be using names of that length or shorter. - -Following this call, you can define (i.e., read/write) names of any -size; if the names are longer than `{max_name_length}`, then they will be truncated otherwise they will pass through unchanged. - -There are three queries that can be made to ex_inquire() or -ex_inquire_int(): - - - #EX_INQ_DB_MAX_ALLOWED_NAME_LENGTH -- returns the value of the - maximum size that can be specified for `max_name_length` - (netcdf/hdf5 limitation) - - #EX_INQ_DB_MAX_USED_NAME_LENGTH -- returns the size of the longest - name on the database. - - #EX_INQ_MAX_READ_NAME_LENGTH -- returns the maximum name length - size that will be passed back to the client. 32 by default, - set by the previously mentioned ex_set_option() or - ex_set_max_name_length() call. - -\note - - The length of the QA records (ex_get_qa(), ex_put_qa()) is not affected by this setting and each entry in the QA record is still limited to 32 characters. - - The length of the `entity_descrip` type passed and returnen in the - ex_get_block() and ex_put_block() calls is still limited to 32 characters. - - The length of the title is limited to 80 characters - (ex_get_init(), ex_get_init_ext(), ex_put_init(), ex_put_init_ext()). - - The length of the info records is limited to 80 characters - (ex_put_info(), ex_get_info()). - -\defgroup ResultsData Results Data -@{ -This section describes data file utility functions for creating -opening a file, initializing a file with global parameters, reading -writing information text, inquiring on parameters stored in the data -file, and error reporting. - -The results are optional and include an optional variable type for -each block and set type (node, edge, face, and element) in addition -there are global variables and sideset variables -- each of which is -stored through time. Nodal results are output (at each time step) for -all the nodes in the model. An example of a nodal variable is -displacement in the X direction. Global results are output (at each -time step) for a single element or node, or for a single -property. Linear momentum of a structure and the acceleration at a -particular point are both examples of global variables. The other -results are output (at each time step) for all entities (elements, -faces, edges, nodes, or sides) in one or more entity blocks. For -example, stress may be an element variable. Another use of element -variables is to record element status (a binary flag indicating -whether each element is "alive" or "dead") through time. Although -these examples correspond to typical FE applications, the data format -is flexible enough to accommodate a spectrum of uses. - -A few conventions and limitations must be cited: - -+ There are no restrictions on the frequency of results output except -that the time value associated with each successive time step should -increase monotonically. - -+ All variables are output at the same time frequency. To output -results at different frequencies (i.e., variable A at every simulation -time step, variable B at every other time step) multiple files must be -used. - -+ There are no limits to the number of each type of results, but once -declared, the number cannot change. - -+ If the mesh geometry changes in time (i.e., number of nodes -increases, connectivity changes), the new geometry must be output to a -new file. -@} - -\defgroup Utilities Data File Utilities - @{ -This section describes data file utility functions for creating -opening a file, initializing a file with global parameters, reading -writing information text, inquiring on parameters stored in the data -file, and error reporting. - @} - -\defgroup ModelDescription Model Description - @{ -The routines in this section read and write information which -describe an exodus finite element model. This includes nodal -coordinates, element order map, element connectivity arrays, -element attributes, node sets, side sets, and object properties. - @} - -@example ../test/CreateEdgeFace.c -@example ../test/ReadEdgeFace.c -@example ../test/create_mesh.c -@example ../test/rd_wt_mesh.c -@example ../test/test-empty.c -@example ../test/test_nemesis.c -@example ../test/test_ts_errval.c -@example ../test/test_ts_files.c -@example ../test/test_ts_nvar.c -@example ../test/test_ts_nvar_rd.c -@example ../test/test_ts_partial_nvar.c -@example ../test/test_ts_partial_nvar_rd.c -@example ../test/testcp.c -@example ../test/testcp_nl.c -@example ../test/testcp_tran.c -@example ../test/testcpd.c -@example ../test/testrd-long-name.c -@example ../test/testrd-nfaced.c -@example ../test/testrd-nsided.c -@example ../test/testrd.c -@example ../test/testrd1.c -@example ../test/testrd_nc.c -@example ../test/testrd_par.c -@example ../test/testrd_ss.c -@example ../test/testrdd.c -@example ../test/testrdwt.c -@example ../test/testwt-compress.c -@example ../test/testwt-groups.c -@example ../test/testwt-long-name.c -@example ../test/testwt-nface-nside.c -@example ../test/testwt-nfaced.c -@example ../test/testwt-nsided.c -@example ../test/testwt-one-attrib.c -@example ../test/testwt-oned.c -@example ../test/testwt-partial.c -@example ../test/testwt-results.c -@example ../test/testwt-zeroe.c -@example ../test/testwt-zeron.c -@example ../test/testwt.c -@example ../test/testwt1.c -@example ../test/testwt2.c -@example ../test/testwt_clb.c -@example ../test/testwt_nc.c -@example ../test/testwt_nossnsdf.c -@example ../test/testwt_ss.c -@example ../test/testwtd.c -@example ../test/testwtm.c -@example ../test/twod.c - -@example ../exodus_for/test/test_nem.f -@example ../exodus_for/test/testcp.f -@example ../exodus_for/test/testcpd.f -@example ../exodus_for/test/testcpnl.f -@example ../exodus_for/test/testrd.f -@example ../exodus_for/test/testrd1.f -@example ../exodus_for/test/testrd_nsid.f -@example ../exodus_for/test/testrdd.f -@example ../exodus_for/test/testwt.f -@example ../exodus_for/test/testwt1.f -@example ../exodus_for/test/testwt2.f -@example ../exodus_for/test/testwt3.f -@example ../exodus_for/test/testwt_nsid.f -@example ../exodus_for/test/testwtd.f -@example ../exodus_for/test/testwtm.f -*/ - -/* clang-format on */ diff --git a/packages/seacas/libraries/exodus/include/exodus-element-types.md b/packages/seacas/libraries/exodus/include/exodus-element-types.md deleted file mode 100644 index 3eed7f1..0000000 --- a/packages/seacas/libraries/exodus/include/exodus-element-types.md +++ /dev/null @@ -1,278 +0,0 @@ -\page element_types Exodus Element Types - -\tableofcontents - -\section types Element Types -The following table shows the element types supported in the Exodus -library, the IOSS library, nem_slice, and nem_spread. - - Element |Nodes|Exodus| IOSS | nem_slice | nem_spread | - --------|:---:|:----:|:-----:|:---------:|:----------:| - |circle | 1 | X | X | X | X | - |sphere | 1 | X | X | X | X | - | | | | | | | - |beam | 2 | X | X | X | X | - | | 3 | X | X | X | X | - | | 4 | X | X | | | - | | | | | | | - quad | 4 | X | X | X | X | - | | 5 | X | | | | - | | 8 | X | X | | | - | | 9 | X | X | X | X | - | | 12 | X | X | | | - | | 16 | X | X | | | - | | | | | | | - tri (2D)| 3 | X | X | X | X | - | | 4 | X | X | X | X | - | | 6 | X | X | X | X | - | | 7 | X | X | X | X | - | | 9 | X | X | | | - | | 13 | X | X | | | - | | | | | | | - tri (3D)| 3 | X | X | X | X | - | | 4 | X | X | X | X | - | | 6 | X | X | X | X | - | | 7 | X | X | X | X | - | | 9 | X | X | | | - | | 13 | X | X | | | - | | | | | | | - shell | 2 | X | X | X | X | - | | 3 | tri3 | X | X | X | - | | 4 | X | X | X | X | - | | 8 | X | X | X | X | - | | 9 | X | X | X | X | - | | | | | | | - tet | 4 | X | X | X | X | - | | 5 | X | | | | - | | 7 | | X | | | - | | 8 | X | X | X | X | - | | 10 | X | X | X | X | - | | 11 | X | X | | | - | | 14 | X | X | X | X | - | | 15 | X | X | X | X | - | | 16 | X | X | | | - | | 40 | X | X | | | - | | | | | | | - pyramid | 5 | X | X | X | X | - | | 13 | X | X | X | X | - | | 14 | X | X | X | X | - | | 18 | X | X | X | X | - | | 19 | X | X | X | X | - | | | | | | | - wedge | 6 | X | X | X | X | - | | 12 | X | X | X | X | - | | 15 | X | X | X | X | - | | 16 | X | X | X | X | - | | 18 | X | X | | | - | | 20 | X | X | X | X | - | | 21 | X | X | X | X | - | | 24 | X | X | | | - | | 52 | X | X | | | - | | | | | | | - hex | 8 | X | X | X | X | - | | 9 | X | X | | | - | | 16 | X | X | X | X | - | | 20 | X | X | X | X | - | | 27 | X | X | X | X | - | | 32 | X | X | | | - | | 64 | X | X | | | - -Only the base topology name is required for the element type. For example, all -elements of a `hex` toplogy can be referred to by the name `hex` no -matter how many nodes there are. However, it is also correct to -append the node count to the topology type for the element name. For -example, a 20-node hex could be named `hex20`. - -The IOSS library, nem_slice, and nem_spread cannot correctly handle a -mesh unless it contains elements of a known type. - -However, the exodus library can store elements of an unknown type with -a few limitations. For an unsupported element type, the exodus library -will not: - - * return the side set node list. - * return the side set node list node count. - * convert side set nodes to sides or vice versa. - -If none of the above functions are required, then an element unknown -to the exodus library can can be written to and read from an exodus -file with no loss of information. - -\section ordering Exodus Node Ordering Convention - -Node ordering follows the conventions illustrated in the figures -below. The node ordering conventions follow the element topology used -in PATRAN. Thus, for higher-order elements than those illustrated, use -the ordering prescribed in the PATRAN Element Library Manual Manual -. - -------------------------- -\section circle Circle and Sphere -For elements of type circle or sphere, the topology is one node at the center of the circle or sphere element. -A circle or sphere element has no sides. - -![Circle](../topology/circle.png) -![Sphere](../topology/sphere.png) - -------------------------- -\section bar Bar, Truss, Beam -The element name for this element type can be "bar", "beam", "truss". -For the "beam", the boundaries are the "top" and "bottom" edges; for -the "bar" or "truss", the boundaries are the end nodes. - -![Bar2](../topology/bar2.png) -![Bar3](../topology/bar3.png) -![Bar4](../topology/bar4.png) - -------------------------- -\section tri Triangular -These are usable in 2D or 3D meshes. In a 3D mesh, they would represent triangular shells. The element name is "triangle" or "tri" in either case. - -![Tri3](../topology/tri3.png) -![Tri4](../topology/tri4.png) -![Tri6](../topology/tri6.png) -![Tri7](../topology/tri7.png) -![Tri9](../topology/tri9.png) -![Tri13](../topology/tri13.png) - -The side numbering for a tri element is shown below. For a triangular shell, there are five sides. Side 1 is the "top" of the triangle given by nodes 1-2-3 and side 2 is the "bottom" of the triangle given by nodes 3-2-1. Sides 3,4,5 correspond to sides 1,2,3 of the 2D triangle. - - Element Type |Side \#|Node Order | - -------------|:-----:|:----------:| - TRI (2D) | 1 | 1, 2 | - | | 2 | 2, 3 | - | | 3 | 3, 1 | - - Element Type |Side \#|Node Order | ---------------|:-----:|:----------:| - TRI (3D) | 1 | 1, 2, 3 | - | | 2 | 1, 3, 2 | - (Edges) | 3 | 1, 2 | - | | 4 | 2, 3 | - | | 5 | 3, 1 | - -![Tri-Number](../topology/triangle-face-numbering.png) - -------------------------- -\section quad Quadrilateral -These are usable in 2D or 3D meshes. In a 3D mesh, they represent a quadrilateral shell element and the element name is "shell"; in a 2D mesh, the element name is "quad". - -![Quad4](../topology/quad4.png) -![Quad5](../topology/quad5.png) -![Quad8](../topology/quad8.png) -![Quad9](../topology/quad9.png) -![Quad12](../topology/quad12.png) -![Quad16](../topology/quad16.png) - -The side numbering for a 2D quadrilateral element and a 3D quadrilateral shell element are shown below. - - Element Type |Side \#|Node Order | - -------------|:-----:|:----------:| - QUAD (2D) | 1 | 1, 2 | - | | 2 | 2, 3 | - | | 3 | 3, 4 | - | | 4 | 4, 1 | - -![Quad-Number](../topology/quad-face-numbering.png) - - Element Type |Side \#|Node Order | ---------------|:-----:|:----------:| - SHELL (3D) | 1 | 1, 2, 3, 4 | - | | 2 | 1, 4, 3, 2 | - (Edges) | 3 | 1, 2 | - | | 4 | 2, 3 | - | | 5 | 3, 4 | - | | 6 | 4, 1 | - -![Shell-Number](../topology/shell-face-numbering.png) - -------------------------- -\section tet Tetrahedral -![Tet4](../topology/tet04.png) -![Tet5](../topology/tet05.png) -![Tet10](../topology/tet10.png) -![Tet11](../topology/tet11.png) -![Tet14](../topology/tet14.png) -![Tet15](../topology/tet15.png) -![Tet16](../topology/tet16.png) -![Tet40](../topology/tet40.png) - -The side numbering for a tetrahedral element type is shown below. - - Element Type |Side \#|Node Order | ---------------|:-----:|:----------:| -TETRA | 1 | 1, 2, 4 | -| | 2 | 2, 3, 4 | -| | 3 | 1, 4, 3 | -| | 4 | 1, 3, 2 | - -![Tet-Number](../topology/tet-face-numbering.png) - -------------------------- -\section pyr Pyramidal -![Pyramid](../topology/pyramid.png) - -The `pyramid18` adds mid-face nodes to the triangular faces and the `pyramid19` adds a mid-volume node. - -The side numbering for a pyramidal element type is shown below. - - Element Type |Side \#|Node Order | ---------------|:-----:|:----------:| -PYRAMID| 1 | 1, 2, 5 | -| | 2 | 2, 3, 5 | -| | 3 | 3, 4, 5 | -| | 4 | 4, 1, 5 | -| | 5 | 1, 4, 3, 2 | - -![Pyramid-Number](../topology/pyramid-face-numbering.png) - -------------------------- -\section wedge Wedge -![Wedge6](../topology/wedge06.png) -![Wedge12](../topology/wedge12.png) -![Wedge15](../topology/wedge15.png) -![Wedge16](../topology/wedge16.png) -![Wedge20](../topology/wedge20.png) -![Wedge21](../topology/wedge21.png) -![Wedge24](../topology/wedge24.png) -![Wedge52](../topology/wedge52.png) - -The side numbering for a wedge element type is shown below. Note that -the face mapping for this element does not match the MSC/Patran face -mapping. In exodus, sides 1,2,3 are quadrilateral and sides 4,5 are -triangular; in MSC/Patran, sides 1,2 are triangular and sides 4,5,6 -are quadrilateral. It is unclear when and why this digression -occurred. - - Element Type |Side \#|Node Order | Patran Side | ---------------|:-----:|:----------:|:-----------:| -WEDGE | 1 | 1, 2, 5, 4 | 3 | -| | 2 | 2, 3, 6, 5 | 5 | -| | 3 | 1, 4, 6, 3 | 4 | -| | 4 | 1, 3, 2 | 1 | -| | 5 | 4, 5, 6 | 2 | - -![Wedge-Number](../topology/wedge-face-numbering.png) - -------------------------- -\section hex Hexahedral -![Hex8](../topology/hex08.png) -![Hex9](../topology/hex09.png) -![Hex16](../topology/hex16.png) -![Hex20](../topology/hex20.png) -![Hex27](../topology/hex27.png) -![Hex32](../topology/hex32.png) -![Hex64](../topology/hex64.png) - -The side numbering for a hexahedral element type is shown below. - - Element Type |Side \#|Node Order | ---------------|:-----:|:----------:| -HEX | 1 | 1, 2, 6, 5 | -| | 2 | 2, 3, 7, 6 | -| | 3 | 3, 4, 8, 7 | -| | 4 | 1, 5, 8, 4 | -| | 5 | 1, 4, 3, 2 | -| | 6 | 5, 6, 7, 8 | - -![Hex-Number](../topology/hex-face-numbering.png) diff --git a/packages/seacas/libraries/exodus/include/exodusII.h b/packages/seacas/libraries/exodus/include/exodusII.h deleted file mode 100644 index e63ddd3..0000000 --- a/packages/seacas/libraries/exodus/include/exodusII.h +++ /dev/null @@ -1,1829 +0,0 @@ -/* - * Copyright(C) 1999-2023 National Technology & Engineering Solutions - * of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with - * NTESS, the U.S. Government retains certain rights in this software. - * - * See packages/seacas/LICENSE for details - */ - -/***************************************************************************** - * - * exodusII.h - Exodus II API include file - * - *****************************************************************************/ -#pragma once - -#include "exodus_config.h" - -#include "netcdf.h" - -#if defined(NC_HAVE_META_H) -#include "netcdf_meta.h" - -/* Bug in some versions of NetCDF where the netcdf_meta.h define of NC_HAS_SZIP_WRITE is bad */ -#if !defined(NC_HAS_SZIP_WRITE) -#define NC_HAS_SZIP_WRITE 0 -#elif ~(~NC_HAS_SZIP_WRITE + 0) == 0 && ~(~NC_HAS_SZIP_WRITE + 1) == 1 -#undef NC_HAS_SZIP_WRITE -#define NC_HAS_SZIP_WRITE 0 -#endif - -#if NC_HAS_PARALLEL -#ifndef PARALLEL_AWARE_EXODUS -#define PARALLEL_AWARE_EXODUS -#endif -#else -#ifdef PARALLEL_AWARE_EXODUS -#error "PARALLEL_AWARE_EXODUS defined, but NetCDF NC_HAS_PARALLEL is false" -#endif -#endif -#endif - -#if defined(PARALLEL_AWARE_EXODUS) -#include "netcdf_par.h" -#endif - -#include -#include -#include - -#ifndef NC_INT64 -#error "NetCDF version 4.1.2 or later is required." -#endif - -/* EXODUS version number */ -#define EXODUS_VERSION "8.22" -#define EXODUS_VERSION_MAJOR 8 -#define EXODUS_VERSION_MINOR 22 -#define EXODUS_RELEASE_DATE "June 5, 2023" - -#define EX_API_VERS 8.22f -#define EX_API_VERS_NODOT (100 * EXODUS_VERSION_MAJOR + EXODUS_VERSION_MINOR) -#define EX_VERS EX_API_VERS - -/* Retained for backward compatibility */ -#define NEMESIS_API_VERSION EX_API_VERS -#define NEMESIS_API_VERSION_NODOT EX_API_VERS_NODOT -#define NEMESIS_FILE_VERSION 2.6 -/* - * need following extern if this include file is used in a C++ - * program, to keep the C++ compiler from mangling the function names. - */ -#ifdef __cplusplus -extern "C" { -#endif - -/* - * The following are miscellaneous constants used in the EXODUS - * API. They should already be defined, but are left over from the - * old days... - */ -#ifndef EX_TRUE -#define EX_TRUE -1 -#endif - -#ifndef EX_FALSE -#define EX_FALSE 0 -#endif - -/** - * \defgroup FileVars Variables controlling the file creation mode. - *@{ - */ -/* Modes for ex_open */ -#define EX_WRITE 0x0001 /**< ex_open(): open existing file for appending. */ -#define EX_READ 0x0002 /**< ex_open(): open file for reading (default) */ - -#define EX_NOCLOBBER 0x0004 /**< Don't overwrite existing database, default */ -#define EX_CLOBBER 0x0008 /**< Overwrite existing database if it exists */ -#define EX_NORMAL_MODEL 0x0010 /**< disable mods that permit storage of larger models */ -#define EX_64BIT_OFFSET 0x0020 /**< enable mods that permit storage of larger models */ -#define EX_LARGE_MODEL EX_64BIT_OFFSET /**< enable mods that permit storage of larger models */ -#define EX_64BIT_DATA 0x400000 /**< CDF-5 format: classic model but 64 bit dimensions and sizes */ -#define EX_NETCDF4 0x0040 /**< use the hdf5-based netcdf4 output */ -#define EX_NOSHARE 0x0080 /**< Do not open netcdf file in "share" mode */ -#define EX_SHARE 0x0100 /**< Do open netcdf file in "share" mode */ -#define EX_NOCLASSIC 0x0200 /**< Do not force netcdf to classic mode in netcdf4 mode */ - -#define EX_DISKLESS 0x100000 /**< Experimental */ -#define EX_MMAP 0x200000 /**< Experimental */ - -/* Need to distinguish between storage on database (DB in name) and - passed through the API functions (API in name). -*/ -#define EX_MAPS_INT64_DB 0x0400 /**< All maps (id, order, ...) store int64_t values */ -#define EX_IDS_INT64_DB 0x0800 /**< All entity ids (sets, blocks, maps) are int64_t values */ -#define EX_BULK_INT64_DB \ - 0x1000 /**< All integer bulk data (local indices, counts, maps); not ids \ - */ -#define EX_ALL_INT64_DB \ - (EX_MAPS_INT64_DB | EX_IDS_INT64_DB | EX_BULK_INT64_DB) /**< All of the above... */ - -#define EX_MAPS_INT64_API 0x2000 /**< All maps (id, order, ...) store int64_t values */ -#define EX_IDS_INT64_API 0x4000 /**< All entity ids (sets, blocks, maps) are int64_t values */ -#define EX_BULK_INT64_API \ - 0x8000 /**< All integer bulk data (local indices, counts, maps); not ids */ -#define EX_INQ_INT64_API 0x10000 /**< Integers passed to/from ex_inquire() are int64_t */ -#define EX_ALL_INT64_API \ - (EX_MAPS_INT64_API | EX_IDS_INT64_API | EX_BULK_INT64_API | \ - EX_INQ_INT64_API) /**< All of the above... */ - -/* Parallel IO mode flags... */ -#define EX_MPIIO 0x20000 -#define EX_MPIPOSIX 0x40000 /**< \deprecated As of libhdf5 1.8.13. */ -#define EX_PNETCDF 0x80000 - -/** @}*/ - -/*! \sa ex_inquire() All inquiries return an integer of the current database integer size unless - * otherwise noted. */ -enum ex_inquiry { - EX_INQ_FILE_TYPE = 1, /**< EXODUS file type (deprecated) */ - EX_INQ_API_VERS = 2, /**< API version number (float) */ - EX_INQ_DB_VERS = 3, /**< database version number (float) */ - EX_INQ_TITLE = 4, /**< database title. MAX_LINE_LENGTH+1 char* size */ - EX_INQ_DIM = 5, /**< number of dimensions */ - EX_INQ_NODES = 6, /**< number of nodes */ - EX_INQ_ELEM = 7, /**< number of elements */ - EX_INQ_ELEM_BLK = 8, /**< number of element blocks */ - EX_INQ_NODE_SETS = 9, /**< number of node sets*/ - EX_INQ_NS_NODE_LEN = 10, /**< length of node set node list */ - EX_INQ_SIDE_SETS = 11, /**< number of side sets*/ - EX_INQ_SS_NODE_LEN = 12, /**< length of side set node list */ - EX_INQ_SS_ELEM_LEN = 13, /**< length of side set element list */ - EX_INQ_QA = 14, /**< number of QA records */ - EX_INQ_INFO = 15, /**< number of info records */ - EX_INQ_TIME = 16, /**< number of time steps in the database */ - EX_INQ_EB_PROP = 17, /**< number of element block properties */ - EX_INQ_NS_PROP = 18, /**< number of node set properties */ - EX_INQ_SS_PROP = 19, /**< number of side set properties */ - EX_INQ_NS_DF_LEN = 20, /**< length of node set distribution factor list*/ - EX_INQ_SS_DF_LEN = 21, /**< length of side set distribution factor list*/ - EX_INQ_LIB_VERS = 22, /**< API Lib vers number (float) */ - EX_INQ_EM_PROP = 23, /**< number of element map properties */ - EX_INQ_NM_PROP = 24, /**< number of node map properties */ - EX_INQ_ELEM_MAP = 25, /**< number of element maps */ - EX_INQ_NODE_MAP = 26, /**< number of node maps*/ - EX_INQ_EDGE = 27, /**< number of edges */ - EX_INQ_EDGE_BLK = 28, /**< number of edge blocks */ - EX_INQ_EDGE_SETS = 29, /**< number of edge sets */ - EX_INQ_ES_LEN = 30, /**< length of concat edge set edge list */ - EX_INQ_ES_DF_LEN = 31, /**< length of concat edge set dist factor list*/ - EX_INQ_EDGE_PROP = 32, /**< number of properties stored per edge block */ - EX_INQ_ES_PROP = 33, /**< number of properties stored per edge set */ - EX_INQ_FACE = 34, /**< number of faces */ - EX_INQ_FACE_BLK = 35, /**< number of face blocks */ - EX_INQ_FACE_SETS = 36, /**< number of face sets */ - EX_INQ_FS_LEN = 37, /**< length of concat face set face list */ - EX_INQ_FS_DF_LEN = 38, /**< length of concat face set dist factor list*/ - EX_INQ_FACE_PROP = 39, /**< number of properties stored per face block */ - EX_INQ_FS_PROP = 40, /**< number of properties stored per face set */ - EX_INQ_ELEM_SETS = 41, /**< number of element sets */ - EX_INQ_ELS_LEN = 42, /**< length of concat element set element list */ - EX_INQ_ELS_DF_LEN = 43, /**< length of concat element set dist factor list*/ - EX_INQ_ELS_PROP = 44, /**< number of properties stored per elem set */ - EX_INQ_EDGE_MAP = 45, /**< number of edge maps */ - EX_INQ_FACE_MAP = 46, /**< number of face maps */ - EX_INQ_COORD_FRAMES = 47, /**< number of coordinate frames */ - EX_INQ_DB_MAX_ALLOWED_NAME_LENGTH = 48, /**< size of MAX_NAME_LENGTH dimension on database */ - EX_INQ_DB_MAX_USED_NAME_LENGTH = 49, /**< size of MAX_NAME_LENGTH dimension on database */ - EX_INQ_MAX_READ_NAME_LENGTH = 50, /**< client-specified max size of returned names */ - - EX_INQ_DB_FLOAT_SIZE = 51, /**< size of floating-point values stored on database */ - EX_INQ_NUM_CHILD_GROUPS = 52, /**< number of groups contained in this (exoid) group */ - EX_INQ_GROUP_PARENT = 53, /**< id of parent of this (exoid) group; returns exoid if at root */ - EX_INQ_GROUP_ROOT = - 54, /**< id of root group "/" of this (exoid) group; returns exoid if at root */ - EX_INQ_GROUP_NAME_LEN = 55, /**< length of name of group exoid */ - EX_INQ_GROUP_NAME = - 56, /**< name of group exoid. "/" returned for root group (char* GROUP_NAME_LEN+1 size) */ - EX_INQ_FULL_GROUP_NAME_LEN = 57, /**< length of full path name of this (exoid) group */ - EX_INQ_FULL_GROUP_NAME = 58, /**< full "/"-separated path name of this (exoid) group */ - EX_INQ_THREADSAFE = 59, /**< Returns 1 if library is thread-safe; 0 otherwise */ - EX_INQ_ASSEMBLY = 60, /**< number of assemblies */ - EX_INQ_BLOB = 61, /**< number of blobs */ - EX_INQ_NUM_NODE_VAR = 62, /**< number of nodal variables */ - EX_INQ_NUM_EDGE_BLOCK_VAR = 63, /**< number of edge block variables */ - EX_INQ_NUM_FACE_BLOCK_VAR = 64, /**< number of face block variables */ - EX_INQ_NUM_ELEM_BLOCK_VAR = 65, /**< number of element block variables */ - EX_INQ_NUM_NODE_SET_VAR = 66, /**< number of node set variables */ - EX_INQ_NUM_EDGE_SET_VAR = 67, /**< number of edge set variables */ - EX_INQ_NUM_FACE_SET_VAR = 68, /**< number of face set variables */ - EX_INQ_NUM_ELEM_SET_VAR = 69, /**< number of element set variables */ - EX_INQ_NUM_SIDE_SET_VAR = 70, /**< number of sideset variables */ - EX_INQ_NUM_GLOBAL_VAR = 71, /**< number of global variables */ - EX_INQ_INVALID = -1 -}; - -typedef enum ex_inquiry ex_inquiry; - -/* Options */ -/** - * \defgroup FileOptions Variables controlling the compression, name size, and integer size. - *@{ - */ -/*! Modes for ex_set_option() - -The compression-related options are only available on netcdf-4 files -since the underlying hdf5 compression functionality is used for the -implementation. The compression level indicates how much effort should -be expended in the compression and the computational expense increases -with higher levels; in many cases, a compression level of 1 is -sufficient. - -SZIP-based compression is typically faster than ZLIB, but may not -be as widely available as ZLIB. SZIP is also only supported in -NetCDF-4.?.? and later -*/ - -enum ex_option_type { - EX_OPT_MAX_NAME_LENGTH = - 1, /**< Maximum length of names that will be returned/passed via api call. */ - EX_OPT_COMPRESSION_TYPE, /**< Not currently used; default is gzip */ - EX_OPT_COMPRESSION_LEVEL, /**< In the range [0..9]. A value of 0 indicates no compression */ - EX_OPT_COMPRESSION_SHUFFLE, /**< 1 if enabled, 0 if disabled */ - EX_OPT_INTEGER_SIZE_API, /**< 4 or 8 indicating byte size of integers used in api functions. */ - EX_OPT_INTEGER_SIZE_DB, /**< Query only, returns 4 or 8 indicating byte size of integers stored - on the database. */ -}; -typedef enum ex_option_type ex_option_type; - -enum ex_compression_type { - EX_COMPRESS_ZLIB = 1, /**< Use ZLIB-based compression (if available) */ - EX_COMPRESS_GZIP = 1, /**< Same as ZLIB, but typical alias used */ - EX_COMPRESS_SZIP, /**< Use SZIP-based compression (if available) */ -}; -typedef enum ex_compression_type ex_compression_type; -/** @}*/ - -enum ex_entity_type { - EX_NODAL = 14, /**< nodal "block" for variables*/ - EX_NODE_BLOCK = 14, /**< alias for EX_NODAL */ - EX_NODE_SET = 2, /**< node set property code */ - EX_EDGE_BLOCK = 6, /**< edge block property code */ - EX_EDGE_SET = 7, /**< edge set property code */ - EX_FACE_BLOCK = 8, /**< face block property code */ - EX_FACE_SET = 9, /**< face set property code */ - EX_ELEM_BLOCK = 1, /**< element block property code*/ - EX_ELEM_SET = 10, /**< face set property code */ - - EX_SIDE_SET = 3, /**< side set property code */ - - EX_ELEM_MAP = 4, /**< element map property code */ - EX_NODE_MAP = 5, /**< node map property code */ - EX_EDGE_MAP = 11, /**< edge map property code */ - EX_FACE_MAP = 12, /**< face map property code */ - - EX_GLOBAL = 13, /**< global "block" for variables*/ - EX_COORDINATE = 15, /**< kluge so some internal wrapper functions work */ - EX_ASSEMBLY = 16, /**< assembly property code */ - EX_BLOB = 17, /**< blob property code */ - EX_INVALID = -1 -}; -typedef enum ex_entity_type ex_entity_type; - -/*! - * ex_opts() function codes - codes are OR'ed into exopts - */ -enum ex_options { - EX_DEFAULT = 0, - EX_VERBOSE = 1, /**< verbose mode message flag */ - EX_DEBUG = 2, /**< debug mode def */ - EX_ABORT = 4, /**< abort mode flag def */ - EX_NULLVERBOSE = 8 /**< verbose mode for null entity detection warning */ -}; -typedef enum ex_options ex_options; - -/** The value used to indicate that an entity (block, nset, sset) - has not had its id set to a valid value -*/ -#define EX_INVALID_ID -1 - -/** - * \defgroup StringLengths maximum string lengths; - * constants that are used as netcdf dimensions must be of type long - * @{ - */ - -/** Maximum length of name permitted by NetCDF */ -#define EX_MAX_NAME NC_MAX_NAME - -/** Maximum length of QA record, element type name */ -#define MAX_STR_LENGTH 32L -/** Default maximum length of an entity name, attribute name, variable name. - Can be changed via a call to ex_set_option() */ -#define MAX_NAME_LENGTH MAX_STR_LENGTH - -/** Maximum length of the database title or an information record */ -#define MAX_LINE_LENGTH 80L -/** Maximum length of an error message passed to ex_err() function. Typically, internal use only */ -#define MAX_ERR_LENGTH 512 -/** @} */ - -/** 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; - -/** - * \defgroup APIStructs Structures used by external API functions. - * ex_put_init_ext(), ex_get_init_ext(), ex_get_block_param(), ex_put_block_param(), - * ex_get_block_params(), ex_put_block_params(), ex_put_concat_all_blocks(), - * ex_put_concat_sets(), ex_get_concat_sets(), ex_put_sets(), ex_get_sets() - * @{ - */ -typedef struct ex_init_params -{ - char title[MAX_LINE_LENGTH + 1]; - int64_t num_dim; - int64_t num_nodes; - int64_t num_edge; - int64_t num_edge_blk; - int64_t num_face; - int64_t num_face_blk; - int64_t num_elem; - int64_t num_elem_blk; - int64_t num_node_sets; - int64_t num_edge_sets; - int64_t num_face_sets; - int64_t num_side_sets; - int64_t num_elem_sets; - int64_t num_node_maps; - int64_t num_edge_maps; - int64_t num_face_maps; - int64_t num_elem_maps; - int64_t num_assembly; - int64_t num_blob; -} ex_init_params; - -enum ex_type { EX_INTEGER = NC_INT, EX_DOUBLE = NC_DOUBLE, EX_CHAR = NC_CHAR }; - -typedef enum ex_type ex_type; - -typedef struct ex_attribute -{ - ex_entity_type entity_type; - int64_t entity_id; - char name[NC_MAX_NAME + 1]; - ex_type type; /* int, double, text */ - size_t value_count; - void *values; /* not accessed if NULL */ -} ex_attribute; - -typedef struct ex_blob -{ - int64_t id; - char *name; - int64_t num_entry; -} ex_blob; - -typedef struct ex_assembly -{ - int64_t id; - char *name; - ex_entity_type type; /* EX_ELEM_BLOCK or EX_ASSEMBLY */ - int entity_count; - int64_t *entity_list; -} ex_assembly; - -typedef struct ex_block -{ - int64_t id; - ex_entity_type type; - char topology[MAX_STR_LENGTH + 1]; - int64_t num_entry; - int64_t num_nodes_per_entry; - int64_t num_edges_per_entry; - int64_t num_faces_per_entry; - int64_t num_attribute; -} ex_block; - -typedef struct ex_set -{ - int64_t id; - ex_entity_type type; - int64_t num_entry; - int64_t num_distribution_factor; - void_int *entry_list; - void_int *extra_list; - void *distribution_factor_list; -} ex_set; - -typedef struct ex_block_params -{ - void_int *edge_blk_id; - char **edge_type; - int *num_edge_this_blk; - int *num_nodes_per_edge; - int *num_attr_edge; - void_int *face_blk_id; - char **face_type; - int *num_face_this_blk; - int *num_nodes_per_face; - int *num_attr_face; - void_int *elem_blk_id; - char **elem_type; - int *num_elem_this_blk; - int *num_nodes_per_elem; - int *num_edges_per_elem; - int *num_faces_per_elem; - int *num_attr_elem; - int define_maps; -} ex_block_params; - -typedef struct ex_set_specs -{ - void_int *sets_ids; - void_int *num_entries_per_set; - void_int *num_dist_per_set; - void_int *sets_entry_index; - void_int *sets_dist_index; - void_int *sets_entry_list; - void_int *sets_extra_list; - void *sets_dist_fact; -} ex_set_specs; - -typedef struct ex_var_params -{ - int num_glob; - int num_node; - int num_edge; - int num_face; - int num_elem; - int num_nset; - int num_eset; - int num_fset; - int num_sset; - int num_elset; - int *edge_var_tab; - int *face_var_tab; - int *elem_var_tab; - int *nset_var_tab; - int *eset_var_tab; - int *fset_var_tab; - int *sset_var_tab; - int *elset_var_tab; -} ex_var_params; -/** @} */ - -#ifndef EXODUS_EXPORT -#define EXODUS_EXPORT extern -#endif /* EXODUS_EXPORT */ - -/*! - * \addtogroup Utilities - * @{ - */ -/* routines for file initialization i/o */ -EXODUS_EXPORT int ex_close(int exoid); - -EXODUS_EXPORT int ex_copy(int in_exoid, int out_exoid); -EXODUS_EXPORT int ex_copy_transient(int in_exoid, int out_exoid); - -#define ex_create(path, mode, comp_ws, io_ws) \ - ex_create_int(path, mode, comp_ws, io_ws, EX_API_VERS_NODOT) - -EXODUS_EXPORT int ex_create_int(const char *rel_path, int cmode, int *comp_ws, int *io_ws, - int run_version); - -#define ex_open(path, mode, comp_ws, io_ws, version) \ - ex_open_int(path, mode, comp_ws, io_ws, version, EX_API_VERS_NODOT) - -EXODUS_EXPORT int ex_open_int(const char *rel_path, int mode, int *comp_ws, int *io_ws, - float *version, int run_version); - -#if defined(PARALLEL_AWARE_EXODUS) -#define ex_create_par(path, mode, comp_ws, io_ws, comm, info) \ - ex_create_par_int(path, mode, comp_ws, io_ws, comm, info, EX_API_VERS_NODOT) - -EXODUS_EXPORT int ex_create_par_int(const char *rel_path, int cmode, int *comp_ws, int *io_ws, - MPI_Comm comm, MPI_Info info, int my_version); - -#define ex_open_par(path, mode, comp_ws, io_ws, version, comm, info) \ - ex_open_par_int(path, mode, comp_ws, io_ws, version, comm, info, EX_API_VERS_NODOT) - -EXODUS_EXPORT int ex_open_par_int(const char *rel_path, int mode, int *comp_ws, int *io_ws, - float *version, MPI_Comm comm, MPI_Info info, int my_version); -#endif - -EXODUS_EXPORT int ex_get_group_id(int parent_id, const char *group_name, int *group_id); - -EXODUS_EXPORT int ex_get_group_ids(int parent_id, int *num_groups, int *group_ids); - -EXODUS_EXPORT int ex_get_info(int exoid, char **info); - -EXODUS_EXPORT int ex_get_qa(int exoid, char *qa_record[][4]); -EXODUS_EXPORT int ex_put_info(int exoid, int num_info, char *const info[]); - -EXODUS_EXPORT int ex_put_qa(int exoid, int num_qa_records, char *qa_record[][4]); - -EXODUS_EXPORT int ex_update(int exoid); -EXODUS_EXPORT int ex_get_num_props(int exoid, ex_entity_type obj_type); -EXODUS_EXPORT int ex_large_model(int exoid); -EXODUS_EXPORT size_t ex_header_size(int exoid); - -EXODUS_EXPORT void ex_err(const char *module_name, const char *message, int err_num); -EXODUS_EXPORT void ex_err_fn(int exoid, const char *module_name, const char *message, int err_num); -EXODUS_EXPORT void ex_set_err(const char *module_name, const char *message, int err_num); -EXODUS_EXPORT const char *ex_strerror(int err_num); -EXODUS_EXPORT void ex_get_err(const char **msg, const char **func, int *err_num); -EXODUS_EXPORT int ex_opts(int options); -EXODUS_EXPORT int ex_inquire(int exoid, ex_inquiry req_info, void_int */*ret_int*/, - float */*ret_float*/, char */*ret_char*/); -EXODUS_EXPORT int64_t ex_inquire_int(int exoid, ex_inquiry req_info); -EXODUS_EXPORT unsigned ex_int64_status(int exoid); -EXODUS_EXPORT int ex_set_int64_status(int exoid, int mode); - -EXODUS_EXPORT void ex_print_config(void); -EXODUS_EXPORT const char *ex_config(void); - -EXODUS_EXPORT int ex_set_max_name_length(int exoid, int length); - -EXODUS_EXPORT int ex_set_option(int exoid, ex_option_type option, int option_value); - -EXODUS_EXPORT int ex_cvt_nodes_to_sides(int exoid, void_int *num_elem_per_set, - void_int *num_nodes_per_set, void_int *side_sets_elem_index, - void_int *side_sets_node_index, - void_int *side_sets_elem_list, - void_int *side_sets_node_list, - void_int *side_sets_side_list); -/*! @} */ - -/*! - * \addtogroup ResultsData - * @{ - */ - -EXODUS_EXPORT int ex_get_time(int exoid, int time_step, void *time_value); - -EXODUS_EXPORT int ex_get_variable_names(int exoid, ex_entity_type obj_type, int num_vars, - char *var_names[]); -EXODUS_EXPORT int ex_get_variable_name(int exoid, ex_entity_type obj_type, int var_num, - char *var_name); - -EXODUS_EXPORT int ex_get_variable_param(int exoid, ex_entity_type obj_type, int *num_vars); - -EXODUS_EXPORT int ex_get_reduction_variable_names(int exoid, ex_entity_type obj_type, int num_vars, - char *var_names[]); -EXODUS_EXPORT int ex_get_reduction_variable_name(int exoid, ex_entity_type obj_type, int var_num, - char *var_name); - -EXODUS_EXPORT int ex_get_reduction_variable_param(int exoid, ex_entity_type obj_type, - int *num_vars); - -EXODUS_EXPORT int ex_get_object_truth_vector(int exoid, ex_entity_type obj_type, - ex_entity_id entity_id, int num_var, int *var_vec); - -EXODUS_EXPORT int ex_get_truth_table(int exoid, ex_entity_type obj_type, int num_blk, int num_var, - int *var_tab); - -EXODUS_EXPORT int ex_put_all_var_param(int exoid, int num_g, int num_n, int num_e, - const int *elem_var_tab, int num_m, const int *nset_var_tab, - int num_s, const int *sset_var_tab); - -EXODUS_EXPORT int ex_put_time(int exoid, int time_step, const void *time_value); - -EXODUS_EXPORT int ex_get_all_times(int exoid, void *time_values); - -EXODUS_EXPORT int ex_put_variable_name(int exoid, ex_entity_type obj_type, int var_num, - const char *var_name); - -EXODUS_EXPORT int ex_put_variable_names(int exoid, ex_entity_type obj_type, int num_vars, - char *const var_names[]); - -EXODUS_EXPORT int ex_put_variable_param(int exoid, ex_entity_type obj_type, int num_vars); - -EXODUS_EXPORT int ex_put_reduction_variable_name(int exoid, ex_entity_type obj_type, int var_num, - const char *var_name); - -EXODUS_EXPORT int ex_put_reduction_variable_names(int exoid, ex_entity_type obj_type, int num_vars, - char *const var_names[]); - -EXODUS_EXPORT int ex_put_reduction_variable_param(int exoid, ex_entity_type obj_type, int num_vars); - -EXODUS_EXPORT int ex_put_truth_table(int exoid, ex_entity_type obj_type, int num_blk, int num_var, - const int *var_tab); - -/* (MODIFIED) Write All Results Variables Parameters */ -EXODUS_EXPORT int ex_put_all_var_param_ext(int exoid, const ex_var_params *vp); - -/* Write Edge Face or Element Variable Values on Blocks or Sets at a Time Step */ -EXODUS_EXPORT int ex_put_var(int exoid, int time_step, ex_entity_type var_type, int var_index, - ex_entity_id obj_id, int64_t num_entries_this_obj, - const void *var_vals); - -/* Write Partial Edge Face or Element Variable Values on Blocks or Sets at a Time Step */ -EXODUS_EXPORT int ex_put_partial_var(int exoid, int time_step, ex_entity_type var_type, - int var_index, ex_entity_id obj_id, int64_t start_index, - int64_t num_entities, const void *var_vals); - -/* Write Edge Face or Element Reduction Variable Values on Blocks or Sets at a Time Step */ -EXODUS_EXPORT int ex_put_reduction_vars(int exoid, int time_step, ex_entity_type obj_type, - ex_entity_id obj_id, int64_t num_variables, - const void *var_vals); - -/* Read Edge Face or Element Variable Values Defined On Blocks or Sets at a Time Step */ -EXODUS_EXPORT int ex_get_var(int exoid, int time_step, ex_entity_type var_type, int var_index, - ex_entity_id obj_id, int64_t num_entry_this_obj, void *var_vals); - -EXODUS_EXPORT int ex_get_partial_var(int exoid, int time_step, ex_entity_type var_type, - int var_index, ex_entity_id obj_id, int64_t start_index, - int64_t num_entities, void *var_vals); - -/* Read Edge Face or Element Reduction Variable Values Defined On Blocks or Sets at a Time Step */ -EXODUS_EXPORT int ex_get_reduction_vars(int exoid, int time_step, ex_entity_type obj_type, - ex_entity_id obj_id, int64_t num_variables, void *var_vals); - -/* Read Edge Face or Element Variable Values Defined On Blocks or Sets Through Time */ -EXODUS_EXPORT int ex_get_var_time(int exoid, ex_entity_type var_type, int var_index, int64_t id, - int beg_time_step, int end_time_step, void *var_vals); - -/*! @} */ - -/* ======================================================================== - Functions pulled from nemesis library and incorporated into exodus... -*/ -/*============================================================================= - * Initial Information Routines - *===========================================================================*/ -EXODUS_EXPORT int ex_get_init_info(int exoid, /* NemesisI file ID */ - int *num_proc, /* Number of processors */ - int *num_proc_in_f, /* Number of procs in this file */ - char *ftype); - -EXODUS_EXPORT int ex_put_init_info(int exoid, /* NemesisI file ID */ - int num_proc, /* Number of processors */ - int num_proc_in_f, /* Number of procs in this file */ - const char *ftype); - -EXODUS_EXPORT int ex_get_init_global(int exoid, /* 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 */ -); -EXODUS_EXPORT int ex_put_init_global(int exoid, /* 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 */ -); - -/*============================================================================= - * Loadbalance Parameter Routines - *===========================================================================*/ -EXODUS_EXPORT int ex_get_loadbal_param(int exoid, /* 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 */ -); - -EXODUS_EXPORT int ex_put_loadbal_param(int exoid, /* 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 */ -); - -EXODUS_EXPORT int -ex_put_loadbal_param_cc(int exoid, /* NetCDF/Exodus file ID */ - const void_int *num_int_nodes, /* Number of internal node IDs */ - const void_int *num_bor_nodes, /* Number of border node IDs */ - const void_int *num_ext_nodes, /* Number of external node IDs */ - const void_int *num_int_elems, /* Number of internal elem IDs */ - const void_int *num_bor_elems, /* Number of border elem IDs */ - const void_int *num_node_cmaps, /* Number of nodal comm maps */ - const void_int *num_elem_cmaps /* Number of elem comm maps */ -); - -/* Utility function to replace strncpy, strcpy -- guarantee null termination */ -char *ex_copy_string(char *dest, char const *source, size_t elements); - -/*! - * \addtogroup ModelDescription - * @{ - */ -EXODUS_EXPORT int ex_create_group(int parent_id, const char *group_name); - -EXODUS_EXPORT int ex_get_coord_names(int exoid, char **coord_names); - -EXODUS_EXPORT int ex_get_coord(int exoid, void *x_coor, void *y_coor, void *z_coor); - -EXODUS_EXPORT int ex_get_partial_coord_component(int exoid, int64_t start_node_num, - int64_t num_nodes, int component, void *coor); - -EXODUS_EXPORT int ex_get_partial_coord(int exoid, int64_t start_node_num, int64_t num_nodes, - void *x_coor, void *y_coor, void *z_coor); - -EXODUS_EXPORT int ex_get_ids(int exoid, ex_entity_type obj_type, void_int *ids); - -EXODUS_EXPORT int ex_get_coordinate_frames(int exoid, int *nframes, void_int *cf_ids, - void *pt_coordinates, char *tags); - -EXODUS_EXPORT int ex_put_init_ext(int exoid, const ex_init_params *model); - -EXODUS_EXPORT int ex_get_init_ext(int exoid, ex_init_params *info); - -EXODUS_EXPORT int ex_get_init(int exoid, char *title, void_int *num_dim, void_int *num_nodes, - void_int *num_elem, void_int *num_elem_blk, void_int *num_node_sets, - void_int *num_side_sets); - -EXODUS_EXPORT int ex_put_init(int exoid, const char *title, int64_t num_dim, int64_t num_nodes, - int64_t num_elem, int64_t num_elem_blk, int64_t num_node_sets, - int64_t num_side_sets); - -EXODUS_EXPORT int ex_get_map(int exoid, void_int *elem_map); - -EXODUS_EXPORT int ex_get_map_param(int exoid, int *num_node_maps, int *num_elem_maps); - -EXODUS_EXPORT int ex_get_name(int exoid, ex_entity_type obj_type, ex_entity_id entity_id, - char *name); - -EXODUS_EXPORT int ex_get_names(int exoid, ex_entity_type obj_type, char **names); - -EXODUS_EXPORT int ex_get_prop_array(int exoid, ex_entity_type obj_type, const char *prop_name, - void_int *values); - -EXODUS_EXPORT int ex_get_prop(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, - const char *prop_name, void_int *value); - -EXODUS_EXPORT int ex_get_partial_num_map(int exoid, ex_entity_type map_type, ex_entity_id map_id, - int64_t ent_start, int64_t ent_count, void_int *map); - -EXODUS_EXPORT int ex_get_prop_names(int exoid, ex_entity_type obj_type, char **prop_names); - -EXODUS_EXPORT int ex_add_attr(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, - int64_t num_attr_per_entry); - -EXODUS_EXPORT int ex_put_attr_param(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, - int num_attrs); - -EXODUS_EXPORT int ex_get_attr_param(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, - int *num_attrs); - -EXODUS_EXPORT int ex_put_concat_elem_block(int exoid, const void_int *elem_blk_id, - char *const elem_type[], - const void_int *num_elem_this_blk, - const void_int *num_nodes_per_elem, - const void_int *num_attr_this_blk, int define_maps); - -EXODUS_EXPORT int ex_put_coord_names(int exoid, char *const coord_names[]); - -EXODUS_EXPORT int ex_put_coord(int exoid, const void *x_coor, const void *y_coor, - const void *z_coor); - -EXODUS_EXPORT int ex_put_partial_coord_component(int exoid, int64_t start_node_num, - int64_t num_nodes, int component, - const void *coor); - -EXODUS_EXPORT int ex_put_partial_coord(int exoid, int64_t start_node_num, int64_t num_nodes, - const void *x_coor, const void *y_coor, const void *z_coor); - -EXODUS_EXPORT int ex_put_map(int exoid, const void_int *elem_map); - -EXODUS_EXPORT int ex_put_id_map(int exoid, ex_entity_type map_type, const void_int *map); - -EXODUS_EXPORT int ex_put_partial_id_map(int exoid, ex_entity_type map_type, - int64_t start_entity_num, int64_t num_entities, - const void_int *map); - -EXODUS_EXPORT int ex_get_id_map(int exoid, ex_entity_type map_type, void_int *map); - -EXODUS_EXPORT int ex_get_partial_id_map(int exoid, ex_entity_type map_type, - int64_t start_entity_num, int64_t num_entities, - void_int *map); - -EXODUS_EXPORT int ex_get_block_id_map(int exoid, ex_entity_type map_type, ex_entity_id entity_id, - void_int *map); - -EXODUS_EXPORT int ex_put_coordinate_frames(int exoid, int nframes, const void_int *cf_ids, - const void *pt_coordinates, const char *tags); - -EXODUS_EXPORT int ex_put_map_param(int exoid, int num_node_maps, int num_elem_maps); - -EXODUS_EXPORT int ex_put_name(int exoid, ex_entity_type obj_type, ex_entity_id entity_id, - const char *name); - -EXODUS_EXPORT int ex_put_names(int exoid, ex_entity_type obj_type, char *const names[]); - -EXODUS_EXPORT int ex_put_partial_one_attr(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, - int64_t start_num, int64_t num_ent, int attrib_index, - const void *attrib); - -EXODUS_EXPORT int ex_put_prop(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, - const char *prop_name, ex_entity_id value); - -EXODUS_EXPORT int ex_put_prop_array(int exoid, ex_entity_type obj_type, const char *prop_name, - const void_int *values); - -EXODUS_EXPORT int ex_put_prop_names(int exoid, ex_entity_type obj_type, int num_props, - char **prop_names); - -/* Write Node Edge Face or Element Number Map */ -EXODUS_EXPORT int ex_put_num_map(int exoid, ex_entity_type map_type, ex_entity_id map_id, - const void_int *map); - -/* Read Number Map */ -EXODUS_EXPORT int ex_get_num_map(int exoid, ex_entity_type map_type, ex_entity_id map_id, - void_int *map); - -/* Write Edge Face or Element Block Parameters */ -EXODUS_EXPORT int ex_put_block(int exoid, ex_entity_type blk_type, ex_entity_id blk_id, - const char *entry_descrip, int64_t num_entries_this_blk, - int64_t num_nodes_per_entry, int64_t num_edges_per_entry, - int64_t num_faces_per_entry, int64_t num_attr_per_entry); - -EXODUS_EXPORT int ex_get_block(int exoid, ex_entity_type blk_type, ex_entity_id blk_id, - char *elem_type, void_int *num_entries_this_blk, - void_int *num_nodes_per_entry, void_int *num_edges_per_entry, - void_int *num_faces_per_entry, void_int *num_attr_per_entry); - -/* Read Edge Face or Element Block Parameters */ -EXODUS_EXPORT int ex_get_block_param(int exoid, ex_block *block); - -EXODUS_EXPORT int ex_put_block_param(int exoid, const ex_block block); - -EXODUS_EXPORT int ex_get_block_params(int exoid, size_t block_count, struct ex_block **blocks); - -EXODUS_EXPORT int ex_put_block_params(int exoid, size_t block_count, const struct ex_block *blocks); - -/* Write All Edge Face and Element Block Parameters */ -EXODUS_EXPORT int ex_put_concat_all_blocks(int exoid, const ex_block_params *param); - -EXODUS_EXPORT int ex_put_entity_count_per_polyhedra(int exoid, ex_entity_type blk_type, - ex_entity_id blk_id, const int *entity_counts); - -EXODUS_EXPORT int ex_get_entity_count_per_polyhedra(int exoid, ex_entity_type blk_type, - ex_entity_id blk_id, int *entity_counts); - -/* Write Edge Face or Element Block Connectivity */ -EXODUS_EXPORT int ex_put_conn(int exoid, ex_entity_type blk_type, ex_entity_id blk_id, - const void_int *node_conn, const void_int *elem_edge_conn, - const void_int *elem_face_conn); - -/* Read Edge Face or Element Block Connectivity */ -EXODUS_EXPORT int ex_get_conn(int exoid, ex_entity_type blk_type, ex_entity_id blk_id, - void_int *nodeconn, void_int *edgeconn, void_int *faceconn); - -EXODUS_EXPORT int ex_get_partial_conn(int exoid, ex_entity_type blk_type, ex_entity_id blk_id, - int64_t start_num, int64_t num_ent, void_int *nodeconn, - void_int *edgeconn, void_int *faceconn); - -EXODUS_EXPORT int ex_put_partial_conn(int exoid, ex_entity_type blk_type, ex_entity_id blk_id, - int64_t start_num, int64_t num_ent, const void_int *nodeconn, - const void_int *edgeconn, const void_int *faceconn); - -/* Write Edge Face or Element Block Attributes */ -EXODUS_EXPORT int ex_put_attr(int exoid, ex_entity_type blk_type, ex_entity_id blk_id, - const void *attrib); - -EXODUS_EXPORT int ex_put_partial_attr(int exoid, ex_entity_type blk_type, ex_entity_id blk_id, - int64_t start_entity, int64_t num_entity, const void *attrib); - -/* Read Edge Face or Element Block Attributes */ -EXODUS_EXPORT int ex_get_attr(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, - void *attrib); - -EXODUS_EXPORT int ex_get_partial_attr(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, - int64_t start_num, int64_t num_ent, void *attrib); - -/* Write One Edge Face or Element Block Attribute */ -EXODUS_EXPORT int ex_put_one_attr(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, - int attrib_index, const void *attrib); - -/* Read One Edge Face or Element Block Attribute */ -EXODUS_EXPORT int ex_get_one_attr(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, - int attrib_index, void *attrib); - -EXODUS_EXPORT int ex_get_partial_one_attr(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, - int64_t start_num, int64_t num_ent, int attrib_index, - void *attrib); - -/* Write Edge Face or Element Block Attribute Names */ -EXODUS_EXPORT int ex_put_attr_names(int exoid, ex_entity_type blk_type, ex_entity_id blk_id, - char **names); - -/* Read Edge Face or Element Block Attribute Names */ -EXODUS_EXPORT int ex_get_attr_names(int exoid, ex_entity_type obj_type, ex_entity_id obj_id, - char **names); - -EXODUS_EXPORT int ex_put_assembly(int exoid, const struct ex_assembly assembly); -EXODUS_EXPORT int ex_get_assembly(int exoid, struct ex_assembly *assembly); - -EXODUS_EXPORT int ex_put_assemblies(int exoid, size_t count, const struct ex_assembly *assemblies); -EXODUS_EXPORT int ex_get_assemblies(int exoid, struct ex_assembly *assemblies); - -EXODUS_EXPORT int ex_put_blob(int exoid, const struct ex_blob blob); -EXODUS_EXPORT int ex_get_blob(int exoid, struct ex_blob *blob); - -EXODUS_EXPORT int ex_put_blobs(int exoid, size_t count, const struct ex_blob *blobs); -EXODUS_EXPORT int ex_get_blobs(int exoid, struct ex_blob *blobs); - -/* Write arbitrary integer, double, or text attributes on an entity */ -EXODUS_EXPORT int ex_put_attribute(int exoid, const ex_attribute attributes); -EXODUS_EXPORT int ex_put_attributes(int exoid, size_t attr_count, const ex_attribute *attributes); - -EXODUS_EXPORT int ex_put_double_attribute(int exoid, ex_entity_type obj_type, ex_entity_id id, - const char *atr_name, int num_values, - const double *values); -EXODUS_EXPORT int ex_put_integer_attribute(int exoid, ex_entity_type obj_type, ex_entity_id id, - const char *atr_name, int num_values, - const void_int *values); -EXODUS_EXPORT int ex_put_text_attribute(int exoid, ex_entity_type obj_type, ex_entity_id id, - const char *atr_name, const char *value); - -/* Read attribute values on an entity */ -EXODUS_EXPORT int ex_get_attribute(int exoid, ex_attribute *attributes); -EXODUS_EXPORT int ex_get_attributes(int exoid, size_t count, ex_attribute *attributes); - -/* Query attributes on an entity */ -EXODUS_EXPORT int ex_get_attribute_count(int exoid, ex_entity_type obj_type, ex_entity_id id); -EXODUS_EXPORT int ex_get_attribute_param(int exoid, ex_entity_type obj_type, ex_entity_id id, - ex_attribute *attributes); - -/* Write Node Edge Face or Side Set Parameters */ -EXODUS_EXPORT int ex_put_set_param(int exoid, ex_entity_type set_type, ex_entity_id set_id, - int64_t num_entries_in_set, int64_t num_dist_fact_in_set); - -/* Read Node Edge Face or Side Set Parameters */ -EXODUS_EXPORT int ex_get_set_param(int exoid, ex_entity_type set_type, ex_entity_id set_id, - void_int *num_entry_in_set, void_int *num_dist_fact_in_set); - -/* Write a Node Edge Face or Side Set */ -EXODUS_EXPORT int ex_put_set(int exoid, ex_entity_type set_type, ex_entity_id set_id, - const void_int *set_entry_list, const void_int *set_extra_list); - -EXODUS_EXPORT int ex_get_partial_set(int exoid, ex_entity_type set_type, ex_entity_id set_id, - int64_t offset, int64_t num_to_get, void_int *set_entry_list, - void_int *set_extra_list); - -EXODUS_EXPORT int ex_put_partial_set(int exoid, ex_entity_type set_type, ex_entity_id set_id, - int64_t offset, int64_t num_to_put, - const void_int *set_entry_list, - const void_int *set_extra_list); - -/* Read a Node Edge Face or Side Set */ -EXODUS_EXPORT int ex_get_set(int exoid, ex_entity_type set_type, ex_entity_id set_id, - void_int *set_entry_list, void_int *set_extra_list); - -/* Write Node Edge Face or Side Set Distribution Factors */ -EXODUS_EXPORT int ex_put_set_dist_fact(int exoid, ex_entity_type set_type, ex_entity_id set_id, - const void *set_dist_fact); - -/* Read Node Edge Face or Side Set Distribution Factors */ -EXODUS_EXPORT int ex_get_set_dist_fact(int exoid, ex_entity_type set_type, ex_entity_id set_id, - void *set_dist_fact); - -EXODUS_EXPORT int ex_get_partial_set_dist_fact(int exoid, ex_entity_type set_type, - ex_entity_id set_id, int64_t offset, - int64_t num_to_put, void *set_dist_fact); - -/* Write Concatenated Node Edge Face or Side Sets */ -EXODUS_EXPORT int ex_put_concat_sets(int exoid, ex_entity_type set_type, - const struct ex_set_specs *set_specs); - -/* Read Concatenated Node Edge Face or Side Sets */ -EXODUS_EXPORT int ex_get_concat_sets(int exoid, ex_entity_type set_type, - struct ex_set_specs *set_specs); - -/* Write Concatenated Node Edge Face or Side Sets */ -EXODUS_EXPORT int ex_put_sets(int exoid, size_t set_count, const struct ex_set *sets); - -/* Read Concatenated Node Edge Face or Side Sets */ -EXODUS_EXPORT int ex_get_sets(int exoid, size_t set_count, struct ex_set *sets); - -EXODUS_EXPORT int ex_put_partial_num_map(int exoid, ex_entity_type map_type, ex_entity_id map_id, - int64_t ent_start, int64_t ent_count, const void_int *map); - -EXODUS_EXPORT int ex_put_partial_set_dist_fact(int exoid, ex_entity_type set_type, - ex_entity_id set_id, int64_t offset, - int64_t num_to_put, const void *set_dist_fact); - -/* TODO */ -EXODUS_EXPORT int ex_get_concat_side_set_node_count(int exoid, int *side_set_node_cnt_list); - -/* TODO */ -EXODUS_EXPORT int ex_get_side_set_node_list_len(int exoid, ex_entity_id side_set_id, - void_int *side_set_node_list_len); - -/* TODO */ -EXODUS_EXPORT int ex_get_side_set_node_count(int exoid, ex_entity_id side_set_id, - int *side_set_node_cnt_list); - -/* TODO */ -EXODUS_EXPORT int ex_get_side_set_node_list(int exoid, ex_entity_id side_set_id, - void_int *side_set_node_cnt_list, - void_int *side_set_node_list); - -/*============================================================================= - * NS, SS & EB Global Parameter Routines - *===========================================================================*/ -EXODUS_EXPORT int ex_get_ns_param_global(int exoid, /**< NetCDF/Exodus file ID */ - void_int *global_ids, /**< Global IDs of node sets */ - void_int *node_cnts, /**< Count of nodes in node sets */ - void_int *df_cnts /**< Count of dist. factors in ns */ -); - -EXODUS_EXPORT int -ex_put_ns_param_global(int exoid, /**< NemesisI file ID */ - const void_int *global_ids, /**< Vector of global node-set IDs */ - const void_int *node_cnts, /**< Vector of node counts in node-sets */ - const void_int *df_cnts /**< Vector of dist factor counts in node-sets */ -); - -EXODUS_EXPORT int ex_get_ss_param_global(int exoid, /**< NetCDF/Exodus file ID */ - void_int *global_ids, /**< Global side-set IDs */ - void_int *side_cnts, /**< Global side count */ - void_int *df_cnts /**< Global dist. factor count */ -); - -EXODUS_EXPORT int ex_put_ss_param_global( - int exoid, /**< NemesisI file ID */ - const void_int *global_ids, /**< Vector of global side-set IDs */ - const void_int *side_cnts, /**< Vector of element/side counts in each side set */ - const void_int *df_cnts /**< Vector of dist. factor */ - /**< counts in each side set */ -); - -EXODUS_EXPORT int -ex_get_eb_info_global(int exoid, /**< NemesisI file ID */ - void_int *el_blk_ids, /**< Vector of global element IDs */ - void_int *el_blk_cnts /**< Vector of global element counts */ -); - -EXODUS_EXPORT int -ex_put_eb_info_global(int exoid, /**< NemesisI file ID */ - const void_int *el_blk_ids, /**< Vector of global element IDs */ - const void_int *el_blk_cnts /**< Vector of global element counts */ -); - -/*============================================================================= - * NS, SS & EB Subset Routines - *===========================================================================*/ -EXODUS_EXPORT int ex_get_elem_type(int exoid, /**< NetCDF/Exodus file ID */ - ex_entity_id elem_blk_id, /**< Element block ID */ - char *elem_type /**< The name of the element type */ -); - -/*============================================================================= - * Number Map Routines - *===========================================================================*/ -EXODUS_EXPORT int ex_get_processor_node_maps(int exoid, /**< 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 */ -); - -EXODUS_EXPORT int -ex_put_processor_node_maps(int exoid, /**< NetCDF/Exodus file ID */ - const void_int *node_mapi, /**< Internal FEM node IDs */ - const void_int *node_mapb, /**< Border FEM node IDs */ - const void_int *node_mape, /**< External FEM node IDs */ - int proc_id /**< This processor ID */ -); - -EXODUS_EXPORT int ex_get_processor_elem_maps(int exoid, /**< NetCDF/Exodus file ID */ - void_int *elem_mapi, /**< Internal element IDs */ - void_int *elem_mapb, /**< Border element IDs */ - int processor /**< Processor ID */ -); - -EXODUS_EXPORT int -ex_put_processor_elem_maps(int exoid, /**< NetCDF/Exodus file ID */ - const void_int *elem_mapi, /**< Internal FEM element IDs */ - const void_int *elem_mapb, /**< Border FEM element IDs */ - int processor /**< This processor ID */ -); - -/*============================================================================= - * Communications Maps Routines - *===========================================================================*/ - -EXODUS_EXPORT int -ex_get_cmap_params(int exoid, /**< 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 */ -); - -EXODUS_EXPORT int -ex_put_cmap_params(int exoid, /**< NetCDF/Exodus file ID */ - const void_int *node_cmap_ids, /**< Node map IDs */ - const void_int *node_cmap_node_cnts, /**< Nodes in nodal comm */ - const void_int *elem_cmap_ids, /**< Elem map IDs */ - const void_int *elem_cmap_elem_cnts, /**< Elems in elemental comm */ - int64_t processor /**< This processor ID */ -); - -EXODUS_EXPORT int -ex_put_cmap_params_cc(int exoid, /**< NetCDF/Exodus file ID */ - const void_int *node_cmap_ids, /**< Node map IDs */ - const void_int *node_cmap_node_cnts, /**< Nodes in nodal comm */ - const void_int *node_proc_ptrs, /**< Pointer into array for node maps */ - const void_int *elem_cmap_ids, /**< Elem map IDs */ - const void_int *elem_cmap_elem_cnts, /**< Elems in elemental comm */ - const void_int *elem_proc_ptrs /**< Pointer into array for elem maps */ -); - -EXODUS_EXPORT int ex_get_node_cmap(int exoid, /**< 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 */ -); - -EXODUS_EXPORT int ex_put_node_cmap(int exoid, /**< NetCDF/Exodus file ID */ - ex_entity_id map_id, /**< Nodal comm map ID */ - const void_int *node_ids, /**< FEM node IDs */ - const void_int *proc_ids, /**< Processor IDs */ - int processor /**< This processor ID */ -); - -EXODUS_EXPORT int -ex_put_partial_node_cmap(int exoid, /**< NetCDF/Exodus file ID */ - ex_entity_id map_id, /**< Nodal comm map ID */ - int64_t start_entity_num, /**< Starting position to write to */ - int64_t num_entities, /**< Number of nodes to write */ - const void_int *node_ids, /**< FEM node IDs */ - const void_int *proc_ids, /**< Processor IDs */ - int processor /**< This processor ID */ -); - -EXODUS_EXPORT int ex_get_elem_cmap(int exoid, /**< 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 */ -); - -EXODUS_EXPORT int ex_put_elem_cmap(int exoid, /**< NetCDF/Exodus file ID */ - ex_entity_id map_id, /**< Elemental comm map ID */ - const void_int *elem_ids, /**< Vector of element IDs */ - const void_int *side_ids, /**< Vector of side IDs */ - const void_int *proc_ids, /**< Vector of processor IDs */ - int processor /**< This processor ID */ -); - -/*! @} */ - -/* Deprecated Code Handling Options: - * 1. Ignore -- treat deprecated functions as normal non-deprecated functions (default) - * 2. Delete -- the deprecated functions are not defined or compiled (SEACAS_HIDE_DEPRECATED_CODE is - * defined) - * 3. Warn -- if used in client code, issue a warning. (SEACAS_WARN_DEPRECATED_CODE is defined) - * - * The symbols SEACAS_HIDE_DEPRECATED_CODE and SEACAS_DEPRECATED are defined in exodus_config.h - * In a TriBITs-based system, this include file is generated from cmake-variable definitions. - * In other build systems, the exodus_config.h file is hard-wired. - */ - -#if !defined(SEACAS_HIDE_DEPRECATED_CODE) -/* ======================================================================== - * Deprecated functiona - */ - -#ifndef SEACAS_DEPRECATED -#define SEACAS_DEPRECATED -#endif - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_get_glob_vars(int exoid, int time_step, int num_glob_vars, - void *glob_var_vals); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_get_glob_var_time(int exoid, int glob_var_index, - int beg_time_step, int end_time_step, - void *glob_var_vals); - -SEACAS_DEPRECATED EXODUS_EXPORT int -ex_get_concat_node_sets(int exoid, void_int *node_set_ids, void_int *num_nodes_per_set, - void_int *num_df_per_set, void_int *node_sets_node_index, - void_int *node_sets_df_index, void_int *node_sets_node_list, - void *node_sets_dist_fact); - -SEACAS_DEPRECATED EXODUS_EXPORT int -ex_get_concat_side_sets(int exoid, void_int *side_set_ids, void_int *num_elem_per_set, - void_int *num_dist_per_set, void_int *side_sets_elem_index, - void_int *side_sets_dist_index, void_int *side_sets_elem_list, - void_int *side_sets_side_list, void *side_sets_dist_fact); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_get_elem_attr(int exoid, ex_entity_id elem_blk_id, - void *attrib); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_get_elem_attr_names(int exoid, ex_entity_id elem_blk_id, - char **names); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_get_elem_blk_ids(int exoid, void_int *ids); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_get_elem_block(int exoid, ex_entity_id elem_blk_id, - char *elem_type, void_int *num_elem_this_blk, - void_int *num_nodes_per_elem, - void_int *num_attr); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_get_elem_conn(int exoid, ex_entity_id elem_blk_id, - void_int *connect); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_get_elem_map(int exoid, ex_entity_id map_id, - void_int *elem_map); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_get_elem_num_map(int exoid, void_int *elem_map); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_get_nodal_var(int exoid, int time_step, int nodal_var_index, - int64_t num_nodes, void *nodal_var_vals); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_put_nodal_var(int exoid, int time_step, int nodal_var_index, - int64_t num_nodes, const void *nodal_var_vals); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_get_nodal_var_time(int exoid, int nodal_var_index, - int64_t node_number, int beg_time_step, - int end_time_step, void *nodal_var_vals); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_put_partial_nodal_var(int exoid, int time_step, - int nodal_var_index, - int64_t start_node, int64_t num_nodes, - const void *nodal_var_vals); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_get_partial_nodal_var(int exoid, int time_step, - int nodal_var_index, - int64_t start_node, int64_t num_nodes, - void *var_vals); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_get_elem_var(int exoid, int time_step, int elem_var_index, - ex_entity_id elem_blk_id, - int64_t num_elem_this_blk, void *elem_var_vals); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_get_elem_var_tab(int exoid, int num_elem_blk, - int num_elem_var, int *elem_var_tab); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_get_elem_var_time(int exoid, int elem_var_index, - int64_t elem_number, int beg_time_step, - int end_time_step, void *elem_var_vals); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_get_node_map(int exoid, ex_entity_id map_id, - void_int *node_map); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_get_node_num_map(int exoid, void_int *node_map); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_get_node_set_param(int exoid, ex_entity_id node_set_id, - void_int *num_nodes_in_set, - void_int *num_df_in_set); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_get_node_set(int exoid, ex_entity_id node_set_id, - void_int *node_set_node_list); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_get_node_set_dist_fact(int exoid, ex_entity_id node_set_id, - void *node_set_dist_fact); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_get_node_set_ids(int exoid, void_int *ids); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_get_nset_var_tab(int exoid, int num_nodesets, - int num_nset_var, int *nset_var_tab); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_get_nset_var(int exoid, int time_step, int nset_var_index, - ex_entity_id nset_id, - int64_t num_node_this_nset, - void *nset_var_vals); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_get_one_elem_attr(int exoid, ex_entity_id elem_blk_id, - int attrib_index, void *attrib); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_get_side_set(int exoid, ex_entity_id side_set_id, - void_int *side_set_elem_list, - void_int *side_set_side_list); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_get_side_set_dist_fact(int exoid, ex_entity_id side_set_id, - void *side_set_dist_fact); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_get_side_set_ids(int exoid, void_int *ids); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_get_side_set_param(int exoid, ex_entity_id side_set_id, - void_int *num_side_in_set, - void_int *num_dist_fact_in_set); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_get_sset_var(int exoid, int time_step, int sset_var_index, - ex_entity_id sset_id, - int64_t num_side_this_sset, - void *sset_var_vals); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_get_sset_var_tab(int exoid, int num_sidesets, - int num_sset_var, int *sset_var_tab); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_get_var_names(int exoid, const char *var_type, int num_vars, - char *var_names[]); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_get_var_name(int exoid, const char *var_type, int var_num, - char *var_name); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_get_var_param(int exoid, const char *var_type, - int *num_vars); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_get_var_tab(int exoid, const char *var_type, int num_blk, - int num_var, int *var_tab); - -SEACAS_DEPRECATED EXODUS_EXPORT int -ex_put_concat_node_sets(int exoid, void_int *node_set_ids, void_int *num_nodes_per_set, - void_int *num_dist_per_set, void_int *node_sets_node_index, - void_int *node_sets_df_index, void_int *node_sets_node_list, - void *node_sets_dist_fact); - -SEACAS_DEPRECATED EXODUS_EXPORT int -ex_put_concat_side_sets(int exoid, void_int *side_set_ids, void_int *num_elem_per_set, - void_int *num_dist_per_set, void_int *side_sets_elem_index, - void_int *side_sets_dist_index, void_int *side_sets_elem_list, - void_int *side_sets_side_list, void *side_sets_dist_fact); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_put_concat_var_param(int exoid, int num_g, int num_n, - int num_e, int num_elem_blk, - int *elem_var_tab); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_put_elem_attr_names(int exoid, ex_entity_id elem_blk_id, - char *names[]); -SEACAS_DEPRECATED EXODUS_EXPORT int ex_put_elem_attr(int exoid, ex_entity_id elem_blk_id, - const void *attrib); - -SEACAS_DEPRECATED EXODUS_EXPORT int -ex_put_elem_block(int exoid, ex_entity_id elem_blk_id, const char *elem_type, - int64_t num_elem_this_blk, int64_t num_nodes_per_elem, int64_t num_attr_per_elem); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_put_elem_conn(int exoid, ex_entity_id elem_blk_id, - const void_int *connect); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_put_elem_map(int exoid, ex_entity_id map_id, - const void_int *elem_map); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_put_elem_num_map(int exoid, const void_int *elem_map); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_put_elem_var(int exoid, int time_step, int elem_var_index, - ex_entity_id elem_blk_id, - int64_t num_elem_this_blk, - const void *elem_var_vals); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_put_elem_var_tab(int exoid, int num_elem_blk, - int num_elem_var, int *elem_var_tab); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_put_glob_vars(int exoid, int time_step, int num_glob_vars, - const void *glob_var_vals); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_put_node_map(int exoid, ex_entity_id map_id, - const void_int *node_map); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_put_node_num_map(int exoid, const void_int *node_map); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_put_node_set(int exoid, ex_entity_id node_set_id, - const void_int *node_set_node_list); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_put_node_set_dist_fact(int exoid, ex_entity_id node_set_id, - const void *node_set_dist_fact); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_put_node_set_param(int exoid, ex_entity_id node_set_id, - int64_t num_nodes_in_set, - int64_t num_dist_in_set); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_put_nset_var(int exoid, int time_step, int nset_var_index, - ex_entity_id nset_id, - int64_t num_nodes_this_nset, - const void *nset_var_vals); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_put_nset_var_tab(int exoid, int num_nset, int num_nset_var, - int *nset_var_tab); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_put_one_elem_attr(int exoid, ex_entity_id elem_blk_id, - int attrib_index, const void *attrib); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_put_side_set(int exoid, ex_entity_id side_set_id, - const void_int *side_set_elem_list, - const void_int *side_set_side_list); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_put_side_set_dist_fact(int exoid, ex_entity_id side_set_id, - const void *side_set_dist_fact); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_put_side_set_param(int exoid, ex_entity_id side_set_id, - int64_t num_side_in_set, - int64_t num_dist_fact_in_set); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_put_sset_var(int exoid, int time_step, int sset_var_index, - ex_entity_id sset_id, - int64_t num_faces_this_sset, - const void *sset_var_vals); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_put_sset_var_tab(int exoid, int num_sset, int num_sset_var, - int *sset_var_tab); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_put_var_name(int exoid, const char *var_type, int var_num, - const char *var_name); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_put_var_names(int exoid, const char *var_type, int num_vars, - char *var_names[]); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_put_var_param(int exoid, const char *var_type, int num_vars); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_put_var_tab(int exoid, const char *var_type, int num_blk, - int num_var, int *var_tab); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_get_n_coord(int exoid, int64_t start_node_num, - int64_t num_nodes, void *x_coor, void *y_coor, - void *z_coor); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_get_n_nodal_var(int exoid, int time_step, - int nodal_var_index, int64_t start_node, - int64_t num_nodes, void *var_vals); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_get_n_conn(int exoid, ex_entity_type blk_type, - ex_entity_id blk_id, int64_t start_num, - int64_t num_ent, void_int *nodeconn, - void_int *edgeconn, void_int *faceconn); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_get_n_attr(int exoid, ex_entity_type obj_type, - ex_entity_id obj_id, int64_t start_num, - int64_t num_ent, void *attrib); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_get_n_one_attr(int exoid, ex_entity_type obj_type, - ex_entity_id obj_id, int64_t start_num, - int64_t num_ent, int attrib_index, - void *attrib); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_get_n_var(int exoid, int time_step, ex_entity_type var_type, - int var_index, ex_entity_id obj_id, - int64_t start_index, int64_t num_entities, - void *var_vals); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_get_n_elem_var(int exoid, int time_step, int elem_var_index, - ex_entity_id elem_blk_id, - int64_t num_elem_this_blk, - int64_t start_elem_num, int64_t num_elem, - void *elem_var_vals); - -SEACAS_DEPRECATED EXODUS_EXPORT int -ex_get_n_side_set(int exoid, /**< 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 */ -); - -SEACAS_DEPRECATED EXODUS_EXPORT int -ex_put_n_side_set(int exoid, /**< 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 */ -); - -SEACAS_DEPRECATED EXODUS_EXPORT int -ex_get_n_side_set_df(int exoid, /**< 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_dist_fact /**< Distribution factors */ -); - -SEACAS_DEPRECATED EXODUS_EXPORT int -ex_put_n_side_set_df(int exoid, /**< 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_dist_fact /**< Distribution factors */ -); - -SEACAS_DEPRECATED EXODUS_EXPORT int -ex_get_n_node_set(int exoid, /**< 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_nodes, /**< Number of nodes to read */ - void_int *node_set_node_list /**< List of nodes in node set */ -); - -SEACAS_DEPRECATED EXODUS_EXPORT int -ex_put_n_node_set(int exoid, /**< 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_nodes, /**< Number of nodes to write */ - const void_int *node_set_node_list /**< List of nodes in node set */ -); - -SEACAS_DEPRECATED EXODUS_EXPORT int -ex_get_n_node_set_df(int exoid, /**< 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_dist_fact /**< Distribution factors */ -); - -SEACAS_DEPRECATED EXODUS_EXPORT int -ex_put_n_node_set_df(int exoid, /**< 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_dist_fact /**< Distribution factors */ -); - -SEACAS_DEPRECATED EXODUS_EXPORT int -ex_get_n_elem_conn(int exoid, /**< 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 */ -); - -SEACAS_DEPRECATED EXODUS_EXPORT int -ex_put_n_elem_conn(int exoid, /**< 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 */ -); - -SEACAS_DEPRECATED EXODUS_EXPORT int -ex_get_n_elem_attr(int exoid, /**< 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 */ -); - -SEACAS_DEPRECATED EXODUS_EXPORT int -ex_put_n_elem_attr(int exoid, /**< 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 */ -); - -SEACAS_DEPRECATED EXODUS_EXPORT int -ex_get_n_elem_num_map(int exoid, /**< 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 */ -); - -SEACAS_DEPRECATED EXODUS_EXPORT int -ex_get_n_node_num_map(int exoid, /**< 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 */ -); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_put_n_coord(int exoid, int64_t start_node_num, - int64_t num_nodes, const void *x_coor, - const void *y_coor, const void *z_coor); - -SEACAS_DEPRECATED EXODUS_EXPORT int -ex_put_n_elem_num_map(int exoid, int64_t start_ent, int64_t num_ents, const void_int *elem_map); - -SEACAS_DEPRECATED EXODUS_EXPORT int -ex_put_n_node_num_map(int exoid, int64_t start_ent, int64_t num_ents, const void_int *node_map); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_put_n_one_attr(int exoid, ex_entity_type obj_type, - ex_entity_id obj_id, int64_t start_num, - int64_t num_ent, int attrib_index, - const void *attrib); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_put_n_var(int exoid, int time_step, ex_entity_type var_type, - int var_index, ex_entity_id obj_id, - int64_t start_index, int64_t num_entities, - const void *var_vals); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_put_n_nodal_var(int exoid, int time_step, - int nodal_var_index, int64_t start_node, - int64_t num_nodes, - const void *nodal_var_vals); - -SEACAS_DEPRECATED EXODUS_EXPORT int -ex_get_partial_elem_var(int exoid, int time_step, int elem_var_index, ex_entity_id elem_blk_id, - int64_t num_elem_this_blk, int64_t start_elem_num, int64_t num_elem, - void *elem_var_vals); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_get_partial_elem_map(int exoid, ex_entity_id map_id, - int64_t ent_start, int64_t ent_count, - void_int *elem_map); - -SEACAS_DEPRECATED EXODUS_EXPORT int -ex_get_partial_elem_conn(int exoid, /**< 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 */ -); - -SEACAS_DEPRECATED EXODUS_EXPORT int -ex_get_partial_elem_attr(int exoid, /**< 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 */ -); - -SEACAS_DEPRECATED EXODUS_EXPORT int -ex_get_partial_elem_num_map(int exoid, /**< 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 */ -); - -SEACAS_DEPRECATED EXODUS_EXPORT int -ex_get_partial_node_num_map(int exoid, /**< 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 */ -); - -SEACAS_DEPRECATED EXODUS_EXPORT int -ex_get_partial_node_set(int exoid, /**< 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_nodes, /**< Number of nodes to read */ - void_int *node_set_node_list /**< List of nodes in node set */ -); - -SEACAS_DEPRECATED EXODUS_EXPORT int -ex_get_partial_node_set_df(int exoid, /**< 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_dist_fact /**< Distribution factors */ -); - -SEACAS_DEPRECATED EXODUS_EXPORT int -ex_get_partial_side_set(int exoid, /**< 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 */ -); - -SEACAS_DEPRECATED EXODUS_EXPORT int -ex_get_partial_side_set_df(int exoid, /**< 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_dist_fact /**< Distribution factors */ -); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_put_partial_node_num_map(int exoid, int64_t start_ent, - int64_t num_ents, - const void_int *node_map); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_put_partial_elem_num_map(int exoid, int64_t start_ent, - int64_t num_ents, - const void_int *elem_map); - -SEACAS_DEPRECATED EXODUS_EXPORT int ex_put_partial_elem_map(int exoid, ex_entity_id map_id, - int64_t ent_start, int64_t ent_count, - const void_int *elem_map); - -SEACAS_DEPRECATED EXODUS_EXPORT int -ex_put_partial_side_set(int exoid, /**< 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 */ -); - -SEACAS_DEPRECATED EXODUS_EXPORT int -ex_put_partial_side_set_df(int exoid, /**< 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_dist_fact /**< Distribution factors */ -); - -SEACAS_DEPRECATED EXODUS_EXPORT int -ex_put_partial_node_set(int exoid, /**< 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_nodes, /**< Number of nodes to write */ - const void_int *node_set_node_list /**< List of nodes in node set */ -); - -SEACAS_DEPRECATED EXODUS_EXPORT int -ex_put_partial_node_set_df(int exoid, /**< 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_dist_fact /**< Distribution factors */ -); - -SEACAS_DEPRECATED EXODUS_EXPORT int -ex_put_partial_elem_conn(int exoid, /**< 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 */ -); - -SEACAS_DEPRECATED EXODUS_EXPORT int -ex_put_partial_elem_attr(int exoid, /**< 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 */ -); - -SEACAS_DEPRECATED EXODUS_EXPORT int -ex_put_elem_var_slab(int exoid, /**< 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 */ -); - -SEACAS_DEPRECATED EXODUS_EXPORT int -ex_put_nodal_var_slab(int exoid, /**< 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 */ -); - -#endif -/* End of Deprecated functions and their replacements - * ======================================================================== */ - -/* ERROR CODE DEFINITIONS AND STORAGE */ -EXODUS_EXPORT int exoptval; /**< error reporting flag (default is quiet) */ -#if defined(EXODUS_THREADSAFE) -#if !defined(exerrval) -/* In both exodusII.h and exodusII_int.h */ -typedef struct EX_errval -{ - int errval; - char last_pname[MAX_ERR_LENGTH]; - char last_errmsg[MAX_ERR_LENGTH]; - int last_err_num; -} EX_errval_t; - -EXODUS_EXPORT EX_errval_t *ex_errval; -#define exerrval ex_errval->errval -#endif -#else -EXODUS_EXPORT int exerrval; /**< shared error return value */ -#endif - -EXODUS_EXPORT char *ex_name_of_object(ex_entity_type obj_type); -EXODUS_EXPORT ex_entity_type ex_var_type_to_ex_entity_type(char var_type); -EXODUS_EXPORT int ex_set_parallel(int exoid, int is_parallel); - -/* Should be internal use only, but was in external include file for - nemesis and some codes are using the function -*/ -EXODUS_EXPORT int ex_get_idx(int exoid, /**< NetCDF/Exodus file ID */ - const char *ne_var_name, /**< Nemesis index variable name */ - int64_t *my_index, /**< array of length 2 to hold results */ - int pos /**< position of this proc/cmap in index */ -); - -/** - * \defgroup ErrorReturnCodes Error return codes - #exerrval return values - * @{ - */ -#define EX_MEMFAIL 1000 /**< memory allocation failure flag def */ -#define EX_BADFILEMODE 1001 /**< bad file mode def */ -#define EX_BADFILEID 1002 /**< bad file id def */ -#define EX_WRONGFILETYPE 1003 /**< wrong file type for function */ -#define EX_LOOKUPFAIL 1004 /**< id table lookup failed */ -#define EX_BADPARAM 1005 /**< bad parameter passed */ -#define EX_INTERNAL 1006 /**< internal logic error */ -#define EX_DUPLICATEID 1007 /**< duplicate id found */ -#define EX_DUPLICATEOPEN 1008 /**< duplicate open */ -#define EX_BADFILENAME 1009 /**< empty or null filename specified */ -#define EX_MSG -1000 /**< message print code - no error implied */ -#define EX_PRTLASTMSG -1001 /**< print last error message msg code */ -#define EX_NOTROOTID -1002 /**< file id is not the root id; it is a subgroup id */ -#define EX_LASTERR -1003 /**< in ex_err, use existing err_num value */ -#define EX_NULLENTITY -1006 /**< null entity found */ -#define EX_NOENTITY -1007 /**< no entities of that type on database */ -#define EX_NOTFOUND -1008 /**< could not find requested variable on database */ - -#define EX_FATAL -1 /**< fatal error flag def */ -#define EX_NOERR 0 /**< no error flag def */ -#define EX_WARN 1 /**< warning flag def */ -/** @} */ - -#ifdef __cplusplus -} /* close brackets on extern "C" declaration */ -#endif diff --git a/packages/seacas/libraries/exodus/include/exodusII_cfg.h.in b/packages/seacas/libraries/exodus/include/exodusII_cfg.h.in deleted file mode 100644 index f407c0e..0000000 --- a/packages/seacas/libraries/exodus/include/exodusII_cfg.h.in +++ /dev/null @@ -1,20 +0,0 @@ -# Copyright(C) 1999-2022 National Technology & Engineering Solutions -# of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with -# NTESS, the U.S. Government retains certain rights in this software. -# -# See packages/seacas/LICENSE for details -#pragma once - -#cmakedefine EXODUSII_BUILD_SHARED_LIBS -#if defined(WIN32) || defined(__WIN32__) || defined(_WIN32) || defined(_MSC_VER) || \ - defined(__MINGW32__) || defined(_WIN64) || defined(__MINGW64__) -#if defined(EXODUSII_BUILD_SHARED_LIBS) -# if defined(exoIIc_EXPORTS) -# define EXODUS_EXPORT __declspec( dllexport ) extern -# else -# define EXODUS_EXPORT __declspec( dllimport ) extern -# endif -#endif -#else -# define EXODUS_EXPORT extern -#endif diff --git a/packages/seacas/libraries/exodus/include/exodusII_int.h b/packages/seacas/libraries/exodus/include/exodusII_int.h deleted file mode 100644 index 63b78f6..0000000 --- a/packages/seacas/libraries/exodus/include/exodusII_int.h +++ /dev/null @@ -1,892 +0,0 @@ -/* - - * Copyright(C) 1999-2020, 2022, 2023 National Technology & Engineering Solutions - * of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with - * NTESS, the U.S. Government retains certain rights in this software. - * - * See packages/seacas/LICENSE for details - */ -/***************************************************************************** - * - * exodusII_int.h - ExodusII header file for internal Exodus call use only - * - */ -#pragma once - -#include - -#include "exodus_config.h" - -#if defined(EXODUS_THREADSAFE) -#include -#endif - -#include "netcdf.h" -#if defined(NC_HAVE_META_H) -#include "netcdf_meta.h" -#endif - -#if defined(_WIN32) && defined(_MSC_VER) && _MSC_VER < 1900 -#define PRId64 "I64d" -#else -#include -#endif - -#include -#include -#include - -#ifndef __APPLE__ -#if defined __STDC__ || defined __cplusplus -#include -#endif -#endif - -#ifdef _MSC_VER -#pragma warning(disable : 4127) -#pragma warning(disable : 4706) -#pragma warning(disable : 4701) -#endif - -#if defined(__BORLANDC__) -#pragma warn - 8004 /* "assigned a value that is never used" */ -#endif - -#include - -#if defined(_MSC_VER) && _MSC_VER < 1900 -#define __func__ __FUNCTION__ -#define snprintf _snprintf -#endif - -#define snprintf_nowarn(...) (snprintf(__VA_ARGS__) < 0 ? abort() : (void)0) - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * \defgroup Internal Internal Functions and Defines - * \internal - * - * Variables and functions used internally in the library - *@{ - */ -#define MAX_VAR_NAME_LENGTH 32 /**< Internal use only */ - -/* Default "filesize" for newly created files. - * Set to 0 for normal filesize setting. - * Set to 1 for EXODUS_LARGE_MODEL setting to be the default - */ -#define EXODUS_DEFAULT_SIZE 1 - -/* Used to map between root (file id) and group ids when using groups */ -#define EX_FILE_ID_MASK (0xffff0000) /**< Must match FILE_ID_MASK in NetCDF nc4internal.h */ -#define EX_GRP_ID_MASK (0x0000ffff) /**< Must match GRP_ID_MASK in NetCDF nc4internal.h */ - -void ex__reset_error_status(void); - -#if defined(EXODUS_THREADSAFE) -#if !defined(exerrval) -/* In both exodusII.h and exodusII_int.h */ -typedef struct EX_errval -{ - int errval; - char last_pname[MAX_ERR_LENGTH]; - char last_errmsg[MAX_ERR_LENGTH]; - int last_err_num; -} EX_errval_t; - -EXODUS_EXPORT EX_errval_t *ex_errval; -#define exerrval ex_errval->errval -#endif - -extern pthread_once_t EX_first_init_g; - -typedef struct EX_mutex_struct -{ - pthread_mutex_t atomic_lock; /**< lock for atomicity of new mechanism */ - pthread_mutexattr_t attribute; -} EX_mutex_t; - -extern EX_mutex_t EX_g; -extern int ex__mutex_lock(EX_mutex_t *mutex); -extern int ex__mutex_unlock(EX_mutex_t *mutex, const char *func, int line); -extern void ex__pthread_first_thread_init(void); -extern EX_errval_t *exerrval_get(); - -#define EX_FUNC_ENTER() \ - do { \ - /* Initialize the thread-safe code */ \ - pthread_once(&EX_first_init_g, ex__pthread_first_thread_init); \ - \ - /* Grab the mutex for the library */ \ - ex__mutex_lock(&EX_g); \ - ex_errval = exerrval_get(); \ - exerrval = 0; \ - ex_errval->last_err_num = 0; \ - } while (0) - -#define EX_FUNC_ENTER_INT() \ - do { \ - /* Initialize the thread-safe code */ \ - pthread_once(&EX_first_init_g, ex__pthread_first_thread_init); \ - \ - /* Grab the mutex for the library */ \ - ex__mutex_lock(&EX_g); \ - ex_errval = exerrval_get(); \ - } while (0) - -#define EX_FUNC_LEAVE(error) \ - do { \ - ex__mutex_unlock(&EX_g, __func__, __LINE__); \ - return error; \ - } while (0) - -#define EX_FUNC_VOID() \ - do { \ - ex__mutex_unlock(&EX_g, __func__, __LINE__); \ - return; \ - } while (0) - -#define EX_FUNC_UNLOCK() \ - do { \ - ex__mutex_unlock(&EX_g, __func__, __LINE__); \ - } while (0) - -#else - -/* Enable this to output tracing information from the API functions */ -#if 0 -EXODUS_EXPORT int indent; -#define EX_FUNC_ENTER() \ - do { \ - ex__reset_error_status(); \ - fprintf(stderr, "%d Enter: %s\n", indent, __func__); \ - indent++; \ - } while (0) -#define EX_FUNC_ENTER_INT() \ - do { \ - fprintf(stderr, "%d Enter: %s\n", indent, __func__); \ - indent++; \ - } while (0) -#define EX_FUNC_LEAVE(error) \ - do { \ - indent--; \ - fprintf(stderr, "%d Leave: %s\n", indent, __func__); \ - return error; \ - } while (0) -#define EX_FUNC_VOID() \ - do { \ - indent--; \ - fprintf(stderr, "%d Leave: %s\n", indent, __func__); \ - return; \ - } while (0) -#define EX_FUNC_UNLOCK() \ - do { \ - indent--; \ - fprintf(stderr, "%d Unlock: %s\n", indent, __func__); \ - } while (0) -#else -#define EX_FUNC_ENTER() \ - do { \ - ex__reset_error_status(); \ - } while (0) -#define EX_FUNC_ENTER_INT() -#define EX_FUNC_LEAVE(error) return error -#define EX_FUNC_VOID() return -#define EX_FUNC_UNLOCK() -#endif -#endif - -#define EX_UNUSED(A) \ - do { \ - (void)(A); \ - } while (0) - -/* - * This file contains defined constants that are used internally in the - * EXODUS API. - * - * The first group of constants refer to NetCDF variables, attributes, or - * dimensions in which the EXODUS data are stored. Using the defined - * constants will allow the names of the NetCDF entities to be changed easily - * in the future if needed. The first three letters of the constant identify - * the NetCDF entity as a variable (VAR), dimension (DIM), or attribute (ATT). - * - * NOTE: The entity name should not have any blanks in it. Blanks are - * technically legal but some NetCDF utilities (ncgen in particular) - * fail when they encounter a blank in a name. - * - */ -#define ATT_TITLE "title" /**< the database title */ -#define ATT_API_VERSION "api_version" /**< the EXODUS api vers number */ -/*! the EXODUS api vers # used for db version 2.01 and earlier */ -#define ATT_API_VERSION_BLANK "api version" -#define ATT_VERSION "version" /**< the EXODUS file vers number */ -#define ATT_FILESIZE "file_size" /**< 1=large, 0=normal */ -/*! word size of floating point numbers in file */ -#define ATT_FLT_WORDSIZE "floating_point_word_size" -/*! word size of floating point numbers in file used for db version - 2.01 and earlier */ -#define ATT_FLT_WORDSIZE_BLANK "floating point word size" -#define ATT_MAX_NAME_LENGTH "maximum_name_length" -#define ATT_INT64_STATUS "int64_status" -#define ATT_NEM_API_VERSION "nemesis_api_version" -#define ATT_NEM_FILE_VERSION "nemesis_file_version" -#define ATT_PROCESSOR_INFO "processor_info" -#define ATT_LAST_WRITTEN_TIME "last_written_time" - -#define DIM_NUM_ASSEMBLY "num_assembly" /**< number of assemblies */ -#define DIM_NUM_BLOB "num_blob" /**< number of blobs */ -#define DIM_NUM_NODES "num_nodes" /**< number of nodes */ -#define DIM_NUM_DIM "num_dim" /**< number of dimensions; 2- or 3-d*/ -#define DIM_NUM_EDGE "num_edge" /**< number of edges (over all blks)*/ -#define DIM_NUM_FACE "num_face" /**< number of faces (over all blks)*/ -#define DIM_NUM_ELEM "num_elem" /**< number of elements */ -#define DIM_NUM_EL_BLK "num_el_blk" /**< number of element blocks */ -#define DIM_NUM_ED_BLK "num_ed_blk" /**< number of edge blocks */ -#define DIM_NUM_FA_BLK "num_fa_blk" /**< number of face blocks */ -#define VAR_COORD "coord" /**< nodal coordinates */ -#define VAR_COORD_X "coordx" /**< X-dimension coordinate */ -#define VAR_COORD_Y "coordy" /**< Y-dimension coordinate */ -#define VAR_COORD_Z "coordz" /**< Z-dimension coordinate */ -#define VAR_NAME_COOR "coor_names" /**< names of coordinates */ -#define VAR_NAME_EL_BLK "eb_names" /**< names of element blocks */ -#define VAR_NAME_NS "ns_names" /**< names of node sets */ -#define VAR_NAME_SS "ss_names" /**< names of side sets */ -#define VAR_NAME_EM "emap_names" /**< names of element maps */ -#define VAR_NAME_EDM "edmap_names" /**< names of edge maps */ -#define VAR_NAME_FAM "famap_names" /**< names of face maps */ -#define VAR_NAME_NM "nmap_names" /**< names of node maps */ -#define VAR_NAME_ED_BLK "ed_names" /**< names of edge blocks */ -#define VAR_NAME_FA_BLK "fa_names" /**< names of face blocks */ -#define VAR_NAME_ES "es_names" /**< names of edge sets */ -#define VAR_NAME_FS "fs_names" /**< names of face sets */ -#define VAR_NAME_ELS "els_names" /**< names of element sets */ -#define VAR_STAT_EL_BLK "eb_status" /**< element block status */ -#define VAR_STAT_ECONN "econn_status" /**< element block edge status */ -#define VAR_STAT_FCONN "fconn_status" /**< element block face status */ -#define VAR_STAT_ED_BLK "ed_status" /**< edge block status */ -#define VAR_STAT_FA_BLK "fa_status" /**< face block status */ -#define VAR_ID_EL_BLK "eb_prop1" /**< element block ids props */ -#define VAR_ID_ED_BLK "ed_prop1" /**< edge block ids props */ -#define VAR_ID_FA_BLK "fa_prop1" /**< face block ids props */ -#define DIM_NUM_ENTITY_ASSEMBLY(num) ex__catstr("num_entity_assembly", num) -#define VAR_ENTITY_ASSEMBLY(num) ex__catstr("assembly_entity", num) -#define DIM_NUM_VALUES_BLOB(num) ex__catstr("num_values_blob", num) -#define VAR_ENTITY_BLOB(num) ex__catstr("blob_entity", num) -#define EX_ATTRIBUTE_TYPE "_type" -#define EX_ATTRIBUTE_TYPENAME "_typename" -#define EX_ATTRIBUTE_NAME "_name" -#define EX_ATTRIBUTE_ID "_id" - -/*! element type names for each element block */ -#define ATT_NAME_ELB "elem_type" -/*! number of elements in element block num */ -#define DIM_NUM_EL_IN_BLK(num) ex__catstr("num_el_in_blk", num) -/*! number of nodes per element in element block num */ -#define DIM_NUM_NOD_PER_EL(num) ex__catstr("num_nod_per_el", num) -/*! number of attributes in element block num */ -#define DIM_NUM_ATT_IN_BLK(num) ex__catstr("num_att_in_blk", num) -/*! number of edges in edge block num */ -#define DIM_NUM_ED_IN_EBLK(num) ex__catstr("num_ed_in_blk", num) -/*! number of nodes per edge in edge block num */ -#define DIM_NUM_NOD_PER_ED(num) ex__catstr("num_nod_per_ed", num) -/*! number of edges per element in element block num */ -#define DIM_NUM_EDG_PER_EL(num) ex__catstr("num_edg_per_el", num) -/*! number of attributes in edge block num */ -#define DIM_NUM_ATT_IN_EBLK(num) ex__catstr("num_att_in_eblk", num) -/*! number of faces in face block num */ -#define DIM_NUM_FA_IN_FBLK(num) ex__catstr("num_fa_in_blk", num) -/*! number of nodes per face in face block num */ -#define DIM_NUM_NOD_PER_FA(num) ex__catstr("num_nod_per_fa", num) -/*! number of faces per element in element block num */ -#define DIM_NUM_FAC_PER_EL(num) ex__catstr("num_fac_per_el", num) -/*! number of attributes in face block num */ -#define DIM_NUM_ATT_IN_FBLK(num) ex__catstr("num_att_in_fblk", num) -/*! element connectivity for element block num */ -#define VAR_CONN(num) ex__catstr("connect", num) -/*! array containing number of entity per */ -/* entity for n-sided face/element blocks */ -#define VAR_EBEPEC(num) ex__catstr("ebepecnt", num) -/*! list of attributes for element block num */ -#define VAR_ATTRIB(num) ex__catstr("attrib", num) -/*! list of attribute names for element block num */ -#define VAR_NAME_ATTRIB(num) ex__catstr("attrib_name", num) -/*! list of the numth property for all element blocks */ -#define VAR_EB_PROP(num) ex__catstr("eb_prop", num) -/*! edge connectivity for element block num */ -#define VAR_ECONN(num) ex__catstr("edgconn", num) -/*! edge connectivity for edge block num */ -#define VAR_EBCONN(num) ex__catstr("ebconn", num) -/*! list of attributes for edge block num */ -#define VAR_EATTRIB(num) ex__catstr("eattrb", num) -/*! list of attribute names for edge block num */ -#define VAR_NAME_EATTRIB(num) ex__catstr("eattrib_name", num) -#define VAR_NATTRIB "nattrb" -#define VAR_NAME_NATTRIB "nattrib_name" -#define DIM_NUM_ATT_IN_NBLK "num_att_in_nblk" - -#define VAR_NSATTRIB(num) ex__catstr("nsattrb", num) -#define VAR_NAME_NSATTRIB(num) ex__catstr("nsattrib_name", num) -#define DIM_NUM_ATT_IN_NS(num) ex__catstr("num_att_in_ns", num) - -#define VAR_SSATTRIB(num) ex__catstr("ssattrb", num) -#define VAR_NAME_SSATTRIB(num) ex__catstr("ssattrib_name", num) -#define DIM_NUM_ATT_IN_SS(num) ex__catstr("num_att_in_ss", num) - -#define VAR_ESATTRIB(num) ex__catstr("esattrb", num) -#define VAR_NAME_ESATTRIB(num) ex__catstr("esattrib_name", num) -#define DIM_NUM_ATT_IN_ES(num) ex__catstr("num_att_in_es", num) - -#define VAR_FSATTRIB(num) ex__catstr("fsattrb", num) -#define VAR_NAME_FSATTRIB(num) ex__catstr("fsattrib_name", num) -#define DIM_NUM_ATT_IN_FS(num) ex__catstr("num_att_in_fs", num) - -#define VAR_ELSATTRIB(num) ex__catstr("elsattrb", num) -#define VAR_NAME_ELSATTRIB(num) ex__catstr("elsattrib_name", num) -#define DIM_NUM_ATT_IN_ELS(num) ex__catstr("num_att_in_els", num) - -/*! list of the numth property for all edge blocks */ -#define VAR_ED_PROP(num) ex__catstr("ed_prop", num) -/*! face connectivity for element block num */ -#define VAR_FCONN(num) ex__catstr("facconn", num) -/*! face connectivity for face block num */ -#define VAR_FBCONN(num) ex__catstr("fbconn", num) -/*! array containing number of entity per entity for n-sided face/element blocks */ -#define VAR_FBEPEC(num) ex__catstr("fbepecnt", num) -/*! list of attributes for face block num */ -#define VAR_FATTRIB(num) ex__catstr("fattrb", num) -/*! list of attribute names for face block num */ -#define VAR_NAME_FATTRIB(num) ex__catstr("fattrib_name", num) -/*! list of the numth property for all face blocks */ -#define VAR_FA_PROP(num) ex__catstr("fa_prop", num) -/*! name attached to element block, node set, side set, element map, - or map properties */ -#define ATT_PROP_NAME "name" -#define VAR_MAP "elem_map" /**< element order map */ -#define DIM_NUM_SS "num_side_sets" /**< number of side sets */ -#define VAR_SS_STAT "ss_status" /**< side set status */ -#define VAR_SS_IDS "ss_prop1" /**< side set id properties */ -/*! number of sides in side set num*/ -#define DIM_NUM_SIDE_SS(num) ex__catstr("num_side_ss", num) -/*! number of distribution factors in side set num */ -#define DIM_NUM_DF_SS(num) ex__catstr("num_df_ss", num) -/*! the distribution factors for each node in side set num */ -#define VAR_FACT_SS(num) ex__catstr("dist_fact_ss", num) -/*! list of elements in side set num */ -#define VAR_ELEM_SS(num) ex__catstr("elem_ss", num) -/*! list of sides in side set */ -#define VAR_SIDE_SS(num) ex__catstr("side_ss", num) -/*! list of the numth property for all side sets */ -#define VAR_SS_PROP(num) ex__catstr("ss_prop", num) -#define DIM_NUM_ES "num_edge_sets" /**< number of edge sets */ -#define VAR_ES_STAT "es_status" /**< edge set status */ -#define VAR_ES_IDS "es_prop1" /**< edge set id properties */ -/*! number of edges in edge set num*/ -#define DIM_NUM_EDGE_ES(num) ex__catstr("num_edge_es", num) -/*! number of distribution factors in edge set num */ -#define DIM_NUM_DF_ES(num) ex__catstr("num_df_es", num) -/*! the distribution factors for each node in edge set num */ -#define VAR_FACT_ES(num) ex__catstr("dist_fact_es", num) -/*! list of edges in edge set num */ -#define VAR_EDGE_ES(num) ex__catstr("edge_es", num) -/*! list of orientations in the edge set. */ -#define VAR_ORNT_ES(num) ex__catstr("ornt_es", num) -/*! list of the numth property for all edge sets */ -#define VAR_ES_PROP(num) ex__catstr("es_prop", num) -#define DIM_NUM_FS "num_face_sets" /**< number of face sets */ -#define VAR_FS_STAT "fs_status" /**< face set status */ -#define VAR_FS_IDS "fs_prop1" /**< face set id properties */ -/*! number of faces in side set num*/ -#define DIM_NUM_FACE_FS(num) ex__catstr("num_face_fs", num) -/*! number of distribution factors in face set num */ -#define DIM_NUM_DF_FS(num) ex__catstr("num_df_fs", num) -/*! the distribution factors for each node in face set num */ -#define VAR_FACT_FS(num) ex__catstr("dist_fact_fs", num) -/*! list of elements in face set num */ -#define VAR_FACE_FS(num) ex__catstr("face_fs", num) -/*! list of sides in side set */ -#define VAR_ORNT_FS(num) ex__catstr("ornt_fs", num) -/*! list of the numth property for all face sets */ -#define VAR_FS_PROP(num) ex__catstr("fs_prop", num) -#define DIM_NUM_ELS "num_elem_sets" /**< number of elem sets */ -/*! number of elements in elem set num */ -#define DIM_NUM_ELE_ELS(num) ex__catstr("num_ele_els", num) -/*! number of distribution factors in element set num */ -#define DIM_NUM_DF_ELS(num) ex__catstr("num_df_els", num) -#define VAR_ELS_STAT "els_status" /**< elem set status */ -#define VAR_ELS_IDS "els_prop1" /**< elem set id properties */ -/*! list of elements in elem set num */ -#define VAR_ELEM_ELS(num) ex__catstr("elem_els", num) -/*! list of distribution factors in elem set num */ -#define VAR_FACT_ELS(num) ex__catstr("dist_fact_els", num) -/*! list of the numth property for all elem sets */ -#define VAR_ELS_PROP(num) ex__catstr("els_prop", num) -#define DIM_NUM_NS "num_node_sets" /**< number of node sets */ -/*! number of nodes in node set num */ -#define DIM_NUM_NOD_NS(num) ex__catstr("num_nod_ns", num) -/*! number of distribution factors in node set num */ -#define DIM_NUM_DF_NS(num) ex__catstr("num_df_ns", num) -#define VAR_NS_STAT "ns_status" /**< node set status */ -#define VAR_NS_IDS "ns_prop1" /**< node set id properties */ -/*! list of nodes in node set num */ -#define VAR_NODE_NS(num) ex__catstr("node_ns", num) -/*! list of distribution factors in node set num */ -#define VAR_FACT_NS(num) ex__catstr("dist_fact_ns", num) -/*! list of the numth property for all node sets */ -#define VAR_NS_PROP(num) ex__catstr("ns_prop", num) -#define DIM_NUM_QA "num_qa_rec" /**< number of QA records */ -#define VAR_QA_TITLE "qa_records" /**< QA records */ -#define DIM_NUM_INFO "num_info" /**< number of information records */ -#define VAR_INFO "info_records" /**< information records */ -#define VAR_WHOLE_TIME "time_whole" /**< simulation times for whole time steps */ -#define VAR_ASSEMBLY_TAB "assembly_var_tab" /**< assembly variable truth table */ -#define VAR_BLOB_TAB "blob_var_tab" /**< blob variable truth table */ -#define VAR_ELEM_TAB "elem_var_tab" /**< element variable truth table */ -#define VAR_EBLK_TAB "edge_var_tab" /**< edge variable truth table */ -#define VAR_FBLK_TAB "face_var_tab" /**< face variable truth table */ -#define VAR_ELSET_TAB "elset_var_tab" /**< elemset variable truth table */ -#define VAR_SSET_TAB "sset_var_tab" /**< sideset variable truth table */ -#define VAR_FSET_TAB "fset_var_tab" /**< faceset variable truth table */ -#define VAR_ESET_TAB "eset_var_tab" /**< edgeset variable truth table */ -#define VAR_NSET_TAB "nset_var_tab" /**< nodeset variable truth table */ -#define DIM_NUM_GLO_VAR "num_glo_var" /**< number of global variables */ -#define VAR_NAME_GLO_VAR "name_glo_var" /**< names of global variables */ -#define VAR_GLO_VAR "vals_glo_var" /**< values of global variables*/ -#define DIM_NUM_NOD_VAR "num_nod_var" /**< number of nodal variables */ -#define VAR_NAME_NOD_VAR "name_nod_var" /**< names of nodal variables */ -#define VAR_NOD_VAR "vals_nod_var" /**< values of nodal variables \deprecated */ -/*! values of nodal variables */ -#define VAR_NOD_VAR_NEW(num) ex__catstr("vals_nod_var", num) - -#define DIM_NUM_ASSEMBLY_VAR "num_assembly_var" /**< number of assembly variables */ -#define VAR_NAME_ASSEMBLY_VAR "name_assembly_var" /**< names of assembly variables*/ -#define VAR_ASSEMBLY_VAR(num1, num2) ex__catstr2("vals_assembly_var", num1, "assembly", num2) - -#define DIM_NUM_BLOB_VAR "num_blob_var" /**< number of blob variables */ -#define VAR_NAME_BLOB_VAR "name_blob_var" /**< names of blob variables*/ -#define VAR_BLOB_VAR(num1, num2) ex__catstr2("vals_blob_var", num1, "blob", num2) - -#define DIM_NUM_ELE_VAR "num_elem_var" /**< number of element variables */ -#define VAR_NAME_ELE_VAR "name_elem_var" /**< names of element variables*/ -/*! values of element variable num1 in element block num2 */ -#define VAR_ELEM_VAR(num1, num2) ex__catstr2("vals_elem_var", num1, "eb", num2) -#define DIM_NUM_EDG_VAR "num_edge_var" /**< number of edge variables */ -#define VAR_NAME_EDG_VAR "name_edge_var" /**< names of edge variables */ -/*! values of edge variable num1 in edge block num2 */ -#define VAR_EDGE_VAR(num1, num2) ex__catstr2("vals_edge_var", num1, "eb", num2) -#define DIM_NUM_FAC_VAR "num_face_var" /**< number of face variables */ -#define VAR_NAME_FAC_VAR "name_face_var" /**< names of face variables */ -/*! values of face variable num1 in face block num2 */ -#define VAR_FACE_VAR(num1, num2) ex__catstr2("vals_face_var", num1, "fb", num2) - -#define DIM_NUM_NSET_VAR "num_nset_var" /**< number of nodeset variables */ -#define VAR_NAME_NSET_VAR "name_nset_var" /**< names of nodeset variables*/ -/*! values of nodeset variable num1 in nodeset num2 */ -#define VAR_NS_VAR(num1, num2) ex__catstr2("vals_nset_var", num1, "ns", num2) -#define DIM_NUM_ESET_VAR "num_eset_var" /**< number of edgeset variables */ -/*! values of edgeset variable num1 in edgeset num2 */ -#define VAR_NAME_ESET_VAR "name_eset_var" /**< names of edgeset variables*/ -#define VAR_ES_VAR(num1, num2) ex__catstr2("vals_eset_var", num1, "es", num2) -#define DIM_NUM_FSET_VAR "num_fset_var" /**< number of faceset variables */ -#define VAR_NAME_FSET_VAR "name_fset_var" /**< names of faceset variables*/ -/*! values of faceset variable num1 in faceset num2 */ -#define VAR_FS_VAR(num1, num2) ex__catstr2("vals_fset_var", num1, "fs", num2) -#define DIM_NUM_SSET_VAR "num_sset_var" /**< number of sideset variables */ -#define VAR_NAME_SSET_VAR "name_sset_var" /**< names of sideset variables*/ -/*! values of sideset variable num1 in sideset num2 */ -#define VAR_SS_VAR(num1, num2) ex__catstr2("vals_sset_var", num1, "ss", num2) -#define DIM_NUM_ELSET_VAR "num_elset_var" /**< number of element set variables*/ -#define VAR_NAME_ELSET_VAR "name_elset_var" /**< names of elemset variables*/ -/*! values of elemset variable num1 in elemset num2 */ -#define VAR_ELS_VAR(num1, num2) ex__catstr2("vals_elset_var", num1, "es", num2) - -/** - * \defgroup ReductionVariables Variables controlling storage of reduction variables - *@{ - */ -#define DIM_NUM_ASSEMBLY_RED_VAR "num_assembly_red_var" /**< number of assembly variables */ -#define VAR_NAME_ASSEMBLY_RED_VAR "name_assembly_red_var" /**< names of assembly variables*/ -#define VAR_ASSEMBLY_RED_VAR(num) ex__catstr("vals_red_var_assembly", num) - -#define DIM_NUM_BLOB_RED_VAR "num_blob_red_var" /**< number of blob variables */ -#define VAR_NAME_BLOB_RED_VAR "name_blob_red_var" /**< names of blob variables*/ -#define VAR_BLOB_RED_VAR(num) ex__catstr("vals_red_var_blob", num) - -#define DIM_NUM_ELE_RED_VAR "num_elem_red_var" /**< number of element variables */ -#define VAR_NAME_ELE_RED_VAR "name_elem_red_var" /**< names of element variables*/ -/*! values of element variable num in element block num */ -#define VAR_ELEM_RED_VAR(num) ex__catstr("vals_red_var_eb", num) - -#define DIM_NUM_EDG_RED_VAR "num_edge_red_var" /**< number of edge variables */ -#define VAR_NAME_EDG_RED_VAR "name_edge_red_var" /**< names of edge variables */ -/*! values of edge variable num in edge block num */ -#define VAR_EDGE_RED_VAR(num) ex__catstr("vals_red_var_edb", num) - -#define DIM_NUM_FAC_RED_VAR "num_face_red_var" /**< number of face variables */ -#define VAR_NAME_FAC_RED_VAR "name_face_red_var" /**< names of face variables */ -/*! values of face variable num in face block num */ -#define VAR_FACE_RED_VAR(num) ex__catstr("vals_red_var_fb", num) - -#define DIM_NUM_NSET_RED_VAR "num_nset_red_var" /**< number of nodeset variables */ -#define VAR_NAME_NSET_RED_VAR "name_nset_red_var" /**< names of nodeset variables*/ -/*! values of nodeset variable num in nodeset num */ -#define VAR_NS_RED_VAR(num) ex__catstr("vals_red_var_nset", num) - -#define DIM_NUM_ESET_RED_VAR "num_eset_red_var" /**< number of edgeset variables */ -/*! values of edgeset variable num in edgeset num */ -#define VAR_NAME_ESET_RED_VAR "name_eset_red_var" /**< names of edgeset variables*/ -#define VAR_ES_RED_VAR(num) ex__catstr("vals_red_var_eset", num) - -#define DIM_NUM_FSET_RED_VAR "num_fset_red_var" /**< number of faceset variables */ -#define VAR_NAME_FSET_RED_VAR "name_fset_red_var" /**< names of faceset variables*/ -/*! values of faceset variable num in faceset num */ -#define VAR_FS_RED_VAR(num) ex__catstr("vals_red_var_fset", num) - -#define DIM_NUM_SSET_RED_VAR "num_sset_red_var" /**< number of sideset variables */ -#define VAR_NAME_SSET_RED_VAR "name_sset_red_var" /**< names of sideset variables*/ -/*! values of sideset variable num in sideset num */ -#define VAR_SS_RED_VAR(num) ex__catstr("vals_red_var_sset", num) - -#define DIM_NUM_ELSET_RED_VAR "num_elset_red_var" /**< number of element set variables*/ -#define VAR_NAME_ELSET_RED_VAR "name_elset_red_var" /**< names of elemset variables*/ -/*! values of elemset variable num in elemset num */ -#define VAR_ELS_RED_VAR(num) ex__catstr("vals_red_var_elset", num) -/** @}*/ - -/*! general dimension of length MAX_STR_LENGTH used for some string lengths */ -#define DIM_STR "len_string" -/*! general dimension of length MAX_NAME_LENGTH used for name lengths */ -#define DIM_STR_NAME "len_name" -/*! general dimension of length MAX_LINE_LENGTH used for long strings */ -#define DIM_LIN "len_line" -#define DIM_N4 "four" -#define DIM_N1 "blob_entity" -/*! unlimited (expandable) dimension for time steps*/ -#define DIM_TIME "time_step" -#define VAR_ELEM_NUM_MAP "elem_num_map" /**< element numbering map */ -#define VAR_FACE_NUM_MAP "face_num_map" /**< face numbering map */ -#define VAR_EDGE_NUM_MAP "edge_num_map" /**< edge numbering map */ -#define VAR_NODE_NUM_MAP "node_num_map" /**< node numbering map */ -#define DIM_NUM_EM "num_elem_maps" /**< number of element maps */ -/*! the numth element map */ -#define VAR_ELEM_MAP(num) ex__catstr("elem_map", num) -/*! list of the numth property for all element maps */ -#define VAR_EM_PROP(num) ex__catstr("em_prop", num) -#define DIM_NUM_EDM "num_edge_maps" /**< number of edge maps */ -/*! the numth edge map */ -#define VAR_EDGE_MAP(num) ex__catstr("edge_map", num) -/* list of the numth property for all edge maps */ -#define VAR_EDM_PROP(num) ex__catstr("edm_prop", num) -#define DIM_NUM_FAM "num_face_maps" /**< number of face maps */ -/*! the numth face map */ -#define VAR_FACE_MAP(num) ex__catstr("face_map", num) -/*! list of the numth property for all face maps */ -#define VAR_FAM_PROP(num) ex__catstr("fam_prop", num) -#define DIM_NUM_NM "num_node_maps" /**< number of node maps */ -/*! the numth node map */ -#define VAR_NODE_MAP(num) ex__catstr("node_map", num) -/*! list of the numth property for all node maps */ -#define VAR_NM_PROP(num) ex__catstr("nm_prop", num) -/*! list of the numth property for all assemblies */ -#define VAR_ASSEMBLY_PROP(num) ex__catstr("assembly_prop", num) -#define VAR_BLOB_PROP(num) ex__catstr("blob_prop", num) - -#define DIM_NUM_CFRAMES "num_cframes" -#define DIM_NUM_CFRAME9 "num_cframes_9" -#define VAR_FRAME_COORDS "frame_coordinates" -#define VAR_FRAME_IDS "frame_ids" -#define VAR_FRAME_TAGS "frame_tags" - -#define VAR_ELBLK_IDS_GLOBAL "el_blk_ids_global" -#define VAR_ELBLK_CNT_GLOBAL "el_blk_cnt_global" -#define VAR_NS_IDS_GLOBAL "ns_ids_global" -#define VAR_NS_NODE_CNT_GLOBAL "ns_node_cnt_global" -#define VAR_NS_DF_CNT_GLOBAL "ns_df_cnt_global" -#define VAR_SS_IDS_GLOBAL "ss_ids_global" -#define VAR_SS_SIDE_CNT_GLOBAL "ss_side_cnt_global" -#define VAR_SS_DF_CNT_GLOBAL "ss_df_cnt_global" -#define VAR_FILE_TYPE "nem_ftype" -#define VAR_COMM_MAP "comm_map" -#define VAR_NODE_MAP_INT "node_mapi" -#define VAR_NODE_MAP_INT_IDX "node_mapi_idx" -#define VAR_NODE_MAP_BOR "node_mapb" -#define VAR_NODE_MAP_BOR_IDX "node_mapb_idx" -#define VAR_NODE_MAP_EXT "node_mape" -#define VAR_NODE_MAP_EXT_IDX "node_mape_idx" -#define VAR_ELEM_MAP_INT "elem_mapi" -#define VAR_ELEM_MAP_INT_IDX "elem_mapi_idx" -#define VAR_ELEM_MAP_BOR "elem_mapb" -#define VAR_ELEM_MAP_BOR_IDX "elem_mapb_idx" -#define VAR_INT_N_STAT "int_n_stat" -#define VAR_BOR_N_STAT "bor_n_stat" -#define VAR_EXT_N_STAT "ext_n_stat" -#define VAR_INT_E_STAT "int_e_stat" -#define VAR_BOR_E_STAT "bor_e_stat" -#define VAR_N_COMM_IDS "n_comm_ids" -#define VAR_N_COMM_STAT "n_comm_stat" -#define VAR_N_COMM_INFO_IDX "n_comm_info_idx" -#define VAR_E_COMM_IDS "e_comm_ids" -#define VAR_E_COMM_STAT "e_comm_stat" -#define VAR_E_COMM_INFO_IDX "e_comm_info_idx" -#define VAR_N_COMM_NIDS "n_comm_nids" -#define VAR_N_COMM_PROC "n_comm_proc" -#define VAR_N_COMM_DATA_IDX "n_comm_data_idx" -#define VAR_E_COMM_EIDS "e_comm_eids" -#define VAR_E_COMM_SIDS "e_comm_sids" -#define VAR_E_COMM_PROC "e_comm_proc" -#define VAR_E_COMM_DATA_IDX "e_comm_data_idx" - -#define DIM_NUM_INT_NODES "num_int_node" -#define DIM_NUM_BOR_NODES "num_bor_node" -#define DIM_NUM_EXT_NODES "num_ext_node" -#define DIM_NUM_INT_ELEMS "num_int_elem" -#define DIM_NUM_BOR_ELEMS "num_bor_elem" -#define DIM_NUM_PROCS "num_processors" -#define DIM_NUM_PROCS_F "num_procs_file" -#define DIM_NUM_NODES_GLOBAL "num_nodes_global" -#define DIM_NUM_ELEMS_GLOBAL "num_elems_global" -#define DIM_NUM_NS_GLOBAL "num_ns_global" -#define DIM_NUM_SS_GLOBAL "num_ss_global" -#define DIM_NUM_ELBLK_GLOBAL "num_el_blk_global" -#define DIM_NUM_N_CMAPS "num_n_cmaps" -#define DIM_NUM_E_CMAPS "num_e_cmaps" -#define DIM_NCNT_CMAP "ncnt_cmap" -#define DIM_ECNT_CMAP "ecnt_cmap" - -enum ex__element_type { - EX_EL_UNK = -1, /**< unknown entity */ - EX_EL_NULL_ELEMENT = 0, - EX_EL_TRIANGLE = 1, /**< Triangle entity */ - EX_EL_QUAD = 2, /**< Quad entity */ - EX_EL_HEX = 3, /**< Hex entity */ - EX_EL_WEDGE = 4, /**< Wedge entity */ - EX_EL_TETRA = 5, /**< Tetra entity */ - EX_EL_TRUSS = 6, /**< Truss entity */ - EX_EL_BEAM = 7, /**< Beam entity */ - EX_EL_SHELL = 8, /**< Shell entity */ - EX_EL_SPHERE = 9, /**< Sphere entity */ - EX_EL_CIRCLE = 10, /**< Circle entity */ - EX_EL_TRISHELL = 11, /**< Triangular Shell entity */ - EX_EL_PYRAMID = 12 /**< Pyramid entity */ -}; -typedef enum ex__element_type ex__element_type; - -/* Internal structure declarations */ - -struct ex__file_item -{ - int file_id; - nc_type netcdf_type_code; - int int64_status; - int maximum_name_length; - int time_varid; /* Store to avoid lookup each timestep */ - unsigned int assembly_count; - unsigned int blob_count; - unsigned int - compression_algorithm : 2; /**< GZIP/ZLIB, SZIP, more may be supported by NetCDF soon */ - unsigned int compression_level : 6; /**< 0 (disabled) to 9 (maximum) compression level for - gzip, 4..32 and even for szip; NetCDF-4 only */ - unsigned int user_compute_wordsize : 1; /**< 0 for 4 byte or 1 for 8 byte reals */ - unsigned int shuffle : 1; /**< 1 true, 0 false */ - unsigned int - file_type : 2; /**< 0 - classic, 1 -- 64 bit classic, 2 --NetCDF4, 3 --NetCDF4 classic */ - unsigned int is_write : 1; /**< for output or append */ - unsigned int is_parallel : 1; /**< 1 true, 0 false */ - unsigned int is_hdf5 : 1; /**< 1 true, 0 false */ - unsigned int is_pnetcdf : 1; /**< 1 true, 0 false */ - unsigned int has_nodes : 1; /**< for input only at this time */ - unsigned int has_edges : 1; /**< for input only at this time */ - unsigned int has_faces : 1; /**< for input only at this time */ - unsigned int has_elems : 1; /**< for input only at this time */ - struct ex__file_item *next; -}; - -struct ex__elem_blk_parm -{ - char elem_type[33]; - int64_t elem_blk_id; - int64_t num_elem_in_blk; - int num_nodes_per_elem; - int num_sides; - int num_nodes_per_side[6]; - int num_attr; - int64_t elem_ctr; - ex__element_type elem_type_val; -}; - -/* Used in exo_jack.c for fortran interface */ -enum ex__coordinate_frame_type { - EX_CF_RECTANGULAR = 1, - EX_CF_CYLINDRICAL = 2, - EX_CF_SPHERICAL = 3 -}; -typedef enum ex__coordinate_frame_type ex__coordinate_frame_type; - -struct ex__list_item -{ /* for use with ex_get_file_item */ - int exo_id; - int value; - struct ex__list_item *next; -}; - -struct ex__obj_stats -{ - int64_t *id_vals; - int *stat_vals; - size_t num; - int exoid; - char valid_ids; - char valid_stat; - char sequential; - struct ex__obj_stats *next; -}; - -#ifndef EXODUS_EXPORT -#define EXODUS_EXPORT extern -#endif /* EXODUS_EXPORT */ - -EXODUS_EXPORT void ex__iqsort(int v[], int iv[], size_t N); -EXODUS_EXPORT void ex__iqsort64(int64_t v[], int64_t iv[], int64_t N); - -EXODUS_EXPORT char *ex__catstr(const char * /*string*/, int /*num*/); -EXODUS_EXPORT char *ex__catstr2(const char * /*string1*/, int /*num1*/, const char * /*string2*/, - int /*num2*/); -EXODUS_EXPORT char *ex__dim_num_entries_in_object(ex_entity_type /*obj_type*/, int /*idx*/); -EXODUS_EXPORT char *ex__dim_num_objects(ex_entity_type obj_type); -EXODUS_EXPORT char *ex__name_var_of_object(ex_entity_type /*obj_type*/, int /*i*/, int /*j*/); -EXODUS_EXPORT char *ex__name_red_var_of_object(ex_entity_type /*obj_type*/, int /*indx*/); -EXODUS_EXPORT char *ex__name_of_map(ex_entity_type /*map_type*/, int /*map_index*/); - -EXODUS_EXPORT int ex__conv_init(int exoid, int *comp_wordsize, int *io_wordsize, int file_wordsize, - int int64_status, bool is_parallel, bool is_hdf5, bool is_pnetcdf, - bool is_write); - -EXODUS_EXPORT void ex__conv_exit(int exoid); - -EXODUS_EXPORT nc_type nc_flt_code(int exoid); -EXODUS_EXPORT int ex__comp_ws(int exoid); -EXODUS_EXPORT int ex__get_cpu_ws(void); -EXODUS_EXPORT int ex__is_parallel(int exoid); - -EXODUS_EXPORT struct ex__list_item **ex__get_counter_list(ex_entity_type obj_type); -EXODUS_EXPORT int ex__get_file_item(int /*exoid*/, struct ex__list_item **/*list_ptr*/); -EXODUS_EXPORT int ex__inc_file_item(int /*exoid*/, struct ex__list_item **/*list_ptr*/); -EXODUS_EXPORT void ex__rm_file_item(int /*exoid*/, struct ex__list_item ** /*list_ptr*/); - -extern struct ex__obj_stats *exoII_eb; -extern struct ex__obj_stats *exoII_ed; -extern struct ex__obj_stats *exoII_fa; -extern struct ex__obj_stats *exoII_ns; -extern struct ex__obj_stats *exoII_es; -extern struct ex__obj_stats *exoII_fs; -extern struct ex__obj_stats *exoII_ss; -extern struct ex__obj_stats *exoII_els; -extern struct ex__obj_stats *exoII_em; -extern struct ex__obj_stats *exoII_edm; -extern struct ex__obj_stats *exoII_fam; -extern struct ex__obj_stats *exoII_nm; - -struct ex__file_item *ex__find_file_item(int exoid); -struct ex__file_item *ex__add_file_item(int exoid); -struct ex__obj_stats *ex__get_stat_ptr(int exoid, struct ex__obj_stats **obj_ptr); - -EXODUS_EXPORT void ex__rm_stat_ptr(int exoid, struct ex__obj_stats **obj_ptr); - -EXODUS_EXPORT void ex__set_compact_storage(int exoid, int varid); -EXODUS_EXPORT void ex__compress_variable(int exoid, int varid, int type); -EXODUS_EXPORT int ex__id_lkup(int exoid, ex_entity_type id_type, ex_entity_id num); -EXODUS_EXPORT int ex__check_valid_file_id( - int exoid, const char *func); /** Return fatal error if exoid does not refer to valid file */ -EXODUS_EXPORT int ex__check_multiple_open(const char *path, int mode, const char *func); -EXODUS_EXPORT int ex__check_file_type(const char *path, int *type); -EXODUS_EXPORT char *ex__canonicalize_filename(const char *path); -EXODUS_EXPORT int ex__get_dimension(int exoid, const char *DIMENSION, const char *label, - size_t *count, int *dimid, const char *routine); - -EXODUS_EXPORT int ex__get_nodal_var(int exoid, int time_step, int nodal_var_index, - int64_t num_nodes, void *nodal_var_vals); - -EXODUS_EXPORT int ex__put_nodal_var(int exoid, int time_step, int nodal_var_index, - int64_t num_nodes, const void *nodal_var_vals); - -EXODUS_EXPORT int ex__get_nodal_var_time(int exoid, int nodal_var_index, int64_t node_number, - int beg_time_step, int end_time_step, - void *nodal_var_vals); - -EXODUS_EXPORT int ex__get_partial_nodal_var(int exoid, int time_step, int nodal_var_index, - int64_t start_node, int64_t num_nodes, void *var_vals); - -EXODUS_EXPORT int ex__put_partial_nodal_var(int exoid, int time_step, int nodal_var_index, - int64_t start_node, int64_t num_nodes, - const void *nodal_var_vals); -EXODUS_EXPORT int ex__get_glob_vars(int exoid, int time_step, int num_glob_vars, - void *glob_var_vals); - -EXODUS_EXPORT int ex__get_glob_var_time(int exoid, int glob_var_index, int beg_time_step, - int end_time_step, void *glob_var_vals); - -EXODUS_EXPORT int ex__get_name(int exoid, int varid, size_t index, char *name, int name_size, - ex_entity_type obj_type, const char *routine); -EXODUS_EXPORT int ex__get_names(int exoid, int varid, size_t num_entity, char **names, - ex_entity_type obj_type, const char *routine); -EXODUS_EXPORT int ex__put_name(int exoid, int varid, size_t index, const char *name, - ex_entity_type obj_type, const char *subtype, const char *routine); -EXODUS_EXPORT int ex__put_names(int exoid, int varid, size_t num_entity, char *const *names, - ex_entity_type obj_type, const char *subtype, const char *routine); -EXODUS_EXPORT void ex__trim(char *name); -EXODUS_EXPORT void ex__update_max_name_length(int exoid, int length); -EXODUS_EXPORT int ex__leavedef(int exoid, /* NemesisI file ID */ - const char *call_rout /* Name of calling function */ - ); - -EXODUS_EXPORT int ex__check_version(int run_version); -EXODUS_EXPORT int ex__handle_mode(unsigned int my_mode, int is_parallel, int run_version); -EXODUS_EXPORT int ex__populate_header(int exoid, const char *path, int my_mode, int is_parallel, - int *comp_ws, int *io_ws); - -EXODUS_EXPORT int ex__get_block_param(int exoid, ex_entity_id id, int ndim, - struct ex__elem_blk_parm *elem_blk_parm); - -EXODUS_EXPORT int ex__get_file_type(int exoid, char *ftype); - -EXODUS_EXPORT int ex__put_nemesis_version(int exoid); - -EXODUS_EXPORT int ex__put_homogenous_block_params(int exoid, size_t block_count, - const struct ex_block *blocks); - -EXODUS_EXPORT int ne__check_file_version(int exoid); - -EXODUS_EXPORT int ne__id_lkup(int exoid, /* NetCDF/Exodus file ID */ - const char *ne_var_name, /* Nemesis variable name */ - int64_t *idx, /* index variable for variable, length 2 */ - ex_entity_id ne_var_id /* NetCDF variable ID */ -); - -/** - * For output databases, the maximum length of any entity, variable, - * property, attribute, or coordinate name to be written (not - * including the NULL terminator). If a name is longer than this - * value, a warning message will be output to stderr and the name - * will be truncated. Must be set (via call to - * ex_set_max_name_length()(exoid, int len) prior to calling ex_create(). - * - * For input databases, the size of the name arrays that the client - * code will be passing to API routines that retrieve names (not - * including the NULL terminator). This defaults to 32 for - * compatibility with older clients. The value used at the time of - * creation of the database can be queried by ex_inquire with the - * #EX_INQ_DB_MAX_ALLOWED_NAME_LENGTH argument. The current value for this - * variable can be queried with #EX_INQ_MAX_READ_NAME_LENGTH argument. - * - * Note that this is a global setting for all databases. If you are - * accessing multiple databases, they will all use the same value. - */ -EXODUS_EXPORT int ex__default_max_name_length; -/*! @} */ - -#ifdef __cplusplus -} -#endif diff --git a/packages/seacas/libraries/exodus/include/exodusII_par.h b/packages/seacas/libraries/exodus/include/exodusII_par.h deleted file mode 100644 index 736959c..0000000 --- a/packages/seacas/libraries/exodus/include/exodusII_par.h +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright(C) 1999-2020, 2022 National Technology & Engineering Solutions - * of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with - * NTESS, the U.S. Government retains certain rights in this software. - * - * See packages/seacas/LICENSE for details - */ -/* - * NOTE: Contents of this include file have been moved to exodusII.h - * Retained here just for backward compatibility - */ -#pragma once - -#include "exodusII.h" - -#if !defined(PARALLEL_AWARE_EXODUS) -#error "Parallel-aware exodusII_par.h included in non-parallel context" -#endif diff --git a/packages/seacas/libraries/exodus/include/exodusII_test.h b/packages/seacas/libraries/exodus/include/exodusII_test.h deleted file mode 100644 index 19624c5..0000000 --- a/packages/seacas/libraries/exodus/include/exodusII_test.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright(C) 1999-2020, 2022 National Technology & Engineering Solutions - * of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with - * NTESS, the U.S. Government retains certain rights in this software. - * - * See packages/seacas/LICENSE for details - */ -#pragma once - -#include "exodusII.h" - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -int cCreateEdgeFace(int, char *[]); -int cReadEdgeFace(int, char *[]); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -inline int CreateEdgeFace(int argc, char *argv[]) { return cCreateEdgeFace(argc, argv); } -inline int ReadEdgeFace(int argc, char *argv[]) { return cReadEdgeFace(argc, argv); } diff --git a/packages/seacas/libraries/exodus/include/nemesis-to-exodus-api-mapping.md b/packages/seacas/libraries/exodus/include/nemesis-to-exodus-api-mapping.md deleted file mode 100644 index 63f760a..0000000 --- a/packages/seacas/libraries/exodus/include/nemesis-to-exodus-api-mapping.md +++ /dev/null @@ -1,113 +0,0 @@ -\page nemesis-mapping Mapping of nemesis API functions to Exodus API functions -The nemesis library was originally an extension to the ExodusII -library which provided routines required to support use of Exodus -databases in a parallel setting; typically with a file-per-processor -usage. - -Since the use of Exodus in parallel executions is now very common, the -Nemesis library routines have been integrated into the Exodus library -API. In most cases, the exodus API function corresponding to a nemesis -API function is obtained by replacing the `ne_` prefix with an `ex_` -prefix. There are a few routines where this results in a name -collision or confusion (e.g. ne_put_version() is ex_put_nemesis_version() since -it would be confusing to call it ex_put_version()). The partial read/write -functions which in nemesis are indicated by a `_n_` in the function -name have been in replaced by `_partial_` (although the corresponding -`ex_*_n_*` function does exist in the deprecated functions). - -The tables below list all Nemesis API functions and the corresponding -Exodus API function. In many cases, the only change needed is -replacing `ne_` by `ex_`, but the routines which were made more -"generic" (e.g. ne_get_n_side_set() and ne_get_n_node_set() directly -map to ex_get_n_side_set() and ex_get_n_node_set() which are -deprecated, so the table below shows the recommended -ex_get_partial_set()) additional arguments are required. - -The nemesis library can still be used since it is still built upon -request and its implementation is simply wrapper routines which -forward all existing nemesis function calls to the appropriate Exodus -function call (with needed argument changes). - -\section initial Initial Information Routines - -Nemesis API | Exodus API -------------------------|------------------------------ -ne_get_init_info | ex_get_init_info() -ne_put_init_info | ex_put_init_info() -ne_get_init_global | ex_get_init_global() -ne_put_init_global | ex_put_init_global() -ne_put_version | ex_put_nemesis_version() - -\section lb Loadbalance Parameter Routines - -Nemesis API | Exodus API -------------------------|------------------------------ -ne_get_loadbal_param | ex_get_loadbal_param() -ne_put_loadbal_param | ex_put_loadbal_param() -ne_put_loadbal_param_cc | ex_put_loadbal_param_cc() - -\section param Nodeset, Sideset & Element Block Global Parameter Routines - -Nemesis API | Exodus API -------------------------|------------------------------ -ne_get_ns_param_global | ex_get_ns_param_global() -ne_put_ns_param_global | ex_put_ns_param_global() -ne_get_ss_param_global | ex_get_ss_param_global() -ne_put_ss_param_global | ex_put_ss_param_global() -ne_get_eb_info_global | ex_get_eb_info_global() -ne_put_eb_info_global | ex_put_eb_info_global() - -\section subset Nodeset, Sideset & Element Block Subset Routines - -Nemesis API | Exodus API -------------------------|------------------------------ -ne_get_n_side_set | ex_get_partial_set() -ne_put_n_side_set | ex_put_partial_set() -ne_get_n_side_set_df | ex_get_partial_set_dist_fact() -ne_put_n_side_set_df | ex_put_partial_set_dist_fact() -ne_get_n_node_set | ex_get_partial_set() -ne_put_n_node_set | ex_put_partial_set() -ne_get_n_node_set_df | ex_get_partial_set_dist_fact() -ne_put_n_node_set_df | ex_put_partial_set_dist_fact() -ne_get_n_coord | ex_get_partial_coord() -ne_put_n_coord | ex_put_partial_coord() -ne_get_n_elem_conn | ex_get_partial_conn() -ne_put_n_elem_conn | ex_put_partial_conn() -ne_get_n_elem_attr | ex_get_partial_attr() -ne_put_n_elem_attr | ex_put_partial_attr() -ne_get_elem_type | ex_get_elem_type() - -\section variable Variable Routines - -Nemesis API | Exodus API -------------------------|------------------------------ -ne_get_n_elem_var | ex_get_partial_var() -ne_put_elem_var_slab | ex_put_partial_var() -ne_get_n_nodal_var | ex_get_partial_var() -ne_put_nodal_var_slab | ex_put_partial_var() - -\section map Number Map Routines - -Nemesis API | Exodus API -------------------------|------------------------------ -ne_get_n_elem_num_map | ex_get_partial_id_map() -ne_put_n_elem_num_map | ex_put_partial_id_map() -ne_get_n_node_num_map | ex_get_partial_id_map() -ne_put_n_node_num_map | ex_put_partial_id_map() -ne_get_node_map | ex_get_processor_node_maps() -ne_put_node_map | ex_put_processor_node_maps() -ne_get_elem_map | ex_get_processor_elem_maps() -ne_put_elem_map | ex_put_processor_elem_maps() - -\section comm Communications Maps Routines - -Nemesis API | Exodus API -------------------------|------------------------------ -ne_get_cmap_params | ex_get_cmap_params() -ne_put_cmap_params | ex_put_cmap_params() -ne_put_cmap_params_cc | ex_put_cmap_params_cc() -ne_get_node_cmap | ex_get_node_cmap() -ne_put_node_cmap | ex_put_node_cmap() -ne_get_elem_cmap | ex_get_elem_cmap() -ne_put_elem_cmap | ex_put_elem_cmap() -ne_get_idx | ex_get_idx() diff --git a/packages/seacas/libraries/exodus/include/polyhedra.md b/packages/seacas/libraries/exodus/include/polyhedra.md deleted file mode 100644 index b33c9f8..0000000 --- a/packages/seacas/libraries/exodus/include/polyhedra.md +++ /dev/null @@ -1,220 +0,0 @@ -\page polyhedra Polyhedral Element Support -\section poly Storage of 3D arbitrary polyhedra elements in Exodus. - -The 3D polyhedra elements are represented as elements with a variable -number of faces in their connectivity. The faces can either be -regular faces such as quadrilateral or triangles; or they can be -topologically two-dimensional arbitrary polyhedra themselves. - -An arbitrary polyhedra 3D element block will have an element type of -"nfaced" or "NFACED". - -The faces that are used in the connectivity of this block should be -defined in one or more face blocks. If the faces are arbitrary -polyhedra, then they will have a face type of "nsided" or "NSIDED". - -An annotated example of defining an arbitrary polyhedral element block -consisting of 3 elements is shown below. - -The three elements have the following geometry: - -* Element 1: 5 faces. - * Face 1: triangle with nodes 5, 6, 8 - * Face 2: triangle with nodes 2, 1, 4 - * Face 3: quadrilateral with nodes 6, 2, 4, 8 - * Face 4: quadrilateral with nodes 8, 4, 1, 5 - * Face 5: quadrilateral with nodes 1, 2, 6, 5 -* Element 2: 5 faces. - * Face 6: triangle with nodes 5, 8, 7 - * Face 7: triangle with nodes 1, 3, 4 - * Face 8: quadrilateral with nodes 7, 8, 4, 3 - * Face 9: quadrilateral with nodes 7, 3, 1, 5 - * Face 4: quadrilateral with nodes 8, 4, 1, 5 (shared with element 1) -* Element 3: 7 faces. - * Face 8: quadrilateral with nodes 7, 8, 4, 3 (shared with element 2) - * Face 10: pentagonal with nodes 8, 4, 14, 10, 12 - * Face 11: pentagonal with nodes 7, 11, 9, 13, 3 - * Face 12: quadrilateral with nodes 7, 8, 12, 11 - * Face 13: quadrilateral with nodes 11, 12, 10, 9 - * Face 14: quadrilateral with nodes 9, 10, 14, 13 - * Face 15: quadrilateral with nodes 12, 14, 4, 3 - -The Exodus model is created via the following calls: - -* Output the initial information. Since the model contains faces and - a face block, the "extended" version of the `ex_put_init_ext()` call must be used: - ~~~~C - ex_init_params par; - ex_copy_string(par.title, "This is the title", MAX_LINE_LENGTH + 1); - par.num_dim = 3; - par.num_nodes = 14; - par.num_edge = 0; - par.num_edge_blk = 0; - par.num_face = 15; - par.num_face_blk = 1; - par.num_elem = 3; - par.num_elem_blk = 1; - par.num_node_sets = 0; - par.num_edge_sets = 0; - par.num_face_sets = 0; - par.num_side_sets = 0; - par.num_elem_sets = 0; - par.num_node_maps = 0; - par.num_edge_maps = 0; - par.num_face_maps = 0; - par.num_elem_maps = 0; - - ex_put_init_ext (exoid, &par); - ~~~~ - -* Coordinate output is normal... -* Define the face block. - ~~~~C - block_name = "face_block_1"; - num_face_in_block[0] = 15; - num_total_nodes_per_blk[0] = 58; - block_id = 10; - - ex_put_block (exoid, EX_FACE_BLOCK, block_id, "nsided", - num_face_in_block[0], - num_total_nodes_per_blk[0], - 0, 0, 0); - ex_put_name(exoid, EX_FACE_BLOCK, block_id, block_name); - ~~~~ - -* Output the face connectivity for "face_block_1". - The data for the face connectivity is listed above; a portion is shown below... - ~~~~C - connect = (int *) calloc(num_total_nodes_per_blk[0], sizeof(int)); - i = 0 - connect[i++] = 5; - connect[i++] = 6; - connect[i++] = 8; /* connectivity of face 1 of element 1 */ - - connect[i++] = 2; - connect[i++] = 1; - connect[i++] = 4; /* face 2 of element 1 */ - - connect[i++] = 6; - connect[i++] = 2; - connect[i++] = 4; - connect[i++] = 8; /* face 3 of element 1 */ - - connect[i++] = 8; - connect[i++] = 4; - connect[i++] = 1; - connect[i++] = 5; /* face 4 of element 1 */ - - connect[i++] = 1; - connect[i++] = 2; - connect[i++] = 6; - connect[i++] = 5; /* face 5 of element 1 */ - - connect[i++] = 5; - connect[i++] = 8; - connect[i++] = 7; /* connectivity of face 1 of element 2 */ - - ... and so on.... - assert(i == num_total_nodes_per_blk[0]); - - ex_put_conn (exoid, EX_FACE_BLOCK, block_id, connect, NULL, NULL); - ~~~~ - -* Output the number of nodes per face count for "face_block_1": - ~~~~C - j = 0; - nnpe[ 1] = 3; /* Face 1 */ - nnpe[ 2] = 3; - nnpe[ 3] = 4; - nnpe[ 4] = 4; - nnpe[ 5] = 4; - nnpe[ 6] = 3; - nnpe[ 7] = 3; - nnpe[ 8] = 4; - nnpe[ 9] = 4; - nnpe[10] = 5; - nnpe[11] = 5; - nnpe[12] = 4; - nnpe[13] = 4; - nnpe[14] = 4; - nnpe[15] = 4; - - ex_put_entity_count_per_polyhedra(exoid, EX_FACE_BLOCK, block_id, nnpe); - ~~~~ - -* The face block is now fully defined; now define the nfaced element - block which uses these faces. - ~~~~C - block_name = "nfaced_1"; - - num_elem_in_block = 3; - num_total_faces_per_blk = 5 + 5 + 7; - block_id = 10; - - ex_put_block (exoid, EX_ELEM_BLOCK, block_id, "nfaced", - num_elem_in_block, - 0, /* nodes */ - 0, /* edges */ - num_total_faces_per_blk, - 0); /* attribute count */ - ex_put_name(exoid, EX_ELEM_BLOCK, block_id, block_name); - ~~~~ - - In the `ex_put_block()` function, the element type is "nfaced". The - connectivity is defined in terms of the faces, so the node and edge - arguments are passed zeros. The nodal connectivity can be defined, - but it isn't required. The face connectivity argument for an - nfaced block is the total number of faces in the connectivity for all - elements in the nfaced block. - -* Write the face connectivity: - ~~~~C - /* write element-face connectivity */ - connect = (int *) calloc(num_total_faces_per_blk, sizeof(int)); - - i = 0; - connect[i++] = 1; - connect[i++] = 2; - connect[i++] = 3; - connect[i++] = 4; - connect[i++] = 5; - - connect[i++] = 4; - connect[i++] = 6; - connect[i++] = 7; - connect[i++] = 8; - connect[i++] = 9; - - connect[i++] = 8; - connect[i++] = 10; - connect[i++] = 11; - connect[i++] = 12; - connect[i++] = 13; - connect[i++] = 14; - connect[i++] = 15; - - assert(i == num_total_faces_per_blk); - ex_put_conn (exoid, EX_ELEM_BLOCK, block_id, NULL, NULL, connect); - ~~~~ - -* Output the number of faces per element count for "nfaced_1": - ~~~~C - nnpe[1] = 5; /* Number of faces per element 1 */ - nnpe[2] = 5; /* Number of faces per element 2 */ - nnpe[3] = 7; /* Number of faces per element 3 */ - - ex_put_entity_count_per_polyhedra(exoid, EX_ELEM_BLOCK, block_id, nnpe); - ~~~~ - -* That's all; the rest of the calls are the same as normal Exodus except: - - * There is a similar `ex_get_entity_count_per_polyhedra()` function for read. - - * The `ex_get_block()` functions return the total number of nodes or - faces for all faces or element for "nfaced" and "nsided" blocks - and not the number per element - -* An example read/write usage is shown in the - [testwt-nfaced.c](../test/testwt-nfaced.c) and [testrd-nfaced](../test/testrd-nfaced.c) files. - -* These changes are in Exodus version v4.93 and later. diff --git a/packages/seacas/libraries/exodus_for/include/exodusII.inc b/packages/seacas/libraries/exodus_for/include/exodusII.inc deleted file mode 100644 index 52cf890..0000000 --- a/packages/seacas/libraries/exodus_for/include/exodusII.inc +++ /dev/null @@ -1,329 +0,0 @@ - ! -*- mode: fortran -*- -! -! Copyright(C) 1999-2020 National Technology & Engineering Solutions -! of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with -! NTESS, the U.S. Government retains certain rights in this software. -! -! See packages/seacas/LICENSE for details -!*************************************************************** -! -! Name: exodusII.inc - Exodus II Application include file -! -! Use this include file to define general Exodus II parameters -! -!***************************************************************************** -! -! Define Exodus functions that return values -! - integer excre,exopen,exlgmd, exinqi - external excre, exopen, exlgmd, exinqi -! -! Define access modes -! - integer EXNOCL,EXCLOB,EXREAD,EXWRIT,EXWRT,EXNORM,EXLARG - integer EXNET4, EXNOSH, EXSHAR - - integer EX_READ,EX_WRITE,EX_NOCLOBBER,EX_CLOBBER,EX_NORMAL_MODEL - integer EX_LARGE_MODEL,EX_NETCDF4,EX_NOSHARE,EX_SHARE - integer EX_NOCLASSIC,EX_MAPS_INT64_DB,EX_IDS_INT64_DB - integer EX_BULK_INT64_DB,EX_ALL_INT64_DB - integer EX_MAPS_INT64_API - integer EX_IDS_INT64_API,EX_BULK_INT64_API,EX_ALL_INT64_API - integer EX_DISKLESS, EX_MMAP, EX_64BIT_OFFSET, EX_64BIT_DATA - - integer EX_OPT_MAX_NAME_LENGTH - integer EX_OPT_COMPRESSION_TYPE - integer EX_OPT_COMPRESSION_LEVEL - integer EX_OPT_COMPRESSION_SHUFFLE - integer EX_OPT_INTEGER_SIZE_API - integer EX_OPT_INTEGER_SIZE_DB - - parameter (EXWRIT = 1) ! EXWRIT - File open for write - parameter (EXWRT = 1) ! EXWRT - File open for write (alternate to EXWRIT) - parameter (EXREAD = 2) ! EXREAD - File open for read - - parameter (EXNOCL = 4) ! EXNOCL - File create with no overwrite (no clobber), default - parameter (EXCLOB = 8) ! EXCLOB - File create with overwrite (clobber) - parameter (EXNORM = 16) ! EXNORM - Disable large model modifications - parameter (EXLARG = 32) ! EXLARG - Large model modifications - parameter (EXNET4 = 64) ! EXNET4 - use the hdf5-based netcdf4 output - parameter (EXNOSH = 128) ! EXNOSH - Do not open netcdf file in "share" mode - parameter (EXSHAR = 256) ! EXSHAR - Do open netcdf file in "share" mode - -! Some of these are repeated from above, but use the same name as the C/C++ versions... - - parameter (EX_READ = 0) !ex_open(): open file for reading (default) - parameter (EX_WRITE = 1) ! ex_open(): open existing file for appending. - - parameter (EX_NOCLOBBER = 4) ! Don't overwrite existing database, default - parameter (EX_CLOBBER = 8) ! Overwrite existing database if it exists - parameter (EX_NORMAL_MODEL = 16) ! disable mods that permit storage of larger models - parameter (EX_LARGE_MODEL = 32) ! enable mods that permit storage of larger models - parameter (EX_NETCDF4 = 64) ! use the hdf5-based netcdf4 output - parameter (EX_64BIT_OFFSET = 32) ! enable mods that permit storage of larger models - parameter (EX_64BIT_DATA =4194304) ! CDF-5 format: classic model but 64 bit dimensions and sizes - parameter (EX_NOSHARE = 128) ! Do not open netcdf file in "share" mode - parameter (EX_SHARE = 256) ! Do open netcdf file in "share" mode - parameter (EX_NOCLASSIC = 512) ! Do not force netcdf to classic mode in netcdf4 mode - parameter (EX_DISKLESS =1048576) ! Experimental - parameter (EX_MMAP =2097152) ! Experimental - -! Need to distinguish between storage on database (DB in name) and -! passed through the API functions (API in name). - - parameter (EX_MAPS_INT64_DB = 1024) ! All maps (id, order, ...) store int64_t values - parameter (EX_IDS_INT64_DB = 2048) ! All entity ids (sets, blocks, maps) are int64_t values - parameter (EX_BULK_INT64_DB = 4096) ! All integer bulk data (local indices, counts, maps); not ids - parameter (EX_ALL_INT64_DB = 1024+2048+4096) ! All of the above... - - parameter (EX_MAPS_INT64_API= 8192) ! All maps (id, order, ...) store int64_t values - parameter (EX_IDS_INT64_API = 16384) ! All entity ids (sets, blocks, maps) are int64_t values - parameter (EX_BULK_INT64_API= 32768) ! All integer bulk data (local indices, counts, maps); not ids - parameter (EX_ALL_INT64_API = 8192+16384+32768) ! All of the above... - -! -! -- For EXSETOPT Calls - parameter (EX_OPT_MAX_NAME_LENGTH = 1) - parameter (EX_OPT_COMPRESSION_TYPE = 2) !Currently not used. GZip by default - parameter (EX_OPT_COMPRESSION_LEVEL = 3) ! 0 (disabled/fastest) ... 9 (best/slowest) - parameter (EX_OPT_COMPRESSION_SHUFFLE = 4) ! 0 (disabled); 1 (enabled) - parameter (EX_OPT_INTEGER_SIZE_API = 5) ! See *_INT64_* values above - parameter (EX_OPT_INTEGER_SIZE_DB = 6) ! (query only) -! -! --INQUIRE FLAGS - integer EX_INQ_FILE_TYPE, EX_INQ_API_VERS, EX_INQ_DB_VERS - integer EX_INQ_TITLE, EX_INQ_DIM, EX_INQ_NODES - integer EX_INQ_ELEM, EX_INQ_ELEM_BLK, EX_INQ_NODE_SETS - integer EX_INQ_NS_NODE_LEN, EX_INQ_SIDE_SETS - integer EX_INQ_SS_NODE_LEN, EX_INQ_SS_ELEM_LEN, EX_INQ_QA - integer EX_INQ_INFO, EX_INQ_TIME, EX_INQ_EB_PROP - integer EX_INQ_NS_PROP, EX_INQ_SS_PROP, EX_INQ_NS_DF_LEN - integer EX_INQ_SS_DF_LEN, EX_INQ_LIB_VERS - integer EX_INQ_EM_PROP, EX_INQ_NM_PROP, EX_INQ_ELEM_MAP - integer EX_INQ_NODE_MAP, EX_INQ_EDGE - integer EX_INQ_EDGE_BLK, EX_INQ_EDGE_SETS, EX_INQ_ES_LEN - integer EX_INQ_ES_DF_LEN, EX_INQ_EDGE_PROP - integer EX_INQ_ES_PROP, EX_INQ_FACE, EX_INQ_FACE_BLK - integer EX_INQ_FACE_SETS, EX_INQ_FS_LEN - integer EX_INQ_FS_DF_LEN, EX_INQ_FACE_PROP, EX_INQ_FS_PROP - integer EX_INQ_ELEM_SETS, EX_INQ_ELS_LEN - integer EX_INQ_ELS_DF_LEN, EX_INQ_ELS_PROP, EX_INQ_EDGE_MAP - integer EX_INQ_FACE_MAP, EX_INQ_COORD_FRAMES - integer EX_INQ_DB_MAX_ALLOWED_NAME_LENGTH - integer EX_INQ_DB_MAX_USED_NAME_LENGTH - integer EX_INQ_MAX_READ_NAME_LENGTH - integer EX_INQ_DB_FLOAT_SIZE, EX_INQ_NUM_CHILD_GROUPS - integer EX_INQ_GROUP_PARENT, EX_INQ_GROUP_ROOT - integer EX_INQ_GROUP_NAME_LEN, EX_INQ_GROUP_NAME - integer EX_INQ_FULL_GROUP_NAME_LEN, EX_INQ_FULL_GROUP_NAME - integer EX_INQ_THREADSAFE, EX_INQ_INVALID - - parameter (EX_INQ_FILE_TYPE = 1) ! inquire EXODUS file type - parameter (EX_INQ_API_VERS = 2) ! inquire API version number - parameter (EX_INQ_DB_VERS = 3) ! inquire database version number - parameter (EX_INQ_TITLE = 4) ! inquire database title - parameter (EX_INQ_DIM = 5) ! inquire number of dimensions - parameter (EX_INQ_NODES = 6) ! inquire number of nodes - parameter (EX_INQ_ELEM = 7) ! inquire number of elements - parameter (EX_INQ_ELEM_BLK = 8) ! inquire number of element blocks - parameter (EX_INQ_NODE_SETS = 9) ! inquire number of node sets - parameter (EX_INQ_NS_NODE_LEN = 10) ! inquire length of node set node list - parameter (EX_INQ_SIDE_SETS = 11) ! inquire number of side sets - parameter (EX_INQ_SS_NODE_LEN = 12) ! inquire length of side set node list - parameter (EX_INQ_SS_ELEM_LEN = 13) ! inquire length of side set element list - parameter (EX_INQ_QA = 14) ! inquire number of QA records - parameter (EX_INQ_INFO = 15) ! inquire number of info records - parameter (EX_INQ_TIME = 16) ! inquire number of time steps in the database - parameter (EX_INQ_EB_PROP = 17) ! inquire number of element block properties - parameter (EX_INQ_NS_PROP = 18) ! inquire number of node set properties - parameter (EX_INQ_SS_PROP = 19) ! inquire number of side set properties - parameter (EX_INQ_NS_DF_LEN = 20) ! inquire length of node set distribution factor list - parameter (EX_INQ_SS_DF_LEN = 21) ! inquire length of side set distribution factor list - parameter (EX_INQ_LIB_VERS = 22) ! inquire API Lib vers number - parameter (EX_INQ_EM_PROP = 23) ! inquire number of element map properties - parameter (EX_INQ_NM_PROP = 24) ! inquire number of node map properties - parameter (EX_INQ_ELEM_MAP = 25) ! inquire number of element maps - parameter (EX_INQ_NODE_MAP = 26) ! inquire number of node maps - parameter (EX_INQ_EDGE = 27) ! inquire number of edges - parameter (EX_INQ_EDGE_BLK = 28) ! inquire number of edge blocks - parameter (EX_INQ_EDGE_SETS = 29) ! inquire number of edge sets - parameter (EX_INQ_ES_LEN = 30) ! inquire length of concat edge set edge list - parameter (EX_INQ_ES_DF_LEN = 31) ! inquire length of concat edge set dist factor list - parameter (EX_INQ_EDGE_PROP = 32) ! inquire number of properties stored per edge block - parameter (EX_INQ_ES_PROP = 33) ! inquire number of properties stored per edge set - parameter (EX_INQ_FACE = 34) ! inquire number of faces - parameter (EX_INQ_FACE_BLK = 35) ! inquire number of face blocks - parameter (EX_INQ_FACE_SETS = 36) ! inquire number of face sets - parameter (EX_INQ_FS_LEN = 37) ! inquire length of concat face set face list - parameter (EX_INQ_FS_DF_LEN = 38) ! inquire length of concat face set dist factor list - parameter (EX_INQ_FACE_PROP = 39) ! inquire number of properties stored per face block - parameter (EX_INQ_FS_PROP = 40) ! inquire number of properties stored per face set - parameter (EX_INQ_ELEM_SETS = 41) ! inquire number of element sets - parameter (EX_INQ_ELS_LEN = 42) ! inquire length of concat element set element list - parameter (EX_INQ_ELS_DF_LEN = 43) ! inquire length of concat element set dist factor list - parameter (EX_INQ_ELS_PROP = 44) ! inquire number of properties stored per elem set - parameter (EX_INQ_EDGE_MAP = 45) ! inquire number of edge maps - parameter (EX_INQ_FACE_MAP = 46) ! inquire number of face maps - parameter (EX_INQ_COORD_FRAMES = 47) ! inquire number of coordinate frames - parameter (EX_INQ_DB_MAX_ALLOWED_NAME_LENGTH = 48) !inquire size of MAX_NAME_LENGTH dimension on database - parameter (EX_INQ_DB_MAX_USED_NAME_LENGTH = 49) ! inquire size of MAX_NAME_LENGTH dimension on database - parameter (EX_INQ_MAX_READ_NAME_LENGTH = 50) ! inquire client-specified max size of returned names - parameter (EX_INQ_DB_FLOAT_SIZE = 51) ! inquire size of floating-point values stored on database - parameter (EX_INQ_NUM_CHILD_GROUPS = 52) ! inquire number of groups contained in this (exoid) group - parameter (EX_INQ_GROUP_PARENT = 53) ! inquire id of parent of this (exoid) group; returns exoid if at root - parameter (EX_INQ_GROUP_ROOT = 54) ! inquire id of root group "/" of this (exoid) group; returns exoid if at root - parameter (EX_INQ_GROUP_NAME_LEN = 55) ! inquire length of name of group exoid - parameter (EX_INQ_GROUP_NAME = 56) ! inquire name of group exoid. "/" returned for root group - parameter (EX_INQ_FULL_GROUP_NAME_LEN = 57) ! inquire length of full path name of this (exoid) group - parameter (EX_INQ_FULL_GROUP_NAME = 58) ! inquire full "/"-separated path name of this (exoid) group - parameter (EX_INQ_THREADSAFE = 59) ! Returns 1 if library is thread-safe; 0 otherwise - parameter (EX_INQ_INVALID = -1) - - integer EXTYPE, EXVERS, EXDBVR, EXTITL, EXDIM, EXNODE - integer EXELEM, EXELBL, EXNODS, EXSIDS, EXQA, EXINFO - integer EXTIMS, EXSSNL, EXSSEL, EXNSNL, EXNEBP, EXNNSP - integer EXNSSP, EXNSDF, EXSSDF, EXLBVR, EXNEMP, EXNNMP - integer EXNEM, EXNNM, EXNEDG, EXNEDB, EXNEDS, EXESL - integer EXESDL, EXEDBP, EXEDSP, EXNFAC, EXNFB , EXNFS - integer EXFSL , EXFSDL, EXFABP, EXFASP, EXNELS, EXELSL - integer EXELSD, EXELSP, EXNEDM, EXNFAM, EXNCF, EXDBMXALNM - integer EXDBMXUSNM, EXMXRDNM - -! - parameter (EXTYPE = 1) ! -- inquire EXODUS II file type - parameter (EXVERS = 2) ! -- inquire API version number - parameter (EXDBVR = 3) ! -- inquire database version number - parameter (EXTITL = 4) ! -- inquire database title - parameter (EXDIM = 5) ! -- inquire number of dimensions - parameter (EXNODE = 6) ! -- inquire number of nodes - parameter (EXELEM = 7) ! -- inquire number of elements - parameter (EXELBL = 8) ! -- inquire number of element blocks - parameter (EXNODS = 9) ! -- inquire number of node sets - parameter (EXNSNL = 10) ! -- inquire length of node set node list - parameter (EXSIDS = 11) ! -- inquire number of side sets - parameter (EXSSNL = 12) ! -- inquire length of side set node list - parameter (EXSSEL = 13) ! -- inquire length of side set element list - parameter (EXQA = 14) ! -- inquire number of QA records - parameter (EXINFO = 15) ! -- inquire number of info records - parameter (EXTIMS = 16) ! -- inquire number of time steps in the database - parameter (EXNEBP = 17) ! -- inquire number of element block properties - parameter (EXNNSP = 18) ! -- inquire number of node set properties - parameter (EXNSSP = 19) ! -- inquire number of side set properties - parameter (EXNSDF = 20) ! -- inquire length of node set distribution factor list - parameter (EXSSDF = 21) ! -- inquire length of side set distribution factor list - parameter (EXLBVR = 22) ! -- inquire API Lib vers number - parameter (EXNEMP = 23) ! -- inquire number of element map properties - parameter (EXNNMP = 24) ! -- inquire number of node map properties - parameter (EXNEM = 25) ! -- inquire number of element maps - parameter (EXNNM = 26) ! -- inquire number of node maps - parameter (EXNEDG = 27) ! -- inquire number of edges - parameter (EXNEDB = 28) ! -- inquire number of edge blocks - parameter (EXNEDS = 29) ! -- inquire number of edge sets - parameter (EXESL = 30) ! -- inquire length of concat edge set edge list - parameter (EXESDL = 31) ! -- inquire length of concat edge set dist factor list - parameter (EXEDBP = 32) ! -- inquire number of properties stored per edge block - parameter (EXEDSP = 33) ! -- inquire number of properties stored per edge set - Parameter (EXNFAC = 34) ! -- inquire number of faces - parameter (EXNFB = 35) ! -- inquire number of face blocks - parameter (EXNFS = 36) ! -- inquire number of face sets - parameter (EXFSL = 37) ! -- inquire length of concat face set face list - parameter (EXFSDL = 38) ! -- inquire length of concat face set dist factor list - parameter (EXFABP = 39) ! -- inquire number of properties stored per face block - parameter (EXFASP = 40) ! -- inquire number of properties stored per face set - parameter (EXNELS = 41) ! -- inquire number of element sets - parameter (EXELSL = 42) ! -- inquire length of concat element set element list - parameter (EXELSD = 43) ! -- inquire length of concat element set dist factor list - parameter (EXELSP = 44) ! -- inquire number of properties stored per elem set - parameter (EXNEDM = 45) ! -- inquire number of edge maps - parameter (EXNFAM = 46) ! -- inquire number of face maps - parameter (EXNCF = 47) ! -- inquire number of coordinate frames - parameter (EXDBMXALNM = 48)! -- inquire size of MAX_NAME_LENGTH dimension on database - parameter (EXDBMXUSNM = 49)! -- inquire max size of any name existing on database - parameter (EXMXRDNM = 50) ! -- inquire user-specified max size of names returned; truncated if longer -! -! Define limits -! - integer MXSTLN, MXLNLN, MXNAME -! MXSTLN - Maximum string length: used for store strings - parameter (MXSTLN = 32) -! MXLNLN - Maximum line string length - parameter (MXLNLN = 80) -! MXNAME - Maximum possible length of a name (due to netcdf NC_MAX_NAME) - parameter (MXNAME = 256) -! -! properties -! - integer EXEBLK, EXNSET, EXSSET, EXEMAP, EXNMAP - - parameter (EXEBLK = 1) ! EXEBLK - element block property code - parameter (EXNSET = 2) ! EXNSPR - node set property code - parameter (EXSSET = 3) ! EXSSPR - side set property code - parameter (EXEMAP = 4) ! EXEMAP - element map property code - parameter (EXNMAP = 5) ! EXNMAP - node map property code - -! Define values for type -! - - integer EX_NODAL, EX_NODE_BLOCK, EX_NODE_SET, EX_EDGE_BLOCK - integer EX_EDGE_SET, EX_FACE_BLOCK, EX_FACE_SET, EX_ELEM_BLOCK - integer EX_ELEM_SET, EX_SIDE_SET, EX_ELEM_MAP, EX_NODE_MAP - integer EX_EDGE_MAP, EX_FACE_MAP, EX_GLOBAL, EX_COORDINATE - integer EX_INVALID - - parameter (EX_NODAL = 14) ! nodal "block" for variables - parameter (EX_NODE_BLOCK = 14) ! alias for EX_NODAL - parameter (EX_NODE_SET = 2) ! node set property code - parameter (EX_EDGE_BLOCK = 6) ! edge block property code - parameter (EX_EDGE_SET = 7) ! edge set property code - parameter (EX_FACE_BLOCK = 8) ! face block property code - parameter (EX_FACE_SET = 9) ! face set property code - parameter (EX_ELEM_BLOCK = 1) ! element block property code - parameter (EX_ELEM_SET = 10) ! face set property code - parameter (EX_SIDE_SET = 3) ! side set property code - - parameter (EX_ELEM_MAP = 4) ! element map property code - parameter (EX_NODE_MAP = 5) ! node map property code - parameter (EX_EDGE_MAP = 11) ! edge map property code - parameter (EX_FACE_MAP = 12) ! face map property code - - parameter (EX_GLOBAL = 13) ! global "block" for variables - parameter (EX_COORDINATE = 15) ! kluge so some internal wrapper functions work - parameter (EX_INVALID = -1) -! -! Define options codes -! - integer EXVRBS, EXDEBG, EXABRT - - parameter (EXVRBS = 1) ! EXVRBS - verbose mode message flag - parameter (EXDEBG = 2) ! EXDEBG - debug mode message flag - parameter (EXABRT = 4) ! EXABRT - abort mode flag -! -! Define coordinate frames -! - integer EXCFREC, EXCFCYL, EXCFSPH - parameter (EXCFREC = 1) ! Rectangular - parameter (EXCFCYL = 2) ! Cylindrical - parameter (EXCFSPH = 3) ! Spherical - -! -! Define error return codes -! - integer EXFATL, EXOK, EXWARN - - parameter (EXFATL = -1) ! EXFATL - fatal error flag def - parameter (EXOK = 0) ! EXOK - no err (success) flag def - parameter (EXWARN = 1) ! EXWARN - warning flag def -! -! Define error return codes and flags -! - integer EXMEMF, EXBFMD, EXBFID, EXBTID, EXBPRM, EXNULL - integer EXPMSG, EXLMSG - - parameter (EXMEMF = 1000) ! EXMEMF - memory allocation failure flag def - parameter (EXBFMD = 1001) ! EXBFMD - wrong file mode - parameter (EXBFID = 1002) ! EXBFID - bad file id def - parameter (EXBTID = 1004) ! EXBTID - id table lookup failed - parameter (EXBPRM = 1005) ! EXBPRM - bad parameter passed - parameter (EXNULL = -1006) ! EXNULL - null entity found - parameter (EXPMSG = -1000) ! EXPMSG - message print code - no error implied - parameter (EXLMSG = -1001) ! EXLMSG - print last error message msg code diff --git a/packages/zoltan/src/include/README b/packages/zoltan/src/include/README deleted file mode 100644 index 6133691..0000000 --- a/packages/zoltan/src/include/README +++ /dev/null @@ -1,65 +0,0 @@ -# @HEADER -# -######################################################################## -# -# Zoltan Toolkit for Load-balancing, Partitioning, Ordering and Coloring -# Copyright 2012 Sandia Corporation -# -# Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, -# the U.S. Government 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: -# -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# -# 2. 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. -# -# 3. Neither the name of the Corporation nor the names of the -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "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 SANDIA CORPORATION OR THE -# 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. -# -# Questions? Contact Karen Devine kddevin@sandia.gov -# Erik Boman egboman@sandia.gov -# -######################################################################## -# -# @HEADER - - -Include files for the Zoltan interface. -Only interface functions and definitions that are application-visible -should be in this directory. - -zoltan.h -- Main include file for all Zoltan functionality. - -zoltan_mem.h -- Interface for Zoltan Memory package. - (Copied from Utilities/Memory/zoltan_mem.h.) - -zoltan_comm.h -- Interface for Zoltan Communication package. - (Copied from Utilities/Communication/zoltan_comm.h.) - -zoltan_dd.h -- Interface for Zoltan Distributed Directory package. - (Copied from Utilities/DDirectory/zoltan_dd.h.) - -zoltan_types.h -- Data types for Zoltan IDs and error codes. - -zoltan_align.h -- Prototype for data alignment functions used by Zoltan. - - diff --git a/packages/zoltan/src/include/Zoltan_config.h.in b/packages/zoltan/src/include/Zoltan_config.h.in deleted file mode 100644 index 2247f39..0000000 --- a/packages/zoltan/src/include/Zoltan_config.h.in +++ /dev/null @@ -1,81 +0,0 @@ -/* src/include/Zoltan_config.h.in. Generated from configure.ac by autoheader. */ - -/* Define to dummy `main' function (if any) required to link to the Fortran - libraries. */ -#undef FC_DUMMY_MAIN - -/* Define if F77 and FC dummy `main' functions are identical. */ -#undef FC_DUMMY_MAIN_EQ_F77 - -/* Define to a macro mangling the given C identifier (in lower and upper - case), which must not contain underscores, for linking with Fortran. */ -#undef FC_FUNC - -/* As FC_FUNC, but for C identifiers containing underscores. */ -#undef FC_FUNC_ - -/* Define if want to build examples */ -#undef HAVE_EXAMPLES - -/* Define if you want to build export makefiles. */ -#undef HAVE_EXPORT_MAKEFILES - -/* Define if want to build with f90interface enabled */ -#undef HAVE_F90INTERFACE - -/* Define if you are using gnumake - this will shorten your link lines. */ -#undef HAVE_GNUMAKE - -/* Define if want to build with gzip enabled */ -#undef ZHAVE_GZIP - -/* define if we want to use MPI */ -#undef HAVE_MPI - -/* Define if want to build with nemesis_exodus enabled */ -#undef HAVE_NEMESIS_EXODUS - -/* Define if want to build with parmetis enabled */ -#undef HAVE_PARMETIS - -/* Define if want to build with patoh enabled */ -#undef HAVE_PATOH - -/* Define if want to build with scotch enabled */ -#undef HAVE_SCOTCH - -/* Define if want to build tests */ -#undef HAVE_TESTS - -/* Define if want to build zoltan-cppdriver */ -#undef HAVE_ZOLTAN_CPPDRIVER - -/* Define if want to build zoltan-examples */ -#undef HAVE_ZOLTAN_EXAMPLES - -/* Define if want to build with octreepartitioning enabled */ -#undef HAVE_ZOLTAN_OCT - -/* Define if want to build zoltan-tests */ -#undef HAVE_ZOLTAN_TESTS - -/* software host will be cygwin */ -#undef HOST_CYGWIN - -/* software host will be linux */ -#undef HOST_LINUX - -/* software host will be solaris */ -#undef HOST_SOLARIS - -/* Define to 1 if your C compiler doesn't accept -c and -o together. */ -#undef NO_MINUS_C_MINUS_O - -/* define if ZOLTAN_ID_TYPE is unsigned int */ -#undef UNSIGNED_INT_GLOBAL_IDS - -/* define if ZOLTAN_ID_TYPE is unsigned long */ -#undef UNSIGNED_LONG_GLOBAL_IDS - -/* define if ZOLTAN_ID_TYPE is unsigned long long */ -#undef UNSIGNED_LONG_LONG_GLOBAL_IDS diff --git a/packages/zoltan/src/include/lbi_const.h b/packages/zoltan/src/include/lbi_const.h deleted file mode 100644 index 68c9223..0000000 --- a/packages/zoltan/src/include/lbi_const.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * @HEADER - * - * *********************************************************************** - * - * Zoltan Toolkit for Load-balancing, Partitioning, Ordering and Coloring - * Copyright 2012 Sandia Corporation - * - * Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, - * the U.S. Government 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: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. Neither the name of the Corporation nor the names of the - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "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 SANDIA CORPORATION OR THE - * 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. - * - * Questions? Contact Karen Devine kddevin@sandia.gov - * Erik Boman egboman@sandia.gov - * - * *********************************************************************** - * - * @HEADER - */ - -#ifndef __LBI_CONST_H -#define __LBI_CONST_H - -#error "ERROR: Use of Zoltan include file lbi_const.h is not supported in Trilinos v11. Update your code to include zoltan.h instead. See instructions at http://www.cs.sandia.gov/Zoltan/Zoltan_FAQ.html" - -#endif /* !__LBI_CONST_H */ diff --git a/packages/zoltan/src/include/zoltan.h b/packages/zoltan/src/include/zoltan.h deleted file mode 100644 index 3a07724..0000000 --- a/packages/zoltan/src/include/zoltan.h +++ /dev/null @@ -1,3436 +0,0 @@ -/* - * @HEADER - * - * *********************************************************************** - * - * Zoltan Toolkit for Load-balancing, Partitioning, Ordering and Coloring - * Copyright 2012 Sandia Corporation - * - * Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, - * the U.S. Government 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: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. Neither the name of the Corporation nor the names of the - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "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 SANDIA CORPORATION OR THE - * 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. - * - * Questions? Contact Karen Devine kddevin@sandia.gov - * Erik Boman egboman@sandia.gov - * - * *********************************************************************** - * - * @HEADER - */ - -#ifndef __ZOLTAN_H -#define __ZOLTAN_H - -#include -#include "zoltan_types.h" -#include "zoltan_align.h" -#include "zoltan_comm.h" -#include "zoltan_mem.h" -#include "zoltan_dd.h" -#include "zoltan_eval.h" - -/* - * Define this prior to #ifdef __cplusplus to avoid a - * compiler warning when compiling C++ on Solaris - */ -typedef void ZOLTAN_VOID_FN(void); - -#ifdef __cplusplus -/* if C++, define the rest of this header file as extern C */ -extern "C" { -#endif - -#define ZOLTAN_VERSION_NUMBER 3.90 - -/***************************************************************************** - * Data types and functions describing the interface between the - * application and Zoltan. - */ - -/***************************************************************************** - * Enumerated type used to indicate which function is to be set by - * ZOLTAN_Set_Fn. - */ - -enum Zoltan_Fn_Type { - ZOLTAN_NUM_EDGES_FN_TYPE, - ZOLTAN_NUM_EDGES_MULTI_FN_TYPE, - ZOLTAN_EDGE_LIST_FN_TYPE, - ZOLTAN_EDGE_LIST_MULTI_FN_TYPE, - ZOLTAN_NUM_GEOM_FN_TYPE, - ZOLTAN_GEOM_MULTI_FN_TYPE, - ZOLTAN_GEOM_FN_TYPE, - ZOLTAN_NUM_OBJ_FN_TYPE, - ZOLTAN_OBJ_LIST_FN_TYPE, - ZOLTAN_FIRST_OBJ_FN_TYPE, - ZOLTAN_NEXT_OBJ_FN_TYPE, - ZOLTAN_NUM_BORDER_OBJ_FN_TYPE, - ZOLTAN_BORDER_OBJ_LIST_FN_TYPE, - ZOLTAN_FIRST_BORDER_OBJ_FN_TYPE, - ZOLTAN_NEXT_BORDER_OBJ_FN_TYPE, - ZOLTAN_PRE_MIGRATE_PP_FN_TYPE, - ZOLTAN_MID_MIGRATE_PP_FN_TYPE, - ZOLTAN_POST_MIGRATE_PP_FN_TYPE, - ZOLTAN_PRE_MIGRATE_FN_TYPE, - ZOLTAN_MID_MIGRATE_FN_TYPE, - ZOLTAN_POST_MIGRATE_FN_TYPE, - ZOLTAN_OBJ_SIZE_FN_TYPE, - ZOLTAN_PACK_OBJ_FN_TYPE, - ZOLTAN_UNPACK_OBJ_FN_TYPE, - ZOLTAN_NUM_COARSE_OBJ_FN_TYPE, - ZOLTAN_COARSE_OBJ_LIST_FN_TYPE, - ZOLTAN_FIRST_COARSE_OBJ_FN_TYPE, - ZOLTAN_NEXT_COARSE_OBJ_FN_TYPE, - ZOLTAN_NUM_CHILD_FN_TYPE, - ZOLTAN_CHILD_LIST_FN_TYPE, - ZOLTAN_CHILD_WEIGHT_FN_TYPE, - ZOLTAN_OBJ_SIZE_MULTI_FN_TYPE, - ZOLTAN_PACK_OBJ_MULTI_FN_TYPE, - ZOLTAN_UNPACK_OBJ_MULTI_FN_TYPE, - ZOLTAN_PART_FN_TYPE, - ZOLTAN_PART_MULTI_FN_TYPE, - ZOLTAN_PROC_NAME_FN_TYPE, - ZOLTAN_HG_SIZE_CS_FN_TYPE, - ZOLTAN_HG_CS_FN_TYPE, - ZOLTAN_HG_SIZE_EDGE_WTS_FN_TYPE, - ZOLTAN_HG_EDGE_WTS_FN_TYPE, - ZOLTAN_NUM_FIXED_OBJ_FN_TYPE, - ZOLTAN_FIXED_OBJ_LIST_FN_TYPE, - ZOLTAN_HIER_NUM_LEVELS_FN_TYPE, - ZOLTAN_HIER_PART_FN_TYPE, - ZOLTAN_HIER_METHOD_FN_TYPE, - ZOLTAN_MAX_FN_TYPES /* This entry should always be last. */ -}; - -typedef enum Zoltan_Fn_Type ZOLTAN_FN_TYPE; - -/* For backward compatibility with v3.0 */ -#define ZOLTAN_HIER_PARTITION_FN_TYPE ZOLTAN_HIER_PART_FN_TYPE -#define ZOLTAN_PARTITION_FN_TYPE ZOLTAN_PART_FN_TYPE -#define ZOLTAN_PARTITION_MULTI_FN_TYPE ZOLTAN_PART_MULTI_FN_TYPE - -/* Definitions to support name change for 31-character F90 names */ -#define ZOLTAN_HG_SIZE_EDGE_WEIGHTS_FN_TYPE ZOLTAN_HG_SIZE_EDGE_WTS_FN_TYPE -#define ZOLTAN_HG_EDGE_WEIGHTS_FN_TYPE ZOLTAN_HG_EDGE_WTS_FN_TYPE -#define ZOLTAN_HG_SIZE_EDGE_WEIGHTS_FN ZOLTAN_HG_SIZE_EDGE_WTS_FN -#define ZOLTAN_HG_EDGE_WEIGHTS_FN ZOLTAN_HG_EDGE_WTS_FN -#define Zoltan_Set_HG_Size_Edge_Weights_Fn Zoltan_Set_HG_Size_Edge_Wts_Fn -#define Zoltan_Set_HG_Edge_Weights_Fn Zoltan_Set_HG_Edge_Wts_Fn - -/***************************************************************************** - * Enumerated type used to indicate what type of refinement was used when - * building a refinement tree. - */ - -enum Zoltan_Ref_Type { - ZOLTAN_OTHER_REF, /* unspecified type of refinement */ - ZOLTAN_IN_ORDER, /* user provides the order of the children */ - ZOLTAN_TRI_BISECT, /* bisection of triangles */ - ZOLTAN_QUAD_QUAD, /* quadrasection of quadralaterals */ - ZOLTAN_HEX3D_OCT /* octasection of hexahedra */ -}; - -typedef enum Zoltan_Ref_Type ZOLTAN_REF_TYPE; - -/***************************************************************************** - * Other common definitions: - */ - -struct Zoltan_Struct; - -/*****************************************************************************/ -/*****************************************************************************/ -/********************** Functions to query application *********************/ -/*****************************************************************************/ - -/*****************************************************************************/ -/* - * Function to return, for a list of object IDs, - * the partition numbers the objects are assigned to. - * Input: - * data -- pointer to user defined data structure - * num_gid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a global ID - * num_lid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a local ID - * num_obj -- number of objects for which partition values - * should be returned. - * global_id -- the Global IDs for the objects - * local_id -- the Local IDs for the objects - * Output: - * parts -- upon return, an array of partition assignments - * for objects specified in global_id. - * *ierr -- error code - */ - -typedef void ZOLTAN_PART_MULTI_FN( - void *data, - int num_gid_entries, - int num_lid_entries, - int num_obj, - ZOLTAN_ID_PTR global_id, - ZOLTAN_ID_PTR local_id, - int *parts, - int *ierr -); - -typedef void ZOLTAN_PART_MULTI_FORT_FN( - void *data, - int *num_gid_entries, - int *num_lid_entries, - int *num_obj, - ZOLTAN_ID_PTR global_id, - ZOLTAN_ID_PTR local_id, - int *parts, - int *ierr -); - -/* For backward compatibility with v3.0 */ -#define ZOLTAN_PARTITION_MULTI_FN ZOLTAN_PART_MULTI_FN -#define ZOLTAN_PARTITION_MULTI_FORT_FN ZOLTAN_PART_MULTI_FORT_FN - -/*****************************************************************************/ -/* - * Function to return, for the object with a given ID, - * the partition number the object is assigned to. - * Input: - * data -- pointer to user defined data structure - * num_gid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a global ID - * num_lid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a local ID - * global_id -- the Global ID for the object - * local_id -- the Local ID for the object - * Output: - * *ierr -- error code - * Returned value: -- partition number the object is assigned to. - */ - -typedef int ZOLTAN_PART_FN( - void *data, - int num_gid_entries, - int num_lid_entries, - ZOLTAN_ID_PTR global_id, - ZOLTAN_ID_PTR local_id, - int *ierr -); - -typedef int ZOLTAN_PART_FORT_FN( - void *data, - int *num_gid_entries, - int *num_lid_entries, - ZOLTAN_ID_PTR global_id, - ZOLTAN_ID_PTR local_id, - int *ierr -); - -/* For backward compatibility with v3.0 */ -#define ZOLTAN_PARTITION_FN ZOLTAN_PART_FN -#define ZOLTAN_PARTITION_FORT_FN ZOLTAN_PART_FN - -/*****************************************************************************/ -/* - * Function to return, for the object with a given ID, - * the object's number of edges (i.e., the number of objects with which - * the given object must communicate). - * Input: - * data -- pointer to user defined data structure - * num_gid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a global ID - * num_lid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a local ID - * global_id -- the Global ID for the object - * local_id -- the Local ID for the object - * Output: - * *ierr -- error code - * Returned value: -- number of neighbor objects. - */ - -typedef int ZOLTAN_NUM_EDGES_FN( - void *data, - int num_gid_entries, - int num_lid_entries, - ZOLTAN_ID_PTR global_id, - ZOLTAN_ID_PTR local_id, - int *ierr -); - -typedef int ZOLTAN_NUM_EDGES_FORT_FN( - void *data, - int *num_gid_entries, - int *num_lid_entries, - ZOLTAN_ID_PTR global_id, - ZOLTAN_ID_PTR local_id, - int *ierr -); - -/*****************************************************************************/ -/* - * Function to return, for a list of object with a given IDs, - * each object's number of edges (i.e., the number of objects with which - * the given object must communicate). - * Input: - * data -- pointer to user defined data structure - * num_gid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a global ID - * num_lid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a local ID - * num_obj -- the number of objects whose IDs are in global_id - * and local_id. - * global_ids -- the Global IDs for the objects - * local_ids -- the Local IDs for the objects - * Output: - * num_edges -- array containing the number of edges for each - * object in global_id - * *ierr -- error code - */ - -typedef void ZOLTAN_NUM_EDGES_MULTI_FN( - void *data, - int num_gid_entries, - int num_lid_entries, - int num_obj, - ZOLTAN_ID_PTR global_id, - ZOLTAN_ID_PTR local_id, - int *num_edges, - int *ierr -); - -typedef void ZOLTAN_NUM_EDGES_MULTI_FORT_FN( - void *data, - int *num_gid_entries, - int *num_lid_entries, - int *num_obj, - ZOLTAN_ID_PTR global_id, - ZOLTAN_ID_PTR local_id, - int *num_edges, - int *ierr -); - -/*****************************************************************************/ -/* - * Function to return, for the object with a given ID, - * the object's edge list (i.e., objects with which the given object must - * communicate. - * Input: - * data -- pointer to user defined data structure - * num_gid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a global ID - * num_lid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a local ID - * global_id -- the Global ID for the object - * local_id -- the Local ID for the object - * wdim -- dimension of edge weights, or 0 if - * edge weights are not sought. - * Output: - * nbor_global_ids -- Array of Global IDs of neighboring objects. - * nbor_procs -- Array of neighboring procs. - * nbor_ewgts -- Array of edge weights, where - * nbor_ewgts[i*wdim:(i+1)*wdim-1] - * corresponds to the weight of edge i - * ierr -- error code - */ - -typedef void ZOLTAN_EDGE_LIST_FN( - void *data, - int num_gid_entries, - int num_lid_entries, - ZOLTAN_ID_PTR global_id, - ZOLTAN_ID_PTR local_id, - ZOLTAN_ID_PTR nbor_global_id, - int *nbor_procs, - int wdim, - float *nbor_ewgts, - int *ierr -); - -typedef void ZOLTAN_EDGE_LIST_FORT_FN( - void *data, - int *num_gid_entries, - int *num_lid_entries, - ZOLTAN_ID_PTR global_id, - ZOLTAN_ID_PTR local_id, - ZOLTAN_ID_PTR nbor_global_id, - int *nbor_procs, - int *wdim, - float *nbor_ewgts, - int *ierr -); - -/*****************************************************************************/ -/* - * Function to return, for an array of objects, - * each object's edge list (i.e., objects with which the given object must - * communicate. - * Input: - * data -- pointer to user defined data structure - * num_gid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a global ID - * num_lid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a local ID - * num_obj -- the number of objects whose IDs are in global_id - * and local_id. - * global_ids -- the Global IDs for the objects - * local_ids -- the Local IDs for the objects - * num_edges -- the number of edges for each object. - * wdim -- dimension of edge weights, or 0 if - * edge weights are not sought. - * Output: - * nbor_global_ids -- Array of Global IDs of neighboring objects. - * Nbors are stored consecutively; - * nbor_global_ids[sum:sum+num_edges[i]-1], - * sum = sum j from 0 to i-1 of num_edges[j], - * holds nbors for the i-th global_id. - * nbor_procs -- Array of neighboring procs. Storage is parallel - * to nbor_global_ids. - * nbor_ewgts -- Array of edge weights, where - * nbor_ewgts[sum*wdim:(num_edges[i]+sum)*wdim-1], - * sum = sum j from 0 to i-1 of num_edges[j], - * corresponds to the weights for edges of the - * i-th global_id. - * ierr -- error code - */ - -typedef void ZOLTAN_EDGE_LIST_MULTI_FN( - void *data, - int num_gid_entries, - int num_lid_entries, - int num_obj, - ZOLTAN_ID_PTR global_ids, - ZOLTAN_ID_PTR local_ids, - int *num_edges, - ZOLTAN_ID_PTR nbor_global_id, - int *nbor_procs, - int wdim, - float *nbor_ewgts, - int *ierr -); - -typedef void ZOLTAN_EDGE_LIST_MULTI_FORT_FN( - void *data, - int *num_gid_entries, - int *num_lid_entries, - int *num_obj, - ZOLTAN_ID_PTR global_ids, - ZOLTAN_ID_PTR local_ids, - int *num_edges, - ZOLTAN_ID_PTR nbor_global_id, - int *nbor_procs, - int *wdim, - float *nbor_ewgts, - int *ierr -); - -/*****************************************************************************/ -/* - * Function to return - * the number of geometry fields per object (e.g., the number of values - * used to express the coordinates of the object). - * Input: - * data -- pointer to user defined data structure - * Output: - * ierr -- error code - * Returned value: -- the number of geometry fields. - */ - -typedef int ZOLTAN_NUM_GEOM_FN( - void *data, - int *ierr -); - -typedef int ZOLTAN_NUM_GEOM_FORT_FN( - void *data, - int *ierr -); - -/*****************************************************************************/ -/* - * Function to return the geometry information (e.g., coordinates) for - * all objects. - * Input: - * data -- pointer to user defined data structure - * num_gid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a global ID - * num_lid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a local ID - * num_obj -- number of objects whose coordinates are needed. - * global_id -- array of Global IDs for the objects - * local_id -- array of Local IDs for the objects; - * NULL if num_lid_entries == 0. - * num_dim -- dimension of coordinates for each object. - * Output: - * geom_vec -- the geometry info for the objects; - * (e.g., coordinates) - * If num_dim == n, geom_vec[i*n+j] is the - * jth coordinate for object i. - * ierr -- error code - */ - -typedef void ZOLTAN_GEOM_MULTI_FN( - void *data, - int num_gid_entries, - int num_lid_entries, - int num_obj, - ZOLTAN_ID_PTR global_id, - ZOLTAN_ID_PTR local_id, - int num_dim, - double *geom_vec, - int *ierr -); - -typedef void ZOLTAN_GEOM_MULTI_FORT_FN( - void *data, - int *num_gid_entries, - int *num_lid_entries, - int *num_obj, - ZOLTAN_ID_PTR global_id, - ZOLTAN_ID_PTR local_id, - int *num_dim, - double *geom_vec, - int *ierr -); - -/*****************************************************************************/ -/* - * Function to return, for the object with a given ID, - * the geometry information for the object (e.g., coordinates). - * Input: - * data -- pointer to user defined data structure - * num_gid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a global ID - * num_lid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a local ID - * global_id -- the Global ID for the object - * local_id -- the Local ID for the object - * Output: - * geom_vec -- the geometry info for the object - * (e.g., coordinates) - * ierr -- error code - */ - -typedef void ZOLTAN_GEOM_FN( - void *data, - int num_gid_entries, - int num_lid_entries, - ZOLTAN_ID_PTR global_id, - ZOLTAN_ID_PTR local_id, - double *geom_vec, - int *ierr -); - -typedef void ZOLTAN_GEOM_FORT_FN( - void *data, - int *num_gid_entries, - int *num_lid_entries, - ZOLTAN_ID_PTR global_id, - ZOLTAN_ID_PTR local_id, - double *geom_vec, - int *ierr -); - -/*****************************************************************************/ -/* - * Function to return, for the calling processor, the number of objects - * located in that processor's memory. - * Input: - * data -- pointer to user defined data structure - * Output: - * ierr -- error code - * Returned value: -- the number of local objects. - */ - -typedef int ZOLTAN_NUM_OBJ_FN( - void *data, - int *ierr -); - -typedef int ZOLTAN_NUM_OBJ_FORT_FN( - void *data, - int *ierr -); - -/*****************************************************************************/ -/* - * Function to return a list of all local objects on a processor. - * Input: - * data -- pointer to user defined data structure - * num_gid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a global ID - * num_lid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a local ID - * wdim -- dimension of object weights, or 0 if - * object weights are not sought. - * Output: - * global_ids -- array of Global IDs of all objects on the - * processor. - * local_ids -- array of Local IDs of all objects on the - * processor. - * objwgts -- objwgts[i*wdim:(i+1)*wdim-1] correponds - * to the weight of object i - * ierr -- error code - */ - -typedef void ZOLTAN_OBJ_LIST_FN( - void *data, - int num_gid_entries, - int num_lid_entries, - ZOLTAN_ID_PTR global_ids, - ZOLTAN_ID_PTR local_ids, - int wdim, - float *objwgts, - int *ierr -); - -typedef void ZOLTAN_OBJ_LIST_FORT_FN( - void *data, - int *num_gid_entries, - int *num_lid_entries, - ZOLTAN_ID_PTR global_ids, - ZOLTAN_ID_PTR local_ids, - int *wdim, - float *objwgts, - int *ierr -); - -/*****************************************************************************/ -/* - * Iterator function for local objects; return the first local object on - * the processor. This function should be used with ZOLTAN_NEXT_OBJ_FN. - * Input: - * data -- pointer to user defined data structure - * wdim -- dimension of object weight, or 0 if - * the weight is not sought. - * num_gid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a global ID - * num_lid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a local ID - * Output: - * first_global_id -- Global ID of the first object; NULL if no - * objects. - * first_local_id -- Local ID of the first object; NULL if no - * objects. - * first_obj_wgt -- weight vector for first object - * (undefined if wdim=0) - * ierr -- error code - * Returned value: -- 1 if a valid object is returned; - * 0 if no more objects exist on the processor. - */ - -typedef int ZOLTAN_FIRST_OBJ_FN( - void *data, - int num_gid_entries, - int num_lid_entries, - ZOLTAN_ID_PTR first_global_id, - ZOLTAN_ID_PTR first_local_id, - int wdim, - float *first_obj_wgt, - int *ierr -); - -typedef int ZOLTAN_FIRST_OBJ_FORT_FN( - void *data, - int *num_gid_entries, - int *num_lid_entries, - ZOLTAN_ID_PTR first_global_id, - ZOLTAN_ID_PTR first_local_id, - int *wdim, - float *first_obj_wgt, - int *ierr -); - -/*****************************************************************************/ -/* - * Iterator function for local objects; return the next local object. - * This function should be used with ZOLTAN_FIRST_OBJ_FN. - * Input: - * data -- pointer to user defined data structure - * num_gid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a global ID - * num_lid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a local ID - * global_id -- Global ID of the previous object. - * local_id -- Local ID of the previous object. - * wdim -- dimension of object weight, or 0 if - * the weight is not sought. - * Output: - * next_global_id -- Global ID of the next object; NULL if no - * more objects. - * next_local_id -- Local ID of the next object; NULL if no - * more objects. - * next_obj_wgt -- weight vector for the next object - * (undefined if wdim=0) - * ierr -- error code - * Returned value: -- 1 if a valid object is returned; 0 if - * no more objects exist (i.e., global_id is - * the last object). - */ - -typedef int ZOLTAN_NEXT_OBJ_FN( - void *data, - int num_gid_entries, - int num_lid_entries, - ZOLTAN_ID_PTR global_id, - ZOLTAN_ID_PTR local_id, - ZOLTAN_ID_PTR next_global_id, - ZOLTAN_ID_PTR next_local_id, - int wdim, - float *next_obj_wgt, - int *ierr -); - -typedef int ZOLTAN_NEXT_OBJ_FORT_FN( - void *data, - int *num_gid_entries, - int *num_lid_entries, - ZOLTAN_ID_PTR global_id, - ZOLTAN_ID_PTR local_id, - ZOLTAN_ID_PTR next_global_id, - ZOLTAN_ID_PTR next_local_id, - int *wdim, - float *next_obj_wgt, - int *ierr -); - - -/*****************************************************************************/ -/* - * Function to return the size (in bytes) of data associated with an object. - * - * Input: - * data -- pointer to user defined data structure - * num_gid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a global ID - * num_lid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a local ID - * global_id -- the Global ID for the object - * local_id -- the Local ID for the object - * Output: - * ierr -- error code - * Returned value: -- the size of data of the object - * corresponding to global_id - */ - -typedef int ZOLTAN_OBJ_SIZE_FN( - void *data, - int num_gid_entries, - int num_lid_entries, - ZOLTAN_ID_PTR global_id, - ZOLTAN_ID_PTR local_id, - int *ierr -); - -typedef int ZOLTAN_OBJ_SIZE_FORT_FN( - void *data, - int *num_gid_entries, - int *num_lid_entries, - ZOLTAN_ID_PTR global_id, - ZOLTAN_ID_PTR local_id, - int *ierr -); - -/*****************************************************************************/ -/* - * MULTI-ID version of ZOLTAN_OBJ_SIZE_FN - * Function to return the size (in bytes) of data associated with each of - * multiple objects. - * - * Input: - * data -- pointer to user-defined data structure. - * num_gid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a global ID - * num_lid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a local ID - * num_ids -- number of objects whose size is sought - * global_ids -- the Global IDs for the objects - * local_ids -- the Local IDs for the objects - * Output: - * num_bytes -- array of sizes (in bytes) for the given IDs - * ierr -- Zoltan error code - */ - -typedef void ZOLTAN_OBJ_SIZE_MULTI_FN( - void *data, - int num_gid_entries, - int num_lid_entries, - int num_ids, - ZOLTAN_ID_PTR global_ids, - ZOLTAN_ID_PTR local_ids, - int *num_bytes, - int *ierr); - -typedef void ZOLTAN_OBJ_SIZE_MULTI_FORT_FN( - void *data, - int *num_gid_entries, - int *num_lid_entries, - int *num_ids, - ZOLTAN_ID_PTR global_ids, - ZOLTAN_ID_PTR local_ids, - int *num_bytes, - int *ierr); - - -/*****************************************************************************/ -/* - * Function to pack data to be migrated for the given object. - * This function is needed only when the application wants the load-balancer - * to help migrate the data. It packs all data related to the given object - * into a communication buffer, the starting address of which is provided - * by the load-balancer. - * Input: - * data -- pointer to user defined data structure - * num_gid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a global ID - * num_lid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a local ID - * global_id -- Global ID of the object to be packed. - * local_id -- Local ID of the object to be packed. - * dest_proc -- Processor ID of the destination processor. - * size -- number of bytes allowed for the object to - * be packed. - * buf -- starting address of buffer into which to - * pack the object. - * Output: - * buf -- the buffer is rewritten with the packed - * data. - * ierr -- error code - */ - -typedef void ZOLTAN_PACK_OBJ_FN( - void *data, - int num_gid_entries, - int num_lid_entries, - ZOLTAN_ID_PTR global_id, - ZOLTAN_ID_PTR local_id, - int dest_proc, - int size, - char *buf, - int *ierr -); - -typedef void ZOLTAN_PACK_OBJ_FORT_FN( - void *data, - int *num_gid_entries, - int *num_lid_entries, - ZOLTAN_ID_PTR global_id, - ZOLTAN_ID_PTR local_id, - int *dest_proc, - int *size, - char *buf, - int *ierr -); - -/*****************************************************************************/ -/* - * MULTI-ID version of ZOLTAN_PACK_OBJ_FN - * Function to pack data for multiple given objects. - * - * Input: - * data -- pointer to user-defined data structure. - * num_gid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a global ID - * num_lid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a local ID - * num_ids -- number of objects whose data is to be packed - * global_ids -- the Global IDs for the objects - * local_ids -- the Local IDs for the objects - * dest_proc -- Processor IDs of the destination processor for the - * objects. - * size -- number of bytes allowed for each object to - * be packed. - * size[i] = # of bytes to store the i-th object's - * data. Each size includes padding for alignment. - * index -- Indices into buf giving the starting location - * of each object's data; - * data for the i-th object are stored in - * buf[index[i]], - * buf[index[i]+1], ..., - * buf[index[i]+size[i]-1]. - * Since Zoltan adds some tag information - * to packed data, index[i] != sum[j=0,i-1](size[j]) - * buf -- starting address of buffer into which to - * pack the object. - * Output: - * buf -- the buffer is rewritten with the packed - * data. - * ierr -- error code - */ - -typedef void ZOLTAN_PACK_OBJ_MULTI_FN( - void *data, - int num_gid_entries, - int num_lid_entries, - int num_ids, - ZOLTAN_ID_PTR global_ids, - ZOLTAN_ID_PTR local_ids, - int *dest_proc, - int *size, - int *index, - char *buffer, - int *ierr -); - -typedef void ZOLTAN_PACK_OBJ_MULTI_FORT_FN( - void *data, - int *num_gid_entries, - int *num_lid_entries, - int *num_ids, - ZOLTAN_ID_PTR global_ids, - ZOLTAN_ID_PTR local_ids, - int *dest_proc, - int *size, - int *index, - char *buffer, - int *ierr -); - -/*****************************************************************************/ -/* - * Function to unpack data for an object migrated to a new processor. - * This function is needed only when the application wants the load-balancer - * to help migrate the data. The data is stored in a buffer (char *); the - * size of the data for the object is included. - * Input: - * data -- pointer to user defined data structure - * num_gid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a global ID - * global_id -- Global ID of the object to be unpacked. - * size -- number of bytes in the buffer for the - * object. - * buf -- starting address of buffer into which to - * pack the object. - * Output: - * ierr -- error code - */ - -typedef void ZOLTAN_UNPACK_OBJ_FN( - void *data, - int num_gid_entries, - ZOLTAN_ID_PTR global_id, - int size, - char *buf, - int *ierr -); - -typedef void ZOLTAN_UNPACK_OBJ_FORT_FN( - void *data, - int *num_gid_entries, - ZOLTAN_ID_PTR global_id, - int *size, - char *buf, - int *ierr -); - -/*****************************************************************************/ - -/* - * MULTI-ID version of ZOLTAN_UNPACK_OBJ_FN - * Function to unpack data for an object migrated to a new processor. - * - * Input: - * data -- pointer to user defined data structure - * num_gid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a global ID - * num_ids -- number of objects whose data is to be unpacked - * global_id -- Global ID of the objects - * size -- number of bytes in the buffer for the - * objects. - * size[i] = # of bytes to store the i-th ID's data. - * Each size includes padding for alignment. - * index -- Pointers into buf giving the starting location of - * each object's data; - * data for the i-th ID are stored in - * buf[index[i]], - * buf[index[i]+1], ..., - * buf[index[i]+size[i]-1]. - * Since Zoltan adds some tag information - * to packed data, - * index[i] != sum[j=0,i-1](size[j]) - * buf -- starting address of buffer from which to - * unpack the objects. - * Output: - * ierr -- error code - */ - -typedef void ZOLTAN_UNPACK_OBJ_MULTI_FN( - void *data, - int num_gid_entries, - int num_ids, - ZOLTAN_ID_PTR global_ids, - int *size, - int *index, - char *buffer, - int *ierr -); - -typedef void ZOLTAN_UNPACK_OBJ_MULTI_FORT_FN( - void *data, - int *num_gid_entries, - int *num_ids, - ZOLTAN_ID_PTR global_ids, - int *size, - int *index, - char *buffer, - int *ierr -); - -/*****************************************************************************/ -/* - * Function called as a pre-processor to migration; it includes partition - * as well as processor information. This function is - * optional, and is used only when the application wants Zoltan - * to help migrate the data. The application can perform any type of - * pre-processing in this function. - * - * Input: - * data -- pointer to user defined data structure - * num_gid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a global ID - * num_lid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a local ID - * num_import -- Number of objects to be imported. - * import_global_ids -- Global IDs of objects to be imported. - * import_local_ids -- Local IDs of objects to be imported. - * import_procs -- Processor IDs of importing processors. - * import_to_part -- Partition numbers to which objs are imported. - * num_export -- Number of objects to be exported. - * export_global_ids -- Global IDs of objects to be exported. - * export_local_ids -- Local IDs of objects to be exported. - * export_procs -- Processor IDs of processors to receive - * the objects. - * export_to_part -- Partition numbers to which objs are exported. - * Output: - * ierr -- error code - */ - -typedef void ZOLTAN_PRE_MIGRATE_PP_FN( - void *data, - int num_gid_entries, - int num_lid_entries, - int num_import, - ZOLTAN_ID_PTR import_global_ids, - ZOLTAN_ID_PTR import_local_ids, - int *import_procs, - int *import_to_part, - int num_export, - ZOLTAN_ID_PTR export_global_ids, - ZOLTAN_ID_PTR export_local_ids, - int *export_procs, - int *export_to_part, - int *ierr -); - -typedef void ZOLTAN_PRE_MIGRATE_PP_FORT_FN( - void *data, - int *num_gid_entries, - int *num_lid_entries, - int *num_import, - ZOLTAN_ID_PTR import_global_ids, - ZOLTAN_ID_PTR import_local_ids, - int *import_procs, - int *import_to_part, - int *num_export, - ZOLTAN_ID_PTR export_global_ids, - ZOLTAN_ID_PTR export_local_ids, - int *export_procs, - int *export_to_part, - int *ierr -); - -/*****************************************************************************/ -/* - * Function called between the packing and unpacking phases of data migration. - * It includes partition as well as processor information. - * Within Zoltan_Migrate, the data to be migrated is packed and - * communicated; then this function is called (if specified). This function is - * optional, and is used only when the application wants Zoltan - * to help migrate the data. The application can perform any type of - * processing in this function. - * Input: - * data -- pointer to user defined data structure - * num_gid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a global ID - * num_lid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a local ID - * num_import -- Number of objects to be imported. - * import_global_ids -- Global IDs of objects to be imported. - * import_local_ids -- Local IDs of objects to be imported. - * import_procs -- Processor IDs of importing processors. - * import_to_part -- Partition numbers to which objs are imported. - * num_export -- Number of objects to be exported. - * export_global_ids -- Global IDs of objects to be exported. - * export_local_ids -- Local IDs of objects to be exported. - * export_procs -- Processor IDs of processors to receive - * the objects. - * export_to_part -- Partition numbers to which objs are exported. - * Output: - * ierr -- error code - */ - -typedef void ZOLTAN_MID_MIGRATE_PP_FN( - void *data, - int num_gid_entries, - int num_lid_entries, - int num_import, - ZOLTAN_ID_PTR import_global_ids, - ZOLTAN_ID_PTR import_local_ids, - int *import_procs, - int *import_to_part, - int num_export, - ZOLTAN_ID_PTR export_global_ids, - ZOLTAN_ID_PTR export_local_ids, - int *export_procs, - int *export_to_part, - int *ierr -); - -typedef void ZOLTAN_MID_MIGRATE_PP_FORT_FN( - void *data, - int *num_gid_entries, - int *num_lid_entries, - int *num_import, - ZOLTAN_ID_PTR import_global_ids, - ZOLTAN_ID_PTR import_local_ids, - int *import_procs, - int *import_to_part, - int *num_export, - ZOLTAN_ID_PTR export_global_ids, - ZOLTAN_ID_PTR export_local_ids, - int *export_procs, - int *export_to_part, - int *ierr -); - -/*****************************************************************************/ -/* - * Function called as a post-processor to the migration. It includes - * partition as well as processor information. This function is - * optional, and is used only when the application wants Zoltan - * to help migrate the data. The application can perform any type of - * post-processing in this function. - * Input: - * data -- pointer to user defined data structure - * num_gid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a global ID - * num_lid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a local ID - * num_import -- Number of objects to be imported. - * import_global_ids -- Global IDs of objects to be imported. - * import_local_ids -- Local IDs of objects to be imported. - * import_procs -- Processor IDs of importing processors. - * import_to_part -- Partition numbers to which objs are imported. - * num_export -- Number of objects to be exported. - * export_global_ids -- Global IDs of objects to be exported. - * export_local_ids -- Local IDs of objects to be exported. - * export_procs -- Processor IDs of processors to receive - * the objects. - * export_to_part -- Partition numbers to which objs are exported. - * Output: - * ierr -- error code - */ - -typedef void ZOLTAN_POST_MIGRATE_PP_FN( - void *data, - int num_gid_entries, - int num_lid_entries, - int num_import, - ZOLTAN_ID_PTR import_global_ids, - ZOLTAN_ID_PTR import_local_ids, - int *import_procs, - int *import_to_part, - int num_export, - ZOLTAN_ID_PTR export_global_ids, - ZOLTAN_ID_PTR export_local_ids, - int *export_procs, - int *export_to_part, - int *ierr -); - -typedef void ZOLTAN_POST_MIGRATE_PP_FORT_FN( - void *data, - int *num_gid_entries, - int *num_lid_entries, - int *num_import, - ZOLTAN_ID_PTR import_global_ids, - ZOLTAN_ID_PTR import_local_ids, - int *import_procs, - int *import_to_part, - int *num_export, - ZOLTAN_ID_PTR export_global_ids, - ZOLTAN_ID_PTR export_local_ids, - int *export_procs, - int *export_to_part, - int *ierr -); - -/*****************************************************************************/ -/* - * Function called as a pre-processor to migration; it includes only - * processor information. This function is - * optional, and is used only when the application wants Zoltan - * to help migrate the data. The application can perform any type of - * pre-processing in this function. - * - * Input: - * data -- pointer to user defined data structure - * num_gid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a global ID - * num_lid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a local ID - * num_import -- Number of objects to be imported. - * import_global_ids -- Global IDs of objects to be imported. - * import_local_ids -- Local IDs of objects to be imported. - * import_procs -- Processor IDs of importing processors. - * num_export -- Number of objects to be exported. - * export_global_ids -- Global IDs of objects to be exported. - * export_local_ids -- Local IDs of objects to be exported. - * export_procs -- Processor IDs of processors to receive - * the objects. - * Output: - * ierr -- error code - */ - -typedef void ZOLTAN_PRE_MIGRATE_FN( - void *data, - int num_gid_entries, - int num_lid_entries, - int num_import, - ZOLTAN_ID_PTR import_global_ids, - ZOLTAN_ID_PTR import_local_ids, - int *import_procs, - int num_export, - ZOLTAN_ID_PTR export_global_ids, - ZOLTAN_ID_PTR export_local_ids, - int *export_procs, - int *ierr -); - -typedef void ZOLTAN_PRE_MIGRATE_FORT_FN( - void *data, - int *num_gid_entries, - int *num_lid_entries, - int *num_import, - ZOLTAN_ID_PTR import_global_ids, - ZOLTAN_ID_PTR import_local_ids, - int *import_procs, - int *num_export, - ZOLTAN_ID_PTR export_global_ids, - ZOLTAN_ID_PTR export_local_ids, - int *export_procs, - int *ierr -); - -/*****************************************************************************/ -/* - * Function called between the packing and unpacking phases of data migration. - * It includes only processor information. - * Within Zoltan_Migrate, the data to be migrated is packed and - * communicated; then this function is called (if specified). This function is - * optional, and is used only when the application wants Zoltan - * to help migrate the data. The application can perform any type of - * processing in this function. - * Input: - * data -- pointer to user defined data structure - * num_gid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a global ID - * num_lid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a local ID - * num_import -- Number of objects to be imported. - * import_global_ids -- Global IDs of objects to be imported. - * import_local_ids -- Local IDs of objects to be imported. - * import_procs -- Processor IDs of importing processors. - * num_export -- Number of objects to be exported. - * export_global_ids -- Global IDs of objects to be exported. - * export_local_ids -- Local IDs of objects to be exported. - * export_procs -- Processor IDs of processors to receive - * the objects. - * Output: - * ierr -- error code - */ - -typedef void ZOLTAN_MID_MIGRATE_FN( - void *data, - int num_gid_entries, - int num_lid_entries, - int num_import, - ZOLTAN_ID_PTR import_global_ids, - ZOLTAN_ID_PTR import_local_ids, - int *import_procs, - int num_export, - ZOLTAN_ID_PTR export_global_ids, - ZOLTAN_ID_PTR export_local_ids, - int *export_procs, - int *ierr -); - -typedef void ZOLTAN_MID_MIGRATE_FORT_FN( - void *data, - int *num_gid_entries, - int *num_lid_entries, - int *num_import, - ZOLTAN_ID_PTR import_global_ids, - ZOLTAN_ID_PTR import_local_ids, - int *import_procs, - int *num_export, - ZOLTAN_ID_PTR export_global_ids, - ZOLTAN_ID_PTR export_local_ids, - int *export_procs, - int *ierr -); - -/*****************************************************************************/ -/* - * Function called as a post-processor to the migration. It includes - * only processor information. This function is - * optional, and is used only when the application wants Zoltan - * to help migrate the data. The application can perform any type of - * post-processing in this function. - * Input: - * data -- pointer to user defined data structure - * num_gid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a global ID - * num_lid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a local ID - * num_import -- Number of objects to be imported. - * import_global_ids -- Global IDs of objects to be imported. - * import_local_ids -- Local IDs of objects to be imported. - * import_procs -- Processor IDs of importing processors. - * num_export -- Number of objects to be exported. - * export_global_ids -- Global IDs of objects to be exported. - * export_local_ids -- Local IDs of objects to be exported. - * export_procs -- Processor IDs of processors to receive - * the objects. - * Output: - * ierr -- error code - */ - -typedef void ZOLTAN_POST_MIGRATE_FN( - void *data, - int num_gid_entries, - int num_lid_entries, - int num_import, - ZOLTAN_ID_PTR import_global_ids, - ZOLTAN_ID_PTR import_local_ids, - int *import_procs, - int num_export, - ZOLTAN_ID_PTR export_global_ids, - ZOLTAN_ID_PTR export_local_ids, - int *export_procs, - int *ierr -); - -typedef void ZOLTAN_POST_MIGRATE_FORT_FN( - void *data, - int *num_gid_entries, - int *num_lid_entries, - int *num_import, - ZOLTAN_ID_PTR import_global_ids, - ZOLTAN_ID_PTR import_local_ids, - int *import_procs, - int *num_export, - ZOLTAN_ID_PTR export_global_ids, - ZOLTAN_ID_PTR export_local_ids, - int *export_procs, - int *ierr -); -/*****************************************************************************/ -/* Function to get the name of the physical processor on which - * the current process is running. - * - * Input: - * data -- pointer to user defined data structure - * - * Output: - * name -- name of the processor - * length -- length of the name - * ierr -- error code - */ - -typedef void ZOLTAN_PROC_NAME_FN( - void *data, - char *name, - int *length, - int *ierr -); - -/* F90 Interface missing here. */ - - -/*****************************************************************************/ -/* - * Function to return the number of objects (elements) in the initial coarse - * grid; used for initialization of the refinement tree. - * Input: - * data -- pointer to user defined data structure - * Output: - * ierr -- error code - * Returned value: -- the number of initial elements. - */ - -typedef int ZOLTAN_NUM_COARSE_OBJ_FN( - void *data, - int *ierr -); - -typedef int ZOLTAN_NUM_COARSE_OBJ_FORT_FN( - void *data, - int *ierr -); - -/*****************************************************************************/ -/* - * Function to return a list of all objects (elements) in the initial coarse - * grid. - * Input: - * data -- pointer to user defined data structure - * num_gid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a global ID - * num_lid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a local ID - * Output: - * global_ids -- array of Global IDs of all coarse objects - * local_ids -- array of Local IDs of all coarse objects - * assigned -- array indicating processor assignment. - * 1 if the object is currently - * assigned to this processor; 0 otherwise. - * For elements that have been refined, it - * is ignored. - * num_vert -- array containing the number of vertices - * for each object - * vertices -- array containing the vertices for each - * object. If the sum of the number of - * vertices for objects 0 through i-1 is N, - * then the vertices for object i are in - * vertices[N:N+num_vert[i]] - * in_order -- 1 if the user is providing the objects in - * the order in which they should be used - * 0 if the order should be determined - * automatically - * in_vertex -- array containing the "in" vertex for each - * object, if the user provides them. It is - * ignored if in_order==0. For any with the - * value -1, a vertex will be selected - * automatically - * out_vertex -- array containing the "out" vertex for each - * object; same provisions as in_vertex - * ierr -- error code - */ - -typedef void ZOLTAN_COARSE_OBJ_LIST_FN( - void *data, - int num_gid_entries, - int num_lid_entries, - ZOLTAN_ID_PTR global_ids, - ZOLTAN_ID_PTR local_ids, - int *assigned, - int *num_vert, - ZOLTAN_ID_PTR vertices, - int *in_order, - ZOLTAN_ID_PTR in_vertex, - ZOLTAN_ID_PTR out_vertex, - int *ierr -); - -typedef void ZOLTAN_COARSE_OBJ_LIST_FORT_FN( - void *data, - int *num_gid_entries, - int *num_lid_entries, - ZOLTAN_ID_PTR global_ids, - ZOLTAN_ID_PTR local_ids, - int *assigned, - int *num_vert, - ZOLTAN_ID_PTR vertices, - int *in_order, - ZOLTAN_ID_PTR in_vertex, - ZOLTAN_ID_PTR out_vertex, - int *ierr -); - -/*****************************************************************************/ -/* - * Iterator function for coarse objects; return the first coarse object. - * This function should be used with ZOLTAN_NEXT_COARSE_OBJ_FN. - * Input: - * data -- pointer to user defined data structure - * num_gid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a global ID - * num_lid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a local ID - * Output: - * global_id -- Global ID of the first coarse object - * local_id -- Local ID of the first coarse object - * assigned -- indicates processor assignment. - * 1 if the object is currently - * assigned to this processor; 0 otherwise. - * For elements that have been refined, it - * is ignored. - * num_vert -- number of vertices in the first object - * vertices -- array containing the vertices of the first - coarse object - * in_order -- 1 if the user will be providing the elements - * in the order in which they should be used - * 0 if the order should be determined - * automatically - * in_vertex -- the "in" vertex of the first coarse object. - * It is ignored if in_order==0. If the - * value is -1, a vertex will be selected - * automatically - * out_vertex -- array containing the "out" vertex for the - * first object; same provisions as in_vertex - * ierr -- error code - * Returned value: -- 1 if a valid object is returned; 0 if - * no more objects exist on the processor. - */ - -typedef int ZOLTAN_FIRST_COARSE_OBJ_FN( - void *data, - int num_gid_entries, - int num_lid_entries, - ZOLTAN_ID_PTR global_id, - ZOLTAN_ID_PTR local_id, - int *assigned, - int *num_vert, - ZOLTAN_ID_PTR vertices, - int *in_order, - ZOLTAN_ID_PTR in_vertex, - ZOLTAN_ID_PTR out_vertex, - int *ierr -); - -typedef int ZOLTAN_FIRST_COARSE_OBJ_FORT_FN( - void *data, - int *num_gid_entries, - int *num_lid_entries, - ZOLTAN_ID_PTR global_id, - ZOLTAN_ID_PTR local_id, - int *assigned, - int *num_vert, - ZOLTAN_ID_PTR vertices, - int *in_order, - ZOLTAN_ID_PTR in_vertex, - ZOLTAN_ID_PTR out_vertex, - int *ierr -); - -/*****************************************************************************/ -/* - * Iterator function for coarse objects; return the next coarse object. - * This function should be used with ZOLTAN_FIRST_COARSE_OBJ_FN. - * Input: - * data -- pointer to user defined data structure - * num_gid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a global ID - * num_lid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a local ID - * Output: - * global_id -- Global ID of the previous coarse object - * local_id -- Local ID of the previous coarse object - * next_global_id -- Global ID of the next coarse object - * next_local_id -- Local ID of the next coarse object - * assigned -- indicates processor assignment. - * 1 if the object is currently - * assigned to this processor; 0 otherwise. - * For elements that have been refined, it - * is ignored. - * num_vert -- number of vertices in the next object - * vertices -- array containing the vertices of the next - * coarse object - * in_vertex -- the "in" vertex of the next coarse object. - * It is ignored if in_order==0 in the call - * to ZOLTAN_FIRST_COARSE_OBJ_FN. If the - * value is -1, a vertex will be selected - * automatically - * out_vertex -- the "out" vertex for the next object; - * same provisions as in_vertex - * ierr -- error code - * Returned value: -- 1 if a valid object is returned; 0 if - * no more objects exist on the processor. - */ - -typedef int ZOLTAN_NEXT_COARSE_OBJ_FN( - void *data, - int num_gid_entries, - int num_lid_entries, - ZOLTAN_ID_PTR global_id, - ZOLTAN_ID_PTR local_id, - ZOLTAN_ID_PTR next_global_id, - ZOLTAN_ID_PTR next_local_id, - int *assigned, - int *num_vert, - ZOLTAN_ID_PTR vertices, - ZOLTAN_ID_PTR in_vertex, - ZOLTAN_ID_PTR out_vertex, - int *ierr -); - -typedef int ZOLTAN_NEXT_COARSE_OBJ_FORT_FN( - void *data, - int *num_gid_entries, - int *num_lid_entries, - ZOLTAN_ID_PTR global_id, - ZOLTAN_ID_PTR local_id, - ZOLTAN_ID_PTR next_global_id, - ZOLTAN_ID_PTR next_local_id, - int *assigned, - int *num_vert, - ZOLTAN_ID_PTR vertices, - ZOLTAN_ID_PTR in_vertex, - ZOLTAN_ID_PTR out_vertex, - int *ierr -); - -/*****************************************************************************/ -/* - * Function to return the number of children of an element; used for - * building a refinement tree. - * Input: - * data -- pointer to user defined data structure - * num_gid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a global ID - * num_lid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a local ID - * global_id -- Global ID of the object whose number of - * children is requested - * local_id -- Local ID of the object whose number of - * children is requested - * Output: - * ierr -- error code - * Returned value: -- the number of children - */ - -typedef int ZOLTAN_NUM_CHILD_FN( - void *data, - int num_gid_entries, - int num_lid_entries, - ZOLTAN_ID_PTR global_id, - ZOLTAN_ID_PTR local_id, - int *ierr -); - -typedef int ZOLTAN_NUM_CHILD_FORT_FN( - void *data, - int *num_gid_entries, - int *num_lid_entries, - ZOLTAN_ID_PTR global_id, - ZOLTAN_ID_PTR local_id, - int *ierr -); - -/*****************************************************************************/ -/* - * Function to return a list of all children of an object. - * Input: - * data -- pointer to user defined data structure - * num_gid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a global ID - * num_lid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a local ID - * parent_gid -- Global ID of the object whose children - * are requested - * parent_lid -- Local ID of the object whose children - * are requested - * Output: - * child_gids -- array of Global IDs of the children - * child_lids -- array of Local IDs of the children - * assigned -- array indicating processor assignment. - * 1 if the child object is currently - * assigned to this processor; 0 otherwise. - * For elements that have been refined, it - * is ignored. - * num_vert -- array containing the number of vertices - * for each child - * vertices -- array containing the vertices for each - * child. If the sum of the number of - * vertices for children 0 through i-1 is N, - * then the vertices for child i are in - * vertices[N:N+num_vert[i]] - * ref_type -- indicates what type of refinement was - * used to create the children - * in_vertex -- array containing the "in" vertex for each - * child, if the user provides them. It is - * ignored if ref_type!=ZOLTAN_IN_ORDER. For any - * with the value -1, a vertex will be selected - * automatically - * out_vertex -- array containing the "out" vertex for each - * child; same provisions as in_vertex - * ierr -- error code - */ - -typedef void ZOLTAN_CHILD_LIST_FN( - void *data, - int num_gid_entries, - int num_lid_entries, - ZOLTAN_ID_PTR parent_gid, - ZOLTAN_ID_PTR parent_lid, - ZOLTAN_ID_PTR child_gids, - ZOLTAN_ID_PTR child_lids, - int *assigned, - int *num_vert, - ZOLTAN_ID_PTR vertices, - ZOLTAN_REF_TYPE *ref_type, - ZOLTAN_ID_PTR in_vertex, - ZOLTAN_ID_PTR out_vertex, - int *ierr -); - -typedef void ZOLTAN_CHILD_LIST_FORT_FN( - void *data, - int *num_gid_entries, - int *num_lid_entries, - ZOLTAN_ID_PTR parent_gid, - ZOLTAN_ID_PTR parent_lid, - ZOLTAN_ID_PTR child_gids, - ZOLTAN_ID_PTR child_lids, - int *assigned, - int *num_vert, - ZOLTAN_ID_PTR vertices, - ZOLTAN_REF_TYPE *ref_type, - ZOLTAN_ID_PTR in_vertex, - ZOLTAN_ID_PTR out_vertex, - int *ierr -); - -/*****************************************************************************/ -/* - * Function to return the weight of a child object. - * Input: - * data -- pointer to user defined data structure - * num_gid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a global ID - * num_lid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a local ID - * global_id -- Global ID of the object whose weight - * is requested - * local_id -- Local ID of the object whose weight - * is requested - * wdim -- dimension of object weight, or 0 if - * the weight is not sought. - * Output: - * obj_wgt -- weight vector for the object - * (undefined if wdim=0) - * ierr -- error code - */ - -typedef void ZOLTAN_CHILD_WEIGHT_FN( - void *data, - int num_gid_entries, - int num_lid_entries, - ZOLTAN_ID_PTR global_id, - ZOLTAN_ID_PTR local_id, - int wgt_dim, - float *obj_wgt, - int *ierr -); - -typedef void ZOLTAN_CHILD_WEIGHT_FORT_FN( - void *data, - int *num_gid_entries, - int *num_lid_entries, - ZOLTAN_ID_PTR global_id, - ZOLTAN_ID_PTR local_id, - int *wgt_dim, - float *obj_wgt, - int *ierr -); - -/*****************************************************************************/ -/* - * Function to return the type of compressed storage format (edge or - * vertex) and the size of the data to be returned by Get_HG_CS(). - * - * Input: - * data -- pointer to user defined data structure - * Output: - * num_lists -- number of vertices or hyperedges - * num_pins -- total pins in hypergraph - * format -- ZOLTAN_COMPRESSED_EDGE or ZOLTAN_COMPRESSED_VERTEX - * ierr -- error code - */ - -typedef void ZOLTAN_HG_SIZE_CS_FN( - void *data, - int *num_lists, - int *num_pins, - int *format, - int *ierr -); - -typedef void ZOLTAN_HG_SIZE_CS_FORT_FN( - void *data, - int *num_lists, - int *num_pins, - int *format, - int *ierr -); - -/*****************************************************************************/ -/* - * Function to return the pins (non-zeroes) of a hypergraph in - * compressed vertex or compressed hyperedge storage format. - * - * Input: - * data -- pointer to user defined data structure - * num_gid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a global ID - * nvtxedge -- number of vertices or edges expected in output - * npins -- number of pins expected in output - * format -- ZOLTAN_COMPRESSED_VERTEX or ZOLTAN_COMPRESSED_EDGE - * - * Output: - * vtxedge_GID -- if ZOLTAN_COMPRESSED_EDGE: global edge ID for each edge - * if ZOLTAN_COMPRESSED_VERTEX: global vertex ID for each - * vertex - * vtxedge_ptr -- if ZOLTAN_COMPRESSED_EDGE: - * vtxedge_ptr[i+1]-vtxedge_ptr[i] is the number of - * vertices belonging to edge i (i.e., pins or non-zeros) - * specified by this processor in pin_GID. The starting - * index in pin_GID of edge i's vertices is - * vtxedge_ptr[i]*num_gid_entries. - * if ZOLTAN_COMPRESSED_VERTEX: - * vtxedge_ptr[i+1]-vtxedge_ptr[i] is the number of - * edges to which vertex i belongs - * specified by this processor in pin_GID. The starting - * index in pin_GID of vertex i's edges is - * vtxedge_ptr[i]*num_gid_entries. - * pin_GID -- if ZOLTAN_COMPRESSED_EDGE: global vertex ID for each - * pin (non-zero) in each edge - * if ZOLTAN_COMPRESSED_VERTEX: global edge ID for each - * pin (non-zero) in each vertex - * ierr -- error code - */ - -typedef void ZOLTAN_HG_CS_FN( - void *data, - int num_gid_entries, - int nvtxedge, - int npins, - int format, - ZOLTAN_ID_PTR vtxedge_GID, - int *vtxedge_ptr, - ZOLTAN_ID_PTR pin_GID, - int *ierr -); - -typedef int ZOLTAN_HG_CS_FORT_FN( - void *data, - int *num_gid_entries, - int *nvtxedge, - int *npins, - int *format, - ZOLTAN_ID_PTR vtxedge_GID, - int *vtxedge_ptr, - ZOLTAN_ID_PTR pin_GID, - int *ierr -); -/*****************************************************************************/ -/* - * Function to return the number of edges for which the application - * will be able to provide hypergraph edge weights. (0 if no edge weights) - * - * Input: - * data -- pointer to user defined data structure - * Output: - * num_edges -- number of edges - * ierr -- error code - */ - -typedef void ZOLTAN_HG_SIZE_EDGE_WTS_FN( - void *data, - int *num_edges, - int *ierr -); - -typedef void ZOLTAN_HG_SIZE_EDGE_WTS_FORT_FN( - void *data, - int *num_edges, - int *ierr -); - -/*****************************************************************************/ -/* - * Function to supply edge weights. - * - * Input: - * data -- pointer to user defined data structure - * num_gid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a global ID - * num_lid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a local ID - * nedges -- number edges for which weights are expected - * edge_weight_dim -- number of weights per edge expected - * - * Output: - * edge_GID -- list of edge global IDs for which weights are reported - * edge_LID -- optional list of edge local IDs - * edge_weight -- list of weights, by edge by dim - * ierr -- error code - */ - -typedef void ZOLTAN_HG_EDGE_WTS_FN( - void *data, - int num_gid_entries, - int num_lid_entries, - int nedges, - int edge_weight_dim, - ZOLTAN_ID_PTR edge_GID, - ZOLTAN_ID_PTR edge_LID, - float *edge_weight, - int *ierr -); - -typedef void ZOLTAN_HG_EDGE_WTS_FORT_FN( - void *data, - int *num_gid_entries, - int *num_lid_entries, - int *nedges, - int *edge_weight_dim, - ZOLTAN_ID_PTR edge_GID, - ZOLTAN_ID_PTR edge_LID, - float *edge_weight, - int *ierr -); - -/*****************************************************************************/ -/* - * Function to return - * the number of objects on a given processor fixed to particular partitions. - * Input: - * data -- pointer to user defined data structure - * Output: - * ierr -- error code - * Returned value: -- the number of fixed objects on this processor. - */ - -typedef int ZOLTAN_NUM_FIXED_OBJ_FN( - void *data, - int *ierr -); - -typedef int ZOLTAN_NUM_FIXED_OBJ_FORT_FN( - void *data, - int *ierr -); - -/*****************************************************************************/ -/* - * Function to return a list of fixed objects and the partitions to - * which they are fixed. - * - * Input: - * data -- pointer to user defined data structure - * num_fixed_obj -- number of fixed objects to be stored - * num_gid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a global ID - * Output: - * fixed_gids -- global IDs of fixed objects - * fixed_part -- partition assignment of fixed objects - * ierr -- error code - */ - -typedef void ZOLTAN_FIXED_OBJ_LIST_FN( - void *data, - int num_fixed_obj, - int num_gid_entries, - ZOLTAN_ID_PTR fixed_gids, - int *fixed_part, - int *ierr -); - -typedef void ZOLTAN_FIXED_OBJ_LIST_FORT_FN( - void *data, - int *num_fixed_obj, - int *num_gid_entries, - ZOLTAN_ID_PTR fixed_gids, - int *fixed_part, - int *ierr -); - -/*****************************************************************************/ -/* - * Function to return, for the calling processor, the number of objects - * sharing a subdomain border with a given processor. - * Input: - * data -- pointer to user defined data structure - * nbor_proc -- processor ID of the neighboring processor. - * Output: - * ierr -- error code - * Returned value: -- the number of local objects. - */ - -typedef int ZOLTAN_NUM_BORDER_OBJ_FN( - void *data, - int nbor_proc, - int *ierr -); - -typedef int ZOLTAN_NUM_BORDER_OBJ_FORT_FN( - void *data, - int *nbor_proc, - int *ierr -); - -/*****************************************************************************/ -/* - * Function to return a list of all objects sharing a subdomain border - * with a given processor. - * Input: - * data -- pointer to user defined data structure - * num_gid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a global ID - * num_lid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a local ID - * nbor_proc -- processor ID of the neighboring processor. - * wdim -- dimension of object weight, or 0 if - * the weights are not sought. - * Output: - * global_ids -- array of Global IDs of all objects on the - * processor border with the given neighboring - * processor. - * local_ids -- array of Local IDs of all objects on the - * processor border with the given neighboring - * processor. - * objwgts -- objwgts[i*wdim:(i+1)*wdim-1] correponds - * to the weight of object i - * (objwgts is undefined if wdim=0) - * ierr -- error code - */ - -typedef void ZOLTAN_BORDER_OBJ_LIST_FN( - void *data, - int num_gid_entries, - int num_lid_entries, - int nbor_proc, - ZOLTAN_ID_PTR global_ids, - ZOLTAN_ID_PTR local_ids, - int wdim, - float *objwgts, - int *ierr -); - -typedef void ZOLTAN_BORDER_OBJ_LIST_FORT_FN( - void *data, - int *num_gid_entries, - int *num_lid_entries, - int *nbor_proc, - ZOLTAN_ID_PTR global_ids, - ZOLTAN_ID_PTR local_ids, - int *wdim, - float *objwgts, - int *ierr -); - -/*****************************************************************************/ -/* - * Iterator function for border objects; return the first local object - * along the subdomain boundary with a given processor. - * Input: - * data -- pointer to user defined data structure - * num_gid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a global ID - * num_lid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a local ID - * nbor_proc -- processor ID of the neighboring processor. - * wdim -- dimension of object weight, or 0 if - * the weight is not sought. - * Output: - * first_global_id -- Global ID of the first object; NULL if no - * objects. - * first_local_id -- Local ID of the first object; NULL if no - * objects. - * first_obj_wgt -- weight vector for the first object - * (undefined if wdim=0) - * ierr -- error code - * Returned value: -- 1 if a valid object is returned; 0 if - * no more objects exist (i.e., global_id is - * the last object). - */ - -typedef int ZOLTAN_FIRST_BORDER_OBJ_FN( - void *data, - int num_gid_entries, - int num_lid_entries, - int nbor_proc, - ZOLTAN_ID_PTR first_global_id, - ZOLTAN_ID_PTR first_local_id, - int wdim, - float *first_obj_wgt, - int *ierr -); - -typedef int ZOLTAN_FIRST_BORDER_OBJ_FORT_FN( - void *data, - int *num_gid_entries, - int *num_lid_entries, - int *nbor_proc, - ZOLTAN_ID_PTR first_global_id, - ZOLTAN_ID_PTR first_local_id, - int *wdim, - float *first_obj_wgt, - int *ierr -); - -/*****************************************************************************/ -/* - * Iterator function for border objects; return the next local object - * along the subdomain boundary with a given processor. - * Input: - * data -- pointer to user defined data structure - * num_gid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a global ID - * num_lid_entries -- number of array entries of type ZOLTAN_ID_TYPE - * in a local ID - * global_id -- Global ID of the previous object. - * local_id -- Local ID of the previous object. - * nbor_proc -- processor ID of the neighboring processor. - * wdim -- dimension of object weight, or 0 if - * the weight is not sought. - * Output: - * next_global_id -- Global ID of the next object; NULL if no - * more objects. - * next_local_id -- Local ID of the next object; NULL if no - * more objects. - * next_obj_wgt -- weight vector for the next object - * (undefined if wdim=0) - * ierr -- error code - * Returned value: -- 1 if a valid object is returned; 0 if - * no more objects exist (i.e., global_id is - * the last object). - */ - -typedef int ZOLTAN_NEXT_BORDER_OBJ_FN( - void *data, - int num_gid_entries, - int num_lid_entries, - ZOLTAN_ID_PTR global_id, - ZOLTAN_ID_PTR local_id, - int nbor_proc, - ZOLTAN_ID_PTR next_global_id, - ZOLTAN_ID_PTR next_local_id, - int wdim, - float *next_obj_wgt, - int *ierr -); - -typedef int ZOLTAN_NEXT_BORDER_OBJ_FORT_FN( - void *data, - int *num_gid_entries, - int *num_lid_entries, - ZOLTAN_ID_PTR global_id, - ZOLTAN_ID_PTR local_id, - int *nbor_proc, - ZOLTAN_ID_PTR next_global_id, - ZOLTAN_ID_PTR next_local_id, - int *wdim, - float *next_obj_wgt, - int *ierr -); - -/*****************************************************************************/ -/******* Functions to set up hierarchical balancing ************************/ -/*****************************************************************************/ - -/*****************************************************************************/ -/* - * Function to return, for the calling processor, the number of levels - * of hierarchy for hierarchical load balancing - * Input: - * data -- pointer to user defined data structure - * Output: - * ierr -- error code - * Returned value: -- the number of levels of balancing hierarchy - */ - -typedef int ZOLTAN_HIER_NUM_LEVELS_FN( - void *data, - int *ierr -); - -typedef int ZOLTAN_HIER_NUM_LEVELS_FORT_FN( - void *data, - int *ierr -); - -/*****************************************************************************/ -/* - * Function to return, for the calling processor, the part - * in which the processor is to be computing for hierarchical - * balancing at the given level in the hierarchy - * Input: - * data -- pointer to user defined data structure - * level -- level in the hierarchy being considered - * Output: - * ierr -- error code - * Returned value: -- the partition number the processor is to compute - */ - -typedef int ZOLTAN_HIER_PART_FN( - void *data, - int level, - int *ierr -); - -typedef int ZOLTAN_HIER_PART_FORT_FN( - void *data, - int *level, - int *ierr -); - -/* For backward compatibility with v3.0 */ -#define ZOLTAN_HIER_PARTITION_FN ZOLTAN_HIER_PART_FN -#define ZOLTAN_HIER_PARTITION_FORT_FN ZOLTAN_HIER_PART_FORT_FN - -/*****************************************************************************/ -/* - * Function to provide to the calling processor the Zoltan_Struct - * to be used to guide the partitioning and load balancing at the - * given level in the hierarchy. This Zoltan_Struct can be passed to - * Zoltan_Set_Param to set load balancing parameters for this level - * in the hierarchical balancing - * Input: - * data -- pointer to user defined data structure - * level -- level in the hierarchy being considered - * zz -- Zoltan_Struct to use to set parameters - * Output: - * ierr -- error code - */ - -typedef void ZOLTAN_HIER_METHOD_FN( - void *data, - int level, - struct Zoltan_Struct *zz, - int *ierr -); - -typedef void ZOLTAN_HIER_METHOD_FORT_FN( - void *data, - int *level, - int *zz, /* this is a Zoltan_Struct, but is converted for F90 */ - int *ierr -); - -/*****************************************************************************/ -/*****************************************************************************/ -/******* Functions to set-up Zoltan load-balancing data structure **********/ -/*****************************************************************************/ -/*****************************************************************************/ - -/* - * Function to initialize values needed in load balancing tools, and - * returns which version of the library this is. If the application - * uses MPI, call this function after calling MPI_Init. If the - * application does not use MPI, this function calls MPI_Init for - * use by Zoltan. This function returns the version of - * the Zoltan library. - * Input: - * argc -- Argument count from main() - * argv -- Argument list from main() - * Output: - * ver -- Version of Zoltan library - * Returned value: -- Error code - */ - -extern int Zoltan_Initialize( - int argc, - char **argv, - float *ver -); - -/*****************************************************************************/ -/* - * Function to create a Zoltan structure. May want more than one - * structure if using different decompositions with different techniques. - * This function allocates and initializes the structure. - * Input: - * communicator -- MPI Communicator to be used for this - * Zoltan structure. - * Returned value: -- Pointer to a Zoltan structure. - * If there is an error, NULL is returned. - * Any error in this function should be - * considered fatal. - */ - -extern struct Zoltan_Struct *Zoltan_Create( - MPI_Comm communicator -); - -/*****************************************************************************/ -/* - * Function to create a new Zoltan structure and initialize it to be - * equal to a supplied Zoltan structure. - * - * Input: - * from -- The Zoltan_Struct to be copied - * - * Returned value: -- Pointer to a new Zoltan structure, which - * is a copy of the "from" structure. - * If there is an error, NULL is returned. - */ - -extern struct Zoltan_Struct *Zoltan_Copy(struct Zoltan_Struct const *from); - -/*****************************************************************************/ -/* - * Function to copy the fields from one Zoltan_Struct to another. Both - * inputs must be valid Zoltan_Struct's. - * - * Input: - * to -- A pointer to a valid Zoltan_Struct. - * from -- Another pointer to a valid Zoltan_Struct. - * - * Returned value: -- 0 (zero) if the second Zoltan_Struct was - * successfully copied to the first, 1 otherwise. - */ - -extern int Zoltan_Copy_To(struct Zoltan_Struct *to, - struct Zoltan_Struct const *from); - -/*****************************************************************************/ -/* - * Function to free the space associated with a Zoltan structure. - * The input pointer is set to NULL when the routine returns. - * Input/Output: - * zz -- Pointer to a Zoltan structure. - */ - -extern void Zoltan_Destroy( - struct Zoltan_Struct **zz -); - -/*****************************************************************************/ -/* - * General function to initialize a given Zoltan callback function. - * Input: - * zz -- Pointer to a Zoltan structure. - * fn_type -- Enum type indicating the function to be - * set. - * fn_ptr -- Pointer to the function to be used in the - * assignment. - * data_ptr -- Pointer to data that Zoltan will - * pass as an argument to fn(). May be NULL. - * Output: - * zz -- Appropriate field set to value in fn_ptr. - * Returned value: -- Error code - */ - -extern int Zoltan_Set_Fn( - struct Zoltan_Struct *zz, - ZOLTAN_FN_TYPE fn_type, - ZOLTAN_VOID_FN *fn_ptr, - void *data_ptr -); - -/*****************************************************************************/ -/* - * General function to retrieve a pointer to a given Zoltan callback function. - * Input: - * zz -- Pointer to a Zoltan structure. - * fn_type -- Enum type indicating the function to be - * retrieved. - * Output: - * fn_ptr -- Pointer to the function retrieved. - * data_ptr -- Pointer to data associated with the function. - * May be NULL. - * Returned value: -- Error code - */ - -extern int Zoltan_Get_Fn( - struct Zoltan_Struct *zz, - ZOLTAN_FN_TYPE fn_type, - ZOLTAN_VOID_FN **fn_ptr, - void **data_ptr -); - -/* - * Functions to initialize specific Zoltan callback functions. One function - * exists for each callback function type, as listed in Zoltan_Fn_Type above. - * Use of these specific functions enables stricter type checking of the - * callback function types. - * Input: - * zz -- Pointer to a Zoltan structure. - * fn_ptr -- Pointer to the function to be used in the - * assignment, where FN is one of the - * callback function typedef'ed above. - * data_ptr -- Pointer to data that Zoltan will - * pass as an argument to fn(). May be NULL. - * Output: - * zz -- Appropriate field set to value in fn_ptr. - * Returned value: -- Error code - */ - -extern int Zoltan_Set_Part_Multi_Fn( - struct Zoltan_Struct *zz, - ZOLTAN_PART_MULTI_FN *fn_ptr, - void *data_ptr -); - -extern int Zoltan_Set_Part_Fn( - struct Zoltan_Struct *zz, - ZOLTAN_PART_FN *fn_ptr, - void *data_ptr -); - -extern int Zoltan_Set_Num_Edges_Multi_Fn( - struct Zoltan_Struct *zz, - ZOLTAN_NUM_EDGES_MULTI_FN *fn_ptr, - void *data_ptr -); - -extern int Zoltan_Set_Num_Edges_Fn( - struct Zoltan_Struct *zz, - ZOLTAN_NUM_EDGES_FN *fn_ptr, - void *data_ptr -); - -extern int Zoltan_Set_Edge_List_Multi_Fn( - struct Zoltan_Struct *zz, - ZOLTAN_EDGE_LIST_MULTI_FN *fn_ptr, - void *data_ptr -); - -extern int Zoltan_Set_Edge_List_Fn( - struct Zoltan_Struct *zz, - ZOLTAN_EDGE_LIST_FN *fn_ptr, - void *data_ptr -); - -extern int Zoltan_Set_Num_Geom_Fn( - struct Zoltan_Struct *zz, - ZOLTAN_NUM_GEOM_FN *fn_ptr, - void *data_ptr -); - -extern int Zoltan_Set_Geom_Multi_Fn( - struct Zoltan_Struct *zz, - ZOLTAN_GEOM_MULTI_FN *fn_ptr, - void *data_ptr -); - -extern int Zoltan_Set_Geom_Fn( - struct Zoltan_Struct *zz, - ZOLTAN_GEOM_FN *fn_ptr, - void *data_ptr -); - -extern int Zoltan_Set_Num_Obj_Fn( - struct Zoltan_Struct *zz, - ZOLTAN_NUM_OBJ_FN *fn_ptr, - void *data_ptr -); - -extern int Zoltan_Set_Obj_List_Fn( - struct Zoltan_Struct *zz, - ZOLTAN_OBJ_LIST_FN *fn_ptr, - void *data_ptr -); - -extern int Zoltan_Set_First_Obj_Fn( - struct Zoltan_Struct *zz, - ZOLTAN_FIRST_OBJ_FN *fn_ptr, - void *data_ptr -); - -extern int Zoltan_Set_Next_Obj_Fn( - struct Zoltan_Struct *zz, - ZOLTAN_NEXT_OBJ_FN *fn_ptr, - void *data_ptr -); - -extern int Zoltan_Set_Num_Border_Obj_Fn( - struct Zoltan_Struct *zz, - ZOLTAN_NUM_BORDER_OBJ_FN *fn_ptr, - void *data_ptr -); - -extern int Zoltan_Set_Border_Obj_List_Fn( - struct Zoltan_Struct *zz, - ZOLTAN_BORDER_OBJ_LIST_FN *fn_ptr, - void *data_ptr -); - -extern int Zoltan_Set_First_Border_Obj_Fn( - struct Zoltan_Struct *zz, - ZOLTAN_FIRST_BORDER_OBJ_FN *fn_ptr, - void *data_ptr -); - -extern int Zoltan_Set_Next_Border_Obj_Fn( - struct Zoltan_Struct *zz, - ZOLTAN_NEXT_BORDER_OBJ_FN *fn_ptr, - void *data_ptr -); - -extern int Zoltan_Set_Pre_Migrate_PP_Fn( - struct Zoltan_Struct *zz, - ZOLTAN_PRE_MIGRATE_PP_FN *fn_ptr, - void *data_ptr -); - -extern int Zoltan_Set_Mid_Migrate_PP_Fn( - struct Zoltan_Struct *zz, - ZOLTAN_MID_MIGRATE_PP_FN *fn_ptr, - void *data_ptr -); - -extern int Zoltan_Set_Post_Migrate_PP_Fn( - struct Zoltan_Struct *zz, - ZOLTAN_POST_MIGRATE_PP_FN *fn_ptr, - void *data_ptr -); -extern int Zoltan_Set_Pre_Migrate_Fn( - struct Zoltan_Struct *zz, - ZOLTAN_PRE_MIGRATE_FN *fn_ptr, - void *data_ptr -); - -extern int Zoltan_Set_Mid_Migrate_Fn( - struct Zoltan_Struct *zz, - ZOLTAN_MID_MIGRATE_FN *fn_ptr, - void *data_ptr -); - -extern int Zoltan_Set_Post_Migrate_Fn( - struct Zoltan_Struct *zz, - ZOLTAN_POST_MIGRATE_FN *fn_ptr, - void *data_ptr -); - -extern int Zoltan_Set_Obj_Size_Fn( - struct Zoltan_Struct *zz, - ZOLTAN_OBJ_SIZE_FN *fn_ptr, - void *data_ptr -); - -extern int Zoltan_Set_Obj_Size_Multi_Fn( - struct Zoltan_Struct *zz, - ZOLTAN_OBJ_SIZE_MULTI_FN *fn_ptr, - void *data_ptr -); - -extern int Zoltan_Set_Pack_Obj_Fn( - struct Zoltan_Struct *zz, - ZOLTAN_PACK_OBJ_FN *fn_ptr, - void *data_ptr -); - -extern int Zoltan_Set_Pack_Obj_Multi_Fn( - struct Zoltan_Struct *zz, - ZOLTAN_PACK_OBJ_MULTI_FN *fn_ptr, - void *data_ptr -); - -extern int Zoltan_Set_Unpack_Obj_Fn( - struct Zoltan_Struct *zz, - ZOLTAN_UNPACK_OBJ_FN *fn_ptr, - void *data_ptr -); - -extern int Zoltan_Set_Unpack_Obj_Multi_Fn( - struct Zoltan_Struct *zz, - ZOLTAN_UNPACK_OBJ_MULTI_FN *fn_ptr, - void *data_ptr -); - -extern int Zoltan_Set_Num_Coarse_Obj_Fn( - struct Zoltan_Struct *zz, - ZOLTAN_NUM_COARSE_OBJ_FN *fn_ptr, - void *data_ptr -); - -extern int Zoltan_Set_Coarse_Obj_List_Fn( - struct Zoltan_Struct *zz, - ZOLTAN_COARSE_OBJ_LIST_FN *fn_ptr, - void *data_ptr -); - -extern int Zoltan_Set_First_Coarse_Obj_Fn( - struct Zoltan_Struct *zz, - ZOLTAN_FIRST_COARSE_OBJ_FN *fn_ptr, - void *data_ptr -); - -extern int Zoltan_Set_Next_Coarse_Obj_Fn( - struct Zoltan_Struct *zz, - ZOLTAN_NEXT_COARSE_OBJ_FN *fn_ptr, - void *data_ptr -); - -extern int Zoltan_Set_Num_Child_Fn( - struct Zoltan_Struct *zz, - ZOLTAN_NUM_CHILD_FN *fn_ptr, - void *data_ptr -); - -extern int Zoltan_Set_Child_List_Fn( - struct Zoltan_Struct *zz, - ZOLTAN_CHILD_LIST_FN *fn_ptr, - void *data_ptr -); - -extern int Zoltan_Set_Child_Weight_Fn( - struct Zoltan_Struct *zz, - ZOLTAN_CHILD_WEIGHT_FN *fn_ptr, - void *data_ptr -); - -extern int Zoltan_Set_HG_Size_CS_Fn( - struct Zoltan_Struct *zz, - ZOLTAN_HG_SIZE_CS_FN *fn_ptr, - void *data_ptr -); - -extern int Zoltan_Set_HG_CS_Fn( - struct Zoltan_Struct *zz, - ZOLTAN_HG_CS_FN *fn_ptr, - void *data_ptr -); - -extern int Zoltan_Set_HG_Size_Edge_Wts_Fn( - struct Zoltan_Struct *zz, - ZOLTAN_HG_SIZE_EDGE_WTS_FN *fn_ptr, - void *data_ptr -); - -extern int Zoltan_Set_HG_Edge_Wts_Fn( - struct Zoltan_Struct *zz, - ZOLTAN_HG_EDGE_WTS_FN *fn_ptr, - void *data_ptr -); - -extern int Zoltan_Set_Num_Fixed_Obj_Fn( - struct Zoltan_Struct *zz, - ZOLTAN_NUM_FIXED_OBJ_FN *fn_ptr, - void *data_ptr -); - -extern int Zoltan_Set_Fixed_Obj_List_Fn( - struct Zoltan_Struct *zz, - ZOLTAN_FIXED_OBJ_LIST_FN *fn_ptr, - void *data_ptr -); - -extern int Zoltan_Set_Hier_Num_Levels_Fn( - struct Zoltan_Struct *zz, - ZOLTAN_HIER_NUM_LEVELS_FN *fn_ptr, - void *data_ptr -); - -extern int Zoltan_Set_Hier_Part_Fn( - struct Zoltan_Struct *zz, - ZOLTAN_HIER_PART_FN *fn_ptr, - void *data_ptr -); - -extern int Zoltan_Set_Hier_Method_Fn( - struct Zoltan_Struct *zz, - ZOLTAN_HIER_METHOD_FN *fn_ptr, - void *data_ptr -); - -/* For backward compatibility with v3.0 */ -#define Zoltan_Set_Partition_Multi_Fn Zoltan_Set_Part_Multi_Fn -#define Zoltan_Set_Partition_Fn Zoltan_Set_Part_Fn -#define Zoltan_Set_Hier_Partition_Fn Zoltan_Set_Hier_Part_Fn - -/*****************************************************************************/ -/* - * Function to change a parameter value within Zoltan. - * Default values will be used for all parameters not explicitly altered - * by a call to this routine. - * - * Input - * zz -- The Zoltan structure to which this - * parameter alteration applies. - * name -- The name of the parameter to have its - * value changed. - * val -- The new value of the parameter. - * - * Returned value: -- Error code - */ - -extern int Zoltan_Set_Param( - struct Zoltan_Struct *zz, - const char *name, - const char *val -); - -/*****************************************************************************/ -/* - * Function to change a vector parameter value within Zoltan. - * Default values will be used for all parameters not explicitly altered - * by a call to this routine. - * - * Input - * zz -- The Zoltan structure to which this - * parameter alteration applies. - * name -- The name of the parameter to have its - * value changed. - * val -- The new value of the parameter. - * index -- The index of the parameter entry - * to be set. By convention, the - * first index is 0 (not 1). - * - * Returned value: -- Error code - */ - -extern int Zoltan_Set_Param_Vec( - struct Zoltan_Struct *zz, - const char *name, - const char *val, - int index -); - -/*****************************************************************************/ -/* - * Function to invoke the partitioner. - * - * Input: - * zz -- The Zoltan structure returned by Zoltan_Create. - * Output: - * changes -- This value tells whether the new - * decomposition computed by Zoltan differs - * from the one given as input to Zoltan. - * It can be either a one or a zero: - * zero - No changes to the decomposition - * were made by the partitioning - * algorithm; migration isn't needed. - * one - A new decomposition is suggested - * by the partitioner; migration - * is needed to establish the new - * decomposition. - * num_gid_entries -- number of entries of type ZOLTAN_ID_TYPE - * in a global ID - * num_lid_entries -- number of entries of type ZOLTAN_ID_TYPE - * in a local ID - * num_import -- The number of non-local objects in the - * processor's new decomposition (i.e., - * number of objects to be imported). - * import_global_ids -- Pointer to array of Global IDs for the - * objects to be imported. - * import_local_ids -- Pointer to array of Local IDs for the - * objects to be imported (local to the - * exporting processor). - * import_procs -- Pointer to array of Processor IDs for the - * objects to be imported (processor IDs of - * source processor). - * import_to_part -- Pointer to array of partition numbers to - * which the imported objects should be assigned. - * num_export -- The number of local objects that must be - * exported from the processor to establish - * the new decomposition. - * export_global_ids -- Pointer to array of Global IDs for the - * objects to be exported from the current - * processor. - * export_local_ids -- Pointer to array of Local IDs for the - * objects to be exported (local to the - * current processor). - * export_procs -- Pointer to array of Processor IDs for the - * objects to be exported (processor IDs of - * destination processors). - * export_to_part -- Pointer to array of partition numbers to - * which the exported objects should be assigned. - * Returned value: -- Error code - */ - -extern int Zoltan_LB_Partition( - struct Zoltan_Struct *zz, - int *changes, - int *num_gid_entries, - int *num_lid_entries, - int *num_import, - ZOLTAN_ID_PTR *import_global_ids, - ZOLTAN_ID_PTR *import_local_ids, - int **import_procs, - int **import_to_part, - int *num_export, - ZOLTAN_ID_PTR *export_global_ids, - ZOLTAN_ID_PTR *export_local_ids, - int **export_procs, - int **export_to_part -); -/*****************************************************************************/ -/* - * Function to invoke the load-balancer. - * Appropriate only when the number of requested partitions is equal to the - * number of processors. - * - * Input and output: - * Arguments are analogous to Zoltan_LB_Partition. Arrays import_to_part - * and export_to_part are not included, as Zoltan_LB_Balance assumes - * partitions and processors are equivalent. - * Returned value: -- Error code - */ - -extern int Zoltan_LB_Balance( - struct Zoltan_Struct *zz, - int *changes, - int *num_gid_entries, - int *num_lid_entries, - int *num_import, - ZOLTAN_ID_PTR *import_global_ids, - ZOLTAN_ID_PTR *import_local_ids, - int **import_procs, - int *num_export, - ZOLTAN_ID_PTR *export_global_ids, - ZOLTAN_ID_PTR *export_local_ids, - int **export_procs -); - -/*****************************************************************************/ -/* - * Function to return the bounding box of a partition generated by RCB. - * Input: - * zz -- The Zoltan structure returned by Zoltan_Create. - * part -- The partition number whose bounding box is to - * be returned. - * Output: - * ndim -- Number of dimensions in the bounding box. - * xmin -- lower x extent of box - * ymin -- lower y extent of box - * zmin -- lower z extent of box - * xmax -- upper x extent of box - * ymax -- upper y extent of box - * zmax -- upper z extent of box - * Returned value: -- Error code - */ - -int Zoltan_RCB_Box( - struct Zoltan_Struct *zz, - int part, - int *ndim, - double *xmin, - double *ymin, - double *zmin, - double *xmax, - double *ymax, - double *zmax -); - -/*****************************************************************************/ -/* - * Routine to compute an ordering (permutation) of the objects. - * - * Input: - * zz -- The Zoltan structure containing - * info for this load-balancing invocation. - * Input: - * num_gid_entries -- number of entries of type ZOLTAN_ID_TYPE - * in a global ID - * - * num_obj -- Number of elements in the global_ids array. - * - * global_ids -- List of global ids. This list contains the - * global ID for which the user wants to know - * the corresponding permutation. - * - * Output: - * permuted_global_ids -- Permutation Vector: global_ids[i] becomes - * permuted_global_ids[i] in the new ordering. - * - * Returned value: -- Error code - */ - - -int Zoltan_Order ( - struct Zoltan_Struct *zz, - int num_gid_entries, - int num_obj, - ZOLTAN_ID_PTR global_ids, - ZOLTAN_ID_PTR permuted_global_ids -); - -/*****************************************************************************/ -/* - * Function to return the number of blocks in ordering. - * Input: - * zz -- The zoltan struct with ordering info. - * Returned value: -- The number of blocks in ordering. - */ - -extern int Zoltan_Order_Get_Num_Blocks( - struct Zoltan_Struct *zz /* Info about ordering */ -); - -/*****************************************************************************/ -/* - * Function to return the description of an ordering block - * Input: - * zz -- The zoltan struct with ordering info. - * block_num -- The id of the block to take care of. - * Output: - * first -- Number of the first element of the block. - * last -- Number of the last element of the block. - * For both, number means an indice between 0 and N-1, not in the GID domain. - * Returned value: -- Error code - */ - -extern int Zoltan_Order_Get_Block_Bounds( - struct Zoltan_Struct *zz, /* Info about ordering */ - int block_num, /* Number of the wanted block */ - int *first, /* First element in block */ - int *last /* Last element in block */ -); - -/*****************************************************************************/ -/* - * Function to return the number of elements within a block - * Input: - * zz -- The zoltan struct with ordering info. - * block_num -- The id of the block to take care of. - * Returned value: -- Number of elements in the block. - */ - -extern int Zoltan_Order_Get_Block_Size( - struct Zoltan_Struct *zz, /* Info about ordering */ - int block_num /* Number of the wanted block */ -); - -/*****************************************************************************/ -/* - * Function to return the indice of the parent block in the elimination tree. - * Input: - * zz -- The zoltan struct with ordering info. - * block_num -- The id of the block to take care of. - * Returned value: -- Indice of the father, -1 if block is the root. - */ - -extern int Zoltan_Order_Get_Block_Parent( - struct Zoltan_Struct *zz, /* Info about ordering */ - int block_num /* Number of the wanted block */ -); - - -/*****************************************************************************/ -/* - * Function to return the number of the leaves in the elimination tree - * Input: - * zz -- The ordering computed by Zoltan_Order. - * Returned value: -- Number of leaves in the elimination tree. - */ - -extern int Zoltan_Order_Get_Num_Leaves(struct Zoltan_Struct *zz); - - -/*****************************************************************************/ -/* - * Function to return the list of the leaves in the elimination tree - * Input: - * zz -- The zoltan struct with ordering info. - * Ouput: - * leaves -- List of block indices that are leaves in the - * elimination tree. -1 marks the end of the list. - * The array must be of size num_leaves+1, known by - * calling Zoltan_Order_Get_Num_Leaves. - */ - -extern void Zoltan_Order_Get_Block_Leaves( - struct Zoltan_Struct *zz, /* Info about ordering */ - int *leaves -); - - -/**********************************************************/ -/* Interface routine for Graph Coloring */ -/**********************************************************/ -int Zoltan_Color( - struct Zoltan_Struct *zz, /* Zoltan structure */ - int num_gid_entries, /* # of entries for a global id */ - int num_obj, /* Input: number of objects */ - ZOLTAN_ID_PTR global_ids, /* Input: global ids of the vertices */ - /* The application must allocate enough space */ - int *color_exp /* Output: Colors assigned to local vertices */ - /* The application must allocate enough space */ - ); - -/* Interface routine for Zoltan_Color_Test */ -int Zoltan_Color_Test( - struct Zoltan_Struct *zz, /* Zoltan structure */ - int *num_gid_entries, /* # of entries for a global id */ - int *num_lid_entries, /* # of entries for a local id */ - int num_obj, /* Input: number of objects */ - ZOLTAN_ID_PTR global_ids, /* Input: global ids of the vertices */ - /* The application must allocate enough space */ - ZOLTAN_ID_PTR local_ids, /* Input: local ids of the vertices */ - /* The application must allocate enough space */ - int *color_exp /* Input: Colors assigned to local vertices */ - ); - - -/*****************************************************************************/ -/* - * Routine to compute the inverse map: Given, for each processor, a list - * of objects to be received by a processor, compute the list of objects - * that processor needs to send to other processors to complete a - * remapping. Conversely, given a list of objects to be sent to other - * processors, compute the list of objects to be received. - * - * Input: - * zz -- Zoltan structure for current - * balance. - * num_input -- Number of objects known to be - * sent/received. - * input_global_ids -- Array of global IDs for known objects. - * input_local_ids -- Array of local IDs for known objects. - * input_procs -- Array of IDs of processors to/from whom the - * known objects will be sent/received. - * input_to_part -- Array of partition numbers to - * which the known objects should be assigned. - * Output: - * num_output -- The number of objects will be received/sent. - * output_global_ids -- Pointer to array of Global IDs for the - * objects to be received/sent. - * output_local_ids -- Pointer to array of Local IDs for the - * objects to be received/sent. - * output_procs -- Pointer to array of Processor IDs - * from/to which the output_global_ids will be - * received/sent. - * output_to_part -- Pointer to array of partition numbers to - * which the output_global_ids should be assigned. - * Returned value: -- Error code - */ - - -extern int Zoltan_Invert_Lists( - struct Zoltan_Struct *zz, - int num_input, - ZOLTAN_ID_PTR input_global_ids, - ZOLTAN_ID_PTR input_local_ids, - int *input_procs, - int *input_to_part, - int *num_output, - ZOLTAN_ID_PTR *output_global_ids, - ZOLTAN_ID_PTR *output_local_ids, - int **output_procs, - int **output_to_part -); -/*****************************************************************************/ -/* - * Wrapper around Zoltan_Invert_Lists, appropriate only when - * number of partitions == number of processors (or when partition information - * is not desired). - * - * Input and Output: - * Arguments are analogous to Zoltan_Invert_Lists. Arrays import_to_part - * and export_to_part are not included, as Zoltan_Compute_Destinations - * assumes partitions and processors are equivalent. - * Returned value: -- Error code - */ - -extern int Zoltan_Compute_Destinations( - struct Zoltan_Struct *zz, - int num_input, - ZOLTAN_ID_PTR input_global_ids, - ZOLTAN_ID_PTR input_local_ids, - int *input_procs, - int *num_output, - ZOLTAN_ID_PTR *output_global_ids, - ZOLTAN_ID_PTR *output_local_ids, - int **output_procs -); - -/*****************************************************************************/ -/* - * Routine to help perform migration. Zoltan_Migrate performs the following - * operations: - * - Call migration pre-processing routine (ZOLTAN_PRE_MIGRATE_PP_FN), if - * specified. - * - Call a ZOLTAN_OBJ_SIZE_FN to obtain the size of the migrating objects. - * - Call the application-specified object packing routine (ZOLTAN_PACK_OBJ_FN) - * for each object to be exported. - * - Develop the communication map to move the objects to other processors. - * - Perform the communication according to the map. - * - Call mid-migration processing routine (ZOLTAN_MID_MIGRATE_PP_FN), if - * specified. - * - Call the application-specified object unpacking routine - * (ZOLTAN_UNPACK_OBJ_FN) for each object imported. - * - Call post-migration processing routine (ZOLTAN_POST_MIGRATE_PP_FN), if - * specified. - * - * Input: - * zz -- Zoltan structure for current - * balance. - * num_import -- Number of non-local objects assigned to the - * processor in the new decomposition. - * import_global_ids -- Array of global IDs for non-local objects - * assigned to this processor in the new - * decomposition. - * import_local_ids -- Array of local IDs for non-local objects - * assigned to the processor in the new - * decomposition. - * import_procs -- Array of processor IDs of processors owning - * the non-local objects that are assigned to - * this processor in the new decomposition. - * import_to_part -- Pointer to array of partition numbers to - * which the imported objects should be assigned. - * num_export -- The number of local objects that need to be - * exported from the processor to establish - * the new decomposition. - * export_global_ids -- Array of Global IDs for the objects to be - * exported from the current processor. - * export_local_ids -- Array of Local IDs for the objects to be - * exported (local to the current processor). - * export_procs -- Array of Processor IDs for the objects to - * be exported (processor IDs of destination - * processor). - * export_to_part -- Pointer to array of partition numbers to - * which the exported objects should be assigned. - * Output: - * none -- The objects are migrated to their new - * processor locations. The input arrays - * are unchanged. - * Returned value: -- Error code - */ - -extern int Zoltan_Migrate( - struct Zoltan_Struct *zz, - int num_import, - ZOLTAN_ID_PTR import_global_ids, - ZOLTAN_ID_PTR import_local_ids, - int *import_procs, - int *import_to_part, - int num_export, - ZOLTAN_ID_PTR export_global_ids, - ZOLTAN_ID_PTR export_local_ids, - int *export_procs, - int *export_to_part); - -/*****************************************************************************/ -/* - * Routine to help perform migration. Can be used instead of Zoltan_Migrate - * if the number of partitions is equal to the number of processors. - * Calls ZOLTAN_PRE_MIGRATE_FN, ZOLTAN_MID_MIGRATE_FN, and - * ZOLTAN_POST_MIGRATE_FN. - * - * Input and Output: - * Arguments are analogous to Zoltan_Migrate. Arrays import_to_part - * and export_to_part are not included, as Zoltan_Help_Migrate - * assumes partitions and processors are equivalent. - * Returned value: -- Error code - */ - -extern int Zoltan_Help_Migrate( - struct Zoltan_Struct *zz, - int num_import, - ZOLTAN_ID_PTR import_global_ids, - ZOLTAN_ID_PTR import_local_ids, - int *import_procs, - int num_export, - ZOLTAN_ID_PTR export_global_ids, - ZOLTAN_ID_PTR export_local_ids, - int *export_procs); - -/*****************************************************************************/ -/* - * Routine to free the data arrays returned by Zoltan_LB_Partition, - * Zoltan_LB_Balance, Zoltan_Invert_Lists, and - * Zoltan_Compute_Destinations. The arrays - * are freed and the pointers are set to NULL. - * - * Input: - * global_ids -- Pointer to array of global IDs - * local_ids -- Pointer to array of local IDs - * procs -- Pointer to array of processor IDs - * to_proc -- Pointer to array of partition assignments - * Returned value: -- Error code - */ -extern int Zoltan_LB_Free_Part( - ZOLTAN_ID_PTR *global_ids, - ZOLTAN_ID_PTR *local_ids, - int **procs, - int **to_part -); - -/*****************************************************************************/ -/* - * Routine to free the data arrays returned by Zoltan_Balance. The arrays - * are freed and the pointers are set to NULL. - * - * Input: - * import_global_ids -- Pointer to array of global IDs for - * imported objects. - * import_local_ids -- Pointer to array of local IDs for - * imported objects. - * import_procs -- Pointer to array of processor IDs of - * imported objects. - * export_global_ids -- Pointer to array of global IDs for - * exported objects. - * export_local_ids -- Pointer to array of local IDs for - * exported objects. - * export_procs -- Pointer to array of destination processor - * IDs of exported objects. - * Returned value: -- Error code - */ -extern int Zoltan_LB_Free_Data( - ZOLTAN_ID_PTR *import_global_ids, - ZOLTAN_ID_PTR *import_local_ids, - int **import_procs, - ZOLTAN_ID_PTR *export_global_ids, - ZOLTAN_ID_PTR *export_local_ids, - int **export_procs -); - -/*****************************************************************************/ - -/*****************************************************************************/ -/* - * Routine to determine which processor and partition a new point should be - * assigned to. - * Note that this only works of the current partition was produced via a - * geometric algorithm - currently RCB, RIB, HSFC. - * - * Input: - * zz -- pointer to Zoltan structure - * coords -- vector of coordinates of new point - * - * Output: - * proc -- processor that point should be assigned to - * part -- partition that point should be assigned to - * - * Returned value: -- Error code - */ - -extern int Zoltan_LB_Point_PP_Assign( - struct Zoltan_Struct *zz, - double *coords, - int *proc, - int *part -); - -/*****************************************************************************/ -/* - * Routine to determine which processor a new point should be assigned to. - * Can be used instead of Zoltan_LB_Point_PP_Assign when the number of - * partitions equals the number of processors. - * Note that this only works of the current partition was produced via a - * geometric algorithm - currently RCB, RIB, HSFC. - * - * Input: - * Arguments are analogous to Zoltan_LB_Point_PP_Assign. - * Variable part is not included, as Zoltan_LB_Point_Assign - * assumes partitions and processors are equivalent. - * - * Output: - * proc -- processor that point should be assigned to - * - * Returned value: -- Error code - */ - -extern int Zoltan_LB_Point_Assign( - struct Zoltan_Struct *zz, - double *coords, - int *proc -); - -/*****************************************************************************/ -/* - * Routine to determine which partitions and processors - * a bounding box intersects. - * Note that this only works of the current partition was produced via a - * geometric algorithm - currently RCB, RIB, HSFC. - * - * Input: - * zz -- pointer to Zoltan structure - * xmin, ymin, zmin -- lower left corner of bounding box - * xmax, ymax, zmax -- upper right corner of bounding box - * - * Output: - * procs -- list of processors that box intersects. - * Note: application is - * responsible for ensuring sufficient memory. - * numprocs -- number of processors box intersects - * parts -- list of partitions that box intersects. - * Note: application is - * responsible for ensuring sufficient memory. - * numparts -- number of partitions box intersects (may differ - * from numprocs). - * - * Returned value: -- Error code - */ - -extern int Zoltan_LB_Box_PP_Assign( - struct Zoltan_Struct *zz, - double xmin, - double ymin, - double zmin, - double xmax, - double ymax, - double zmax, - int *procs, - int *numprocs, - int *parts, - int *numparts -); - -/*****************************************************************************/ -/* - * Routine to determine which processors a bounding box intersects. - * Note that this only works of the current partition was produced via a - * geometric algorithm - currently RCB, RIB, HSFC. - * - * Input: - * zz -- pointer to Zoltan structure - * xmin, ymin, zmin -- lower left corner of bounding box - * xmax, ymax, zmax -- upper right corner of bounding box - * - * Output: - * procs -- list of processors that box intersects. - * Note: application is - * responsible for ensuring sufficient memory. - * numprocs -- number of processors box intersects - * - * Returned value: -- Error code - */ - -extern int Zoltan_LB_Box_Assign( - struct Zoltan_Struct *zz, - double xmin, - double ymin, - double zmin, - double xmax, - double ymax, - double zmax, - int *procs, - int *numprocs -); - -/* - * Function to set the desired partition sizes. - * - * Input: - * zz -- The Zoltan structure to which this method - * applies. - * global_num -- Global partition numbers? (0 for local numbers) - * len -- Length of arrays wgt_idx, part_idx, part_sizes - * part_ids -- Array of partition ids (local or global) - * wgt_idx -- Array of indices between 0 and Obj_Wgt_Dim-1 - * part_sizes -- Array of floats that gives the desired partition - * size for each weight and each partition, i.e., - * part_sizes[i] corresponds to wgt_idx[i] and part_id[i] - * - * Output: - * Return value -- Error code. - */ -extern int Zoltan_LB_Set_Part_Sizes(struct Zoltan_Struct *zz, int global_num, - int len, int *part_ids, int *wgt_idx, float *part_sizes); - -/* - * Function to generate data files. - * - * Input: - * zz -- The current Zoltan structure - * fname -- Basename for files to be generated - * base_index -- Start numbering of nodes and edges at 0 or 1? - * gen_geom -- Write geometry file? - * gen_graph -- Write graph file? - * gen_hg -- Write hypergraph file? - * - * Output: - * Return value -- Error code. - */ -extern int Zoltan_Generate_Files(struct Zoltan_Struct *zz, char *fname, int base_index, int gen_geom, int gen_graph, int gen_hg); - -/* - * Returns sizeof(ZOLTAN_ID_TYPE) for the ZOLTAN_ID_TYPE used in building - * the library. (Allows applications to check that their Zoltan include - * files are consistent with the linked-in Zoltan libraries.) - * Input/Output: - * name -- if non-null on input, *name is set to a - * string describing ZOLTAN_ID_TYPE (e.g., "unsigned int") - * Output: - * Return value -- sizeof(ZOLTAN_ID_TYPE) - */ -extern int Zoltan_get_global_id_type(char **name); - -/*****************************************************************************/ -/* - * Routine specifying the number of bytes needed to serialize a Zoltan_Struct. - * This value can be used to allocate a serialization buffer. - * - * This is an expert function; its implementation may be incomplete for all - * partitioning methods. - * Currently supported for partitioning method RCB. - * - * Input: - * zz -- Zoltan_Struct to be serialized - * - * Returned value: -- Number of bytes needed to allocate a buffer - */ - -extern size_t Zoltan_Serialize_Size( - struct Zoltan_Struct const *zz -); - -/*****************************************************************************/ -/* - * Routine to serialize a Zoltan_Struct into a buffer for communication. - * - * This is an expert function; its implementation may be incomplete for all - * partitioning methods. - * Currently supported for partitioning method RCB. - * - * Input: - * zz -- Zoltan_Struct to be serialized - * bufsize -- size (number of bytes allocated) of the buffer - * buf -- buffer into which zz should be serialized; - * the user must allocate and own this memory - * - * Returned value: -- Error code - */ - -extern int Zoltan_Serialize( - struct Zoltan_Struct const *zz, - size_t bufsize, - char *buf -); - -/*****************************************************************************/ -/* - * Routine to deserialize a buffer into a Zoltan_Struct. - * - * This is an expert function; its implementation may be incomplete for all - * partitioning methods. - * Currently supported for partitioning method RCB. - * - * Input: - * zz -- Zoltan_Struct into which buf is serialized - * bufsize -- size (number of bytes allocated) of the buffer - * buf -- buffer with data to be deserialized - * - * Returned value: -- Error code - */ - -extern int Zoltan_Deserialize( - struct Zoltan_Struct *zz, - size_t bufsize, - char *buf -); - -#ifdef __cplusplus -} /* closing bracket for extern "C" */ -#endif - -#endif /* !__ZOLTAN_H */ diff --git a/packages/zoltan/src/include/zoltan_align.h b/packages/zoltan/src/include/zoltan_align.h deleted file mode 100644 index fd7ee46..0000000 --- a/packages/zoltan/src/include/zoltan_align.h +++ /dev/null @@ -1,74 +0,0 @@ -/* - * @HEADER - * - * *********************************************************************** - * - * Zoltan Toolkit for Load-balancing, Partitioning, Ordering and Coloring - * Copyright 2012 Sandia Corporation - * - * Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, - * the U.S. Government 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: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. Neither the name of the Corporation nor the names of the - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "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 SANDIA CORPORATION OR THE - * 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. - * - * Questions? Contact Karen Devine kddevin@sandia.gov - * Erik Boman egboman@sandia.gov - * - * *********************************************************************** - * - * @HEADER - */ - -#ifndef __ZOLTAN_ALIGN_H -#define __ZOLTAN_ALIGN_H - -#ifdef __cplusplus -/* if C++, define the rest of this header file as extern C */ -extern "C" { -#endif - -/* - * Plauger alignment algorithm, The Standard C Library. - * Forces malloc'ed variable size struct alignment. - * ZOLTAN_ALIGN_VAL is defined in Zoltan/include/zoltan_align.h; - * values are 0,1,3,7U depending upon machine. - * (E.g., 7U == 8 byte alignment.) - */ - -#ifndef ZOLTAN_ALIGN_VAL -#define ZOLTAN_ALIGN_VAL 7U -#endif - -extern int Zoltan_Align(int); -extern size_t Zoltan_Align_size_t(size_t); - -#ifdef __cplusplus -} /* closing bracket for extern "C" */ -#endif - -#endif diff --git a/packages/zoltan/src/include/zoltan_comm.h b/packages/zoltan/src/include/zoltan_comm.h deleted file mode 100644 index baaf62d..0000000 --- a/packages/zoltan/src/include/zoltan_comm.h +++ /dev/null @@ -1,103 +0,0 @@ -/* - * @HEADER - * - * *********************************************************************** - * - * Zoltan Toolkit for Load-balancing, Partitioning, Ordering and Coloring - * Copyright 2012 Sandia Corporation - * - * Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, - * the U.S. Government 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: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. Neither the name of the Corporation nor the names of the - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "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 SANDIA CORPORATION OR THE - * 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. - * - * Questions? Contact Karen Devine kddevin@sandia.gov - * Erik Boman egboman@sandia.gov - * - * *********************************************************************** - * - * @HEADER - */ - - -#ifndef __COMM_CONST_H -#define __COMM_CONST_H - -#include - -#ifdef __cplusplus -/* if C++, define the rest of this header file as extern C */ -extern "C" { -#endif - -/* Interface to the Zoltan Communication Package. */ -/* This file should be included by user's of the */ -/* Communication package. */ - -struct Zoltan_Comm_Obj; -typedef struct Zoltan_Comm_Obj ZOLTAN_COMM_OBJ; - -/* function prototypes */ - -int Zoltan_Comm_Create(ZOLTAN_COMM_OBJ**, int, int*, MPI_Comm, int, int*); - -int Zoltan_Comm_Copy_To(ZOLTAN_COMM_OBJ **toptr, ZOLTAN_COMM_OBJ *from); - -ZOLTAN_COMM_OBJ *Zoltan_Comm_Copy(ZOLTAN_COMM_OBJ *from); - -int Zoltan_Comm_Destroy(ZOLTAN_COMM_OBJ**); - -int Zoltan_Comm_Invert_Map(int*, int*, int, int, int**, int**, int*, int, int, - int, int, MPI_Comm); - -int Zoltan_Comm_Sort_Ints(int*, int*, int); - -int Zoltan_Comm_Exchange_Sizes(int*, int*, int, int, int*, int*, int, int*, int, - int, MPI_Comm); - -int Zoltan_Comm_Resize(ZOLTAN_COMM_OBJ*, int*, int, int*); - -int Zoltan_Comm_Do (ZOLTAN_COMM_OBJ*, int, char*, int, char*); -int Zoltan_Comm_Do_Post(ZOLTAN_COMM_OBJ*, int, char*, int, char*); -int Zoltan_Comm_Do_Wait(ZOLTAN_COMM_OBJ*, int, char*, int, char*); -int Zoltan_Comm_Do_AlltoAll(ZOLTAN_COMM_OBJ*, char*, int, char*); - -int Zoltan_Comm_Do_Reverse (ZOLTAN_COMM_OBJ*, int, char*, int, int*, char*); -int Zoltan_Comm_Do_Reverse_Post(ZOLTAN_COMM_OBJ*, int, char*, int, int*, char*); -int Zoltan_Comm_Do_Reverse_Wait(ZOLTAN_COMM_OBJ*, int, char*, int, int*, char*); - -int Zoltan_Comm_Info(ZOLTAN_COMM_OBJ*, int*, int*, int*, int*, int*, int*, int*, - int*, int*, int*, int*, int*, int*); - -int Zoltan_Comm_Invert_Plan(ZOLTAN_COMM_OBJ**); - -#ifdef __cplusplus -} /* closing bracket for extern "C" */ -#endif - -#endif diff --git a/packages/zoltan/src/include/zoltan_comm_cpp.h b/packages/zoltan/src/include/zoltan_comm_cpp.h deleted file mode 100644 index 1a72cd2..0000000 --- a/packages/zoltan/src/include/zoltan_comm_cpp.h +++ /dev/null @@ -1,196 +0,0 @@ -/* - * @HEADER - * - * *********************************************************************** - * - * Zoltan Toolkit for Load-balancing, Partitioning, Ordering and Coloring - * Copyright 2012 Sandia Corporation - * - * Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, - * the U.S. Government 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: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. Neither the name of the Corporation nor the names of the - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "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 SANDIA CORPORATION OR THE - * 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. - * - * Questions? Contact Karen Devine kddevin@sandia.gov - * Erik Boman egboman@sandia.gov - * - * *********************************************************************** - * - * @HEADER - */ -// -// ************************************************************************ -// -// C++ wrappers for Zoltan communication library. -// -// Two styles of initialization: -// -// C++ style: Zoltan_Comm comm(nvals, assign, comm, tag, pnvals_recv); -// -// C style: Zoltan_Comm comm; -// comm.Create(nvals, assign, comm, tag, pnvals_recv); -// -// ************************************************************************ - -#ifndef ZOLTAN_COMM_CPP_H_ -#define ZOLTAN_COMM_CPP_H_ - -#include "zoltan_comm.h" - -class Zoltan_Comm { - -public: - - Zoltan_Comm(const int &nvals, int *assign, const MPI_Comm &comm, - const int &tag, int *pnvals_recv) - { - // Assumption: MPI has been initialized prior to this call. - Zoltan_Comm_Create(&this->Plan, nvals, assign, comm, tag, pnvals_recv); - } - - Zoltan_Comm() - { - this->Plan = NULL; - // Caller will have to call Create to finish initialization of object - } - - int Create(const int &nvals, int *assign, const MPI_Comm &comm, - const int &tag, int *pnvals_recv) - { - if (this->Plan) - { - Zoltan_Comm_Destroy(&this->Plan); - this->Plan = NULL; - } - - int rc = Zoltan_Comm_Create(&this->Plan, nvals, assign, comm, tag, pnvals_recv); - - return rc; - } - - Zoltan_Comm (const Zoltan_Comm &plan) // Copy constructor - { - this->Plan = Zoltan_Comm_Copy(plan.Plan); - } - - ~Zoltan_Comm() - { - Zoltan_Comm_Destroy(&this->Plan); - } - - Zoltan_Comm & operator= (const Zoltan_Comm &plan) // Copy operator - { - Zoltan_Comm_Copy_To(&this->Plan, plan.Plan); - - return *this; - } - - int Resize(int *sizes, const int &tag, int *sum_recv_sizes) - { - return Zoltan_Comm_Resize( this->Plan, sizes, tag, sum_recv_sizes); - } - - int Do(const int &tag, char *send_data, const int &nbytes, char *recv_data) - { - return Zoltan_Comm_Do(this->Plan, tag, send_data, nbytes, recv_data); - } - - int Do_Post( const int &tag, char *send_data, const int &nbytes, char *recv_data) - { - return Zoltan_Comm_Do_Post(this->Plan, tag, send_data, nbytes, recv_data); - } - - int Do_Wait(const int &tag, char *send_data, const int &nbytes, char *recv_data) - { - return Zoltan_Comm_Do_Wait(this->Plan, tag, send_data, nbytes, recv_data); - } - - int Do_Reverse(const int &tag, char *send_data, const int &nbytes, int *sizes, char *recv_data) - { - return Zoltan_Comm_Do_Reverse(this->Plan, tag, send_data, nbytes, sizes, - recv_data); - } - - int Do_Reverse_Post(const int &tag, char *send_data, const int &nbytes, int *sizes, - char *recv_data) - { - return Zoltan_Comm_Do_Reverse_Post(this->Plan, tag, send_data, nbytes, sizes, - recv_data); - } - - int Do_Reverse_Wait(const int &tag, char *send_data, const int &nbytes, int *sizes, - char *recv_data) - { - return Zoltan_Comm_Do_Reverse_Wait(this->Plan, tag, send_data, nbytes, sizes, - recv_data); - } - - int Info( int *nsends, int *send_procs, - int *send_lengths, int *send_nvals, int *send_max_size, int *send_list, - int *nrecvs, int *recv_procs, int *recv_lengths, int *recv_nvals, - int *recv_total_size, int *recv_list, int *self_msg) const - { - return Zoltan_Comm_Info( this->Plan, nsends, send_procs, send_lengths, - send_nvals, send_max_size, send_list, nrecvs, recv_procs, recv_lengths, - recv_nvals, recv_total_size, recv_list, self_msg); - } - - int Invert_Plan() - { - return Zoltan_Comm_Invert_Plan(&this->Plan); - } - - // Static methods - - static int Invert_Map( int *lengths_to, int *procs_to, - const int &nsends, const int &self_msg, - int * &plengths_from, int * &pprocs_from, int &pnrecvs, - const int &my_proc, const int &nprocs, const int &out_of_mem, - const int &tag, const MPI_Comm &comm) - { - return Zoltan_Comm_Invert_Map( lengths_to, procs_to, nsends, self_msg, - &plengths_from, &pprocs_from, &pnrecvs, my_proc, nprocs, out_of_mem, - tag, comm); - } - - static int Exchange_Sizes( int *sizes_to, int *procs_to, - const int &nsends, const int &self_msg, - int *sizes_from, int *procs_from, const int &nrecvs, int *total_recv_size, - const int &my_proc, const int &tag, const MPI_Comm &comm) - { - return Zoltan_Comm_Exchange_Sizes(sizes_to, procs_to, nsends, self_msg, - sizes_from, procs_from, nrecvs, total_recv_size, my_proc, tag, - comm); - } - -private: - - ZOLTAN_COMM_OBJ *Plan; -}; - -#endif diff --git a/packages/zoltan/src/include/zoltan_cpp.h b/packages/zoltan/src/include/zoltan_cpp.h deleted file mode 100644 index 72b049f..0000000 --- a/packages/zoltan/src/include/zoltan_cpp.h +++ /dev/null @@ -1,694 +0,0 @@ -/* - * @HEADER - * - * *********************************************************************** - * - * Zoltan Toolkit for Load-balancing, Partitioning, Ordering and Coloring - * Copyright 2012 Sandia Corporation - * - * Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, - * the U.S. Government 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: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. Neither the name of the Corporation nor the names of the - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "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 SANDIA CORPORATION OR THE - * 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. - * - * Questions? Contact Karen Devine kddevin@sandia.gov - * Erik Boman egboman@sandia.gov - * - * *********************************************************************** - * - * @HEADER - */ - -// ************************************************************************ -// C++ class representing a Zoltan_Struct object. -// -// Assumption: Zoltan_Initialize has been called prior to creating -// a Zoltan object. -// ************************************************************************ - -#ifndef ZOLTAN_CPP_H_ -#define ZOLTAN_CPP_H_ - -#include "zoltan.h" -#include "zoltan_comm_cpp.h" -#include "zoltan_dd_cpp.h" -#include - -/* F90 names must be less than 31 characters, support old name */ -#define Set_HG_Size_Edge_Weights_Fn Set_HG_Size_Edge_Wts_Fn -#define Set_HG_Edge_Weights_Fn Set_HG_Edge_Wts_Fn - -#ifdef TFLOP - #include -#else - #include -#endif - -class Zoltan { - -public: - - // Constructor - - Zoltan (const MPI_Comm &communicator = MPI_COMM_WORLD) - { - this->ZZ_Ptr = Zoltan_Create(communicator); - - // int fail = (this->ZZ_Ptr == NULL); should catch this exception - } - - // Copy constructor - - Zoltan (const Zoltan &zz) - { - this->ZZ_Ptr = Zoltan_Copy(zz.ZZ_Ptr); - } - - // Destructor - - ~Zoltan() - { - // Warning: Zoltan_Destroy calls MPI. - // Do not call MPI_Finalize() before this destructor gets called. - // Ensure that ZoltanObject's created on the stack are deleted - // before MPI_Finalize(). - // Alternatively, you can allocate and destroy Zoltans explicitly: - // - // MPI_Init(...); - // Zoltan_Initialize(...); - // Zoltan *zz = new Zoltan(); - // ... more code ... - // delete zz; - // MPI_Finalize(); - - Zoltan_Destroy( &(this->ZZ_Ptr) ); - } - - // Copy operator - - Zoltan & operator= (const Zoltan &zz) - { - Zoltan_Copy_To(this->ZZ_Ptr, zz.ZZ_Ptr); - - return *this; - } - - // Wrappers for Zoltan functions - - static int LB_Free_Part( ZOLTAN_ID_PTR *global_ids, - ZOLTAN_ID_PTR *local_ids, - int **procs, - int **to_part ) - { - return Zoltan_LB_Free_Part( global_ids, local_ids, procs, to_part ); - } - - int Set_Param( const std::string & param, const std::string & value ) - { - return Zoltan_Set_Param( ZZ_Ptr, param.c_str(), value.c_str() ); - } - - //! Replaces Zoltan_Set_Param_Vec - int Set_Param_Vec( const std::string & param, const std::string & value, - const int &index ) - { - return Zoltan_Set_Param_Vec( ZZ_Ptr, param.c_str(), value.c_str(), index); - } - - int LB_Partition ( int &changes, - int &num_gid_entries, - int &num_lid_entries, - int &num_import, - ZOLTAN_ID_PTR &import_global_ids, - ZOLTAN_ID_PTR &import_local_ids, - int * &import_procs, - int * &import_to_part, - int &num_export, - ZOLTAN_ID_PTR &export_global_ids, - ZOLTAN_ID_PTR &export_local_ids, - int * &export_procs, - int * &export_to_part ) - { - return Zoltan_LB_Partition( ZZ_Ptr, &changes, - &num_gid_entries, &num_lid_entries, - &num_import, &import_global_ids, &import_local_ids, - &import_procs, &import_to_part, - &num_export, &export_global_ids, &export_local_ids, - &export_procs, &export_to_part ); - } - - int LB_Set_Part_Sizes( const int &global_num, - const int &len, - int * part_ids, - int * wgt_idx, - float * part_sizes ) - { - return Zoltan_LB_Set_Part_Sizes( ZZ_Ptr, - global_num, len, - part_ids, wgt_idx, part_sizes ); - } - - /* This method is deprecated */ - int Order ( int num_gid_entries, - int num_objs, - ZOLTAN_ID_PTR global_ids, - int *rank, - int * /* iperm */ ) - { - return Order( num_gid_entries, num_objs, global_ids, - (ZOLTAN_ID_PTR)rank); - } - - int Order ( int num_gid_entries, - int num_objs, - ZOLTAN_ID_PTR global_ids, - ZOLTAN_ID_PTR permuted_global_ids) - { - return Zoltan_Order( ZZ_Ptr, - num_gid_entries, num_objs, global_ids, - permuted_global_ids); - } - - int Order_Get_Num_Blocks() { - return Zoltan_Order_Get_Num_Blocks(ZZ_Ptr); - } - - int Order_Get_Block_Bounds(int block_num, int &first, int &last) { - return Zoltan_Order_Get_Block_Bounds(ZZ_Ptr, block_num, &first, &last); - } - - int Order_Get_Block_Size(int block_num) { - return Zoltan_Order_Get_Block_Size(ZZ_Ptr, block_num); - } - - int Order_Get_Block_Parent(int block_num) { - return Zoltan_Order_Get_Block_Parent(ZZ_Ptr, block_num); - } - - int Order_Get_Num_Leaves() { - return Zoltan_Order_Get_Num_Leaves(ZZ_Ptr); - } - - void Order_Get_Block_Leaves(int *leaves) { - return Zoltan_Order_Get_Block_Leaves(ZZ_Ptr, leaves); - } - - int Color (int &num_gid_entries, - const int &num_objs, - ZOLTAN_ID_PTR global_ids, - int *color_exp ) - { - return Zoltan_Color(ZZ_Ptr, num_gid_entries, - num_objs, global_ids, color_exp); - } - /* Simpler method to do coloring */ -/* int Color (int *color_exp); */ - - int Color_Test (int &num_gid_entries, - int &num_lid_entries, - const int &num_objs, - ZOLTAN_ID_PTR global_ids, - ZOLTAN_ID_PTR local_ids, - int *color_exp ) - { - return Zoltan_Color_Test(ZZ_Ptr, &num_gid_entries, &num_lid_entries, - num_objs, global_ids, local_ids, color_exp); - } - - int LB_Eval_Balance(int print_stats, ZOLTAN_BALANCE_EVAL *eval) - { - return Zoltan_LB_Eval_Balance(ZZ_Ptr, print_stats, eval); - } - - int LB_Eval_Graph(int print_stats, ZOLTAN_GRAPH_EVAL *graph) - { - return Zoltan_LB_Eval_Graph(ZZ_Ptr, print_stats, graph); - } - - int LB_Eval_HG(int print_stats, ZOLTAN_HG_EVAL *hg) - { - return Zoltan_LB_Eval_HG(ZZ_Ptr, print_stats, hg); - } - - int LB_Eval( const int &print_stats, ZOLTAN_BALANCE_EVAL *eval, - ZOLTAN_GRAPH_EVAL *graph, ZOLTAN_HG_EVAL *hg) - { - return Zoltan_LB_Eval( ZZ_Ptr, print_stats, eval, graph, hg); - } - - int RCB_Box( const int &part, - int &ndim, - double &xmin, - double &ymin, - double &zmin, - double &xmax, - double &ymax, - double &zmax ) - { - return Zoltan_RCB_Box( ZZ_Ptr,part,&ndim,&xmin,&ymin,&zmin,&xmax,&ymax,&zmax); - } - - int Set_Fn ( const ZOLTAN_FN_TYPE &fn_type, - void (*fn_ptr)(), - void * data = 0 ) - { - return Zoltan_Set_Fn( ZZ_Ptr, fn_type, fn_ptr, data ); - } - - // Individual callback support - - ///-------------------------- - int Set_Part_Multi_Fn ( ZOLTAN_PART_MULTI_FN * fn_ptr, - void * data = 0 ) - { - return Zoltan_Set_Part_Multi_Fn( ZZ_Ptr, fn_ptr, data ); - } - - ///-------------------------- - int Set_Part_Fn ( ZOLTAN_PART_FN * fn_ptr, - void * data = 0 ) - { - return Zoltan_Set_Part_Fn( ZZ_Ptr, fn_ptr, data ); - } - - ///-------------------------- - int Set_Num_Edges_Multi_Fn ( ZOLTAN_NUM_EDGES_MULTI_FN * fn_ptr, - void * data = 0 ) - { - return Zoltan_Set_Num_Edges_Multi_Fn( ZZ_Ptr, fn_ptr, data ); - } - - ///-------------------------- - int Set_Num_Edges_Fn ( ZOLTAN_NUM_EDGES_FN * fn_ptr, - void * data = 0 ) - { - return Zoltan_Set_Num_Edges_Fn( ZZ_Ptr, fn_ptr, data ); - } - - ///-------------------------- - int Set_Edge_List_Multi_Fn ( ZOLTAN_EDGE_LIST_MULTI_FN * fn_ptr, - void * data = 0 ) - { - return Zoltan_Set_Edge_List_Multi_Fn( ZZ_Ptr, fn_ptr, data ); - } - - ///-------------------------- - int Set_Edge_List_Fn ( ZOLTAN_EDGE_LIST_FN * fn_ptr, - void * data = 0 ) - { - return Zoltan_Set_Edge_List_Fn( ZZ_Ptr, fn_ptr, data ); - } - - ///-------------------------- - int Set_Num_Geom_Fn ( ZOLTAN_NUM_GEOM_FN * fn_ptr, - void * data = 0 ) - { - return Zoltan_Set_Num_Geom_Fn( ZZ_Ptr, fn_ptr, data ); - } - - ///-------------------------- - int Set_Geom_Multi_Fn ( ZOLTAN_GEOM_MULTI_FN * fn_ptr, - void * data = 0 ) - { - return Zoltan_Set_Geom_Multi_Fn( ZZ_Ptr, fn_ptr, data ); - } - - ///-------------------------- - int Set_Geom_Fn ( ZOLTAN_GEOM_FN * fn_ptr, - void * data = 0 ) - { - return Zoltan_Set_Geom_Fn( ZZ_Ptr, fn_ptr, data ); - } - - ///-------------------------- - int Set_Num_Obj_Fn ( ZOLTAN_NUM_OBJ_FN * fn_ptr, - void * data = 0 ) - { - return Zoltan_Set_Num_Obj_Fn( ZZ_Ptr, fn_ptr, data ); - } - - ///-------------------------- - int Set_Obj_List_Fn ( ZOLTAN_OBJ_LIST_FN * fn_ptr, - void * data = 0 ) - { - return Zoltan_Set_Obj_List_Fn( ZZ_Ptr, fn_ptr, data ); - } - - ///-------------------------- - int Set_First_Obj_Fn ( ZOLTAN_FIRST_OBJ_FN * fn_ptr, - void * data = 0 ) - { - return Zoltan_Set_First_Obj_Fn( ZZ_Ptr, fn_ptr, data ); - } - - ///-------------------------- - int Set_Next_Obj_Fn ( ZOLTAN_NEXT_OBJ_FN * fn_ptr, - void * data = 0 ) - { - return Zoltan_Set_Next_Obj_Fn( ZZ_Ptr, fn_ptr, data ); - } - - ///-------------------------- - int Set_Num_Coarse_Obj_Fn ( ZOLTAN_NUM_COARSE_OBJ_FN * fn_ptr, - void * data = 0 ) - { - return Zoltan_Set_Num_Coarse_Obj_Fn( ZZ_Ptr, fn_ptr, data ); - } - - ///-------------------------- - int Set_Coarse_Obj_List_Fn ( ZOLTAN_COARSE_OBJ_LIST_FN * fn_ptr, - void * data = 0 ) - { - return Zoltan_Set_Coarse_Obj_List_Fn( ZZ_Ptr, fn_ptr, data ); - } - - ///-------------------------- - int Set_First_Coarse_Obj_Fn( ZOLTAN_FIRST_COARSE_OBJ_FN * fn_ptr, - void * data = 0 ) - { - return Zoltan_Set_First_Coarse_Obj_Fn( ZZ_Ptr, fn_ptr, data ); - } - - ///-------------------------- - int Set_Next_Coarse_Obj_Fn ( ZOLTAN_NEXT_COARSE_OBJ_FN * fn_ptr, - void * data = 0 ) - { - return Zoltan_Set_Next_Coarse_Obj_Fn( ZZ_Ptr, fn_ptr, data ); - } - - ///-------------------------- - int Set_Num_Child_Fn ( ZOLTAN_NUM_CHILD_FN * fn_ptr, - void * data = 0 ) - { - return Zoltan_Set_Num_Child_Fn( ZZ_Ptr, fn_ptr, data ); - } - - ///-------------------------- - int Set_Child_List_Fn ( ZOLTAN_CHILD_LIST_FN * fn_ptr, - void * data = 0 ) - { - return Zoltan_Set_Child_List_Fn( ZZ_Ptr, fn_ptr, data ); - } - - ///-------------------------- - int Set_Child_Weight_Fn ( ZOLTAN_CHILD_WEIGHT_FN * fn_ptr, - void * data = 0 ) - { - return Zoltan_Set_Child_Weight_Fn( ZZ_Ptr, fn_ptr, data ); - } - - ///-------------------------- - int Set_HG_Size_CS_Fn ( ZOLTAN_HG_SIZE_CS_FN * fn_ptr, - void * data = 0 ) - { - return Zoltan_Set_HG_Size_CS_Fn( ZZ_Ptr, fn_ptr, data ); - } - ///-------------------------- - int Set_HG_CS_Fn ( ZOLTAN_HG_CS_FN * fn_ptr, - void * data = 0 ) - { - return Zoltan_Set_HG_CS_Fn( ZZ_Ptr, fn_ptr, data ); - } - ///-------------------------- - int Set_HG_Size_Edge_Wts_Fn ( ZOLTAN_HG_SIZE_EDGE_WTS_FN * fn_ptr, - void * data = 0 ) - { - return Zoltan_Set_HG_Size_Edge_Wts_Fn( ZZ_Ptr, fn_ptr, data ); - } - ///-------------------------- - int Set_HG_Edge_Wts_Fn ( ZOLTAN_HG_EDGE_WTS_FN * fn_ptr, - void * data = 0 ) - { - return Zoltan_Set_HG_Edge_Wts_Fn( ZZ_Ptr, fn_ptr, data ); - } - ///-------------------------- - int Set_Hier_Num_Levels_Fn( ZOLTAN_HIER_NUM_LEVELS_FN * fn_ptr, - void * data = 0 ) - { - return Zoltan_Set_Hier_Num_Levels_Fn( ZZ_Ptr, fn_ptr, data ); - } - ///-------------------------- - int Set_Hier_Part_Fn( ZOLTAN_HIER_PART_FN * fn_ptr, - void * data = 0 ) - { - return Zoltan_Set_Hier_Part_Fn( ZZ_Ptr, fn_ptr, data ); - } - ///-------------------------- - int Set_Hier_Method_Fn( ZOLTAN_HIER_METHOD_FN * fn_ptr, - void * data = 0 ) - { - return Zoltan_Set_Hier_Method_Fn( ZZ_Ptr, fn_ptr, data ); - } - ///-------------------------- - int Set_Num_Fixed_Obj_Fn ( ZOLTAN_NUM_FIXED_OBJ_FN * fn_ptr, - void * data = 0 ) - { - return Zoltan_Set_Num_Fixed_Obj_Fn( ZZ_Ptr, fn_ptr, data ); - } - ///-------------------------- - int Set_Fixed_Obj_List_Fn ( ZOLTAN_FIXED_OBJ_LIST_FN * fn_ptr, - void * data = 0 ) - { - return Zoltan_Set_Fixed_Obj_List_Fn( ZZ_Ptr, fn_ptr, data ); - } - ///-------------------------- - int Set_Pre_Migrate_PP_Fn ( ZOLTAN_PRE_MIGRATE_PP_FN * fn_ptr, - void * data = 0 ) - { - return Zoltan_Set_Pre_Migrate_PP_Fn( ZZ_Ptr, fn_ptr, data ); - } - - ///-------------------------- - int Set_Mid_Migrate_PP_Fn ( ZOLTAN_MID_MIGRATE_PP_FN * fn_ptr, - void * data = 0 ) - { - return Zoltan_Set_Mid_Migrate_PP_Fn( ZZ_Ptr, fn_ptr, data ); - } - - ///-------------------------- - int Set_Post_Migrate_PP_Fn ( ZOLTAN_POST_MIGRATE_PP_FN * fn_ptr, - void * data = 0 ) - { - return Zoltan_Set_Post_Migrate_PP_Fn( ZZ_Ptr, fn_ptr, data ); - } - - ///-------------------------- - int Set_Obj_Size_Multi_Fn ( ZOLTAN_OBJ_SIZE_MULTI_FN * fn_ptr, - void * data = 0 ) - { - return Zoltan_Set_Obj_Size_Multi_Fn( ZZ_Ptr, fn_ptr, data ); - } - - ///-------------------------- - int Set_Obj_Size_Fn ( ZOLTAN_OBJ_SIZE_FN * fn_ptr, - void * data = 0 ) - { - return Zoltan_Set_Obj_Size_Fn( ZZ_Ptr, fn_ptr, data ); - } - - ///-------------------------- - int Set_Pack_Obj_Multi_Fn ( ZOLTAN_PACK_OBJ_MULTI_FN * fn_ptr, - void * data = 0 ) - { - return Zoltan_Set_Pack_Obj_Multi_Fn( ZZ_Ptr, fn_ptr, data ); - } - - ///-------------------------- - int Set_Pack_Obj_Fn ( ZOLTAN_PACK_OBJ_FN * fn_ptr, - void * data = 0 ) - { - return Zoltan_Set_Pack_Obj_Fn( ZZ_Ptr, fn_ptr, data ); - } - - ///-------------------------- - int Set_Unpack_Obj_Multi_Fn( ZOLTAN_UNPACK_OBJ_MULTI_FN * fn_ptr, - void * data = 0 ) - { - return Zoltan_Set_Unpack_Obj_Multi_Fn( ZZ_Ptr, fn_ptr, data ); - } - - ///-------------------------- - int Set_Unpack_Obj_Fn ( ZOLTAN_UNPACK_OBJ_FN * fn_ptr, - void * data = 0 ) - { - return Zoltan_Set_Unpack_Obj_Fn( ZZ_Ptr, fn_ptr, data ); - } - - /// Backward compatibility with v3.0 - ///-------------------------- - int Set_Partition_Multi_Fn ( ZOLTAN_PART_MULTI_FN * fn_ptr, - void * data = 0 ) - { - return Zoltan_Set_Part_Multi_Fn( ZZ_Ptr, fn_ptr, data ); - } - - ///-------------------------- - int Set_Partition_Fn ( ZOLTAN_PART_FN * fn_ptr, - void * data = 0 ) - { - return Zoltan_Set_Part_Fn( ZZ_Ptr, fn_ptr, data ); - } - - ///-------------------------- - int Set_Hier_Partition_Fn( ZOLTAN_HIER_PART_FN * fn_ptr, - void * data = 0 ) - { - return Zoltan_Set_Hier_Part_Fn( ZZ_Ptr, fn_ptr, data ); - } - ///-------------------------- - /// Version that returns only part assignment - int LB_Point_PP_Assign ( double * const coords, - int &part ) - { - return Zoltan_LB_Point_PP_Assign( ZZ_Ptr, coords, NULL, &part ); - } - - ///-------------------------- - /// Version that returns part assignment and mapping to proc as well - int LB_Point_PP_Assign ( double * const coords, - int &proc, - int &part ) - { - return Zoltan_LB_Point_PP_Assign( ZZ_Ptr, coords, &proc, &part ); - } - - ///-------------------------- - int LB_Box_PP_Assign ( const double &xmin, - const double &ymin, - const double &zmin, - const double &xmax, - const double &ymax, - const double &zmax, - int * const procs, - int &numprocs, - int * const parts, - int &numparts ) - { - return Zoltan_LB_Box_PP_Assign( ZZ_Ptr, - xmin, ymin, zmin, - xmax, ymax, zmax, - procs, &numprocs, - parts, &numparts ); - } - - ///-------------------------- - int Invert_Lists ( const int &num_known, - ZOLTAN_ID_PTR const known_global_ids, - ZOLTAN_ID_PTR const known_local_ids, - int * const known_procs, - int * const known_to_part, - int &num_found, - ZOLTAN_ID_PTR &found_global_ids, - ZOLTAN_ID_PTR &found_local_ids, - int * &found_procs, - int * &found_to_part ) - { - return Zoltan_Invert_Lists( ZZ_Ptr, - num_known, known_global_ids, known_local_ids, - known_procs, known_to_part, - &num_found, &found_global_ids, &found_local_ids, - &found_procs, &found_to_part ); - } - - ///-------------------------- - int Migrate ( const int &num_import, - ZOLTAN_ID_PTR const import_global_ids, - ZOLTAN_ID_PTR const import_local_ids, - int * const import_procs, - int * const import_to_part, - const int &num_export, - ZOLTAN_ID_PTR const export_global_ids, - ZOLTAN_ID_PTR const export_local_ids, - int * const export_procs, - int * const export_to_part ) - { - return Zoltan_Migrate( ZZ_Ptr, - num_import, import_global_ids, import_local_ids, - import_procs, import_to_part, - num_export, export_global_ids, export_local_ids, - export_procs, export_to_part ); - } - - ///-------------------------- - int Generate_Files( std::string & fname, - const int &base_index, - const int &gen_geom, - const int &gen_graph, - const int &gen_hg ) - { - // c_str() is a "const char *", and Zoltan_Generate_Files may re-write - // the name passed in, so in order to compile we need a non-const - // "char *" file name to pass to Zoltan_Generate_Files. - -#ifdef TFLOP - char *fn = strdup((char *)fname.c_str()); -#else - char *fn = strdup(fname.c_str()); -#endif - - int rc = Zoltan_Generate_Files( ZZ_Ptr, fn, base_index, - gen_geom, gen_graph, gen_hg ); - - std::free(fn); - - return rc; - } - - //--------------------------------------------------- - // Expert functions; see zoltan.h for details - - int Serialize_Size() { - return Zoltan_Serialize_Size( ZZ_Ptr ); - } - - int Serialize(size_t bufSize, char *buf) { - return Zoltan_Serialize( ZZ_Ptr, bufSize, buf); - } - - int Deserialize(size_t bufSize, char *buf) { - return Zoltan_Deserialize( ZZ_Ptr, bufSize, buf); - } - - //--------------------------------------------------- - // Access to the "C" language structure, required for use of - // Zoltan "C" functions. (Deprecated "C" functions were not - // included in the C++ interface.) - - Zoltan_Struct *Get_C_Handle(void) - { - return ZZ_Ptr; - } - -private: - - Zoltan_Struct * ZZ_Ptr; - -}; - -#endif - diff --git a/packages/zoltan/src/include/zoltan_dd.h b/packages/zoltan/src/include/zoltan_dd.h deleted file mode 100644 index 09e8d46..0000000 --- a/packages/zoltan/src/include/zoltan_dd.h +++ /dev/null @@ -1,112 +0,0 @@ -/* - * @HEADER - * - * *********************************************************************** - * - * Zoltan Toolkit for Load-balancing, Partitioning, Ordering and Coloring - * Copyright 2012 Sandia Corporation - * - * Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, - * the U.S. Government 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: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. Neither the name of the Corporation nor the names of the - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "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 SANDIA CORPORATION OR THE - * 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. - * - * Questions? Contact Karen Devine kddevin@sandia.gov - * Erik Boman egboman@sandia.gov - * - * *********************************************************************** - * - * @HEADER - */ - -#ifndef ZOLTAN_DD_DDIRECTORY_H -#define ZOLTAN_DD_DDIRECTORY_H - -#include "zoltan_types.h" -#include - -/* -** Must define this function prototype before #ifdef __cplusplus -** to avoid warning when compiling with C++ on solaris -*/ -typedef unsigned int ZOLTAN_HASH_FN(ZOLTAN_ID_PTR, int, unsigned int); - -#ifdef __cplusplus -/* if C++, define the rest of this header file as extern C */ -extern "C" { -#endif - -struct Zoltan_DD_Struct; - -typedef struct Zoltan_DD_Struct Zoltan_DD_Directory; - - -/*********** Distributed Directory Function Prototypes ************/ - -int Zoltan_DD_Create(Zoltan_DD_Directory **dd, MPI_Comm comm, - int num_gid, int num_lid, int user_length, - int table_length, int debug_level); - -int Zoltan_DD_Copy_To(Zoltan_DD_Directory **toptr, Zoltan_DD_Directory *from); - -Zoltan_DD_Directory *Zoltan_DD_Copy(Zoltan_DD_Directory *from); - -void Zoltan_DD_Destroy(Zoltan_DD_Directory **dd); - -int Zoltan_DD_Update(Zoltan_DD_Directory *dd, ZOLTAN_ID_PTR gid, - ZOLTAN_ID_PTR lid, char *user, int *partition, int count); - -int Zoltan_DD_Find(Zoltan_DD_Directory *dd, ZOLTAN_ID_PTR gid, - ZOLTAN_ID_PTR lid, char *data, int *partition, int count, - int *owner); - -int Zoltan_DD_Remove(Zoltan_DD_Directory *dd, ZOLTAN_ID_PTR gid, - int count); - -int Zoltan_DD_Set_Hash_Fn(Zoltan_DD_Directory *dd, ZOLTAN_HASH_FN *hash); - -void Zoltan_DD_Stats(Zoltan_DD_Directory *dd); - -int Zoltan_DD_Set_Neighbor_Hash_Fn1(Zoltan_DD_Directory *dd, int size); - -int Zoltan_DD_Set_Neighbor_Hash_Fn2(Zoltan_DD_Directory *dd, int *proc, - int *low, int *high, int count); - -int Zoltan_DD_Set_Neighbor_Hash_Fn3(Zoltan_DD_Directory *dd, int total); - -int Zoltan_DD_Print(Zoltan_DD_Directory *dd); - -int Zoltan_DD_GetLocalKeys(Zoltan_DD_Directory *dd, ZOLTAN_ID_PTR* gid, - int* size); - - -#ifdef __cplusplus -} /* closing bracket for extern "C" */ -#endif - -#endif diff --git a/packages/zoltan/src/include/zoltan_dd_cpp.h b/packages/zoltan/src/include/zoltan_dd_cpp.h deleted file mode 100644 index 9a7263e..0000000 --- a/packages/zoltan/src/include/zoltan_dd_cpp.h +++ /dev/null @@ -1,153 +0,0 @@ -/* - * @HEADER - * - * *********************************************************************** - * - * Zoltan Toolkit for Load-balancing, Partitioning, Ordering and Coloring - * Copyright 2012 Sandia Corporation - * - * Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, - * the U.S. Government 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: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. Neither the name of the Corporation nor the names of the - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "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 SANDIA CORPORATION OR THE - * 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. - * - * Questions? Contact Karen Devine kddevin@sandia.gov - * Erik Boman egboman@sandia.gov - * - * *********************************************************************** - * - * @HEADER - */ - -// ************************************************************************ -// -// C++ wrappers for Zoltan's Distributed Directory utility -// -// Two styles of initialization: -// -// C++ style: Zoltan_DD dd(comm, num_gid, num_lid, len1, len2, debug); -// -// C style: Zoltan_DD dd; -// dd.Create(comm, num_gid, num_lid, len1, len2, debug); -// -// ************************************************************************ - -#ifndef ZOLTAN_DD_CPP_H_ -#define ZOLTAN_DD_CPP_H_ - -#include "zoltan_dd.h" - -class Zoltan_DD { - -public: - - Zoltan_DD(const MPI_Comm &comm, const int &num_gid, const int &num_lid, - const int &user_length, const int &table_length, const int &debug_level) - { - Zoltan_DD_Create (&this->DD, comm, num_gid, - num_lid, user_length, table_length, debug_level); - } - - Zoltan_DD() - { - this->DD = NULL; - - // Creator of this object must call Zoltan_DD::Create to finish - // initialization. - } - - int Create(const MPI_Comm &comm, const int &num_gid, const int &num_lid, - const int &user_length_in_chars, const int &table_length, const int &debug_level) - { - if (this->DD) - { - Zoltan_DD_Destroy(&this->DD); - this->DD = NULL; - } - - int rc = Zoltan_DD_Create (&this->DD, comm, num_gid, - num_lid, user_length_in_chars, table_length, debug_level); - - return rc; - } - - ~Zoltan_DD() - { - Zoltan_DD_Destroy (&this->DD) ; - } - - Zoltan_DD (const Zoltan_DD &dd) // Copy constructor - { - this->DD = Zoltan_DD_Copy(dd.DD); - } - - Zoltan_DD & operator= (const Zoltan_DD &dd) // Copy operator - { - Zoltan_DD_Copy_To(&this->DD, dd.DD); - - return *this; - } - - int Update (ZOLTAN_ID_PTR gid, ZOLTAN_ID_PTR lid, - char *user, int *partition, const int &count) - { - return Zoltan_DD_Update (this->DD, gid, lid, user, partition, count) ; - } - - int Find (ZOLTAN_ID_PTR gid, ZOLTAN_ID_PTR lid, char *data, - int *partition, const int &count, int *owner) const - { - return Zoltan_DD_Find (this->DD, gid, lid, data, partition, count, owner); - } - - int Remove (ZOLTAN_ID_PTR gid, const int &count) - { - return Zoltan_DD_Remove (this->DD, gid, count); - } - - int Set_Hash_Fn (unsigned int (*hash) (ZOLTAN_ID_PTR, int, unsigned int)) - { - return Zoltan_DD_Set_Hash_Fn (this->DD, hash); - } - - void Stats () const - { - Zoltan_DD_Stats (this->DD) ; - } - - int Print () const - { - return Zoltan_DD_Print (this->DD) ; - } - -private: - - Zoltan_DD_Directory *DD; -}; - -#endif diff --git a/packages/zoltan/src/include/zoltan_eval.h b/packages/zoltan/src/include/zoltan_eval.h deleted file mode 100644 index 36ab9b2..0000000 --- a/packages/zoltan/src/include/zoltan_eval.h +++ /dev/null @@ -1,133 +0,0 @@ -/* - * @HEADER - * - * *********************************************************************** - * - * Zoltan Toolkit for Load-balancing, Partitioning, Ordering and Coloring - * Copyright 2012 Sandia Corporation - * - * Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, - * the U.S. Government 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: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. Neither the name of the Corporation nor the names of the - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "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 SANDIA CORPORATION OR THE - * 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. - * - * Questions? Contact Karen Devine kddevin@sandia.gov - * Erik Boman egboman@sandia.gov - * - * *********************************************************************** - * - * @HEADER - */ - -#ifndef __ZOLTAN_EVAL_H -#define __ZOLTAN_EVAL_H - -#ifdef __cplusplus -/* if C++, define the rest of this header file as extern C */ -extern "C" { -#endif - -struct Zoltan_Struct; - - -#define EVAL_LOCAL_SUM 0 /* calculated for nobj, obj_wgt, xtra_obj_wgt only */ -#define EVAL_GLOBAL_SUM 1 -#define EVAL_GLOBAL_MIN 2 -#define EVAL_GLOBAL_MAX 3 -#define EVAL_GLOBAL_AVG 4 -#define EVAL_SIZE 5 /* must be last definition */ - -#define EVAL_MAX_XTRA_VWGTS 4 -#define EVAL_MAX_XTRA_EWGTS 4 - -struct _eval_hg_struct{ - float obj_imbalance; /* vertex number imbalance */ - float imbalance; /* vertex weight imbalance */ - float cutl[EVAL_SIZE]; /* ConCut measure */ - float cutn[EVAL_SIZE]; /* NetCut measure */ - float nobj[EVAL_SIZE]; /* number of partition vertices */ - float obj_wgt[EVAL_SIZE]; /* partition vertex weights */ - float xtra_imbalance[EVAL_MAX_XTRA_VWGTS]; - float xtra_obj_wgt[EVAL_MAX_XTRA_VWGTS][EVAL_SIZE]; -}; - -typedef struct _eval_hg_struct ZOLTAN_HG_EVAL; - -struct _eval_graph_struct{ - float cuts[EVAL_SIZE]; /* The number of cut edges */ - float cut_wgt[EVAL_SIZE] ; /* The sum of the weights of the cut edges */ - float nnborparts[EVAL_SIZE]; /* The number of neighboring partitions */ - - float obj_imbalance; /* vertex number imbalance */ - float imbalance; /* vertex weight imbalance */ - float nobj[EVAL_SIZE]; /* number of partition vertices */ - float obj_wgt[EVAL_SIZE]; /* partition vertex weights */ - float num_boundary[EVAL_SIZE];/* the number of objects with a remote neighbor */ - - float xtra_imbalance[EVAL_MAX_XTRA_VWGTS]; - float xtra_obj_wgt[EVAL_MAX_XTRA_VWGTS][EVAL_SIZE]; - - float xtra_cut_wgt[EVAL_MAX_XTRA_EWGTS][EVAL_SIZE]; -}; - -typedef struct _eval_graph_struct ZOLTAN_GRAPH_EVAL; - -struct _eval_balance_struct{ - float obj_imbalance; /* vertex number imbalance */ - float imbalance; /* vertex weight imbalance */ - float nobj[EVAL_SIZE]; /* number of partition vertices */ - float obj_wgt[EVAL_SIZE]; /* partition vertex weights */ - - float xtra_imbalance[EVAL_MAX_XTRA_VWGTS]; - float xtra_obj_wgt[EVAL_MAX_XTRA_VWGTS][EVAL_SIZE]; -}; - -typedef struct _eval_balance_struct ZOLTAN_BALANCE_EVAL; - -int Zoltan_LB_Eval_Balance(struct Zoltan_Struct *zz, int print_stats, ZOLTAN_BALANCE_EVAL *eval); - -int Zoltan_LB_Eval_Graph(struct Zoltan_Struct *zz, int print_stats, ZOLTAN_GRAPH_EVAL *graph); - -int Zoltan_LB_Eval_HG(struct Zoltan_Struct *zz, int print_stats, ZOLTAN_HG_EVAL *hg); - -int Zoltan_LB_Eval(struct Zoltan_Struct *zz, int print_stats, - ZOLTAN_BALANCE_EVAL *obj, ZOLTAN_GRAPH_EVAL *graph, ZOLTAN_HG_EVAL *hg); - -void Zoltan_LB_Eval_Print_Graph(ZOLTAN_GRAPH_EVAL *graph); - -void Zoltan_LB_Eval_Print_HG(ZOLTAN_HG_EVAL *hg); - -void Zoltan_LB_Eval_Print_Balance(ZOLTAN_BALANCE_EVAL *lb); - - - -#ifdef __cplusplus -} /* closing bracket for extern "C" */ -#endif - -#endif diff --git a/packages/zoltan/src/include/zoltan_mem.h b/packages/zoltan/src/include/zoltan_mem.h deleted file mode 100644 index 79d8970..0000000 --- a/packages/zoltan/src/include/zoltan_mem.h +++ /dev/null @@ -1,109 +0,0 @@ -/* - * @HEADER - * - * *********************************************************************** - * - * Zoltan Toolkit for Load-balancing, Partitioning, Ordering and Coloring - * Copyright 2012 Sandia Corporation - * - * Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, - * the U.S. Government 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: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. Neither the name of the Corporation nor the names of the - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "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 SANDIA CORPORATION OR THE - * 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. - * - * Questions? Contact Karen Devine kddevin@sandia.gov - * Erik Boman egboman@sandia.gov - * - * *********************************************************************** - * - * @HEADER - */ - -#ifndef __MEM_CONST_H -#define __MEM_CONST_H - - -#include - -#ifdef __cplusplus -/* if C++, define the rest of this header file as extern C */ -extern "C" { -#endif - - -#ifndef HAVE_PROTOTYPES -# if defined(__STDC__) || defined(__GNUC__) || defined(__cplusplus) || defined(c_plusplus) -# define HAVE_PROTOTYPES -# endif -#endif - -#undef PROTO -#ifdef HAVE_PROTOTYPES -# define PROTO(x) x -#else -# define PROTO(x) () -#endif - -#define ZOLTAN_MALLOC(a) Zoltan_Malloc((a), __FILE__, __LINE__) -#define ZOLTAN_CALLOC(a, b) Zoltan_Calloc((a), (b), __FILE__, __LINE__) -#define ZOLTAN_FREE(a) Zoltan_Free((void**)(void*) (a), __FILE__, __LINE__) - -#define ZOLTAN_REALLOC(a, b) Zoltan_Realloc((a), (b), __FILE__, __LINE__) - -#define ZOLTAN_MEM_STAT_TOTAL 0 -#define ZOLTAN_MEM_STAT_MAXIMUM 1 - -/* function declarations for dynamic array allocation */ - -#ifdef __STDC__ -extern double *Zoltan_Array_Alloc(char *file, int lineno, int numdim, ...); -#else -extern double *Zoltan_Array_Alloc(); -#endif - -extern void Zoltan_Memory_Debug(int); -extern int Zoltan_Memory_Get_Debug(void); -extern void Zoltan_Free(void **, char *, int); -extern double *Zoltan_Calloc(size_t, size_t, char *, int); -extern double *Zoltan_Malloc(size_t, char *, int); -extern double *Zoltan_Realloc(void *, size_t, char *, int); -extern void Zoltan_Memory_Stats(void); -extern size_t Zoltan_Memory_Usage(int); -extern void Zoltan_Memory_Reset(int); - -#ifdef __STDC__ -extern void Zoltan_Multifree(char *, int, int n, ...); -#else -extern void Zoltan_Multifree(); -#endif - -#ifdef __cplusplus -} /* closing bracket for extern "C" */ -#endif - -#endif diff --git a/packages/zoltan/src/include/zoltan_partition_tree.h b/packages/zoltan/src/include/zoltan_partition_tree.h deleted file mode 100644 index 5680fcc..0000000 --- a/packages/zoltan/src/include/zoltan_partition_tree.h +++ /dev/null @@ -1,173 +0,0 @@ -/* - * @HEADER - * - * *********************************************************************** - * - * Zoltan Toolkit for Load-balancing, Partitioning, Ordering and Coloring - * Copyright 2012 Sandia Corporation - * - * Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, - * the U.S. Government 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: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. Neither the name of the Corporation nor the names of the - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "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 SANDIA CORPORATION OR THE - * 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. - * - * Questions? Contact Karen Devine kddevin@sandia.gov - * Erik Boman egboman@sandia.gov - * - * *********************************************************************** - * - * @HEADER - */ - -#ifndef ZOLTAN_PARTITION_TREE_H -#define ZOLTAN_PARTITION_TREE_H - -#ifdef __cplusplus -/* if C++, define the rest of this header file as extern C */ -extern "C" { -#endif - -/*****************************************************************************/ -/* - * Function to return the partition tree info generated by RCB. - * Input: - * zz -- The Zoltan structure returned by Zoltan_Create. - * treeNodeIndex -- The array index into the tree. Valid indices will - * be from 1 to numParts-1 inclusive. RCB will not - * have a node for terminal nodes. A terminal node - * is indicated by a left_leaf or right_leaf set to - * the negative value of the part ID. A node may be - * connected to both another node (positive) and - * point to a terminal (negative). - * Output: - * parent -- parent index number - this will be positive or - * negative based on whether it is the left or right - * leaf and also have an extra +1 applied to the - * magnitude, so to get the treeNodeIndex of the - * parent take the absolute value of parent and do -1. - * The root node will return a parent value of - * -1 or 1 and for zoltan2. That is the only - * case where zoltan2 actually needs the parent value. - * left_leaf -- left leaf index number - Greater than 0 is a - * treeNodeIndex which will start from index 1. - * 0 or negative means the negative of a part ID - * so indicates the terminal. The purpose of starting - * at index 1 is so that 0 is not ambiguous between - * describing a node index or a terminal part ID. - * right_leaf -- right leaf index number - See left_leaf for rules. - * Returned value: -- Error code - */ -int Zoltan_RCB_Partition_Tree( - struct Zoltan_Struct *zz, - int treeNodeIndex, - int *parent, - int *left_leaf, - int *right_leaf -); - -/*****************************************************************************/ -/* - * Function to get the PHG tree size. - * Input: - * zz -- The Zoltan structure returned by Zoltan_Create. - * Output: - * tree_size -- will be set to the size of the tree. The tree size - * is the number of pairs of ints in the tree. Each - * pair provides a lo and hi index corresponding to - * the part numbers found below that node. Let N be - * the tree size returned by this function. Then in - * zoltan the phg tree (tree->array) was allocated as - * an array of ints with size N*2. However zoltan phg - * conventions also apply a memory offset of -2 to - * the array ptr so tree->array[0] is not valid - * memory. This means we should request the tree - * elements starting from index 1 in the below method - * Zoltan_PHG_Partition_Tree. The last valid request - * index is N (not N-1). Also note that the phg - * tree can include some 'empty' nodes. These are - * gaps with no data determined by hi_index = -1. - * The purpose of these gaps and the offset of -2 - * is to allow an efficient scheme for converting - * from the array index to the parent. See - * Zoltan_PHG_Partition_Tree_Size comments for more - * detail. These conventions were preserved in the - * zoltan2 interface so that Zoltan2_AlgZoltan - * calculates parent indices efficiently. Note that - * the first element (index 1) is always the root. - * Returned value: -- Error code - */ -int Zoltan_PHG_Partition_Tree_Size( - struct Zoltan_Struct * zz, - int * tree_size -); - -/*****************************************************************************/ -/* - * Function to access a node of the PHG tree. - * Input: - * zz -- The Zoltan structure returned by Zoltan_Create. - * treeNodeIndex -- The array index into the tree. This should be - * in the inclusive range (1..N) where N is the size - * returned by Zoltan_RCB_Partition_Tree. See the - * above comments for explanation of this +1 offset. - * Output: - * lo_index -- lo index of included parts - inclusive. See - * hi_index below for more complete description. - * hi_index -- hi index of included parts - inclusive. Each - * call to Zoltan_PHG_Partition_Tree_Size returns a - * pair (lo_index and hi_index) which is the - * inclusive range of all parts contained under that - * node. This can include terminal nodes in which - * case lo_index = hi_index. The parts will start - * from index 0 and do not have sign conventions so - * they can be interpreted 'naturally'. However - * there is 1 special case since phg can have gaps in - * the tree. These gaps are determined by checking if - * hi_index = -1. The gaps exists because phg is laid - * out in memeory so that there is always a simple - * relationship between the treeNodeIndex and the - * parent index. If treeNodeIndex is even then the - * parent node has index treeNodeIndex/2. If - * treeNodeIndex is odd then the parent index is - * (treeNodeIndex-1)/2. Note that for phg the root - * will always be the first element which is - * treeNodeIndex 1. - * Returned value: -- Error code - */ -int Zoltan_PHG_Partition_Tree( - struct Zoltan_Struct * zz, - int treeNodeIndex, /* tree node index in zoltan PHG */ - int *lo_index, /* low index */ - int *hi_index /* high index */ -); - -#ifdef __cplusplus -} /* closing bracket for extern "C" */ -#endif - -#endif diff --git a/packages/zoltan/src/include/zoltan_timer.h b/packages/zoltan/src/include/zoltan_timer.h deleted file mode 100644 index 44ee5a8..0000000 --- a/packages/zoltan/src/include/zoltan_timer.h +++ /dev/null @@ -1,95 +0,0 @@ -/* - * @HEADER - * - * *********************************************************************** - * - * Zoltan Toolkit for Load-balancing, Partitioning, Ordering and Coloring - * Copyright 2012 Sandia Corporation - * - * Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, - * the U.S. Government 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: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. Neither the name of the Corporation nor the names of the - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "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 SANDIA CORPORATION OR THE - * 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. - * - * Questions? Contact Karen Devine kddevin@sandia.gov - * Erik Boman egboman@sandia.gov - * - * *********************************************************************** - * - * @HEADER - */ - -#ifndef __ZOLTANTIMER_H -#define __ZOLTANTIMER_H - -#include -#include - - -#ifdef __cplusplus -/* if C++, define the rest of this header file as extern C */ -extern "C" { -#endif - -/* Constants used in Zoltan timer routines */ -#define ZOLTAN_TIME_WALL 1 -#define ZOLTAN_TIME_CPU 2 -#define ZOLTAN_TIME_USER 3 - -/* Macros to add line/file info */ - -#define ZOLTAN_TIMER_START(a, b, c) \ - Zoltan_Timer_Start(a, b, c, __FILE__, __LINE__) -#define ZOLTAN_TIMER_STOP(a, b, c) \ - Zoltan_Timer_Stop(a, b, c, __FILE__, __LINE__) - -/* Function prototypes */ - -struct Zoltan_Timer; - -struct Zoltan_Timer *Zoltan_Timer_Create(int); -int Zoltan_Timer_Init(struct Zoltan_Timer *, int, const char *); -struct Zoltan_Timer *Zoltan_Timer_Copy(struct Zoltan_Timer *zt); -int Zoltan_Timer_Copy_To(struct Zoltan_Timer **to, struct Zoltan_Timer *from); -int Zoltan_Timer_Reset(struct Zoltan_Timer *, int, int, const char*); -int Zoltan_Timer_ChangeFlag(struct Zoltan_Timer *, int); -int Zoltan_Timer_Start(struct Zoltan_Timer *, int, MPI_Comm, char *, int); -int Zoltan_Timer_Stop(struct Zoltan_Timer *, int, MPI_Comm, char *, int); -int Zoltan_Timer_Print(struct Zoltan_Timer *, int, int, MPI_Comm, FILE *); -int Zoltan_Timer_PrintAll(struct Zoltan_Timer *, int, MPI_Comm, FILE *); -void Zoltan_Timer_Destroy(struct Zoltan_Timer **); - -extern double Zoltan_Time(int); -extern double Zoltan_Time_Resolution(int); - - -#ifdef __cplusplus -} /* closing bracket for extern "C" */ -#endif - -#endif diff --git a/packages/zoltan/src/include/zoltan_timer_cpp.h b/packages/zoltan/src/include/zoltan_timer_cpp.h deleted file mode 100644 index 2c6ef82..0000000 --- a/packages/zoltan/src/include/zoltan_timer_cpp.h +++ /dev/null @@ -1,126 +0,0 @@ -/* - * @HEADER - * - * *********************************************************************** - * - * Zoltan Toolkit for Load-balancing, Partitioning, Ordering and Coloring - * Copyright 2012 Sandia Corporation - * - * Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, - * the U.S. Government 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: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. Neither the name of the Corporation nor the names of the - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "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 SANDIA CORPORATION OR THE - * 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. - * - * Questions? Contact Karen Devine kddevin@sandia.gov - * Erik Boman egboman@sandia.gov - * - * *********************************************************************** - * - * @HEADER - */ -// -// ************************************************************************ -// -// C++ wrappers for Zoltan Timer library. -// -// ************************************************************************ - -#ifndef ZOLTAN_TIMER_CPP_H_ -#define ZOLTAN_TIMER_CPP_H_ - -#include "zoltan_timer.h" -#include - -#ifdef TFLOP -#include -#else -#include -#endif - -class Zoltan_Timer_Object { - -public: - - // Constructor - Zoltan_Timer_Object(int flag = ZOLTAN_TIME_WALL) { - // Assumption: MPI has been initialized prior to this call. - ZTStruct = Zoltan_Timer_Create(flag); - } - - // Copy constructor - Zoltan_Timer_Object(const Zoltan_Timer_Object &zt) - { - this->ZTStruct = Zoltan_Timer_Copy(zt.ZTStruct); - } - - // Copy operator - Zoltan_Timer_Object & operator= (const Zoltan_Timer_Object &zt) - { - Zoltan_Timer_Copy_To(&(this->ZTStruct), zt.ZTStruct); - return *this; - } - - // Destructor - ~Zoltan_Timer_Object() { - Zoltan_Timer_Destroy(&ZTStruct); - } - - int Init(const int &use_barrier, const std::string & name) { - return Zoltan_Timer_Init(this->ZTStruct, use_barrier, name.c_str()); - } - - int Reset(const int &ts_idx, const int &use_barrier, - const std::string & name) { - return Zoltan_Timer_Reset(this->ZTStruct, ts_idx, use_barrier, name.c_str()); - } - - int Start(const int &ts_idx, const MPI_Comm &comm) { - return Zoltan_Timer_Start(this->ZTStruct, ts_idx, comm, - (char *) __FILE__, __LINE__); - } - - int Stop(const int &ts_idx, const MPI_Comm &comm) { - return Zoltan_Timer_Stop(this->ZTStruct, ts_idx, comm, - (char *) __FILE__, __LINE__); - } - - int Print(const int &ts_idx, const int &proc, - const MPI_Comm &comm, FILE *os) const { - return Zoltan_Timer_Print(this->ZTStruct, ts_idx, proc, comm, os); - } - - int PrintAll(const int &proc, const MPI_Comm &comm, FILE *os) const { - return Zoltan_Timer_PrintAll(this->ZTStruct, proc, comm, os); - } - -private: - - struct Zoltan_Timer *ZTStruct; -}; - -#endif diff --git a/packages/zoltan/src/include/zoltan_types.h b/packages/zoltan/src/include/zoltan_types.h deleted file mode 100644 index 0b9ea08..0000000 --- a/packages/zoltan/src/include/zoltan_types.h +++ /dev/null @@ -1,243 +0,0 @@ -/* - * @HEADER - * - * *********************************************************************** - * - * Zoltan Toolkit for Load-balancing, Partitioning, Ordering and Coloring - * Copyright 2012 Sandia Corporation - * - * Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, - * the U.S. Government 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: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. Neither the name of the Corporation nor the names of the - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "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 SANDIA CORPORATION OR THE - * 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. - * - * Questions? Contact Karen Devine kddevin@sandia.gov - * Erik Boman egboman@sandia.gov - * - * *********************************************************************** - * - * @HEADER - */ - -#ifndef __ZOLTAN_TYPES_H -#define __ZOLTAN_TYPES_H - -#include -#include -#ifndef _WIN32 -#include -#endif -#include - -/* int64_t is needed by 64-bit PT-Scotch header file . - * - * intptr_t is needed by code that uses ints and pointers interchangably - * with Zoltan_Map. ZOLTAN_NOT_FOUND is an invalid intptr_t. - * - * ssize_t is needed for the definition of ZOLTAN_GNO_TYPE. - */ - -#ifndef _MSC_VER - -#include /* for int64_t and intptr_t */ -#define ZOLTAN_NOT_FOUND INTPTR_MAX /* safe to say never a valid pointer? */ - -#else - -#include /* for ssize_t, int64, int_ptr */ -typedef INT64 int64_t; -typedef INT_PTR intptr_t; -typedef SSIZE_T ssize_t; -#define ZOLTAN_NOT_FOUND LONG_MAX /* safe to say never a valid pointer? */ - -#endif - -#ifdef __cplusplus -/* if C++, define the rest of this header file as extern C */ -extern "C" { -#endif - -#include "Zoltan_config.h" - -/* The default ZOLTAN_ID_TYPE is "unsigned int" but this can be over-ridden on the compile command line. - * - * The type of a Zoltan object global ID is ZOLTAN_ID_TYPE. A pointer to it is ZOLTAN_ID_PTR. - * - * It's decimal type specifier: printf(ZOLTAN_ID_SPEC "\n", global_id); - * - * A constant of the same type: ZOLTAN_ID_TYPE global_id = ZOLTAN_ID_CONSTANT(0); (Do we need this?) - * - * The MPI_Datatype for a ZOLTAN_ID_TYPE is a ZOLTAN_ID_MPI_TYPE. - * - * We assume the local number of objects fits in a 32 bit integer, but the global number may require - * the maximum integer width available on the machine. - * - * ZOLTAN_GNO_TYPE is the global number/count type. - * - * The underlying type is: ssize_t (signed size_t). This will be 32 or 64 - * bits depending on whether the machine is a 32 or 64 bit machine. (We use ssize_t - * instead of intmax_t because intmax_t may still be - * 64 bits on a 32 bit machine because the compiler constructs a 64 bit int.) - * - * The MPI_Datatype for ssize_t is returned by Zoltan_mpi_gno_type(). - * - * We don't assume a pointer is the same size as any size of int. If we want to store - * a pointer in an int we use types intptr_t or uintptr_t. - */ - -#undef HAVE_LONG_LONG_INT - -#ifdef ULLONG_MAX -#define HAVE_LONG_LONG_INT -#endif - -#undef ZOLTAN_ID_MPI_TYPE -#undef ZOLTAN_ID_SPEC -#undef ZOLTAN_ID_CONSTANT - -/* - * Autoconf build: --with-id-type={uint, ulong, ullong} - * - * CMake build: -D Zoltan_ENABLE_UINT_IDS:Bool=ON - * -D Zoltan_ENABLE_ULONG_IDS:Bool=ON - * -D Zoltan_ENABLE_ULLONG_IDS:Bool=ON - * - */ - -#ifndef UNSIGNED_INT_GLOBAL_IDS -#ifndef UNSIGNED_LONG_GLOBAL_IDS -#ifndef UNSIGNED_LONG_LONG_GLOBAL_IDS - -#define UNSIGNED_INT_GLOBAL_IDS - -#endif -#endif -#endif - -#ifdef UNSIGNED_LONG_LONG_GLOBAL_IDS - -#ifndef HAVE_LONG_LONG_INT - -#undef UNSIGNED_LONG_LONG_GLOBAL_IDS -#define UNSIGNED_LONG_GLOBAL_IDS -#warning Global ID type "unsigned long long int" was requested at configure time. -#warning The compiler does not fully support this data type. -#warning Instead ZOLTAN_ID_TYPE will be "unsigned long". - -#endif - -#endif - -#ifdef UNSIGNED_LONG_GLOBAL_IDS - -typedef unsigned long ZOLTAN_ID_TYPE; -#define ZOLTAN_ID_MPI_TYPE MPI_UNSIGNED_LONG -#define zoltan_mpi_id_datatype_name "MPI_UNSIGNED_LONG" -#define zoltan_id_datatype_name "unsigned long" -#define ZOLTAN_ID_SPEC "%lu" -#define ZOLTAN_ID_CONSTANT(z) z ## L -#define ZOLTAN_ID_INVALID ULONG_MAX - -#endif - -#ifdef UNSIGNED_LONG_LONG_GLOBAL_IDS - -typedef unsigned long long ZOLTAN_ID_TYPE; -#define ZOLTAN_ID_MPI_TYPE MPI_LONG_LONG_INT -#define zoltan_mpi_id_datatype_name "MPI_LONG_LONG_INT" -#define zoltan_id_datatype_name "unsigned long long" -#define ZOLTAN_ID_SPEC "%llu" -#define ZOLTAN_ID_CONSTANT(z) z ## LL -#define ZOLTAN_ID_INVALID ULLONG_MAX - -#endif - -#ifdef UNSIGNED_INT_GLOBAL_IDS - -typedef unsigned int ZOLTAN_ID_TYPE; -#define ZOLTAN_ID_MPI_TYPE MPI_UNSIGNED -#define zoltan_mpi_id_datatype_name "MPI_UNSIGNED" -#define zoltan_id_datatype_name "unsigned int" -#define ZOLTAN_ID_SPEC "%u" -#define ZOLTAN_ID_CONSTANT(z) z -#define ZOLTAN_ID_INVALID UINT_MAX - -#endif - -typedef ZOLTAN_ID_TYPE *ZOLTAN_ID_PTR; - -/* - * The MPI_Datatype for ZOLTAN_GNO_TYPE is returned by Zoltan_mpi_gno_type(). - */ - -#define ZOLTAN_GNO_TYPE ssize_t -#define zoltan_gno_datatype_name "ssize_t" - -/* -* 06/26/13: Use the correct specifier %zd if possible, -* fall back to %ld otherwise. -*/ -#if defined(__STDC_VERSION__) -# if (__STDC_VERSION__ >= 199901L) -# define ZOLTAN_GNO_SPEC "%zd" -# else -# define ZOLTAN_GNO_SPEC "%ld" -# endif -#else -# define ZOLTAN_GNO_SPEC "%ld" -#endif - -/*****************************************************************************/ -/* - * Error codes for Zoltan library - * ZOLTAN_OK - no errors - * ZOLTAN_WARN - some warning occurred in Zoltan library; - * application should be able to continue running - * ZOLTAN_FATAL - a fatal error occurred - * ZOLTAN_MEMERR - memory allocation failed; with this error, it could be - * possible to try a different, more memory-friendly, - * algorithm. - */ -/*****************************************************************************/ -#define ZOLTAN_OK 0 -#define ZOLTAN_WARN 1 -#define ZOLTAN_FATAL -1 -#define ZOLTAN_MEMERR -2 - -/*****************************************************************************/ -/* Hypergraph query function types - */ -/*****************************************************************************/ -#define ZOLTAN_COMPRESSED_EDGE 1 -#define ZOLTAN_COMPRESSED_VERTEX 2 - -#ifdef __cplusplus -} /* closing bracket for extern "C" */ -#endif - -#endif /* !__ZOLTAN_TYPES_H */