1 /*****************************************************************************
2 /
3 / SPACE (SPArse Cholesky Elimination) Library: const.h
4 /
5 / author        J"urgen Schulze, University of Paderborn
6 / created       99sep14
7 /
8 / This file contains constant definitions
9 /
10 ******************************************************************************/
11 
12 /* matrix types */
13 #define GRID		0
14 #define MESH		1
15 #define TORUS		2
16 #define HB              3
17 
18 /* graph types */
19 #define UNWEIGHTED      0
20 #define WEIGHTED        1
21 
22 /* type of ordering */
23 #define MINIMUM_PRIORITY       0
24 #define INCOMPLETE_ND          1
25 #define MULTISECTION           2
26 #define TRISTAGE_MULTISECTION  3
27 
28 /* fill-reducing node selection strategies */
29 #define AMD        0
30 #define AMF        1
31 #define AMMF       2
32 #define AMIND      3
33 
34 /* node selection strategies for generating the domain decompositions */
35 #define QMD    0
36 #define QMRDV  1
37 #define QRAND  2
38 
39 /* default options for SPACE */
40 #define SPACE_ORDTYPE          MULTISECTION
41 #define SPACE_NODE_SELECTION1  AMMF
42 #define SPACE_NODE_SELECTION2  AMMF
43 #define SPACE_NODE_SELECTION3  QMRDV
44 #define SPACE_DOMAIN_SIZE      200
45 #define SPACE_MSGLVL           2
46 #define SPACE_ETREE_NONZ       256
47 #define SPACE_ETREE_BAL        5
48 #define SPACE_MASK_OFFSET      2
49 
50 /* misc. constants */
51 #define TRUE		1
52 #define FALSE		0
53 #define ERR             -1
54 #define NOERR           0
55 #define MAX_LINE_LEN    255
56 #define MAX_INT         ((1<<30)-1)
57 #define MAX_FLOAT       1e31
58 #define EPS             0.001
59 
60 /* constants used in color array */
61 /* these constants are also used as an index (do not change) */
62 #define GRAY       0
63 #define BLACK      1
64 #define WHITE      2
65 
66 /* constants for the Dulmage-Mendelsohn decomposition (dmflags) */
67 /* these constants are also used as an index (do not change) */
68 #define SI         0     /* node e X is reachable via exposed node e X */
69 #define SX         1     /* node e X is reachable via exposed node e Y */
70 #define SR         2     /* SR = X - (SI u SX) */
71 #define BI         3     /* node e Y is reachable via exposed node e Y */
72 #define BX         4     /* node e Y is reachable via exposed node e X */
73 #define BR         5     /* BR = Y - (BI u BX) */
74 
75 /* size/indices of option array (do not change) */
76 #define ORD_OPTION_SLOTS        7
77 
78 #define OPTION_ORDTYPE          0
79 #define OPTION_NODE_SELECTION1  1
80 #define OPTION_NODE_SELECTION2  2
81 #define OPTION_NODE_SELECTION3  3
82 #define OPTION_DOMAIN_SIZE      4
83 #define OPTION_MSGLVL           5
84 #define OPTION_ETREE_NONZ       6
85 
86 /* size/indices for timing array in ordering computation */
87 #define ORD_TIME_SLOTS    12
88 
89 #define TIME_COMPRESS     0    /*  0. TIME_COMPRESS                */
90 #define TIME_MS           1    /*  1. TIME_MS                      */
91 #define TIME_MULTILEVEL   2    /*     1.1 TIME_MULTILEVEL          */
92 #define TIME_INITDOMDEC   3    /*         1.1.1 TIME_INITDOMDEC    */
93 #define TIME_COARSEDOMDEC 4    /*         1.1.2 TIME_COARSEDOMDEC  */
94 #define TIME_INITSEP      5    /*         1.1.3 TIME_INITSEP       */
95 #define TIME_REFINESEP    6    /*         1.1.4 TIME_REFINESEP     */
96 #define TIME_SMOOTH       7    /*     1.2 TIME_SMOOTH              */
97 #define TIME_BOTTOMUP     8    /*  2. TIME_BOTTOMUP                */
98 #define TIME_UPDADJNCY    9    /*     2.1 TIME_UPDADJNCY           */
99 #define TIME_FINDINODES  10    /*     2.2 TIME_FINDINODES          */
100 #define TIME_UPDSCORE    11    /*     2.3 TIME_UPDSCORE            */
101 
102 /* size/indices for timing array in sequential numerical factorization */
103 #define NUMFAC_TIME_SLOTS 4
104 
105 #define TIME_INITFRONT    0
106 #define TIME_EXADD        1
107 #define TIME_KERNEL       2
108 #define TIME_INITUPD      3
109 
110 /* size/indices for timing array in parallel numerical factorization */
111 #define NUMFACPAR_TIME_SLOTS 9
112 
113 #define TIME_INITFRONT       0
114 #define TIME_EXADD           1
115 #define TIME_KERNEL          2
116 #define TIME_INITUPD         3
117 #define TIME_EXCHANGE        4
118 #define TIME_INITFRONTPAR    5
119 #define TIME_EXADDPAR        6
120 #define TIME_KERNELPAR       7
121 #define TIME_INITUPDPAR      8
122 
123 /* size/indices for timing array in parallel kernel */
124 #define KERNELPAR_TIME_SLOTS 4
125 
126 #define TIME_PIVOT           0
127 #define TIME_PIVOT_WAIT      1
128 #define TIME_CMOD            2
129 #define TIME_CMOD_WAIT       3
130