oomph_metis_from_parmetis_3.1.1/struct.h
Go to the documentation of this file.
1 /*
2  * Copyright 1997, Regents of the University of Minnesota
3  *
4  * struct.h
5  *
6  * This file contains data structures for ILU routines.
7  *
8  * Started 9/26/95
9  * George
10  *
11  * $Id: struct.h,v 1.2 2003/07/25 13:52:01 karypis Exp $
12  */
13 
14 #ifndef __parmetis_h__
15 /* Undefine the following #define in order to use short int as the idxtype */
16 #define IDXTYPE_INT
17 
18 /* Indexes are as long as integers for now */
19 #ifdef IDXTYPE_INT
20 typedef int idxtype;
21 #else
22 typedef short idxtype;
23 #endif
24 #endif
25 
26 #define MAXIDX (1<<8*sizeof(idxtype)-2)
27 
28 
29 /*************************************************************************
30 * The following data structure stores key-value pair
31 **************************************************************************/
32 struct KeyValueType {
35 };
36 
37 typedef struct KeyValueType KeyValueType;
38 
39 
40 /*************************************************************************
41 * The following data structure will hold a node of a doubly-linked list.
42 **************************************************************************/
43 struct ListNodeType {
44  int id; /* The id value of the node */
45  struct ListNodeType *prev, *next; /* It's a doubly-linked list */
46 };
47 
48 typedef struct ListNodeType ListNodeType;
49 
50 
51 
52 /*************************************************************************
53 * The following data structure is used to store the buckets for the
54 * refinment algorithms
55 **************************************************************************/
56 struct PQueueType {
57  int type; /* The type of the representation used */
58  int nnodes;
59  int maxnodes;
60  int mustfree;
61 
62  /* Linear array version of the data structures */
63  int pgainspan, ngainspan; /* plus and negative gain span */
64  int maxgain;
67 
68  /* Heap version of the data structure */
71 };
72 
73 typedef struct PQueueType PQueueType;
74 
75 
76 /*************************************************************************
77 * The following data structure stores an edge
78 **************************************************************************/
79 struct edegreedef {
82 };
83 typedef struct edegreedef EDegreeType;
84 
85 
86 /*************************************************************************
87 * The following data structure stores an edge for vol
88 **************************************************************************/
89 struct vedegreedef {
93 };
94 typedef struct vedegreedef VEDegreeType;
95 
96 
97 /*************************************************************************
98 * This data structure holds various working space data
99 **************************************************************************/
100 struct workspacedef {
101  idxtype *core; /* Where pairs, indices, and degrees are coming from */
103 
106  int cdegree;
107 
108  idxtype *auxcore; /* This points to the memory of the edegrees */
109 
110  idxtype *pmat; /* An array of k^2 used for eliminating domain
111  connectivity in k-way refinement */
112 };
113 
114 typedef struct workspacedef WorkSpaceType;
115 
116 
117 /*************************************************************************
118 * The following data structure holds information on degrees for k-way
119 * partition
120 **************************************************************************/
121 struct rinfodef {
122  int id, ed; /* ID/ED of nodes */
123  int ndegrees; /* The number of different ext-degrees */
124  EDegreeType *edegrees; /* List of edges */
125 };
126 
127 typedef struct rinfodef RInfoType;
128 
129 
130 /*************************************************************************
131 * The following data structure holds information on degrees for k-way
132 * vol-based partition
133 **************************************************************************/
134 struct vrinfodef {
135  int id, ed, nid; /* ID/ED of nodes */
136  int gv; /* IV/EV of nodes */
137  int ndegrees; /* The number of different ext-degrees */
138  VEDegreeType *edegrees; /* List of edges */
139 };
140 
141 typedef struct vrinfodef VRInfoType;
142 
143 
144 /*************************************************************************
145 * The following data structure holds information on degrees for k-way
146 * partition
147 **************************************************************************/
148 struct nrinfodef {
150 };
151 
152 typedef struct nrinfodef NRInfoType;
153 
154 
155 /*************************************************************************
156 * This data structure holds the input graph
157 **************************************************************************/
158 struct graphdef {
159  idxtype *gdata, *rdata; /* Memory pools for graph and refinement data.
160  This is where memory is allocated and used
161  the rest of the fields in this structure */
162 
163  int nvtxs, nedges; /* The # of vertices and edges in the graph */
164  idxtype *xadj; /* Pointers to the locally stored vertices */
165  idxtype *vwgt; /* Vertex weights */
166  idxtype *vsize; /* Vertex sizes for min-volume formulation */
167  idxtype *adjncy; /* Array that stores the adjacency lists of nvtxs */
168  idxtype *adjwgt; /* Array that stores the weights of the adjacency lists */
169 
170  idxtype *adjwgtsum; /* The sum of the adjacency weight of each vertex */
171 
173 
175 
176  /* Partition parameters */
179  int nbnd;
181 
182  /* Bisection refinement parameters */
184 
185  /* K-way refinement parameters */
187 
188  /* K-way volume refinement parameters */
190 
191  /* Node refinement information */
193 
194 
195  /* Additional info needed by the MOC routines */
196  int ncon; /* The # of constrains */
197  float *nvwgt; /* Normalized vertex weights */
198  float *npwgts; /* The normalized partition weights */
199 
200  struct graphdef *coarser, *finer;
201 };
202 
203 typedef struct graphdef GraphType;
204 
205 
206 
207 /*************************************************************************
208 * The following data type implements a timer
209 **************************************************************************/
210 typedef double timer;
211 
212 
213 /*************************************************************************
214 * The following structure stores information used by Metis
215 **************************************************************************/
216 struct controldef {
217  int CoarsenTo; /* The # of vertices in the coarsest graph */
218  int dbglvl; /* Controls the debuging output of the program */
219  int CType; /* The type of coarsening */
220  int IType; /* The type of initial partitioning */
221  int RType; /* The type of refinement */
222  int maxvwgt; /* The maximum allowed weight for a vertex */
223  float nmaxvwgt; /* The maximum allowed weight for a vertex for each constrain */
224  int optype; /* Type of operation */
225  int pfactor; /* .1*prunning factor */
226  int nseps; /* The number of separators to be found during multiple bisections */
227  int oflags;
228 
229  WorkSpaceType wspace; /* Work Space Informations */
230 
231  /* Various Timers */
234 
235 };
236 
237 typedef struct controldef CtrlType;
238 
239 
240 /*************************************************************************
241 * The following data structure stores max-partition weight info for
242 * Vertical MOC k-way refinement
243 **************************************************************************/
244 struct vpwgtdef {
245  float max[2][MAXNCON];
246  int imax[2][MAXNCON];
247 };
248 
249 typedef struct vpwgtdef VPInfoType;
250 
251 
252 
253 
#define MAXNCON
Definition: oomph_metis_from_parmetis_3.1.1/defs.h:20
int idxtype
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:20
double timer
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:210
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:32
idxtype key
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:33
idxtype val
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:34
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:43
int id
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:44
struct ListNodeType * next
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:45
struct ListNodeType * prev
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:45
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:56
int mustfree
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:60
idxtype * locator
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:70
int type
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:57
int pgainspan
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:63
ListNodeType * nodes
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:65
ListNodeType ** buckets
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:66
int maxnodes
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:59
int maxgain
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:64
KeyValueType * heap
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:69
int ngainspan
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:63
int nnodes
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:58
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:216
timer AuxTmr3
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:233
int dbglvl
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:218
timer ContractTmr
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:232
WorkSpaceType wspace
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:229
timer ProjectTmr
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:233
timer AuxTmr2
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:233
int pfactor
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:225
timer RefTmr
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:233
timer CoarsenTmr
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:232
timer AuxTmr6
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:233
int CType
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:219
timer UncoarsenTmr
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:232
timer InitPartTmr
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:232
int optype
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:224
int IType
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:220
int nseps
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:226
int maxvwgt
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:222
int CoarsenTo
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:217
int RType
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:221
timer SepTmr
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:233
timer MatchTmr
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:232
timer AuxTmr1
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:233
float nmaxvwgt
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:223
int oflags
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:227
timer AuxTmr4
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:233
timer AuxTmr5
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:233
timer TotalTmr
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:232
timer SplitTmr
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:233
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:79
idxtype pid
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:80
idxtype ed
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:81
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:158
int nbnd
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:179
float * nvwgt
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:197
VRInfoType * vrinfo
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:189
idxtype * bndind
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:180
idxtype * xadj
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:164
idxtype * rdata
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:159
int nvtxs
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:163
RInfoType * rinfo
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:186
idxtype * gdata
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:159
idxtype * ed
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:183
idxtype * where
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:178
NRInfoType * nrinfo
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:192
int minvol
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:177
idxtype * label
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:172
struct graphdef * coarser
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:200
idxtype * adjwgtsum
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:170
idxtype * vsize
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:166
idxtype * adjwgt
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:168
idxtype * adjncy
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:167
struct graphdef * finer
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:200
idxtype * vwgt
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:165
idxtype * pwgts
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:178
int ncon
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:196
idxtype * cmap
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:174
idxtype * id
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:183
float * npwgts
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:198
int nedges
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:163
int mincut
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:177
idxtype * bndptr
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:180
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:148
idxtype edegrees[2]
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:149
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:121
int id
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:122
int ndegrees
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:123
EDegreeType * edegrees
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:124
int ed
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:122
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:89
idxtype ed
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:91
idxtype ned
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:91
idxtype pid
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:90
idxtype gv
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:92
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:244
int imax[2][MAXNCON]
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:246
float max[2][MAXNCON]
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:245
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:134
int gv
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:136
int id
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:135
int ndegrees
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:137
VEDegreeType * edegrees
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:138
int nid
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:135
int ed
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:135
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:100
int ccore
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:102
EDegreeType * edegrees
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:104
int maxcore
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:102
idxtype * auxcore
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:108
int cdegree
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:106
VEDegreeType * vedegrees
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:105
idxtype * pmat
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:110
idxtype * core
Definition: oomph_metis_from_parmetis_3.1.1/struct.h:101