SU2
externals
metis
libmetis
struct.h
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 13900 2013-03-24 15:27:07Z karypis $
12
*/
13
14
#ifndef _LIBMETIS_STRUCT_H_
15
#define _LIBMETIS_STRUCT_H_
16
17
18
19
/*************************************************************************/
22
/*************************************************************************/
23
typedef
struct
cnbr_t
{
24
idx_t
pid
;
25
idx_t
ed
;
27
}
cnbr_t
;
28
29
30
/*************************************************************************/
33
/*************************************************************************/
34
typedef
struct
ckrinfo_t
{
35
idx_t
id
;
36
idx_t
ed
;
37
idx_t
nnbrs
;
38
idx_t
inbr
;
40
}
ckrinfo_t
;
41
42
43
/*************************************************************************/
46
/*************************************************************************/
47
typedef
struct
vnbr_t
{
48
idx_t
pid
;
49
idx_t
ned
;
51
idx_t
gv
;
53
}
vnbr_t
;
54
55
56
/*************************************************************************/
59
/*************************************************************************/
60
typedef
struct
vkrinfo_t
{
61
idx_t
nid
;
62
idx_t
ned
;
63
idx_t
gv
;
64
idx_t
nnbrs
;
65
idx_t
inbr
;
67
}
vkrinfo_t
;
68
69
70
/*************************************************************************/
73
/*************************************************************************/
74
typedef
struct
nrinfo_t
{
75
idx_t edegrees[2];
76
}
nrinfo_t
;
77
78
79
/*************************************************************************/
81
/*************************************************************************/
82
typedef
struct
graph_t
{
83
idx_t nvtxs, nedges;
/* The # of vertices and edges in the graph */
84
idx_t ncon;
/* The # of constrains */
85
idx_t *xadj;
/* Pointers to the locally stored vertices */
86
idx_t *vwgt;
/* Vertex weights */
87
idx_t *vsize;
/* Vertex sizes for min-volume formulation */
88
idx_t *adjncy;
/* Array that stores the adjacency lists of nvtxs */
89
idx_t *adjwgt;
/* Array that stores the weights of the adjacency lists */
90
91
idx_t *tvwgt;
/* The sum of the vertex weights in the graph */
92
real_t *invtvwgt;
/* The inverse of the sum of the vertex weights in the graph */
93
94
95
/* These are to keep track control if the corresponding fields correspond to
96
application or library memory */
97
int
free_xadj, free_vwgt, free_vsize, free_adjncy, free_adjwgt;
98
99
idx_t *label;
100
101
idx_t *cmap;
102
103
/* Partition parameters */
104
idx_t mincut, minvol;
105
idx_t *where, *pwgts;
106
idx_t nbnd;
107
idx_t *bndptr, *bndind;
108
109
/* Bisection refinement parameters */
110
idx_t *id, *
ed
;
111
112
/* K-way refinement parameters */
113
ckrinfo_t
*
ckrinfo
;
114
vkrinfo_t
*
vkrinfo
;
116
/* Node refinement information */
117
nrinfo_t
*nrinfo;
118
119
struct
graph_t
*coarser, *finer;
120
}
graph_t
;
121
122
123
/*************************************************************************/
125
/*************************************************************************/
126
typedef
struct
mesh_t
{
127
idx_t ne,
nn
;
128
idx_t
ncon
;
130
idx_t *eptr, *eind;
131
idx_t *
ewgt
;
132
}
mesh_t
;
133
134
135
136
/*************************************************************************/
138
/*************************************************************************/
139
typedef
struct
ctrl_t
{
140
moptype_et
optype;
/* Type of operation */
141
mobjtype_et objtype;
/* Type of refinement objective */
142
mdbglvl_et
dbglvl;
/* Controls the debuging output of the program */
143
mctype_et
ctype;
/* The type of coarsening */
144
miptype_et
iptype;
/* The type of initial partitioning */
145
mrtype_et
rtype;
/* The type of refinement */
146
147
idx_t CoarsenTo;
/* The # of vertices in the coarsest graph */
148
idx_t nIparts;
/* The number of initial partitions to compute */
149
idx_t no2hop;
/* Indicates if 2-hop matching will be used */
150
idx_t minconn;
/* Indicates if the subdomain connectivity will be minimized */
151
idx_t contig;
/* Indicates if contigous partitions are required */
152
idx_t nseps;
/* The number of separators to be found during multiple bisections */
153
idx_t ufactor;
/* The user-supplied load imbalance factor */
154
idx_t compress;
/* If the graph will be compressed prior to ordering */
155
idx_t ccorder;
/* If connected components will be ordered separately */
156
idx_t seed;
/* The seed for the random number generator */
157
idx_t ncuts;
/* The number of different partitionings to compute */
158
idx_t niter;
/* The number of iterations during each refinement */
159
idx_t numflag;
/* The user-supplied numflag for the graph */
160
idx_t *maxvwgt;
/* The maximum allowed weight for a vertex */
161
162
idx_t
ncon
;
163
idx_t
nparts
;
165
real_t pfactor;
/* .1*(user-supplied prunning factor) */
166
167
real_t *
ubfactors
;
169
real_t *
tpwgts
;
170
real_t *
pijbm
;
173
real_t
cfactor
;
175
/* Various Timers */
176
double
TotalTmr, InitPartTmr, MatchTmr, ContractTmr, CoarsenTmr, UncoarsenTmr,
177
RefTmr, ProjectTmr, SplitTmr, Aux1Tmr, Aux2Tmr, Aux3Tmr;
178
179
/* Workspace information */
180
gk_mcore_t
*
mcore
;
183
/* These are for use by the k-way refinement routines */
184
size_t
nbrpoolsize
;
185
size_t
nbrpoolcpos
;
186
size_t
nbrpoolreallocs
;
188
cnbr_t
*
cnbrpool
;
191
vnbr_t
*
vnbrpool
;
195
/* The subdomain graph, in sparse format */
196
idx_t *maxnads;
/* The maximum allocated number of adjacent domains */
197
idx_t *nads;
/* The number of adjacent domains */
198
idx_t **adids;
/* The IDs of the adjacent domains */
199
idx_t **adwgts;
/* The edge-weight to the adjacent domains */
200
idx_t *pvec1, *pvec2;
/* Auxiliar nparts-size vectors for efficiency */
201
202
}
ctrl_t
;
203
204
205
206
#endif
ctrl_t
Definition:
struct.h:139
vnbr_t::ned
idx_t ned
Definition:
struct.h:49
vkrinfo_t::nid
idx_t nid
Definition:
struct.h:61
vkrinfo_t::nnbrs
idx_t nnbrs
Definition:
struct.h:64
vnbr_t
Definition:
struct.h:47
mesh_t::ncon
idx_t ncon
Definition:
struct.h:128
mdbglvl_et
mdbglvl_et
Definition:
metis.h:327
ctrl_t::vnbrpool
vnbr_t * vnbrpool
Definition:
struct.h:191
vkrinfo_t
Definition:
struct.h:60
vnbr_t::pid
idx_t pid
Definition:
struct.h:48
ctrl_t::tpwgts
real_t * tpwgts
Definition:
struct.h:169
vkrinfo_t::inbr
idx_t inbr
Definition:
struct.h:65
cnbr_t::pid
idx_t pid
Definition:
struct.h:24
ctrl_t::nbrpoolcpos
size_t nbrpoolcpos
Definition:
struct.h:185
nrinfo_t
Definition:
struct.h:74
ctrl_t::cfactor
real_t cfactor
Definition:
struct.h:173
mrtype_et
mrtype_et
Definition:
metis.h:318
mesh_t::ewgt
idx_t * ewgt
Definition:
struct.h:131
ctrl_t::nbrpoolreallocs
size_t nbrpoolreallocs
Definition:
struct.h:186
gk_mcore_t
Definition:
gk_struct.h:242
mctype_et
mctype_et
Definition:
metis.h:302
vkrinfo_t::ned
idx_t ned
Definition:
struct.h:62
mesh_t::nn
idx_t nn
Definition:
struct.h:127
ctrl_t::nparts
idx_t nparts
Definition:
struct.h:163
ctrl_t::pijbm
real_t * pijbm
Definition:
struct.h:170
miptype_et
miptype_et
Definition:
metis.h:308
ctrl_t::ncon
idx_t ncon
Definition:
struct.h:162
vkrinfo_t::gv
idx_t gv
Definition:
struct.h:63
vnbr_t::gv
idx_t gv
Definition:
struct.h:51
graph_t::ckrinfo
ckrinfo_t * ckrinfo
Definition:
struct.h:113
ckrinfo_t::inbr
idx_t inbr
Definition:
struct.h:38
ctrl_t::ubfactors
real_t * ubfactors
Definition:
struct.h:167
ctrl_t::cnbrpool
cnbr_t * cnbrpool
Definition:
struct.h:188
ckrinfo_t
Definition:
struct.h:34
ckrinfo_t::id
idx_t id
Definition:
struct.h:35
mesh_t
Definition:
struct.h:126
ctrl_t::mcore
gk_mcore_t * mcore
Definition:
struct.h:180
moptype_et
moptype_et
Definition:
metis.h:250
ctrl_t::nbrpoolsize
size_t nbrpoolsize
Definition:
struct.h:184
graph_t
Definition:
struct.h:82
ckrinfo_t::ed
idx_t ed
Definition:
struct.h:36
cnbr_t::ed
idx_t ed
Definition:
struct.h:25
cnbr_t
Definition:
struct.h:23
ckrinfo_t::nnbrs
idx_t nnbrs
Definition:
struct.h:37
graph_t::vkrinfo
vkrinfo_t * vkrinfo
Definition:
struct.h:114
Generated by
1.8.12