summaryrefslogtreecommitdiff
path: root/usr/include/cholmod_partition.h
diff options
context:
space:
mode:
authorShashank2017-05-29 12:40:26 +0530
committerShashank2017-05-29 12:40:26 +0530
commit0345245e860375a32c9a437c4a9d9cae807134e9 (patch)
treead51ecbfa7bcd3cc5f09834f1bb8c08feaa526a4 /usr/include/cholmod_partition.h
downloadscilab_for_xcos_on_cloud-0345245e860375a32c9a437c4a9d9cae807134e9.tar.gz
scilab_for_xcos_on_cloud-0345245e860375a32c9a437c4a9d9cae807134e9.tar.bz2
scilab_for_xcos_on_cloud-0345245e860375a32c9a437c4a9d9cae807134e9.zip
CMSCOPE changed
Diffstat (limited to 'usr/include/cholmod_partition.h')
-rwxr-xr-xusr/include/cholmod_partition.h166
1 files changed, 166 insertions, 0 deletions
diff --git a/usr/include/cholmod_partition.h b/usr/include/cholmod_partition.h
new file mode 100755
index 000000000..1e8ecd3ca
--- /dev/null
+++ b/usr/include/cholmod_partition.h
@@ -0,0 +1,166 @@
+/* ========================================================================== */
+/* === Include/cholmod_partition.h ========================================== */
+/* ========================================================================== */
+
+/* -----------------------------------------------------------------------------
+ * CHOLMOD/Include/cholmod_partition.h.
+ * Copyright (C) 2005-2013, Univ. of Florida. Author: Timothy A. Davis
+ * CHOLMOD/Include/cholmod_partition.h is licensed under Version 2.1 of the GNU
+ * Lesser General Public License. See lesser.txt for a text of the license.
+ * CHOLMOD is also available under other licenses; contact authors for details.
+ * -------------------------------------------------------------------------- */
+
+/* CHOLMOD Partition module.
+ *
+ * Graph partitioning and graph-partition-based orderings. Includes an
+ * interface to CCOLAMD and CSYMAMD, constrained minimum degree ordering
+ * methods which order a matrix following constraints determined via nested
+ * dissection.
+ *
+ * These functions require METIS:
+ * cholmod_nested_dissection CHOLMOD nested dissection ordering
+ * cholmod_metis METIS nested dissection ordering (METIS_NodeND)
+ * cholmod_bisect graph partitioner (currently based on METIS)
+ * cholmod_metis_bisector direct interface to METIS_NodeComputeSeparator
+ *
+ * Requires the Core and Cholesky modules, and three packages: METIS, CAMD,
+ * and CCOLAMD. Optionally used by the Cholesky module.
+ *
+ * Note that METIS does not have a version that uses SuiteSparse_long integers.
+ * If you try to use cholmod_nested_dissection, cholmod_metis, cholmod_bisect,
+ * or cholmod_metis_bisector on a matrix that is too large, an error code will
+ * be returned. METIS does have an "idxtype", which could be redefined as
+ * SuiteSparse_long, if you wish to edit METIS or use compile-time flags to
+ * redefine idxtype.
+ */
+
+#ifndef CHOLMOD_PARTITION_H
+#define CHOLMOD_PARTITION_H
+
+#include "cholmod_core.h"
+#include "cholmod_camd.h"
+
+/* -------------------------------------------------------------------------- */
+/* cholmod_nested_dissection */
+/* -------------------------------------------------------------------------- */
+
+/* Order A, AA', or A(:,f)*A(:,f)' using CHOLMOD's nested dissection method
+ * (METIS's node bisector applied recursively to compute the separator tree
+ * and constraint sets, followed by CCOLAMD using the constraints). Usually
+ * finds better orderings than METIS_NodeND, but takes longer.
+ */
+
+SuiteSparse_long cholmod_nested_dissection /* returns # of components */
+(
+ /* ---- input ---- */
+ cholmod_sparse *A, /* matrix to order */
+ int *fset, /* subset of 0:(A->ncol)-1 */
+ size_t fsize, /* size of fset */
+ /* ---- output --- */
+ int *Perm, /* size A->nrow, output permutation */
+ int *CParent, /* size A->nrow. On output, CParent [c] is the parent
+ * of component c, or EMPTY if c is a root, and where
+ * c is in the range 0 to # of components minus 1 */
+ int *Cmember, /* size A->nrow. Cmember [j] = c if node j of A is
+ * in component c */
+ /* --------------- */
+ cholmod_common *Common
+) ;
+
+SuiteSparse_long cholmod_l_nested_dissection (cholmod_sparse *,
+ SuiteSparse_long *, size_t, SuiteSparse_long *, SuiteSparse_long *,
+ SuiteSparse_long *, cholmod_common *) ;
+
+/* -------------------------------------------------------------------------- */
+/* cholmod_metis */
+/* -------------------------------------------------------------------------- */
+
+/* Order A, AA', or A(:,f)*A(:,f)' using METIS_NodeND. */
+
+int cholmod_metis
+(
+ /* ---- input ---- */
+ cholmod_sparse *A, /* matrix to order */
+ int *fset, /* subset of 0:(A->ncol)-1 */
+ size_t fsize, /* size of fset */
+ int postorder, /* if TRUE, follow with etree or coletree postorder */
+ /* ---- output --- */
+ int *Perm, /* size A->nrow, output permutation */
+ /* --------------- */
+ cholmod_common *Common
+) ;
+
+int cholmod_l_metis (cholmod_sparse *, SuiteSparse_long *, size_t, int,
+ SuiteSparse_long *, cholmod_common *) ;
+
+/* -------------------------------------------------------------------------- */
+/* cholmod_bisect */
+/* -------------------------------------------------------------------------- */
+
+/* Finds a node bisector of A, A*A', A(:,f)*A(:,f)'. */
+
+SuiteSparse_long cholmod_bisect /* returns # of nodes in separator */
+(
+ /* ---- input ---- */
+ cholmod_sparse *A, /* matrix to bisect */
+ int *fset, /* subset of 0:(A->ncol)-1 */
+ size_t fsize, /* size of fset */
+ int compress, /* if TRUE, compress the graph first */
+ /* ---- output --- */
+ int *Partition, /* size A->nrow. Node i is in the left graph if
+ * Partition [i] = 0, the right graph if 1, and in the
+ * separator if 2. */
+ /* --------------- */
+ cholmod_common *Common
+) ;
+
+SuiteSparse_long cholmod_l_bisect (cholmod_sparse *, SuiteSparse_long *,
+ size_t, int, SuiteSparse_long *, cholmod_common *) ;
+
+/* -------------------------------------------------------------------------- */
+/* cholmod_metis_bisector */
+/* -------------------------------------------------------------------------- */
+
+/* Find a set of nodes that bisects the graph of A or AA' (direct interface
+ * to METIS_NodeComputeSeparator). */
+
+SuiteSparse_long cholmod_metis_bisector /* returns separator size */
+(
+ /* ---- input ---- */
+ cholmod_sparse *A, /* matrix to bisect */
+ int *Anw, /* size A->nrow, node weights */
+ int *Aew, /* size nz, edge weights */
+ /* ---- output --- */
+ int *Partition, /* size A->nrow. see cholmod_bisect above. */
+ /* --------------- */
+ cholmod_common *Common
+) ;
+
+SuiteSparse_long cholmod_l_metis_bisector (cholmod_sparse *,
+ SuiteSparse_long *, SuiteSparse_long *, SuiteSparse_long *,
+ cholmod_common *) ;
+
+/* -------------------------------------------------------------------------- */
+/* cholmod_collapse_septree */
+/* -------------------------------------------------------------------------- */
+
+/* Collapse nodes in a separator tree. */
+
+SuiteSparse_long cholmod_collapse_septree
+(
+ /* ---- input ---- */
+ size_t n, /* # of nodes in the graph */
+ size_t ncomponents, /* # of nodes in the separator tree (must be <= n) */
+ double nd_oksep, /* collapse if #sep >= nd_oksep * #nodes in subtree */
+ size_t nd_small, /* collapse if #nodes in subtree < nd_small */
+ /* ---- in/out --- */
+ int *CParent, /* size ncomponents; from cholmod_nested_dissection */
+ int *Cmember, /* size n; from cholmod_nested_dissection */
+ /* --------------- */
+ cholmod_common *Common
+) ;
+
+SuiteSparse_long cholmod_l_collapse_septree (size_t, size_t, double, size_t,
+ SuiteSparse_long *, SuiteSparse_long *, cholmod_common *) ;
+
+#endif