kusano 7d535a
/** @file superlu_enum_consts.h
kusano 7d535a
 * \brief enum constants header file 
kusano 7d535a
 *
kusano 7d535a
 * -- SuperLU routine (version 4.1) --
kusano 7d535a
 * Lawrence Berkeley National Lab, Univ. of California Berkeley, 
kusano 7d535a
 * October 1, 2010
kusano 7d535a
 *
kusano 7d535a
 */
kusano 7d535a
kusano 7d535a
#ifndef __SUPERLU_ENUM_CONSTS /* allow multiple inclusions */
kusano 7d535a
#define __SUPERLU_ENUM_CONSTS
kusano 7d535a
kusano 7d535a
/***********************************************************************
kusano 7d535a
 * Enumerate types
kusano 7d535a
 ***********************************************************************/
kusano 7d535a
typedef enum {NO, YES}                                          yes_no_t;
kusano 7d535a
typedef enum {DOFACT, SamePattern, SamePattern_SameRowPerm, FACTORED} fact_t;
kusano 7d535a
typedef enum {NOROWPERM, LargeDiag, MY_PERMR}                   rowperm_t;
kusano 7d535a
typedef enum {NATURAL, MMD_ATA, MMD_AT_PLUS_A, COLAMD,
kusano 7d535a
	      METIS_AT_PLUS_A, PARMETIS, ZOLTAN, MY_PERMC}      colperm_t;
kusano 7d535a
typedef enum {NOTRANS, TRANS, CONJ}                             trans_t;
kusano 7d535a
typedef enum {NOEQUIL, ROW, COL, BOTH}                          DiagScale_t;
kusano 7d535a
typedef enum {NOREFINE, SINGLE=1, DOUBLE, EXTRA}                IterRefine_t;
kusano 7d535a
typedef enum {LUSUP, UCOL, LSUB, USUB, LLVL, ULVL}              MemType;
kusano 7d535a
typedef enum {HEAD, TAIL}                                       stack_end_t;
kusano 7d535a
typedef enum {SYSTEM, USER}                                     LU_space_t;
kusano 7d535a
typedef enum {ONE_NORM, TWO_NORM, INF_NORM}			norm_t;
kusano 7d535a
typedef enum {SILU, SMILU_1, SMILU_2, SMILU_3}			milu_t;
kusano 7d535a
#if 0
kusano 7d535a
typedef enum {NODROP		= 0x0000,
kusano 7d535a
	      DROP_BASIC	= 0x0001, /* ILU(tau) */
kusano 7d535a
	      DROP_PROWS	= 0x0002, /* ILUTP: keep p maximum rows */
kusano 7d535a
	      DROP_COLUMN	= 0x0004, /* ILUTP: for j-th column, 
kusano 7d535a
					     p = gamma * nnz(A(:,j)) */
kusano 7d535a
	      DROP_AREA 	= 0x0008, /* ILUTP: for j-th column, use
kusano 7d535a
					     nnz(F(:,1:j)) / nnz(A(:,1:j))
kusano 7d535a
					     to limit memory growth  */
kusano 7d535a
	      DROP_SECONDARY	= 0x000E, /* PROWS | COLUMN | AREA */
kusano 7d535a
	      DROP_DYNAMIC	= 0x0010,
kusano 7d535a
	      DROP_INTERP	= 0x0100}			rule_t;
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
kusano 7d535a
/* 
kusano 7d535a
 * The following enumerate type is used by the statistics variable 
kusano 7d535a
 * to keep track of flop count and time spent at various stages.
kusano 7d535a
 *
kusano 7d535a
 * Note that not all of the fields are disjoint.
kusano 7d535a
 */
kusano 7d535a
typedef enum {
kusano 7d535a
    COLPERM, /* find a column ordering that minimizes fills */
kusano 7d535a
    ROWPERM, /* find a row ordering maximizes diagonal. */
kusano 7d535a
    RELAX,   /* find artificial supernodes */
kusano 7d535a
    ETREE,   /* compute column etree */
kusano 7d535a
    EQUIL,   /* equilibrate the original matrix */
kusano 7d535a
    SYMBFAC, /* symbolic factorization. */
kusano 7d535a
    DIST,    /* distribute matrix. */
kusano 7d535a
    FACT,    /* perform LU factorization */
kusano 7d535a
    COMM,    /* communication for factorization */
kusano 7d535a
    SOL_COMM,/* communication for solve */
kusano 7d535a
    RCOND,   /* estimate reciprocal condition number */
kusano 7d535a
    SOLVE,   /* forward and back solves */
kusano 7d535a
    REFINE,  /* perform iterative refinement */
kusano 7d535a
    FLOAT,   /* time spent in floating-point operations */
kusano 7d535a
    TRSV,    /* fraction of FACT spent in xTRSV */
kusano 7d535a
    GEMV,    /* fraction of FACT spent in xGEMV */
kusano 7d535a
    FERR,    /* estimate error bounds after iterative refinement */
kusano 7d535a
    NPHASES  /* total number of phases */
kusano 7d535a
} PhaseType;
kusano 7d535a
kusano 7d535a
kusano 7d535a
#endif /* __SUPERLU_ENUM_CONSTS */