summaryrefslogtreecommitdiff
path: root/thirdparty/linux/include/coin1/ThirdParty
diff options
context:
space:
mode:
Diffstat (limited to 'thirdparty/linux/include/coin1/ThirdParty')
-rw-r--r--thirdparty/linux/include/coin1/ThirdParty/defs.h161
-rw-r--r--thirdparty/linux/include/coin1/ThirdParty/dmumps_c.h159
-rw-r--r--thirdparty/linux/include/coin1/ThirdParty/macros.h143
-rw-r--r--thirdparty/linux/include/coin1/ThirdParty/mpi.h77
-rw-r--r--thirdparty/linux/include/coin1/ThirdParty/mumps_c_types.h92
-rw-r--r--thirdparty/linux/include/coin1/ThirdParty/mumps_compat.h78
-rw-r--r--thirdparty/linux/include/coin1/ThirdParty/proto.h505
-rw-r--r--thirdparty/linux/include/coin1/ThirdParty/rename.h418
-rw-r--r--thirdparty/linux/include/coin1/ThirdParty/struct.h251
9 files changed, 1884 insertions, 0 deletions
diff --git a/thirdparty/linux/include/coin1/ThirdParty/defs.h b/thirdparty/linux/include/coin1/ThirdParty/defs.h
new file mode 100644
index 0000000..2209540
--- /dev/null
+++ b/thirdparty/linux/include/coin1/ThirdParty/defs.h
@@ -0,0 +1,161 @@
+/*
+ * Copyright 1997, Regents of the University of Minnesota
+ *
+ * defs.h
+ *
+ * This file contains constant definitions
+ *
+ * Started 8/27/94
+ * George
+ *
+ * $Id: defs.h,v 1.1 1998/11/27 17:59:13 karypis Exp $
+ *
+ */
+
+#define METISTITLE " METIS 4.0.3 Copyright 1998, Regents of the University of Minnesota\n\n"
+#define MAXLINE 1280000
+
+#define LTERM (void **) 0 /* List terminator for GKfree() */
+
+#define MAXNCON 16 /* The maximum number of constrains */
+#define MAXNOBJ 16 /* The maximum number of objectives */
+
+#define PLUS_GAINSPAN 500 /* Parameters for FM buckets */
+#define NEG_GAINSPAN 500
+
+#define HTLENGTH ((1<<11)-1)
+
+/* Meaning of various options[] parameters */
+#define OPTION_PTYPE 0
+#define OPTION_CTYPE 1
+#define OPTION_ITYPE 2
+#define OPTION_RTYPE 3
+#define OPTION_DBGLVL 4
+#define OPTION_OFLAGS 5
+#define OPTION_PFACTOR 6
+#define OPTION_NSEPS 7
+
+#define OFLAG_COMPRESS 1 /* Try to compress the graph */
+#define OFLAG_CCMP 2 /* Find and order connected components */
+
+
+/* Default options for PMETIS */
+#define PMETIS_CTYPE MATCH_SHEM
+#define PMETIS_ITYPE IPART_GGPKL
+#define PMETIS_RTYPE RTYPE_FM
+#define PMETIS_DBGLVL 0
+
+/* Default options for KMETIS */
+#define KMETIS_CTYPE MATCH_SHEM
+#define KMETIS_ITYPE IPART_PMETIS
+#define KMETIS_RTYPE RTYPE_KWAYRANDOM_MCONN
+#define KMETIS_DBGLVL 0
+
+/* Default options for OEMETIS */
+#define OEMETIS_CTYPE MATCH_SHEM
+#define OEMETIS_ITYPE IPART_GGPKL
+#define OEMETIS_RTYPE RTYPE_FM
+#define OEMETIS_DBGLVL 0
+
+/* Default options for ONMETIS */
+#define ONMETIS_CTYPE MATCH_SHEM
+#define ONMETIS_ITYPE IPART_GGPKL
+#define ONMETIS_RTYPE RTYPE_SEP1SIDED
+#define ONMETIS_DBGLVL 0
+#define ONMETIS_OFLAGS OFLAG_COMPRESS
+#define ONMETIS_PFACTOR -1
+#define ONMETIS_NSEPS 1
+
+/* Default options for McPMETIS */
+#define McPMETIS_CTYPE MATCH_SHEBM_ONENORM
+#define McPMETIS_ITYPE IPART_RANDOM
+#define McPMETIS_RTYPE RTYPE_FM
+#define McPMETIS_DBGLVL 0
+
+/* Default options for McKMETIS */
+#define McKMETIS_CTYPE MATCH_SHEBM_ONENORM
+#define McKMETIS_ITYPE IPART_McHPMETIS
+#define McKMETIS_RTYPE RTYPE_KWAYRANDOM
+#define McKMETIS_DBGLVL 0
+
+/* Default options for KVMETIS */
+#define KVMETIS_CTYPE MATCH_SHEM
+#define KVMETIS_ITYPE IPART_PMETIS
+#define KVMETIS_RTYPE RTYPE_KWAYRANDOM
+#define KVMETIS_DBGLVL 0
+
+
+/* Operations supported by stand-alone code */
+#define OP_PMETIS 1
+#define OP_KMETIS 2
+#define OP_OEMETIS 3
+#define OP_ONMETIS 4
+#define OP_ONWMETIS 5
+#define OP_KVMETIS 6
+
+
+/* Matching Schemes */
+#define MATCH_RM 1
+#define MATCH_HEM 2
+#define MATCH_SHEM 3
+#define MATCH_SHEMKWAY 4
+#define MATCH_SHEBM_ONENORM 5
+#define MATCH_SHEBM_INFNORM 6
+#define MATCH_SBHEM_ONENORM 7
+#define MATCH_SBHEM_INFNORM 8
+
+/* Initial partitioning schemes for PMETIS and ONMETIS */
+#define IPART_GGPKL 1
+#define IPART_GGPKLNODE 2
+#define IPART_RANDOM 2
+
+/* Refinement schemes for PMETIS */
+#define RTYPE_FM 1
+
+/* Initial partitioning schemes for KMETIS */
+#define IPART_PMETIS 1
+
+/* Refinement schemes for KMETIS */
+#define RTYPE_KWAYRANDOM 1
+#define RTYPE_KWAYGREEDY 2
+#define RTYPE_KWAYRANDOM_MCONN 3
+
+/* Refinement schemes for ONMETIS */
+#define RTYPE_SEP2SIDED 1
+#define RTYPE_SEP1SIDED 2
+
+/* Initial Partitioning Schemes for McKMETIS */
+#define IPART_McPMETIS 1 /* Simple McPMETIS */
+#define IPART_McHPMETIS 2 /* horizontally relaxed McPMETIS */
+
+#define UNMATCHED -1
+
+#define HTABLE_EMPTY -1
+
+#define NGR_PASSES 4 /* Number of greedy refinement passes */
+#define NLGR_PASSES 5 /* Number of GR refinement during IPartition */
+
+#define LARGENIPARTS 8 /* Number of random initial partitions */
+#define SMALLNIPARTS 3 /* Number of random initial partitions */
+
+#define COARSEN_FRACTION 0.75 /* Node reduction between succesive coarsening levels */
+#define COARSEN_FRACTION2 0.90 /* Node reduction between succesive coarsening levels */
+#define UNBALANCE_FRACTION 1.05
+
+#define COMPRESSION_FRACTION 0.85
+
+#define ORDER_UNBALANCE_FRACTION 1.10
+
+#define MMDSWITCH 200
+
+#define HORIZONTAL_IMBALANCE 1.05
+
+/* Debug Levels */
+#define DBG_TIME 1 /* Perform timing analysis */
+#define DBG_OUTPUT 2
+#define DBG_COARSEN 4 /* Show the coarsening progress */
+#define DBG_REFINE 8 /* Show info on communication during folding */
+#define DBG_IPART 16 /* Show info on initial partition */
+#define DBG_MOVEINFO 32 /* Show info on communication during folding */
+#define DBG_KWAYPINFO 64 /* Show info on communication during folding */
+#define DBG_SEPINFO 128 /* Show info on communication during folding */
diff --git a/thirdparty/linux/include/coin1/ThirdParty/dmumps_c.h b/thirdparty/linux/include/coin1/ThirdParty/dmumps_c.h
new file mode 100644
index 0000000..1d5c2c9
--- /dev/null
+++ b/thirdparty/linux/include/coin1/ThirdParty/dmumps_c.h
@@ -0,0 +1,159 @@
+/*
+ *
+ * This file is part of MUMPS 4.10.0, built on Tue May 10 12:56:32 UTC 2011
+ *
+ *
+ * This version of MUMPS is provided to you free of charge. It is public
+ * domain, based on public domain software developed during the Esprit IV
+ * European project PARASOL (1996-1999). Since this first public domain
+ * version in 1999, research and developments have been supported by the
+ * following institutions: CERFACS, CNRS, ENS Lyon, INPT(ENSEEIHT)-IRIT,
+ * INRIA, and University of Bordeaux.
+ *
+ * The MUMPS team at the moment of releasing this version includes
+ * Patrick Amestoy, Maurice Bremond, Alfredo Buttari, Abdou Guermouche,
+ * Guillaume Joslin, Jean-Yves L'Excellent, Francois-Henry Rouet, Bora
+ * Ucar and Clement Weisbecker.
+ *
+ * We are also grateful to Emmanuel Agullo, Caroline Bousquet, Indranil
+ * Chowdhury, Philippe Combes, Christophe Daniel, Iain Duff, Vincent Espirat,
+ * Aurelia Fevre, Jacko Koster, Stephane Pralet, Chiara Puglisi, Gregoire
+ * Richard, Tzvetomila Slavova, Miroslav Tuma and Christophe Voemel who
+ * have been contributing to this project.
+ *
+ * Up-to-date copies of the MUMPS package can be obtained
+ * from the Web pages:
+ * http://mumps.enseeiht.fr/ or http://graal.ens-lyon.fr/MUMPS
+ *
+ *
+ * THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY
+ * EXPRESSED OR IMPLIED. ANY USE IS AT YOUR OWN RISK.
+ *
+ *
+ * User documentation of any code that uses this software can
+ * include this complete notice. You can acknowledge (using
+ * references [1] and [2]) the contribution of this package
+ * in any scientific publication dependent upon the use of the
+ * package. You shall use reasonable endeavours to notify
+ * the authors of the package of this publication.
+ *
+ * [1] P. R. Amestoy, I. S. Duff, J. Koster and J.-Y. L'Excellent,
+ * A fully asynchronous multifrontal solver using distributed dynamic
+ * scheduling, SIAM Journal of Matrix Analysis and Applications,
+ * Vol 23, No 1, pp 15-41 (2001).
+ *
+ * [2] P. R. Amestoy and A. Guermouche and J.-Y. L'Excellent and
+ * S. Pralet, Hybrid scheduling for the parallel solution of linear
+ * systems. Parallel Computing Vol 32 (2), pp 136-156 (2006).
+ *
+ */
+
+/* Mostly written in march 2002 (JYL) */
+
+#ifndef DMUMPS_C_H
+#define DMUMPS_C_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "mumps_compat.h"
+/* Next line defines MUMPS_INT, DMUMPS_COMPLEX and DMUMPS_REAL */
+#include "mumps_c_types.h"
+
+#ifndef MUMPS_VERSION
+/* Protected in case headers of other arithmetics are included */
+#define MUMPS_VERSION "4.10.0"
+#endif
+#ifndef MUMPS_VERSION_MAX_LEN
+#define MUMPS_VERSION_MAX_LEN 14
+#endif
+
+/*
+ * Definition of the (simplified) MUMPS C structure.
+ * NB: DMUMPS_COMPLEX are REAL types in s and d arithmetics.
+ */
+typedef struct {
+
+ MUMPS_INT sym, par, job;
+ MUMPS_INT comm_fortran; /* Fortran communicator */
+ MUMPS_INT icntl[40];
+ DMUMPS_REAL cntl[15];
+ MUMPS_INT n;
+
+ MUMPS_INT nz_alloc; /* used in matlab interface to decide if we
+ free + malloc when we have large variation */
+
+ /* Assembled entry */
+ MUMPS_INT nz;
+ MUMPS_INT *irn;
+ MUMPS_INT *jcn;
+ DMUMPS_COMPLEX *a;
+
+ /* Distributed entry */
+ MUMPS_INT nz_loc;
+ MUMPS_INT *irn_loc;
+ MUMPS_INT *jcn_loc;
+ DMUMPS_COMPLEX *a_loc;
+
+ /* Element entry */
+ MUMPS_INT nelt;
+ MUMPS_INT *eltptr;
+ MUMPS_INT *eltvar;
+ DMUMPS_COMPLEX *a_elt;
+
+ /* Ordering, if given by user */
+ MUMPS_INT *perm_in;
+
+ /* Orderings returned to user */
+ MUMPS_INT *sym_perm; /* symmetric permutation */
+ MUMPS_INT *uns_perm; /* column permutation */
+
+ /* Scaling (input only in this version) */
+ DMUMPS_REAL *colsca;
+ DMUMPS_REAL *rowsca;
+
+ /* RHS, solution, ouptput data and statistics */
+ DMUMPS_COMPLEX *rhs, *redrhs, *rhs_sparse, *sol_loc;
+ MUMPS_INT *irhs_sparse, *irhs_ptr, *isol_loc;
+ MUMPS_INT nrhs, lrhs, lredrhs, nz_rhs, lsol_loc;
+ MUMPS_INT schur_mloc, schur_nloc, schur_lld;
+ MUMPS_INT mblock, nblock, nprow, npcol;
+ MUMPS_INT info[40],infog[40];
+ DMUMPS_REAL rinfo[40], rinfog[40];
+
+ /* Null space */
+ MUMPS_INT deficiency;
+ MUMPS_INT *pivnul_list;
+ MUMPS_INT *mapping;
+
+ /* Schur */
+ MUMPS_INT size_schur;
+ MUMPS_INT *listvar_schur;
+ DMUMPS_COMPLEX *schur;
+
+ /* Internal parameters */
+ MUMPS_INT instance_number;
+ DMUMPS_COMPLEX *wk_user;
+
+ /* Version number: length=14 in FORTRAN + 1 for final \0 + 1 for alignment */
+ char version_number[MUMPS_VERSION_MAX_LEN + 1 + 1];
+ /* For out-of-core */
+ char ooc_tmpdir[256];
+ char ooc_prefix[64];
+ /* To save the matrix in matrix market format */
+ char write_problem[256];
+ MUMPS_INT lwk_user;
+
+} DMUMPS_STRUC_C;
+
+
+void MUMPS_CALL
+dmumps_c( DMUMPS_STRUC_C * dmumps_par );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* DMUMPS_C_H */
+
diff --git a/thirdparty/linux/include/coin1/ThirdParty/macros.h b/thirdparty/linux/include/coin1/ThirdParty/macros.h
new file mode 100644
index 0000000..fdf0ade
--- /dev/null
+++ b/thirdparty/linux/include/coin1/ThirdParty/macros.h
@@ -0,0 +1,143 @@
+/*
+ * Copyright 1997, Regents of the University of Minnesota
+ *
+ * macros.h
+ *
+ * This file contains macros used in multilevel
+ *
+ * Started 9/25/94
+ * George
+ *
+ * $Id: macros.h,v 1.1 1998/11/27 17:59:18 karypis Exp $
+ *
+ */
+
+
+/*************************************************************************
+* The following macro returns a random number in the specified range
+**************************************************************************/
+#ifdef __VC__
+#define RandomInRange(u) ((rand()>>3)%(u))
+#define RandomInRangeFast(u) ((rand()>>3)%(u))
+#else
+#define RandomInRange(u) ((int)(drand48()*((double)(u))))
+#define RandomInRangeFast(u) ((rand()>>3)%(u))
+#endif
+
+
+
+#define amax(a, b) ((a) >= (b) ? (a) : (b))
+#define amin(a, b) ((a) >= (b) ? (b) : (a))
+
+#define AND(a, b) ((a) < 0 ? ((-(a))&(b)) : ((a)&(b)))
+#define OR(a, b) ((a) < 0 ? -((-(a))|(b)) : ((a)|(b)))
+#define XOR(a, b) ((a) < 0 ? -((-(a))^(b)) : ((a)^(b)))
+
+#define SWAP(a, b, tmp) \
+ do {(tmp) = (a); (a) = (b); (b) = (tmp);} while(0)
+
+#define INC_DEC(a, b, val) \
+ do {(a) += (val); (b) -= (val);} while(0)
+
+
+#define scopy(n, a, b) (float *)memcpy((void *)(b), (void *)(a), sizeof(float)*(n))
+#define idxcopy(n, a, b) (idxtype *)memcpy((void *)(b), (void *)(a), sizeof(idxtype)*(n))
+
+#define HASHFCT(key, size) ((key)%(size))
+
+
+/*************************************************************************
+* Timer macros
+**************************************************************************/
+#define cleartimer(tmr) (tmr = 0.0)
+#define starttimer(tmr) (tmr -= seconds())
+#define stoptimer(tmr) (tmr += seconds())
+#define gettimer(tmr) (tmr)
+
+
+/*************************************************************************
+* This macro is used to handle dbglvl
+**************************************************************************/
+#define IFSET(a, flag, cmd) if ((a)&(flag)) (cmd);
+
+/*************************************************************************
+* These macros are used for debuging memory leaks
+**************************************************************************/
+#ifdef DMALLOC
+#define imalloc(n, msg) (malloc(sizeof(int)*(n)))
+#define fmalloc(n, msg) (malloc(sizeof(float)*(n)))
+#define idxmalloc(n, msg) (malloc(sizeof(idxtype)*(n)))
+#define ismalloc(n, val, msg) (iset((n), (val), malloc(sizeof(int)*(n))))
+#define idxsmalloc(n, val, msg) (idxset((n), (val), malloc(sizeof(idxtype)*(n))))
+#define GKmalloc(a, b) (malloc((a)))
+#endif
+
+#ifdef DMALLOC
+# define MALLOC_CHECK(ptr) \
+ if (malloc_verify((ptr)) == DMALLOC_VERIFY_ERROR) { \
+ printf("***MALLOC_CHECK failed on line %d of file %s: " #ptr "\n", \
+ __LINE__, __FILE__); \
+ abort(); \
+ }
+#else
+# define MALLOC_CHECK(ptr) ;
+#endif
+
+
+
+/*************************************************************************
+* This macro converts a length array in a CSR one
+**************************************************************************/
+#define MAKECSR(i, n, a) \
+ do { \
+ for (i=1; i<n; i++) a[i] += a[i-1]; \
+ for (i=n; i>0; i--) a[i] = a[i-1]; \
+ a[0] = 0; \
+ } while(0)
+
+
+/*************************************************************************
+* These macros insert and remove nodes from the boundary list
+**************************************************************************/
+#define BNDInsert(nbnd, bndind, bndptr, vtx) \
+ do { \
+ ASSERT(bndptr[vtx] == -1); \
+ bndind[nbnd] = vtx; \
+ bndptr[vtx] = nbnd++;\
+ } while(0)
+
+#define BNDDelete(nbnd, bndind, bndptr, vtx) \
+ do { \
+ ASSERT(bndptr[vtx] != -1); \
+ bndind[bndptr[vtx]] = bndind[--nbnd]; \
+ bndptr[bndind[nbnd]] = bndptr[vtx]; \
+ bndptr[vtx] = -1; \
+ } while(0)
+
+
+
+/*************************************************************************
+* These are debugging macros
+**************************************************************************/
+#ifdef DEBUG
+# define ASSERT(expr) \
+ if (!(expr)) { \
+ printf("***ASSERTION failed on line %d of file %s: " #expr "\n", \
+ __LINE__, __FILE__); \
+ abort(); \
+ }
+#else
+# define ASSERT(expr) ;
+#endif
+
+#ifdef DEBUG
+# define ASSERTP(expr, msg) \
+ if (!(expr)) { \
+ printf("***ASSERTION failed on line %d of file %s: " #expr "\n", \
+ __LINE__, __FILE__); \
+ printf msg ; \
+ abort(); \
+ }
+#else
+# define ASSERTP(expr, msg) ;
+#endif
diff --git a/thirdparty/linux/include/coin1/ThirdParty/mpi.h b/thirdparty/linux/include/coin1/ThirdParty/mpi.h
new file mode 100644
index 0000000..7ab0c37
--- /dev/null
+++ b/thirdparty/linux/include/coin1/ThirdParty/mpi.h
@@ -0,0 +1,77 @@
+/*
+ *
+ * This file is part of MUMPS 4.10.0, built on Tue May 10 12:56:32 UTC 2011
+ *
+ *
+ * This version of MUMPS is provided to you free of charge. It is public
+ * domain, based on public domain software developed during the Esprit IV
+ * European project PARASOL (1996-1999). Since this first public domain
+ * version in 1999, research and developments have been supported by the
+ * following institutions: CERFACS, CNRS, ENS Lyon, INPT(ENSEEIHT)-IRIT,
+ * INRIA, and University of Bordeaux.
+ *
+ * The MUMPS team at the moment of releasing this version includes
+ * Patrick Amestoy, Maurice Bremond, Alfredo Buttari, Abdou Guermouche,
+ * Guillaume Joslin, Jean-Yves L'Excellent, Francois-Henry Rouet, Bora
+ * Ucar and Clement Weisbecker.
+ *
+ * We are also grateful to Emmanuel Agullo, Caroline Bousquet, Indranil
+ * Chowdhury, Philippe Combes, Christophe Daniel, Iain Duff, Vincent Espirat,
+ * Aurelia Fevre, Jacko Koster, Stephane Pralet, Chiara Puglisi, Gregoire
+ * Richard, Tzvetomila Slavova, Miroslav Tuma and Christophe Voemel who
+ * have been contributing to this project.
+ *
+ * Up-to-date copies of the MUMPS package can be obtained
+ * from the Web pages:
+ * http://mumps.enseeiht.fr/ or http://graal.ens-lyon.fr/MUMPS
+ *
+ *
+ * THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY
+ * EXPRESSED OR IMPLIED. ANY USE IS AT YOUR OWN RISK.
+ *
+ *
+ * User documentation of any code that uses this software can
+ * include this complete notice. You can acknowledge (using
+ * references [1] and [2]) the contribution of this package
+ * in any scientific publication dependent upon the use of the
+ * package. You shall use reasonable endeavours to notify
+ * the authors of the package of this publication.
+ *
+ * [1] P. R. Amestoy, I. S. Duff, J. Koster and J.-Y. L'Excellent,
+ * A fully asynchronous multifrontal solver using distributed dynamic
+ * scheduling, SIAM Journal of Matrix Analysis and Applications,
+ * Vol 23, No 1, pp 15-41 (2001).
+ *
+ * [2] P. R. Amestoy and A. Guermouche and J.-Y. L'Excellent and
+ * S. Pralet, Hybrid scheduling for the parallel solution of linear
+ * systems. Parallel Computing Vol 32 (2), pp 136-156 (2006).
+ *
+ */
+
+#ifndef MUMPS_MPI_H
+#define MUMPS_MPI_H
+
+/* We define all symbols as extern "C" for users who call MUMPS with its
+ libseq from a C++ driver. */
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* This is the minimum to have the C interface of MUMPS work.
+ * Most of the time, users who need this file have no call to MPI functions in
+ * their own code. Hence it is not worth declaring all MPI functions here.
+ * However if some users come to request some more stub functions of the MPI
+ * standards, we may add them. But it is not worth doing it until then. */
+
+typedef int MPI_Comm; /* Simple type for MPI communicator */
+static MPI_Comm MPI_COMM_WORLD=(MPI_Comm)0;
+
+int MPI_Init(int *pargc, char ***pargv);
+int MPI_Comm_rank(int comm, int *rank);
+int MPI_Finalize(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* MUMPS_MPI_H */
diff --git a/thirdparty/linux/include/coin1/ThirdParty/mumps_c_types.h b/thirdparty/linux/include/coin1/ThirdParty/mumps_c_types.h
new file mode 100644
index 0000000..aef6212
--- /dev/null
+++ b/thirdparty/linux/include/coin1/ThirdParty/mumps_c_types.h
@@ -0,0 +1,92 @@
+/*
+ *
+ * This file is part of MUMPS 4.10.0, built on Tue May 10 12:56:32 UTC 2011
+ *
+ *
+ * This version of MUMPS is provided to you free of charge. It is public
+ * domain, based on public domain software developed during the Esprit IV
+ * European project PARASOL (1996-1999). Since this first public domain
+ * version in 1999, research and developments have been supported by the
+ * following institutions: CERFACS, CNRS, ENS Lyon, INPT(ENSEEIHT)-IRIT,
+ * INRIA, and University of Bordeaux.
+ *
+ * The MUMPS team at the moment of releasing this version includes
+ * Patrick Amestoy, Maurice Bremond, Alfredo Buttari, Abdou Guermouche,
+ * Guillaume Joslin, Jean-Yves L'Excellent, Francois-Henry Rouet, Bora
+ * Ucar and Clement Weisbecker.
+ *
+ * We are also grateful to Emmanuel Agullo, Caroline Bousquet, Indranil
+ * Chowdhury, Philippe Combes, Christophe Daniel, Iain Duff, Vincent Espirat,
+ * Aurelia Fevre, Jacko Koster, Stephane Pralet, Chiara Puglisi, Gregoire
+ * Richard, Tzvetomila Slavova, Miroslav Tuma and Christophe Voemel who
+ * have been contributing to this project.
+ *
+ * Up-to-date copies of the MUMPS package can be obtained
+ * from the Web pages:
+ * http://mumps.enseeiht.fr/ or http://graal.ens-lyon.fr/MUMPS
+ *
+ *
+ * THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY
+ * EXPRESSED OR IMPLIED. ANY USE IS AT YOUR OWN RISK.
+ *
+ *
+ * User documentation of any code that uses this software can
+ * include this complete notice. You can acknowledge (using
+ * references [1] and [2]) the contribution of this package
+ * in any scientific publication dependent upon the use of the
+ * package. You shall use reasonable endeavours to notify
+ * the authors of the package of this publication.
+ *
+ * [1] P. R. Amestoy, I. S. Duff, J. Koster and J.-Y. L'Excellent,
+ * A fully asynchronous multifrontal solver using distributed dynamic
+ * scheduling, SIAM Journal of Matrix Analysis and Applications,
+ * Vol 23, No 1, pp 15-41 (2001).
+ *
+ * [2] P. R. Amestoy and A. Guermouche and J.-Y. L'Excellent and
+ * S. Pralet, Hybrid scheduling for the parallel solution of linear
+ * systems. Parallel Computing Vol 32 (2), pp 136-156 (2006).
+ *
+ */
+
+
+#ifndef MUMPS_C_TYPES_H
+#define MUMPS_C_TYPES_H
+
+#define MUMPS_INT int
+
+#define SMUMPS_COMPLEX float
+#define SMUMPS_REAL float
+
+#define DMUMPS_COMPLEX double
+#define DMUMPS_REAL double
+
+/* Complex datatypes */
+typedef struct {float r,i;} mumps_complex;
+typedef struct {double r,i;} mumps_double_complex;
+
+#define CMUMPS_COMPLEX mumps_complex
+#define CMUMPS_REAL float
+
+#define ZMUMPS_COMPLEX mumps_double_complex
+#define ZMUMPS_REAL double
+
+
+#ifndef mumps_ftnlen
+/* When passing a string, what is the type of the extra argument
+ * passed by value ? */
+# define mumps_ftnlen int
+#endif
+
+
+#define MUMPS_ARITH_s 1
+#define MUMPS_ARITH_d 2
+#define MUMPS_ARITH_c 4
+#define MUMPS_ARITH_z 8
+
+#define MUMPS_ARITH_REAL ( MUMPS_ARITH_s | MUMPS_ARITH_d )
+#define MUMPS_ARITH_CMPLX ( MUMPS_ARITH_c | MUMPS_ARITH_z )
+#define MUMPS_ARITH_SINGLE ( MUMPS_ARITH_s | MUMPS_ARITH_c )
+#define MUMPS_ARITH_DBL ( MUMPS_ARITH_d | MUMPS_ARITH_z )
+
+
+#endif /* MUMPS_C_TYPES_H */
diff --git a/thirdparty/linux/include/coin1/ThirdParty/mumps_compat.h b/thirdparty/linux/include/coin1/ThirdParty/mumps_compat.h
new file mode 100644
index 0000000..d63120e
--- /dev/null
+++ b/thirdparty/linux/include/coin1/ThirdParty/mumps_compat.h
@@ -0,0 +1,78 @@
+/*
+ *
+ * This file is part of MUMPS 4.10.0, built on Tue May 10 12:56:32 UTC 2011
+ *
+ *
+ * This version of MUMPS is provided to you free of charge. It is public
+ * domain, based on public domain software developed during the Esprit IV
+ * European project PARASOL (1996-1999). Since this first public domain
+ * version in 1999, research and developments have been supported by the
+ * following institutions: CERFACS, CNRS, ENS Lyon, INPT(ENSEEIHT)-IRIT,
+ * INRIA, and University of Bordeaux.
+ *
+ * The MUMPS team at the moment of releasing this version includes
+ * Patrick Amestoy, Maurice Bremond, Alfredo Buttari, Abdou Guermouche,
+ * Guillaume Joslin, Jean-Yves L'Excellent, Francois-Henry Rouet, Bora
+ * Ucar and Clement Weisbecker.
+ *
+ * We are also grateful to Emmanuel Agullo, Caroline Bousquet, Indranil
+ * Chowdhury, Philippe Combes, Christophe Daniel, Iain Duff, Vincent Espirat,
+ * Aurelia Fevre, Jacko Koster, Stephane Pralet, Chiara Puglisi, Gregoire
+ * Richard, Tzvetomila Slavova, Miroslav Tuma and Christophe Voemel who
+ * have been contributing to this project.
+ *
+ * Up-to-date copies of the MUMPS package can be obtained
+ * from the Web pages:
+ * http://mumps.enseeiht.fr/ or http://graal.ens-lyon.fr/MUMPS
+ *
+ *
+ * THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY
+ * EXPRESSED OR IMPLIED. ANY USE IS AT YOUR OWN RISK.
+ *
+ *
+ * User documentation of any code that uses this software can
+ * include this complete notice. You can acknowledge (using
+ * references [1] and [2]) the contribution of this package
+ * in any scientific publication dependent upon the use of the
+ * package. You shall use reasonable endeavours to notify
+ * the authors of the package of this publication.
+ *
+ * [1] P. R. Amestoy, I. S. Duff, J. Koster and J.-Y. L'Excellent,
+ * A fully asynchronous multifrontal solver using distributed dynamic
+ * scheduling, SIAM Journal of Matrix Analysis and Applications,
+ * Vol 23, No 1, pp 15-41 (2001).
+ *
+ * [2] P. R. Amestoy and A. Guermouche and J.-Y. L'Excellent and
+ * S. Pralet, Hybrid scheduling for the parallel solution of linear
+ * systems. Parallel Computing Vol 32 (2), pp 136-156 (2006).
+ *
+ */
+
+/* Compatibility issues between various Windows versions */
+#ifndef MUMPS_COMPAT_H
+#define MUMPS_COMPAT_H
+
+
+#if defined(_WIN32) && ! defined(__MINGW32__)
+# define MUMPS_WIN32 1
+#endif
+
+#ifndef MUMPS_CALL
+# ifdef MUMPS_WIN32
+/* Modify/choose between next 2 lines depending
+ * on your Windows calling conventions */
+/* # define MUMPS_CALL __stdcall */
+# define MUMPS_CALL
+# else
+# define MUMPS_CALL
+# endif
+#endif
+
+#if (__STDC_VERSION__ >= 199901L)
+# define MUMPS_INLINE static inline
+#else
+# define MUMPS_INLINE
+#endif
+
+
+#endif /* MUMPS_COMPAT_H */
diff --git a/thirdparty/linux/include/coin1/ThirdParty/proto.h b/thirdparty/linux/include/coin1/ThirdParty/proto.h
new file mode 100644
index 0000000..9b65adf
--- /dev/null
+++ b/thirdparty/linux/include/coin1/ThirdParty/proto.h
@@ -0,0 +1,505 @@
+/*
+ * Copyright 1997, Regents of the University of Minnesota
+ *
+ * proto.h
+ *
+ * This file contains header files
+ *
+ * Started 10/19/95
+ * George
+ *
+ * $Id: proto.h,v 1.1 1998/11/27 17:59:28 karypis Exp $
+ *
+ */
+
+/* balance.c */
+void Balance2Way(CtrlType *, GraphType *, int *, float);
+void Bnd2WayBalance(CtrlType *, GraphType *, int *);
+void General2WayBalance(CtrlType *, GraphType *, int *);
+
+/* bucketsort.c */
+void BucketSortKeysInc(int, int, idxtype *, idxtype *, idxtype *);
+
+/* ccgraph.c */
+void CreateCoarseGraph(CtrlType *, GraphType *, int, idxtype *, idxtype *);
+void CreateCoarseGraphNoMask(CtrlType *, GraphType *, int, idxtype *, idxtype *);
+void CreateCoarseGraph_NVW(CtrlType *, GraphType *, int, idxtype *, idxtype *);
+GraphType *SetUpCoarseGraph(GraphType *, int, int);
+void ReAdjustMemory(GraphType *, GraphType *, int);
+
+/* coarsen.c */
+GraphType *Coarsen2Way(CtrlType *, GraphType *);
+
+/* compress.c */
+void CompressGraph(CtrlType *, GraphType *, int, idxtype *, idxtype *, idxtype *, idxtype *);
+void PruneGraph(CtrlType *, GraphType *, int, idxtype *, idxtype *, idxtype *, float);
+
+/* debug.c */
+int ComputeCut(GraphType *, idxtype *);
+int CheckBnd(GraphType *);
+int CheckBnd2(GraphType *);
+int CheckNodeBnd(GraphType *, int);
+int CheckRInfo(RInfoType *);
+int CheckNodePartitionParams(GraphType *);
+int IsSeparable(GraphType *);
+
+/* estmem.c */
+void METIS_EstimateMemory(int *, idxtype *, idxtype *, int *, int *, int *);
+void EstimateCFraction(int, idxtype *, idxtype *, float *, float *);
+int ComputeCoarseGraphSize(int, idxtype *, idxtype *, int, idxtype *, idxtype *, idxtype *);
+
+/* fm.c */
+void FM_2WayEdgeRefine(CtrlType *, GraphType *, int *, int);
+
+/* fortran.c */
+void Change2CNumbering(int, idxtype *, idxtype *);
+void Change2FNumbering(int, idxtype *, idxtype *, idxtype *);
+void Change2FNumbering2(int, idxtype *, idxtype *);
+void Change2FNumberingOrder(int, idxtype *, idxtype *, idxtype *, idxtype *);
+void ChangeMesh2CNumbering(int, idxtype *);
+void ChangeMesh2FNumbering(int, idxtype *, int, idxtype *, idxtype *);
+void ChangeMesh2FNumbering2(int, idxtype *, int, int, idxtype *, idxtype *);
+
+/* frename.c */
+void METIS_PARTGRAPHRECURSIVE(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
+void metis_partgraphrecursive(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
+void metis_partgraphrecursive_(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
+void metis_partgraphrecursive__(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
+void METIS_WPARTGRAPHRECURSIVE(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
+void metis_wpartgraphrecursive(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
+void metis_wpartgraphrecursive_(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
+void metis_wpartgraphrecursive__(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
+void METIS_PARTGRAPHKWAY(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
+void metis_partgraphkway(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
+void metis_partgraphkway_(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
+void metis_partgraphkway__(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
+void METIS_WPARTGRAPHKWAY(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
+void metis_wpartgraphkway(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
+void metis_wpartgraphkway_(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
+void metis_wpartgraphkway__(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
+void METIS_EDGEND(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *);
+void metis_edgend(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *);
+void metis_edgend_(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *);
+void metis_edgend__(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *);
+void METIS_NODEND(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *);
+void metis_nodend(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *);
+void metis_nodend_(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *);
+void metis_nodend__(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *);
+void METIS_NODEWND(int *, idxtype *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *);
+void metis_nodewnd(int *, idxtype *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *);
+void metis_nodewnd_(int *, idxtype *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *);
+void metis_nodewnd__(int *, idxtype *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *);
+void METIS_PARTMESHNODAL(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *);
+void metis_partmeshnodal(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *);
+void metis_partmeshnodal_(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *);
+void metis_partmeshnodal__(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *);
+void METIS_PARTMESHDUAL(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *);
+void metis_partmeshdual(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *);
+void metis_partmeshdual_(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *);
+void metis_partmeshdual__(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *);
+void METIS_MESHTONODAL(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *);
+void metis_meshtonodal(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *);
+void metis_meshtonodal_(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *);
+void metis_meshtonodal__(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *);
+void METIS_MESHTODUAL(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *);
+void metis_meshtodual(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *);
+void metis_meshtodual_(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *);
+void metis_meshtodual__(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *);
+void METIS_ESTIMATEMEMORY(int *, idxtype *, idxtype *, int *, int *, int *);
+void metis_estimatememory(int *, idxtype *, idxtype *, int *, int *, int *);
+void metis_estimatememory_(int *, idxtype *, idxtype *, int *, int *, int *);
+void metis_estimatememory__(int *, idxtype *, idxtype *, int *, int *, int *);
+void METIS_MCPARTGRAPHRECURSIVE(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
+void metis_mcpartgraphrecursive(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
+void metis_mcpartgraphrecursive_(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
+void metis_mcpartgraphrecursive__(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
+void METIS_MCPARTGRAPHKWAY(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
+void metis_mcpartgraphkway(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
+void metis_mcpartgraphkway_(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
+void metis_mcpartgraphkway__(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
+void METIS_PARTGRAPHVKWAY(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
+void metis_partgraphvkway(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
+void metis_partgraphvkway_(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
+void metis_partgraphvkway__(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
+void METIS_WPARTGRAPHVKWAY(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
+void metis_wpartgraphvkway(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
+void metis_wpartgraphvkway_(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
+void metis_wpartgraphvkway__(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
+
+/* graph.c */
+void SetUpGraph(GraphType *, int, int, int, idxtype *, idxtype *, idxtype *, idxtype *, int);
+void SetUpGraphKway(GraphType *, int, idxtype *, idxtype *);
+void SetUpGraph2(GraphType *, int, int, idxtype *, idxtype *, float *, idxtype *);
+void VolSetUpGraph(GraphType *, int, int, int, idxtype *, idxtype *, idxtype *, idxtype *, int);
+void RandomizeGraph(GraphType *);
+int IsConnectedSubdomain(CtrlType *, GraphType *, int, int);
+int IsConnected(CtrlType *, GraphType *, int);
+int IsConnected2(GraphType *, int);
+int FindComponents(CtrlType *, GraphType *, idxtype *, idxtype *);
+
+/* initpart.c */
+void Init2WayPartition(CtrlType *, GraphType *, int *, float);
+void InitSeparator(CtrlType *, GraphType *, float);
+void GrowBisection(CtrlType *, GraphType *, int *, float);
+void GrowBisectionNode(CtrlType *, GraphType *, float);
+void RandomBisection(CtrlType *, GraphType *, int *, float);
+
+/* kmetis.c */
+void METIS_PartGraphKway(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
+void METIS_WPartGraphKway(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
+int MlevelKWayPartitioning(CtrlType *, GraphType *, int, idxtype *, float *, float);
+
+/* kvmetis.c */
+void METIS_PartGraphVKway(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
+void METIS_WPartGraphVKway(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
+int MlevelVolKWayPartitioning(CtrlType *, GraphType *, int, idxtype *, float *, float);
+
+/* kwayfm.c */
+void Random_KWayEdgeRefine(CtrlType *, GraphType *, int, float *, float, int, int);
+void Greedy_KWayEdgeRefine(CtrlType *, GraphType *, int, float *, float, int);
+void Greedy_KWayEdgeBalance(CtrlType *, GraphType *, int, float *, float, int);
+
+/* kwayrefine.c */
+void RefineKWay(CtrlType *, GraphType *, GraphType *, int, float *, float);
+void AllocateKWayPartitionMemory(CtrlType *, GraphType *, int);
+void ComputeKWayPartitionParams(CtrlType *, GraphType *, int);
+void ProjectKWayPartition(CtrlType *, GraphType *, int);
+int IsBalanced(idxtype *, int, float *, float);
+void ComputeKWayBoundary(CtrlType *, GraphType *, int);
+void ComputeKWayBalanceBoundary(CtrlType *, GraphType *, int);
+
+/* kwayvolfm.c */
+void Random_KWayVolRefine(CtrlType *, GraphType *, int, float *, float, int, int);
+void Random_KWayVolRefineMConn(CtrlType *, GraphType *, int, float *, float, int, int);
+void Greedy_KWayVolBalance(CtrlType *, GraphType *, int, float *, float, int);
+void Greedy_KWayVolBalanceMConn(CtrlType *, GraphType *, int, float *, float, int);
+void KWayVolUpdate(CtrlType *, GraphType *, int, int, int, idxtype *, idxtype *, idxtype *);
+void ComputeKWayVolume(GraphType *, int, idxtype *, idxtype *, idxtype *);
+int ComputeVolume(GraphType *, idxtype *);
+void CheckVolKWayPartitionParams(CtrlType *, GraphType *, int);
+void ComputeVolSubDomainGraph(GraphType *, int, idxtype *, idxtype *);
+void EliminateVolSubDomainEdges(CtrlType *, GraphType *, int, float *);
+void EliminateVolComponents(CtrlType *, GraphType *, int, float *, float);
+
+/* kwayvolrefine.c */
+void RefineVolKWay(CtrlType *, GraphType *, GraphType *, int, float *, float);
+void AllocateVolKWayPartitionMemory(CtrlType *, GraphType *, int);
+void ComputeVolKWayPartitionParams(CtrlType *, GraphType *, int);
+void ComputeKWayVolGains(CtrlType *, GraphType *, int);
+void ProjectVolKWayPartition(CtrlType *, GraphType *, int);
+void ComputeVolKWayBoundary(CtrlType *, GraphType *, int);
+void ComputeVolKWayBalanceBoundary(CtrlType *, GraphType *, int);
+
+/* match.c */
+void Match_RM(CtrlType *, GraphType *);
+void Match_RM_NVW(CtrlType *, GraphType *);
+void Match_HEM(CtrlType *, GraphType *);
+void Match_SHEM(CtrlType *, GraphType *);
+
+/* mbalance.c */
+void MocBalance2Way(CtrlType *, GraphType *, float *, float);
+void MocGeneral2WayBalance(CtrlType *, GraphType *, float *, float);
+
+/* mbalance2.c */
+void MocBalance2Way2(CtrlType *, GraphType *, float *, float *);
+void MocGeneral2WayBalance2(CtrlType *, GraphType *, float *, float *);
+void SelectQueue3(int, float *, float *, int *, int *, PQueueType [MAXNCON][2], float *);
+
+/* mcoarsen.c */
+GraphType *MCCoarsen2Way(CtrlType *, GraphType *);
+
+/* memory.c */
+void AllocateWorkSpace(CtrlType *, GraphType *, int);
+void FreeWorkSpace(CtrlType *, GraphType *);
+int WspaceAvail(CtrlType *);
+idxtype *idxwspacemalloc(CtrlType *, int);
+void idxwspacefree(CtrlType *, int);
+float *fwspacemalloc(CtrlType *, int);
+void fwspacefree(CtrlType *, int);
+GraphType *CreateGraph(void);
+void InitGraph(GraphType *);
+void FreeGraph(GraphType *);
+
+/* mesh.c */
+void METIS_MeshToDual(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *);
+void METIS_MeshToNodal(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *);
+void GENDUALMETIS(int, int, int, idxtype *, idxtype *, idxtype *adjncy);
+void TRINODALMETIS(int, int, idxtype *, idxtype *, idxtype *adjncy);
+void TETNODALMETIS(int, int, idxtype *, idxtype *, idxtype *adjncy);
+void HEXNODALMETIS(int, int, idxtype *, idxtype *, idxtype *adjncy);
+void QUADNODALMETIS(int, int, idxtype *, idxtype *, idxtype *adjncy);
+
+/* meshpart.c */
+void METIS_PartMeshNodal(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *);
+void METIS_PartMeshDual(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *);
+
+/* mfm.c */
+void MocFM_2WayEdgeRefine(CtrlType *, GraphType *, float *, int);
+void SelectQueue(int, float *, float *, int *, int *, PQueueType [MAXNCON][2]);
+int BetterBalance(int, float *, float *, float *);
+float Compute2WayHLoadImbalance(int, float *, float *);
+void Compute2WayHLoadImbalanceVec(int, float *, float *, float *);
+
+/* mfm2.c */
+void MocFM_2WayEdgeRefine2(CtrlType *, GraphType *, float *, float *, int);
+void SelectQueue2(int, float *, float *, int *, int *, PQueueType [MAXNCON][2], float *);
+int IsBetter2wayBalance(int, float *, float *, float *);
+
+/* mincover.o */
+void MinCover(idxtype *, idxtype *, int, int, idxtype *, int *);
+int MinCover_Augment(idxtype *, idxtype *, int, idxtype *, idxtype *, idxtype *, int);
+void MinCover_Decompose(idxtype *, idxtype *, int, int, idxtype *, idxtype *, int *);
+void MinCover_ColDFS(idxtype *, idxtype *, int, idxtype *, idxtype *, int);
+void MinCover_RowDFS(idxtype *, idxtype *, int, idxtype *, idxtype *, int);
+
+/* minitpart.c */
+void MocInit2WayPartition(CtrlType *, GraphType *, float *, float);
+void MocGrowBisection(CtrlType *, GraphType *, float *, float);
+void MocRandomBisection(CtrlType *, GraphType *, float *, float);
+void MocInit2WayBalance(CtrlType *, GraphType *, float *);
+int SelectQueueoneWay(int, float *, float *, int, PQueueType [MAXNCON][2]);
+
+/* minitpart2.c */
+void MocInit2WayPartition2(CtrlType *, GraphType *, float *, float *);
+void MocGrowBisection2(CtrlType *, GraphType *, float *, float *);
+void MocGrowBisectionNew2(CtrlType *, GraphType *, float *, float *);
+void MocInit2WayBalance2(CtrlType *, GraphType *, float *, float *);
+int SelectQueueOneWay2(int, float *, PQueueType [MAXNCON][2], float *);
+
+/* mkmetis.c */
+void METIS_mCPartGraphKway(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
+int MCMlevelKWayPartitioning(CtrlType *, GraphType *, int, idxtype *, float *);
+
+/* mkwayfmh.c */
+void MCRandom_KWayEdgeRefineHorizontal(CtrlType *, GraphType *, int, float *, int);
+void MCGreedy_KWayEdgeBalanceHorizontal(CtrlType *, GraphType *, int, float *, int);
+int AreAllHVwgtsBelow(int, float, float *, float, float *, float *);
+int AreAllHVwgtsAbove(int, float, float *, float, float *, float *);
+void ComputeHKWayLoadImbalance(int, int, float *, float *);
+int MocIsHBalanced(int, int, float *, float *);
+int IsHBalanceBetterFT(int, int, float *, float *, float *, float *);
+int IsHBalanceBetterTT(int, int, float *, float *, float *, float *);
+
+/* mkwayrefine.c */
+void MocRefineKWayHorizontal(CtrlType *, GraphType *, GraphType *, int, float *);
+void MocAllocateKWayPartitionMemory(CtrlType *, GraphType *, int);
+void MocComputeKWayPartitionParams(CtrlType *, GraphType *, int);
+void MocProjectKWayPartition(CtrlType *, GraphType *, int);
+void MocComputeKWayBalanceBoundary(CtrlType *, GraphType *, int);
+
+/* mmatch.c */
+void MCMatch_RM(CtrlType *, GraphType *);
+void MCMatch_HEM(CtrlType *, GraphType *);
+void MCMatch_SHEM(CtrlType *, GraphType *);
+void MCMatch_SHEBM(CtrlType *, GraphType *, int);
+void MCMatch_SBHEM(CtrlType *, GraphType *, int);
+float BetterVBalance(int, int, float *, float *, float *);
+int AreAllVwgtsBelowFast(int, float *, float *, float);
+
+/* mmd.c */
+void genmmd(int, idxtype *, idxtype *, idxtype *, idxtype *, int , idxtype *, idxtype *, idxtype *, idxtype *, int, int *);
+void mmdelm(int, idxtype *xadj, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, int, int);
+int mmdint(int, idxtype *xadj, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *);
+void mmdnum(int, idxtype *, idxtype *, idxtype *);
+void mmdupd(int, int, idxtype *, idxtype *, int, int *, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, int, int *tag);
+
+/* mpmetis.c */
+void METIS_mCPartGraphRecursive(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
+void METIS_mCHPartGraphRecursive(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
+void METIS_mCPartGraphRecursiveInternal(int *, int *, idxtype *, idxtype *, float *, idxtype *, int *, int *, int *, idxtype *);
+void METIS_mCHPartGraphRecursiveInternal(int *, int *, idxtype *, idxtype *, float *, idxtype *, int *, float *, int *, int *, idxtype *);
+int MCMlevelRecursiveBisection(CtrlType *, GraphType *, int, idxtype *, float, int);
+int MCHMlevelRecursiveBisection(CtrlType *, GraphType *, int, idxtype *, float *, int);
+void MCMlevelEdgeBisection(CtrlType *, GraphType *, float *, float);
+void MCHMlevelEdgeBisection(CtrlType *, GraphType *, float *, float *);
+
+/* mrefine.c */
+void MocRefine2Way(CtrlType *, GraphType *, GraphType *, float *, float);
+void MocAllocate2WayPartitionMemory(CtrlType *, GraphType *);
+void MocCompute2WayPartitionParams(CtrlType *, GraphType *);
+void MocProject2WayPartition(CtrlType *, GraphType *);
+
+/* mrefine2.c */
+void MocRefine2Way2(CtrlType *, GraphType *, GraphType *, float *, float *);
+
+/* mutil.c */
+int AreAllVwgtsBelow(int, float, float *, float, float *, float);
+int AreAnyVwgtsBelow(int, float, float *, float, float *, float);
+int AreAllVwgtsAbove(int, float, float *, float, float *, float);
+float ComputeLoadImbalance(int, int, float *, float *);
+int AreAllBelow(int, float *, float *);
+
+/* myqsort.c */
+void iidxsort(int, idxtype *);
+void iintsort(int, int *);
+void ikeysort(int, KeyValueType *);
+void ikeyvalsort(int, KeyValueType *);
+
+/* ometis.c */
+void METIS_EdgeND(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *);
+void METIS_NodeND(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *);
+void METIS_NodeWND(int *, idxtype *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *);
+void MlevelNestedDissection(CtrlType *, GraphType *, idxtype *, float, int);
+void MlevelNestedDissectionCC(CtrlType *, GraphType *, idxtype *, float, int);
+void MlevelNodeBisectionMultiple(CtrlType *, GraphType *, int *, float);
+void MlevelNodeBisection(CtrlType *, GraphType *, int *, float);
+void SplitGraphOrder(CtrlType *, GraphType *, GraphType *, GraphType *);
+void MMDOrder(CtrlType *, GraphType *, idxtype *, int);
+int SplitGraphOrderCC(CtrlType *, GraphType *, GraphType *, int, idxtype *, idxtype *);
+
+/* parmetis.c */
+void METIS_PartGraphKway2(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
+void METIS_WPartGraphKway2(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
+void METIS_NodeNDP(int, idxtype *, idxtype *, int, int *, idxtype *, idxtype *, idxtype *);
+void MlevelNestedDissectionP(CtrlType *, GraphType *, idxtype *, int, int, int, idxtype *);
+void METIS_NodeComputeSeparator(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, idxtype *);
+void METIS_EdgeComputeSeparator(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, idxtype *);
+
+/* pmetis.c */
+void METIS_PartGraphRecursive(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
+void METIS_WPartGraphRecursive(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
+int MlevelRecursiveBisection(CtrlType *, GraphType *, int, idxtype *, float *, float, int);
+void MlevelEdgeBisection(CtrlType *, GraphType *, int *, float);
+void SplitGraphPart(CtrlType *, GraphType *, GraphType *, GraphType *);
+void SetUpSplitGraph(GraphType *, GraphType *, int, int);
+
+/* pqueue.c */
+void PQueueInit(CtrlType *ctrl, PQueueType *, int, int);
+void PQueueReset(PQueueType *);
+void PQueueFree(CtrlType *ctrl, PQueueType *);
+int PQueueGetSize(PQueueType *);
+int PQueueInsert(PQueueType *, int, int);
+int PQueueDelete(PQueueType *, int, int);
+int PQueueUpdate(PQueueType *, int, int, int);
+void PQueueUpdateUp(PQueueType *, int, int, int);
+int PQueueGetMax(PQueueType *);
+int PQueueSeeMax(PQueueType *);
+int PQueueGetKey(PQueueType *);
+int CheckHeap(PQueueType *);
+
+/* refine.c */
+void Refine2Way(CtrlType *, GraphType *, GraphType *, int *, float ubfactor);
+void Allocate2WayPartitionMemory(CtrlType *, GraphType *);
+void Compute2WayPartitionParams(CtrlType *, GraphType *);
+void Project2WayPartition(CtrlType *, GraphType *);
+
+/* separator.c */
+void ConstructSeparator(CtrlType *, GraphType *, float);
+void ConstructMinCoverSeparator0(CtrlType *, GraphType *, float);
+void ConstructMinCoverSeparator(CtrlType *, GraphType *, float);
+
+/* sfm.c */
+void FM_2WayNodeRefine(CtrlType *, GraphType *, float, int);
+void FM_2WayNodeRefineEqWgt(CtrlType *, GraphType *, int);
+void FM_2WayNodeRefine_OneSided(CtrlType *, GraphType *, float, int);
+void FM_2WayNodeBalance(CtrlType *, GraphType *, float);
+int ComputeMaxNodeGain(int, idxtype *, idxtype *, idxtype *);
+
+/* srefine.c */
+void Refine2WayNode(CtrlType *, GraphType *, GraphType *, float);
+void Allocate2WayNodePartitionMemory(CtrlType *, GraphType *);
+void Compute2WayNodePartitionParams(CtrlType *, GraphType *);
+void Project2WayNodePartition(CtrlType *, GraphType *);
+
+/* stat.c */
+void ComputePartitionInfo(GraphType *, int, idxtype *);
+void ComputePartitionInfoBipartite(GraphType *, int, idxtype *);
+void ComputePartitionBalance(GraphType *, int, idxtype *, float *);
+float ComputeElementBalance(int, int, idxtype *);
+
+/* subdomains.c */
+void Random_KWayEdgeRefineMConn(CtrlType *, GraphType *, int, float *, float, int, int);
+void Greedy_KWayEdgeBalanceMConn(CtrlType *, GraphType *, int, float *, float, int);
+void PrintSubDomainGraph(GraphType *, int, idxtype *);
+void ComputeSubDomainGraph(GraphType *, int, idxtype *, idxtype *);
+void EliminateSubDomainEdges(CtrlType *, GraphType *, int, float *);
+void MoveGroupMConn(CtrlType *, GraphType *, idxtype *, idxtype *, int, int, int, idxtype *);
+void EliminateComponents(CtrlType *, GraphType *, int, float *, float);
+void MoveGroup(CtrlType *, GraphType *, int, int, int, idxtype *, idxtype *);
+
+/* timing.c */
+void InitTimers(CtrlType *);
+void PrintTimers(CtrlType *);
+double seconds(void);
+
+/* util.c */
+void errexit(char *,...);
+#ifndef DMALLOC
+int *imalloc(int, char *);
+idxtype *idxmalloc(int, char *);
+float *fmalloc(int, char *);
+int *ismalloc(int, int, char *);
+idxtype *idxsmalloc(int, idxtype, char *);
+void *GKmalloc(int, char *);
+#endif
+/*void GKfree(void **,...); */
+int *iset(int n, int val, int *x);
+idxtype *idxset(int n, idxtype val, idxtype *x);
+float *sset(int n, float val, float *x);
+int iamax(int, int *);
+int idxamax(int, idxtype *);
+int idxamax_strd(int, idxtype *, int);
+int samax(int, float *);
+int samax2(int, float *);
+int idxamin(int, idxtype *);
+int samin(int, float *);
+int idxsum(int, idxtype *);
+int idxsum_strd(int, idxtype *, int);
+void idxadd(int, idxtype *, idxtype *);
+int charsum(int, char *);
+int isum(int, int *);
+float ssum(int, float *);
+float ssum_strd(int n, float *x, int);
+void sscale(int n, float, float *x);
+float snorm2(int, float *);
+float sdot(int n, float *, float *);
+void saxpy(int, float, float *, int, float *, int);
+void RandomPermute(int, idxtype *, int);
+double drand48();
+void srand48(long);
+int ispow2(int);
+void InitRandom(int);
+int ilog2(int);
+
+
+
+
+
+
+
+
+
+
+/***************************************************************
+* Programs Directory
+****************************************************************/
+
+/* io.c */
+void ReadGraph(GraphType *, char *, int *);
+void WritePartition(char *, idxtype *, int, int);
+void WriteMeshPartition(char *, int, int, idxtype *, int, idxtype *);
+void WritePermutation(char *, idxtype *, int);
+int CheckGraph(GraphType *);
+idxtype *ReadMesh(char *, int *, int *, int *);
+void WriteGraph(char *, int, idxtype *, idxtype *);
+
+/* smbfactor.c */
+void ComputeFillIn(GraphType *, idxtype *);
+idxtype ComputeFillIn2(GraphType *, idxtype *);
+int smbfct(int, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, int *, idxtype *, idxtype *, int *);
+
+
+/***************************************************************
+* Test Directory
+****************************************************************/
+void Test_PartGraph(int, idxtype *, idxtype *);
+int VerifyPart(int, idxtype *, idxtype *, idxtype *, idxtype *, int, int, idxtype *);
+int VerifyWPart(int, idxtype *, idxtype *, idxtype *, idxtype *, int, float *, int, idxtype *);
+void Test_PartGraphV(int, idxtype *, idxtype *);
+int VerifyPartV(int, idxtype *, idxtype *, idxtype *, idxtype *, int, int, idxtype *);
+int VerifyWPartV(int, idxtype *, idxtype *, idxtype *, idxtype *, int, float *, int, idxtype *);
+void Test_PartGraphmC(int, idxtype *, idxtype *);
+int VerifyPartmC(int, int, idxtype *, idxtype *, idxtype *, idxtype *, int, float *, int, idxtype *);
+void Test_ND(int, idxtype *, idxtype *);
+int VerifyND(int, idxtype *, idxtype *);
+
diff --git a/thirdparty/linux/include/coin1/ThirdParty/rename.h b/thirdparty/linux/include/coin1/ThirdParty/rename.h
new file mode 100644
index 0000000..d096b46
--- /dev/null
+++ b/thirdparty/linux/include/coin1/ThirdParty/rename.h
@@ -0,0 +1,418 @@
+/*
+ * Copyright 1997, Regents of the University of Minnesota
+ *
+ * rename.h
+ *
+ * This file contains header files
+ *
+ * Started 10/2/97
+ * George
+ *
+ * $Id: rename.h,v 1.1 1998/11/27 17:59:29 karypis Exp $
+ *
+ */
+
+/* balance.c */
+#define Balance2Way __Balance2Way
+#define Bnd2WayBalance __Bnd2WayBalance
+#define General2WayBalance __General2WayBalance
+
+
+/* bucketsort.c */
+#define BucketSortKeysInc __BucketSortKeysInc
+
+
+/* ccgraph.c */
+#define CreateCoarseGraph __CreateCoarseGraph
+#define CreateCoarseGraphNoMask __CreateCoarseGraphNoMask
+#define CreateCoarseGraph_NVW __CreateCoarseGraph_NVW
+#define SetUpCoarseGraph __SetUpCoarseGraph
+#define ReAdjustMemory __ReAdjustMemory
+
+
+/* coarsen.c */
+#define Coarsen2Way __Coarsen2Way
+
+
+/* compress.c */
+#define CompressGraph __CompressGraph
+#define PruneGraph __PruneGraph
+
+
+/* debug.c */
+#define ComputeCut __ComputeCut
+#define CheckBnd __CheckBnd
+#define CheckBnd2 __CheckBnd2
+#define CheckNodeBnd __CheckNodeBnd
+#define CheckRInfo __CheckRInfo
+#define CheckNodePartitionParams __CheckNodePartitionParams
+#define IsSeparable __IsSeparable
+
+
+/* estmem.c */
+#define EstimateCFraction __EstimateCFraction
+#define ComputeCoarseGraphSize __ComputeCoarseGraphSize
+
+
+/* fm.c */
+#define FM_2WayEdgeRefine __FM_2WayEdgeRefine
+
+
+/* fortran.c */
+#define Change2CNumbering __Change2CNumbering
+#define Change2FNumbering __Change2FNumbering
+#define Change2FNumbering2 __Change2FNumbering2
+#define Change2FNumberingOrder __Change2FNumberingOrder
+#define ChangeMesh2CNumbering __ChangeMesh2CNumbering
+#define ChangeMesh2FNumbering __ChangeMesh2FNumbering
+#define ChangeMesh2FNumbering2 __ChangeMesh2FNumbering2
+
+
+/* graph.c */
+#define SetUpGraph __SetUpGraph
+#define SetUpGraphKway __SetUpGraphKway
+#define SetUpGraph2 __SetUpGraph2
+#define VolSetUpGraph __VolSetUpGraph
+#define RandomizeGraph __RandomizeGraph
+#define IsConnectedSubdomain __IsConnectedSubdomain
+#define IsConnected __IsConnected
+#define IsConnected2 __IsConnected2
+#define FindComponents __FindComponents
+
+
+/* initpart.c */
+#define Init2WayPartition __Init2WayPartition
+#define InitSeparator __InitSeparator
+#define GrowBisection __GrowBisection
+#define GrowBisectionNode __GrowBisectionNode
+#define RandomBisection __RandomBisection
+
+
+/* kmetis.c */
+#define MlevelKWayPartitioning __MlevelKWayPartitioning
+
+
+/* kvmetis.c */
+#define MlevelVolKWayPartitioning __MlevelVolKWayPartitioning
+
+
+/* kwayfm.c */
+#define Random_KWayEdgeRefine __Random_KWayEdgeRefine
+#define Greedy_KWayEdgeRefine __Greedy_KWayEdgeRefine
+#define Greedy_KWayEdgeBalance __Greedy_KWayEdgeBalance
+
+
+/* kwayrefine.c */
+#define RefineKWay __RefineKWay
+#define AllocateKWayPartitionMemory __AllocateKWayPartitionMemory
+#define ComputeKWayPartitionParams __ComputeKWayPartitionParams
+#define ProjectKWayPartition __ProjectKWayPartition
+#define IsBalanced __IsBalanced
+#define ComputeKWayBoundary __ComputeKWayBoundary
+#define ComputeKWayBalanceBoundary __ComputeKWayBalanceBoundary
+
+
+/* kwayvolfm.c */
+#define Random_KWayVolRefine __Random_KWayVolRefine
+#define Random_KWayVolRefineMConn __Random_KWayVolRefineMConn
+#define Greedy_KWayVolBalance __Greedy_KWayVolBalance
+#define Greedy_KWayVolBalanceMConn __Greedy_KWayVolBalanceMConn
+#define KWayVolUpdate __KWayVolUpdate
+#define ComputeKWayVolume __ComputeKWayVolume
+#define ComputeVolume __ComputeVolume
+#define CheckVolKWayPartitionParams __CheckVolKWayPartitionParams
+#define ComputeVolSubDomainGraph __ComputeVolSubDomainGraph
+#define EliminateVolSubDomainEdges __EliminateVolSubDomainEdges
+
+
+/* kwayvolrefine.c */
+#define RefineVolKWay __RefineVolKWay
+#define AllocateVolKWayPartitionMemory __AllocateVolKWayPartitionMemory
+#define ComputeVolKWayPartitionParams __ComputeVolKWayPartitionParams
+#define ComputeKWayVolGains __ComputeKWayVolGains
+#define ProjectVolKWayPartition __ProjectVolKWayPartition
+#define ComputeVolKWayBoundary __ComputeVolKWayBoundary
+#define ComputeVolKWayBalanceBoundary __ComputeVolKWayBalanceBoundary
+
+
+/* match.c */
+#define Match_RM __Match_RM
+#define Match_RM_NVW __Match_RM_NVW
+#define Match_HEM __Match_HEM
+#define Match_SHEM __Match_SHEM
+
+
+/* mbalance.c */
+#define MocBalance2Way __MocBalance2Way
+#define MocGeneral2WayBalance __MocGeneral2WayBalance
+
+
+/* mbalance2.c */
+#define MocBalance2Way2 __MocBalance2Way2
+#define MocGeneral2WayBalance2 __MocGeneral2WayBalance2
+#define SelectQueue3 __SelectQueue3
+
+
+/* mcoarsen.c */
+#define MCCoarsen2Way __MCCoarsen2Way
+
+
+/* memory.c */
+#define AllocateWorkSpace __AllocateWorkSpace
+#define FreeWorkSpace __FreeWorkSpace
+#define WspaceAvail __WspaceAvail
+#define idxwspacemalloc __idxwspacemalloc
+#define idxwspacefree __idxwspacefree
+#define fwspacemalloc __fwspacemalloc
+#define CreateGraph __CreateGraph
+#define InitGraph __InitGraph
+#define FreeGraph __FreeGraph
+
+
+/* mesh.c */
+#define TRIDUALMETIS __TRIDUALMETIS
+#define TETDUALMETIS __TETDUALMETIS
+#define HEXDUALMETIS __HEXDUALMETIS
+#define TRINODALMETIS __TRINODALMETIS
+#define TETNODALMETIS __TETNODALMETIS
+#define HEXNODALMETIS __HEXNODALMETIS
+
+
+/* mfm.c */
+#define MocFM_2WayEdgeRefine __MocFM_2WayEdgeRefine
+#define SelectQueue __SelectQueue
+#define BetterBalance __BetterBalance
+#define Compute2WayHLoadImbalance __Compute2WayHLoadImbalance
+#define Compute2WayHLoadImbalanceVec __Compute2WayHLoadImbalanceVec
+
+
+/* mfm2.c */
+#define MocFM_2WayEdgeRefine2 __MocFM_2WayEdgeRefine2
+#define SelectQueue2 __SelectQueue2
+#define IsBetter2wayBalance __IsBetter2wayBalance
+
+
+/* mincover.c */
+#define MinCover __MinCover
+#define MinCover_Augment __MinCover_Augment
+#define MinCover_Decompose __MinCover_Decompose
+#define MinCover_ColDFS __MinCover_ColDFS
+#define MinCover_RowDFS __MinCover_RowDFS
+
+
+/* minitpart.c */
+#define MocInit2WayPartition __MocInit2WayPartition
+#define MocGrowBisection __MocGrowBisection
+#define MocRandomBisection __MocRandomBisection
+#define MocInit2WayBalance __MocInit2WayBalance
+#define SelectQueueoneWay __SelectQueueoneWay
+
+
+/* minitpart2.c */
+#define MocInit2WayPartition2 __MocInit2WayPartition2
+#define MocGrowBisection2 __MocGrowBisection2
+#define MocGrowBisectionNew2 __MocGrowBisectionNew2
+#define MocInit2WayBalance2 __MocInit2WayBalance2
+#define SelectQueueOneWay2 __SelectQueueOneWay2
+
+
+/* mkmetis.c */
+#define MCMlevelKWayPartitioning __MCMlevelKWayPartitioning
+
+
+/* mkwayfmh.c */
+#define MCRandom_KWayEdgeRefineHorizontal __MCRandom_KWayEdgeRefineHorizontal
+#define MCGreedy_KWayEdgeBalanceHorizontal __MCGreedy_KWayEdgeBalanceHorizontal
+#define AreAllHVwgtsBelow __AreAllHVwgtsBelow
+#define AreAllHVwgtsAbove __AreAllHVwgtsAbove
+#define ComputeHKWayLoadImbalance __ComputeHKWayLoadImbalance
+#define MocIsHBalanced __MocIsHBalanced
+#define IsHBalanceBetterFT __IsHBalanceBetterFT
+#define IsHBalanceBetterTT __IsHBalanceBetterTT
+
+
+/* mkwayrefine.c */
+#define MocRefineKWayHorizontal __MocRefineKWayHorizontal
+#define MocAllocateKWayPartitionMemory __MocAllocateKWayPartitionMemory
+#define MocComputeKWayPartitionParams __MocComputeKWayPartitionParams
+#define MocProjectKWayPartition __MocProjectKWayPartition
+#define MocComputeKWayBalanceBoundary __MocComputeKWayBalanceBoundary
+
+
+/* mmatch.c */
+#define MCMatch_RM __MCMatch_RM
+#define MCMatch_HEM __MCMatch_HEM
+#define MCMatch_SHEM __MCMatch_SHEM
+#define MCMatch_SHEBM __MCMatch_SHEBM
+#define MCMatch_SBHEM __MCMatch_SBHEM
+#define BetterVBalance __BetterVBalance
+#define AreAllVwgtsBelowFast __AreAllVwgtsBelowFast
+
+
+/* mmd.c */
+#define genmmd __genmmd
+#define mmdelm __mmdelm
+#define mmdint __mmdint
+#define mmdnum __mmdnum
+#define mmdupd __mmdupd
+
+
+/* mpmetis.c */
+#define MCMlevelRecursiveBisection __MCMlevelRecursiveBisection
+#define MCHMlevelRecursiveBisection __MCHMlevelRecursiveBisection
+#define MCMlevelEdgeBisection __MCMlevelEdgeBisection
+#define MCHMlevelEdgeBisection __MCHMlevelEdgeBisection
+
+
+/* mrefine.c */
+#define MocRefine2Way __MocRefine2Way
+#define MocAllocate2WayPartitionMemory __MocAllocate2WayPartitionMemory
+#define MocCompute2WayPartitionParams __MocCompute2WayPartitionParams
+#define MocProject2WayPartition __MocProject2WayPartition
+
+
+/* mrefine2.c */
+#define MocRefine2Way2 __MocRefine2Way2
+
+
+/* mutil.c */
+#define AreAllVwgtsBelow __AreAllVwgtsBelow
+#define AreAnyVwgtsBelow __AreAnyVwgtsBelow
+#define AreAllVwgtsAbove __AreAllVwgtsAbove
+#define ComputeLoadImbalance __ComputeLoadImbalance
+#define AreAllBelow __AreAllBelow
+
+
+/* myqsort.c */
+#define iidxsort __iidxsort
+#define iintsort __iintsort
+#define ikeysort __ikeysort
+#define ikeyvalsort __ikeyvalsort
+
+
+/* ometis.c */
+#define MlevelNestedDissection __MlevelNestedDissection
+#define MlevelNestedDissectionCC __MlevelNestedDissectionCC
+#define MlevelNodeBisectionMultiple __MlevelNodeBisectionMultiple
+#define MlevelNodeBisection __MlevelNodeBisection
+#define SplitGraphOrder __SplitGraphOrder
+#define MMDOrder __MMDOrder
+#define SplitGraphOrderCC __SplitGraphOrderCC
+
+
+/* parmetis.c */
+#define MlevelNestedDissectionP __MlevelNestedDissectionP
+
+
+/* pmetis.c */
+#define MlevelRecursiveBisection __MlevelRecursiveBisection
+#define MlevelEdgeBisection __MlevelEdgeBisection
+#define SplitGraphPart __SplitGraphPart
+#define SetUpSplitGraph __SetUpSplitGraph
+
+
+/* pqueue.c */
+#define PQueueInit __PQueueInit
+#define PQueueReset __PQueueReset
+#define PQueueFree __PQueueFree
+#define PQueueInsert __PQueueInsert
+#define PQueueDelete __PQueueDelete
+#define PQueueUpdate __PQueueUpdate
+#define PQueueUpdateUp __PQueueUpdateUp
+#define PQueueGetMax __PQueueGetMax
+#define PQueueSeeMax __PQueueSeeMax
+#define CheckHeap __CheckHeap
+
+
+/* refine.c */
+#define Refine2Way __Refine2Way
+#define Allocate2WayPartitionMemory __Allocate2WayPartitionMemory
+#define Compute2WayPartitionParams __Compute2WayPartitionParams
+#define Project2WayPartition __Project2WayPartition
+
+
+/* separator.c */
+#define ConstructSeparator __ConstructSeparator
+#define ConstructMinCoverSeparator0 __ConstructMinCoverSeparator0
+#define ConstructMinCoverSeparator __ConstructMinCoverSeparator
+
+
+/* sfm.c */
+#define FM_2WayNodeRefine __FM_2WayNodeRefine
+#define FM_2WayNodeRefineEqWgt __FM_2WayNodeRefineEqWgt
+#define FM_2WayNodeRefine_OneSided __FM_2WayNodeRefine_OneSided
+#define FM_2WayNodeBalance __FM_2WayNodeBalance
+#define ComputeMaxNodeGain __ComputeMaxNodeGain
+
+
+/* srefine.c */
+#define Refine2WayNode __Refine2WayNode
+#define Allocate2WayNodePartitionMemory __Allocate2WayNodePartitionMemory
+#define Compute2WayNodePartitionParams __Compute2WayNodePartitionParams
+#define Project2WayNodePartition __Project2WayNodePartition
+
+
+/* stat.c */
+#define ComputePartitionInfo __ComputePartitionInfo
+#define ComputePartitionBalance __ComputePartitionBalance
+#define ComputeElementBalance __ComputeElementBalance
+
+
+/* subdomains.c */
+#define Random_KWayEdgeRefineMConn __Random_KWayEdgeRefineMConn
+#define Greedy_KWayEdgeBalanceMConn __Greedy_KWayEdgeBalanceMConn
+#define PrintSubDomainGraph __PrintSubDomainGraph
+#define ComputeSubDomainGraph __ComputeSubDomainGraph
+#define EliminateSubDomainEdges __EliminateSubDomainEdges
+#define MoveGroupMConn __MoveGroupMConn
+#define EliminateComponents __EliminateComponents
+#define MoveGroup __MoveGroup
+
+
+/* timing.c */
+#define InitTimers __InitTimers
+#define PrintTimers __PrintTimers
+#define seconds __seconds
+
+
+/* util.c */
+#define errexit __errexit
+#define GKfree __GKfree
+#ifndef DMALLOC
+#define imalloc __imalloc
+#define idxmalloc __idxmalloc
+#define fmalloc __fmalloc
+#define ismalloc __ismalloc
+#define idxsmalloc __idxsmalloc
+#define GKmalloc __GKmalloc
+#endif
+#define iset __iset
+#define idxset __idxset
+#define sset __sset
+#define iamax __iamax
+#define idxamax __idxamax
+#define idxamax_strd __idxamax_strd
+#define samax __samax
+#define samax2 __samax2
+#define idxamin __idxamin
+#define samin __samin
+#define idxsum __idxsum
+#define idxsum_strd __idxsum_strd
+#define idxadd __idxadd
+#define charsum __charsum
+#define isum __isum
+#define ssum __ssum
+#define ssum_strd __ssum_strd
+#define sscale __sscale
+#define snorm2 __snorm2
+#define sdot __sdot
+#define saxpy __saxpy
+#define RandomPermute __RandomPermute
+#define ispow2 __ispow2
+#define InitRandom __InitRandom
+#define ilog2 __ilog2
+
+
+
+
+
diff --git a/thirdparty/linux/include/coin1/ThirdParty/struct.h b/thirdparty/linux/include/coin1/ThirdParty/struct.h
new file mode 100644
index 0000000..63c7c65
--- /dev/null
+++ b/thirdparty/linux/include/coin1/ThirdParty/struct.h
@@ -0,0 +1,251 @@
+/*
+ * Copyright 1997, Regents of the University of Minnesota
+ *
+ * struct.h
+ *
+ * This file contains data structures for ILU routines.
+ *
+ * Started 9/26/95
+ * George
+ *
+ * $Id: struct.h,v 1.1 1998/11/27 17:59:31 karypis Exp $
+ */
+
+/* Undefine the following #define in order to use short int as the idxtype */
+#define IDXTYPE_INT
+
+/* Indexes are as long as integers for now */
+#ifdef IDXTYPE_INT
+typedef int idxtype;
+#else
+typedef short idxtype;
+#endif
+
+#define MAXIDX (1<<8*sizeof(idxtype)-2)
+
+
+/*************************************************************************
+* The following data structure stores key-value pair
+**************************************************************************/
+struct KeyValueType {
+ idxtype key;
+ idxtype val;
+};
+
+typedef struct KeyValueType KeyValueType;
+
+
+/*************************************************************************
+* The following data structure will hold a node of a doubly-linked list.
+**************************************************************************/
+struct ListNodeType {
+ int id; /* The id value of the node */
+ struct ListNodeType *prev, *next; /* It's a doubly-linked list */
+};
+
+typedef struct ListNodeType ListNodeType;
+
+
+
+/*************************************************************************
+* The following data structure is used to store the buckets for the
+* refinment algorithms
+**************************************************************************/
+struct PQueueType {
+ int type; /* The type of the representation used */
+ int nnodes;
+ int maxnodes;
+ int mustfree;
+
+ /* Linear array version of the data structures */
+ int pgainspan, ngainspan; /* plus and negative gain span */
+ int maxgain;
+ ListNodeType *nodes;
+ ListNodeType **buckets;
+
+ /* Heap version of the data structure */
+ KeyValueType *heap;
+ idxtype *locator;
+};
+
+typedef struct PQueueType PQueueType;
+
+
+/*************************************************************************
+* The following data structure stores an edge
+**************************************************************************/
+struct edegreedef {
+ idxtype pid;
+ idxtype ed;
+};
+typedef struct edegreedef EDegreeType;
+
+
+/*************************************************************************
+* The following data structure stores an edge for vol
+**************************************************************************/
+struct vedegreedef {
+ idxtype pid;
+ idxtype ed, ned;
+ idxtype gv;
+};
+typedef struct vedegreedef VEDegreeType;
+
+
+/*************************************************************************
+* This data structure holds various working space data
+**************************************************************************/
+struct workspacedef {
+ idxtype *core; /* Where pairs, indices, and degrees are coming from */
+ int maxcore, ccore;
+
+ EDegreeType *edegrees;
+ VEDegreeType *vedegrees;
+ int cdegree;
+
+ idxtype *auxcore; /* This points to the memory of the edegrees */
+
+ idxtype *pmat; /* An array of k^2 used for eliminating domain
+ connectivity in k-way refinement */
+};
+
+typedef struct workspacedef WorkSpaceType;
+
+
+/*************************************************************************
+* The following data structure holds information on degrees for k-way
+* partition
+**************************************************************************/
+struct rinfodef {
+ int id, ed; /* ID/ED of nodes */
+ int ndegrees; /* The number of different ext-degrees */
+ EDegreeType *edegrees; /* List of edges */
+};
+
+typedef struct rinfodef RInfoType;
+
+
+/*************************************************************************
+* The following data structure holds information on degrees for k-way
+* vol-based partition
+**************************************************************************/
+struct vrinfodef {
+ int id, ed, nid; /* ID/ED of nodes */
+ int gv; /* IV/EV of nodes */
+ int ndegrees; /* The number of different ext-degrees */
+ VEDegreeType *edegrees; /* List of edges */
+};
+
+typedef struct vrinfodef VRInfoType;
+
+
+/*************************************************************************
+* The following data structure holds information on degrees for k-way
+* partition
+**************************************************************************/
+struct nrinfodef {
+ idxtype edegrees[2];
+};
+
+typedef struct nrinfodef NRInfoType;
+
+
+/*************************************************************************
+* This data structure holds the input graph
+**************************************************************************/
+struct graphdef {
+ idxtype *gdata, *rdata; /* Memory pools for graph and refinement data.
+ This is where memory is allocated and used
+ the rest of the fields in this structure */
+
+ int nvtxs, nedges; /* The # of vertices and edges in the graph */
+ idxtype *xadj; /* Pointers to the locally stored vertices */
+ idxtype *vwgt; /* Vertex weights */
+ idxtype *vsize; /* Vertex sizes for min-volume formulation */
+ idxtype *adjncy; /* Array that stores the adjacency lists of nvtxs */
+ idxtype *adjwgt; /* Array that stores the weights of the adjacency lists */
+
+ idxtype *adjwgtsum; /* The sum of the adjacency weight of each vertex */
+
+ idxtype *label;
+
+ idxtype *cmap;
+
+ /* Partition parameters */
+ int mincut, minvol;
+ idxtype *where, *pwgts;
+ int nbnd;
+ idxtype *bndptr, *bndind;
+
+ /* Bisection refinement parameters */
+ idxtype *id, *ed;
+
+ /* K-way refinement parameters */
+ RInfoType *rinfo;
+
+ /* K-way volume refinement parameters */
+ VRInfoType *vrinfo;
+
+ /* Node refinement information */
+ NRInfoType *nrinfo;
+
+
+ /* Additional info needed by the MOC routines */
+ int ncon; /* The # of constrains */
+ float *nvwgt; /* Normalized vertex weights */
+ float *npwgts; /* The normalized partition weights */
+
+ struct graphdef *coarser, *finer;
+};
+
+typedef struct graphdef GraphType;
+
+
+
+/*************************************************************************
+* The following data type implements a timer
+**************************************************************************/
+typedef double timer;
+
+
+/*************************************************************************
+* The following structure stores information used by Metis
+**************************************************************************/
+struct controldef {
+ int CoarsenTo; /* The # of vertices in the coarsest graph */
+ int dbglvl; /* Controls the debuging output of the program */
+ int CType; /* The type of coarsening */
+ int IType; /* The type of initial partitioning */
+ int RType; /* The type of refinement */
+ int maxvwgt; /* The maximum allowed weight for a vertex */
+ float nmaxvwgt; /* The maximum allowed weight for a vertex for each constrain */
+ int optype; /* Type of operation */
+ int pfactor; /* .1*prunning factor */
+ int nseps; /* The number of separators to be found during multiple bisections */
+ int oflags;
+
+ WorkSpaceType wspace; /* Work Space Informations */
+
+ /* Various Timers */
+ timer TotalTmr, InitPartTmr, MatchTmr, ContractTmr, CoarsenTmr, UncoarsenTmr,
+ SepTmr, RefTmr, ProjectTmr, SplitTmr, AuxTmr1, AuxTmr2, AuxTmr3, AuxTmr4, AuxTmr5, AuxTmr6;
+
+};
+
+typedef struct controldef CtrlType;
+
+
+/*************************************************************************
+* The following data structure stores max-partition weight info for
+* Vertical MOC k-way refinement
+**************************************************************************/
+struct vpwgtdef {
+ float max[2][MAXNCON];
+ int imax[2][MAXNCON];
+};
+
+typedef struct vpwgtdef VPInfoType;
+
+
+
+