ADflow  v1.0
ADflow is a finite volume RANS solver tailored for gradient-based aerodynamic design optimization.
proto.h
Go to the documentation of this file.
1 /*
2  * Copyright 1997, Regents of the University of Minnesota
3  *
4  * proto.h
5  *
6  * This file contains header files
7  *
8  * Started 10/19/95
9  * George
10  *
11  * $Id$
12  *
13  */
14 
15 /* balance.c */
16 void Balance2Way(CtrlType *, GraphType *, int *, float);
17 void Bnd2WayBalance(CtrlType *, GraphType *, int *);
18 void General2WayBalance(CtrlType *, GraphType *, int *);
19 
20 /* bucketsort.c */
21 void BucketSortKeysInc(int, int, idxtype *, idxtype *, idxtype *);
22 
23 /* ccgraph.c */
24 void CreateCoarseGraph(CtrlType *, GraphType *, int, idxtype *, idxtype *);
28 void ReAdjustMemory(GraphType *, GraphType *, int);
29 
30 /* coarsen.c */
32 
33 /* compress.c */
34 void CompressGraph(CtrlType *, GraphType *, int, idxtype *, idxtype *, idxtype *, idxtype *);
35 void PruneGraph(CtrlType *, GraphType *, int, idxtype *, idxtype *, idxtype *, float);
36 
37 /* debug.c */
38 int ComputeCut(GraphType *, idxtype *);
39 int CheckBnd(GraphType *);
40 int CheckBnd2(GraphType *);
41 int CheckNodeBnd(GraphType *, int);
42 int CheckRInfo(RInfoType *);
44 int IsSeparable(GraphType *);
45 
46 /* estmem.c */
47 void METIS_EstimateMemory(int *, idxtype *, idxtype *, int *, int *, int *);
48 void EstimateCFraction(int, idxtype *, idxtype *, float *, float *);
49 int ComputeCoarseGraphSize(int, idxtype *, idxtype *, int, idxtype *, idxtype *, idxtype *);
50 
51 /* fm.c */
52 void FM_2WayEdgeRefine(CtrlType *, GraphType *, int *, int);
53 
54 /* fortran.c */
55 void Change2CNumbering(int, idxtype *, idxtype *);
56 void Change2FNumbering(int, idxtype *, idxtype *, idxtype *);
57 void Change2FNumbering2(int, idxtype *, idxtype *);
59 void ChangeMesh2CNumbering(int, idxtype *);
60 void ChangeMesh2FNumbering(int, idxtype *, int, idxtype *, idxtype *);
61 void ChangeMesh2FNumbering2(int, idxtype *, int, int, idxtype *, idxtype *);
62 
63 /* frename.c */
64 void METIS_PARTGRAPHRECURSIVE(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
65 void metis_partgraphrecursive(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
66 void metis_partgraphrecursive_(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
67 void metis_partgraphrecursive__(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
68 void METIS_WPARTGRAPHRECURSIVE(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
69 void metis_wpartgraphrecursive(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
70 void metis_wpartgraphrecursive_(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
71 void metis_wpartgraphrecursive__(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
72 void METIS_PARTGRAPHKWAY(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
73 void metis_partgraphkway(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
74 void metis_partgraphkway_(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
75 void metis_partgraphkway__(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
76 void METIS_WPARTGRAPHKWAY(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
77 void metis_wpartgraphkway(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
78 void metis_wpartgraphkway_(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
79 void metis_wpartgraphkway__(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
80 void METIS_EDGEND(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *);
81 void metis_edgend(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *);
82 void metis_edgend_(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *);
83 void metis_edgend__(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *);
84 void METIS_NODEND(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *);
85 void metis_nodend(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *);
86 void metis_nodend_(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *);
87 void metis_nodend__(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *);
88 void METIS_NODEWND(int *, idxtype *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *);
89 void metis_nodewnd(int *, idxtype *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *);
90 void metis_nodewnd_(int *, idxtype *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *);
91 void metis_nodewnd__(int *, idxtype *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *);
92 void METIS_PARTMESHNODAL(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *);
93 void metis_partmeshnodal(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *);
94 void metis_partmeshnodal_(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *);
95 void metis_partmeshnodal__(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *);
96 void METIS_PARTMESHDUAL(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *);
97 void metis_partmeshdual(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *);
98 void metis_partmeshdual_(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *);
99 void metis_partmeshdual__(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *);
100 void METIS_MESHTONODAL(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *);
101 void metis_meshtonodal(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *);
102 void metis_meshtonodal_(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *);
103 void metis_meshtonodal__(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *);
104 void METIS_MESHTODUAL(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *);
105 void metis_meshtodual(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *);
106 void metis_meshtodual_(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *);
107 void metis_meshtodual__(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *);
108 void METIS_ESTIMATEMEMORY(int *, idxtype *, idxtype *, int *, int *, int *);
109 void metis_estimatememory(int *, idxtype *, idxtype *, int *, int *, int *);
110 void metis_estimatememory_(int *, idxtype *, idxtype *, int *, int *, int *);
111 void metis_estimatememory__(int *, idxtype *, idxtype *, int *, int *, int *);
112 void METIS_MCPARTGRAPHRECURSIVE(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
113 void metis_mcpartgraphrecursive(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
114 void metis_mcpartgraphrecursive_(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
115 void metis_mcpartgraphrecursive__(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
116 void METIS_MCPARTGRAPHKWAY(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
117 void metis_mcpartgraphkway(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
118 void metis_mcpartgraphkway_(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
119 void metis_mcpartgraphkway__(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
120 void METIS_PARTGRAPHVKWAY(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
121 void metis_partgraphvkway(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
122 void metis_partgraphvkway_(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
123 void metis_partgraphvkway__(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
124 void METIS_WPARTGRAPHVKWAY(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
125 void metis_wpartgraphvkway(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
126 void metis_wpartgraphvkway_(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
127 void metis_wpartgraphvkway__(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
128 
129 /* graph.c */
130 void SetUpGraph(GraphType *, int, int, int, idxtype *, idxtype *, idxtype *, idxtype *, int);
131 void SetUpGraphKway(GraphType *, int, idxtype *, idxtype *);
132 void SetUpGraph2(GraphType *, int, int, idxtype *, idxtype *, float *, idxtype *);
133 void VolSetUpGraph(GraphType *, int, int, int, idxtype *, idxtype *, idxtype *, idxtype *, int);
134 void RandomizeGraph(GraphType *);
135 int IsConnectedSubdomain(CtrlType *, GraphType *, int, int);
136 int IsConnected(CtrlType *, GraphType *, int);
137 int IsConnected2(GraphType *, int);
139 
140 /* initpart.c */
141 void Init2WayPartition(CtrlType *, GraphType *, int *, float);
142 void InitSeparator(CtrlType *, GraphType *, float);
143 void GrowBisection(CtrlType *, GraphType *, int *, float);
144 void GrowBisectionNode(CtrlType *, GraphType *, float);
145 void RandomBisection(CtrlType *, GraphType *, int *, float);
146 
147 /* kmetis.c */
148 void METIS_PartGraphKway(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
149 void METIS_WPartGraphKway(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
150 int MlevelKWayPartitioning(CtrlType *, GraphType *, int, idxtype *, float *, float);
151 
152 /* kvmetis.c */
153 void METIS_PartGraphVKway(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
154 void METIS_WPartGraphVKway(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
155 int MlevelVolKWayPartitioning(CtrlType *, GraphType *, int, idxtype *, float *, float);
156 
157 /* kwayfm.c */
158 void Random_KWayEdgeRefine(CtrlType *, GraphType *, int, float *, float, int, int);
159 void Greedy_KWayEdgeRefine(CtrlType *, GraphType *, int, float *, float, int);
160 void Greedy_KWayEdgeBalance(CtrlType *, GraphType *, int, float *, float, int);
161 
162 /* kwayrefine.c */
163 void RefineKWay(CtrlType *, GraphType *, GraphType *, int, float *, float);
166 void ProjectKWayPartition(CtrlType *, GraphType *, int);
167 int IsBalanced(idxtype *, int, float *, float);
168 void ComputeKWayBoundary(CtrlType *, GraphType *, int);
170 
171 /* kwayvolfm.c */
172 void Random_KWayVolRefine(CtrlType *, GraphType *, int, float *, float, int, int);
173 void Random_KWayVolRefineMConn(CtrlType *, GraphType *, int, float *, float, int, int);
174 void Greedy_KWayVolBalance(CtrlType *, GraphType *, int, float *, float, int);
175 void Greedy_KWayVolBalanceMConn(CtrlType *, GraphType *, int, float *, float, int);
176 void KWayVolUpdate(CtrlType *, GraphType *, int, int, int, idxtype *, idxtype *, idxtype *);
177 void ComputeKWayVolume(GraphType *, int, idxtype *, idxtype *, idxtype *);
181 void EliminateVolSubDomainEdges(CtrlType *, GraphType *, int, float *);
182 void EliminateVolComponents(CtrlType *, GraphType *, int, float *, float);
183 
184 /* kwayvolrefine.c */
185 void RefineVolKWay(CtrlType *, GraphType *, GraphType *, int, float *, float);
188 void ComputeKWayVolGains(CtrlType *, GraphType *, int);
192 
193 /* match.c */
194 void Match_RM(CtrlType *, GraphType *);
195 void Match_RM_NVW(CtrlType *, GraphType *);
196 void Match_HEM(CtrlType *, GraphType *);
197 void Match_SHEM(CtrlType *, GraphType *);
198 
199 /* mbalance.c */
200 void MocBalance2Way(CtrlType *, GraphType *, float *, float);
201 void MocGeneral2WayBalance(CtrlType *, GraphType *, float *, float);
202 
203 /* mbalance2.c */
204 void MocBalance2Way2(CtrlType *, GraphType *, float *, float *);
205 void MocGeneral2WayBalance2(CtrlType *, GraphType *, float *, float *);
206 void SelectQueue3(int, float *, float *, int *, int *, PQueueType [MAXNCON][2], float *);
207 
208 /* mcoarsen.c */
210 
211 /* memory.c */
212 void AllocateWorkSpace(CtrlType *, GraphType *, int);
213 void FreeWorkSpace(CtrlType *, GraphType *);
214 int WspaceAvail(CtrlType *);
216 void idxwspacefree(CtrlType *, int);
217 float *fwspacemalloc(CtrlType *, int);
218 void fwspacefree(CtrlType *, int);
219 GraphType *CreateGraph(void);
220 void InitGraph(GraphType *);
221 void FreeGraph(GraphType *);
222 
223 /* mesh.c */
224 void METIS_MeshToDual(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *);
225 void METIS_MeshToNodal(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *);
226 void GENDUALMETIS(int, int, int, idxtype *, idxtype *, idxtype *adjncy);
227 void TRINODALMETIS(int, int, idxtype *, idxtype *, idxtype *adjncy);
228 void TETNODALMETIS(int, int, idxtype *, idxtype *, idxtype *adjncy);
229 void HEXNODALMETIS(int, int, idxtype *, idxtype *, idxtype *adjncy);
230 void QUADNODALMETIS(int, int, idxtype *, idxtype *, idxtype *adjncy);
231 
232 /* meshpart.c */
233 void METIS_PartMeshNodal(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *);
234 void METIS_PartMeshDual(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *);
235 
236 /* mfm.c */
237 void MocFM_2WayEdgeRefine(CtrlType *, GraphType *, float *, int);
238 void SelectQueue(int, float *, float *, int *, int *, PQueueType [MAXNCON][2]);
239 int BetterBalance(int, float *, float *, float *);
240 float Compute2WayHLoadImbalance(int, float *, float *);
241 void Compute2WayHLoadImbalanceVec(int, float *, float *, float *);
242 
243 /* mfm2.c */
244 void MocFM_2WayEdgeRefine2(CtrlType *, GraphType *, float *, float *, int);
245 void SelectQueue2(int, float *, float *, int *, int *, PQueueType [MAXNCON][2], float *);
246 int IsBetter2wayBalance(int, float *, float *, float *);
247 
248 /* mincover.o */
249 void MinCover(idxtype *, idxtype *, int, int, idxtype *, int *);
250 int MinCover_Augment(idxtype *, idxtype *, int, idxtype *, idxtype *, idxtype *, int);
251 void MinCover_Decompose(idxtype *, idxtype *, int, int, idxtype *, idxtype *, int *);
252 void MinCover_ColDFS(idxtype *, idxtype *, int, idxtype *, idxtype *, int);
253 void MinCover_RowDFS(idxtype *, idxtype *, int, idxtype *, idxtype *, int);
254 
255 /* minitpart.c */
256 void MocInit2WayPartition(CtrlType *, GraphType *, float *, float);
257 void MocGrowBisection(CtrlType *, GraphType *, float *, float);
258 void MocRandomBisection(CtrlType *, GraphType *, float *, float);
259 void MocInit2WayBalance(CtrlType *, GraphType *, float *);
260 int SelectQueueOneWay(int, float *, float *, int, PQueueType [MAXNCON][2]);
261 
262 /* minitpart2.c */
263 void MocInit2WayPartition2(CtrlType *, GraphType *, float *, float *);
264 void MocGrowBisection2(CtrlType *, GraphType *, float *, float *);
265 void MocGrowBisectionNew2(CtrlType *, GraphType *, float *, float *);
266 void MocInit2WayBalance2(CtrlType *, GraphType *, float *, float *);
267 int SelectQueueOneWay2(int, float *, PQueueType [MAXNCON][2], float *);
268 
269 /* mkmetis.c */
270 void METIS_mCPartGraphKway(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
271 int MCMlevelKWayPartitioning(CtrlType *, GraphType *, int, idxtype *, float *);
272 
273 /* mkwayfmh.c */
274 void MCRandom_KWayEdgeRefineHorizontal(CtrlType *, GraphType *, int, float *, int);
275 void MCGreedy_KWayEdgeBalanceHorizontal(CtrlType *, GraphType *, int, float *, int);
276 int AreAllHVwgtsBelow(int, float, float *, float, float *, float *);
277 int AreAllHVwgtsAbove(int, float, float *, float, float *, float *);
278 void ComputeHKWayLoadImbalance(int, int, float *, float *);
279 int MocIsHBalanced(int, int, float *, float *);
280 int IsHBalanceBetterFT(int, int, float *, float *, float *, float *);
281 int IsHBalanceBetterTT(int, int, float *, float *, float *, float *);
282 
283 /* mkwayrefine.c */
284 void MocRefineKWayHorizontal(CtrlType *, GraphType *, GraphType *, int, float *);
289 
290 /* mmatch.c */
291 void MCMatch_RM(CtrlType *, GraphType *);
292 void MCMatch_HEM(CtrlType *, GraphType *);
293 void MCMatch_SHEM(CtrlType *, GraphType *);
294 void MCMatch_SHEBM(CtrlType *, GraphType *, int);
295 void MCMatch_SBHEM(CtrlType *, GraphType *, int);
296 float BetterVBalance(int, int, float *, float *, float *);
297 int AreAllVwgtsBelowFast(int, float *, float *, float);
298 
299 /* mmd.c */
300 void genmmd(int, idxtype *, idxtype *, idxtype *, idxtype *, int , idxtype *, idxtype *, idxtype *, idxtype *, int, int *);
301 void mmdelm(int, idxtype *xadj, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, int, int);
302 int mmdint(int, idxtype *xadj, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *);
303 void mmdnum(int, idxtype *, idxtype *, idxtype *);
304 void mmdupd(int, int, idxtype *, idxtype *, int, int *, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, int, int *tag);
305 
306 /* mpmetis.c */
307 void METIS_mCPartGraphRecursive(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
308 void METIS_mCHPartGraphRecursive(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
309 void METIS_mCPartGraphRecursiveInternal(int *, int *, idxtype *, idxtype *, float *, idxtype *, int *, int *, int *, idxtype *);
310 void METIS_mCHPartGraphRecursiveInternal(int *, int *, idxtype *, idxtype *, float *, idxtype *, int *, float *, int *, int *, idxtype *);
311 int MCMlevelRecursiveBisection(CtrlType *, GraphType *, int, idxtype *, float, int);
312 int MCHMlevelRecursiveBisection(CtrlType *, GraphType *, int, idxtype *, float *, int);
313 void MCMlevelEdgeBisection(CtrlType *, GraphType *, float *, float);
314 void MCHMlevelEdgeBisection(CtrlType *, GraphType *, float *, float *);
315 
316 /* mrefine.c */
317 void MocRefine2Way(CtrlType *, GraphType *, GraphType *, float *, float);
321 
322 /* mrefine2.c */
323 void MocRefine2Way2(CtrlType *, GraphType *, GraphType *, float *, float *);
324 
325 /* mutil.c */
326 int AreAllVwgtsBelow(int, float, float *, float, float *, float);
327 int AreAnyVwgtsBelow(int, float, float *, float, float *, float);
328 int AreAllVwgtsAbove(int, float, float *, float, float *, float);
329 float ComputeLoadImbalance(int, int, float *, float *);
330 int AreAllBelow(int, float *, float *);
331 
332 /* myqsort.c */
333 void iidxsort(int, idxtype *);
334 void iintsort(int, int *);
335 void ikeysort(int, KeyValueType *);
336 void ikeyvalsort(int, KeyValueType *);
337 
338 /* ometis.c */
339 void METIS_EdgeND(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *);
340 void METIS_NodeND(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *);
341 void METIS_NodeWND(int *, idxtype *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *);
342 void MlevelNestedDissection(CtrlType *, GraphType *, idxtype *, float, int);
343 void MlevelNestedDissectionCC(CtrlType *, GraphType *, idxtype *, float, int);
344 void MlevelNodeBisectionMultiple(CtrlType *, GraphType *, int *, float);
345 void MlevelNodeBisection(CtrlType *, GraphType *, int *, float);
347 void MMDOrder(CtrlType *, GraphType *, idxtype *, int);
349 
350 /* parmetis.c */
351 void METIS_PartGraphKway2(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
352 void METIS_WPartGraphKway2(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
353 void METIS_NodeNDP(int, idxtype *, idxtype *, int, int *, idxtype *, idxtype *, idxtype *);
354 void MlevelNestedDissectionP(CtrlType *, GraphType *, idxtype *, int, int, int, idxtype *);
355 void METIS_NodeComputeSeparator(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, idxtype *);
356 void METIS_EdgeComputeSeparator(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, idxtype *);
357 
358 /* pmetis.c */
359 void METIS_PartGraphRecursive(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
360 void METIS_WPartGraphRecursive(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
361 int MlevelRecursiveBisection(CtrlType *, GraphType *, int, idxtype *, float *, float, int);
362 void MlevelEdgeBisection(CtrlType *, GraphType *, int *, float);
364 void SetUpSplitGraph(GraphType *, GraphType *, int, int);
365 
366 /* pqueue.c */
367 void PQueueInit(CtrlType *ctrl, PQueueType *, int, int);
368 void PQueueReset(PQueueType *);
369 void PQueueFree(CtrlType *ctrl, PQueueType *);
371 int PQueueInsert(PQueueType *, int, int);
372 int PQueueDelete(PQueueType *, int, int);
373 int PQueueUpdate(PQueueType *, int, int, int);
374 void PQueueUpdateUp(PQueueType *, int, int, int);
375 int PQueueGetMax(PQueueType *);
376 int PQueueSeeMax(PQueueType *);
377 int PQueueGetKey(PQueueType *);
378 int CheckHeap(PQueueType *);
379 
380 /* refine.c */
381 void Refine2Way(CtrlType *, GraphType *, GraphType *, int *, float ubfactor);
385 
386 /* separator.c */
387 void ConstructSeparator(CtrlType *, GraphType *, float);
390 
391 /* sfm.c */
392 void FM_2WayNodeRefine(CtrlType *, GraphType *, float, int);
394 void FM_2WayNodeRefine_OneSided(CtrlType *, GraphType *, float, int);
395 void FM_2WayNodeBalance(CtrlType *, GraphType *, float);
396 int ComputeMaxNodeGain(int, idxtype *, idxtype *, idxtype *);
397 
398 /* srefine.c */
399 void Refine2WayNode(CtrlType *, GraphType *, GraphType *, float);
403 
404 /* stat.c */
405 void ComputePartitionInfo(GraphType *, int, idxtype *);
407 void ComputePartitionBalance(GraphType *, int, idxtype *, float *);
408 float ComputeElementBalance(int, int, idxtype *);
409 
410 /* subdomains.c */
411 void Random_KWayEdgeRefineMConn(CtrlType *, GraphType *, int, float *, float, int, int);
412 void Greedy_KWayEdgeBalanceMConn(CtrlType *, GraphType *, int, float *, float, int);
413 void PrintSubDomainGraph(GraphType *, int, idxtype *);
415 void EliminateSubDomainEdges(CtrlType *, GraphType *, int, float *);
416 void MoveGroupMConn(CtrlType *, GraphType *, idxtype *, idxtype *, int, int, int, idxtype *);
417 void EliminateComponents(CtrlType *, GraphType *, int, float *, float);
418 void MoveGroup(CtrlType *, GraphType *, int, int, int, idxtype *, idxtype *);
419 
420 /* timing.c */
421 void InitTimers(CtrlType *);
422 void PrintTimers(CtrlType *);
423 double seconds(void);
424 
425 /* util.c */
426 void errexit(char *,...);
427 #ifndef DMALLOC
428 int *imalloc(int, char *);
429 idxtype *idxmalloc(int, char *);
430 float *fmalloc(int, char *);
431 int *ismalloc(int, int, char *);
432 idxtype *idxsmalloc(int, idxtype, char *);
433 void *GKmalloc(int, char *);
434 #endif
435 void GKfree(void **,...);
436 int *iset(int n, int val, int *x);
437 idxtype *idxset(int n, idxtype val, idxtype *x);
438 float *sset(int n, float val, float *x);
439 int iamax(int, int *);
440 int idxamax(int, idxtype *);
441 int idxamax_strd(int, idxtype *, int);
442 int samax(int, float *);
443 int samax2(int, float *);
444 int idxamin(int, idxtype *);
445 int samin(int, float *);
446 int idxsum(int, idxtype *);
447 int idxsum_strd(int, idxtype *, int);
448 void idxadd(int, idxtype *, idxtype *);
449 int charsum(int, char *);
450 int isum(int, int *);
451 float ssum(int, float *);
452 float ssum_strd(int n, float *x, int);
453 void sscale(int n, float, float *x);
454 float snorm2(int, float *);
455 float sdot(int n, float *, float *);
456 void saxpy(int, float, float *, int, float *, int);
457 void RandomPermute(int, idxtype *, int);
458 double drand48();
459 void srand48(long);
460 int ispow2(int);
461 void InitRandom(int);
462 int log2(int);
463 
464 
465 
466 
467 
468 
469 
470 
471 
472 
473 /***************************************************************
474 * Programs Directory
475 ****************************************************************/
476 
477 /* io.c */
478 void ReadGraph(GraphType *, char *, int *);
479 void WritePartition(char *, idxtype *, int, int);
480 void WriteMeshPartition(char *, int, int, idxtype *, int, idxtype *);
481 void WritePermutation(char *, idxtype *, int);
483 idxtype *ReadMesh(char *, int *, int *, int *);
484 void WriteGraph(char *, int, idxtype *, idxtype *);
485 
486 /* smbfactor.c */
489 int smbfct(int, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, int *, idxtype *, idxtype *, int *);
490 
491 
492 /***************************************************************
493 * Test Directory
494 ****************************************************************/
496 int VerifyPart(int, idxtype *, idxtype *, idxtype *, idxtype *, int, int, idxtype *);
497 int VerifyWPart(int, idxtype *, idxtype *, idxtype *, idxtype *, int, float *, int, idxtype *);
499 int VerifyPartV(int, idxtype *, idxtype *, idxtype *, idxtype *, int, int, idxtype *);
500 int VerifyWPartV(int, idxtype *, idxtype *, idxtype *, idxtype *, int, float *, int, idxtype *);
502 int VerifyPartmC(int, int, idxtype *, idxtype *, idxtype *, idxtype *, int, float *, int, idxtype *);
503 void Test_ND(int, idxtype *, idxtype *);
504 int VerifyND(int, idxtype *, idxtype *);
#define MAXNCON
Definition: defs.h:20
real(kind=realtype), dimension(:, :, :, :), pointer x
void MocAllocateKWayPartitionMemory(CtrlType *, GraphType *, int)
Definition: metis.c:11197
void ComputeVolKWayBalanceBoundary(CtrlType *, GraphType *, int)
Definition: metis.c:6875
void srand48(long)
int ComputeVolume(GraphType *, idxtype *)
Definition: metis.c:5838
void MMDOrder(CtrlType *, GraphType *, idxtype *, int)
Definition: metis.c:14461
void Compute2WayPartitionParams(CtrlType *, GraphType *)
Definition: metis.c:15981
void fwspacefree(CtrlType *, int)
Definition: metis.c:7982
void MocInit2WayPartition(CtrlType *, GraphType *, float *, float)
Definition: metis.c:9996
int ComputeCut(GraphType *, idxtype *)
Definition: metis.c:1278
void Compute2WayHLoadImbalanceVec(int, float *, float *, float *)
Definition: metis.c:9340
void RandomPermute(int, idxtype *, int)
Definition: metis.c:19742
void WritePartition(char *, idxtype *, int, int)
int idxsum_strd(int, idxtype *, int)
Definition: metis.c:19604
int AreAllHVwgtsAbove(int, float, float *, float, float *, float *)
Definition: metis.c:10982
double drand48()
void Greedy_KWayVolBalanceMConn(CtrlType *, GraphType *, int, float *, float, int)
Definition: metis.c:5214
void EstimateCFraction(int, idxtype *, idxtype *, float *, float *)
Definition: metis.c:1563
float ssum_strd(int n, float *x, int)
Definition: metis.c:19669
void Greedy_KWayVolBalance(CtrlType *, GraphType *, int, float *, float, int)
Definition: metis.c:5060
void KWayVolUpdate(CtrlType *, GraphType *, int, int, int, idxtype *, idxtype *, idxtype *)
Definition: metis.c:5463
void metis_mcpartgraphrecursive__(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *)
Definition: metis.c:2242
void mmdelm(int, idxtype *xadj, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, int, int)
Definition: metis.c:12104
int CheckGraph(GraphType *)
void Compute2WayNodePartitionParams(CtrlType *, GraphType *)
Definition: metis.c:17550
void Change2FNumbering2(int, idxtype *, idxtype *)
Definition: metis.c:1902
void Test_PartGraph(int, idxtype *, idxtype *)
void AllocateVolKWayPartitionMemory(CtrlType *, GraphType *, int)
Definition: metis.c:6543
void metis_mcpartgraphkway(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *)
Definition: metis.c:2252
int AreAllVwgtsBelowFast(int, float *, float *, float)
Definition: metis.c:11923
void MocGeneral2WayBalance(CtrlType *, GraphType *, float *, float)
Definition: metis.c:7526
void metis_partmeshnodal__(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *)
Definition: metis.c:2151
void METIS_PARTMESHDUAL(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *)
Definition: metis.c:2157
void MCRandom_KWayEdgeRefineHorizontal(CtrlType *, GraphType *, int, float *, int)
Definition: metis.c:10473
void ComputeKWayVolume(GraphType *, int, idxtype *, idxtype *, idxtype *)
Definition: metis.c:5747
void metis_partmeshnodal(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *)
Definition: metis.c:2143
int AreAllVwgtsBelow(int, float, float *, float, float *, float)
Definition: metis.c:13215
void metis_meshtodual(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *)
Definition: metis.c:2197
void MocComputeKWayPartitionParams(CtrlType *, GraphType *, int)
Definition: metis.c:11219
int SelectQueueOneWay(int, float *, float *, int, PQueueType[MAXNCON][2])
Definition: metis.c:10314
void MocFM_2WayEdgeRefine(CtrlType *, GraphType *, float *, int)
Definition: metis.c:9023
void ComputePartitionInfoBipartite(GraphType *, int, idxtype *)
Definition: metis.c:17761
void METIS_mCHPartGraphRecursiveInternal(int *, int *, idxtype *, idxtype *, float *, idxtype *, int *, float *, int *, int *, idxtype *)
Definition: metis.c:12707
void SetUpSplitGraph(GraphType *, GraphType *, int, int)
Definition: metis.c:15294
void metis_wpartgraphrecursive__(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *)
Definition: metis.c:2037
void MocAllocate2WayPartitionMemory(CtrlType *, GraphType *)
Definition: metis.c:13044
int * imalloc(int, char *)
Definition: metis.c:19330
void metis_edgend(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *)
Definition: metis.c:2086
idxtype * idxsmalloc(int, idxtype, char *)
Definition: metis.c:19379
void ComputeKWayBoundary(CtrlType *, GraphType *, int)
Definition: metis.c:4612
void mmdnum(int, idxtype *, idxtype *, idxtype *)
Definition: metis.c:12281
void ChangeMesh2FNumbering(int, idxtype *, int, idxtype *, idxtype *)
Definition: metis.c:1955
void ComputeFillIn(GraphType *, idxtype *)
void metis_partgraphvkway_(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *)
Definition: metis.c:2274
void ConstructSeparator(CtrlType *, GraphType *, float)
Definition: metis.c:16129
void errexit(char *,...)
Definition: metis.c:19307
float * fmalloc(int, char *)
Definition: metis.c:19354
void PQueueReset(PQueueType *)
Definition: metis.c:15406
void metis_estimatememory(int *, idxtype *, idxtype *, int *, int *, int *)
Definition: metis.c:2215
void METIS_NODEND(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *)
Definition: metis.c:2101
void Match_HEM(CtrlType *, GraphType *)
Definition: metis.c:7023
void ReadGraph(GraphType *, char *, int *)
void CreateCoarseGraph(CtrlType *, GraphType *, int, idxtype *, idxtype *)
Definition: metis.c:342
void METIS_WPARTGRAPHVKWAY(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *)
Definition: metis.c:2283
int VerifyND(int, idxtype *, idxtype *)
void FM_2WayNodeRefineEqWgt(CtrlType *, GraphType *, int)
Definition: metis.c:16885
int IsBalanced(idxtype *, int, float *, float)
Definition: metis.c:4595
int smbfct(int, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, int *, idxtype *, idxtype *, int *)
void metis_partmeshdual__(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *)
Definition: metis.c:2169
void ConstructMinCoverSeparator(CtrlType *, GraphType *, float)
Definition: metis.c:16286
idxtype * idxmalloc(int, char *)
Definition: metis.c:19342
void RandomBisection(CtrlType *, GraphType *, int *, float)
Definition: metis.c:3263
void CreateCoarseGraph_NVW(CtrlType *, GraphType *, int, idxtype *, idxtype *)
Definition: metis.c:650
idxtype ComputeFillIn2(GraphType *, idxtype *)
GraphType * CreateGraph(void)
Definition: metis.c:7996
void Project2WayNodePartition(CtrlType *, GraphType *)
Definition: metis.c:17605
void ComputeSubDomainGraph(GraphType *, int, idxtype *, idxtype *)
Definition: metis.c:18594
float sdot(int n, float *, float *)
Definition: metis.c:19711
void MlevelNestedDissectionCC(CtrlType *, GraphType *, idxtype *, float, int)
Definition: metis.c:14166
void METIS_NodeComputeSeparator(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, idxtype *)
Definition: metis.c:14873
int VerifyPartV(int, idxtype *, idxtype *, idxtype *, idxtype *, int, int, idxtype *)
void MinCover_Decompose(idxtype *, idxtype *, int, int, idxtype *, idxtype *, int *)
Definition: metis.c:9511
void TETNODALMETIS(int, int, idxtype *, idxtype *, idxtype *adjncy)
Definition: metis.c:8269
void * GKmalloc(int, char *)
Definition: metis.c:19391
int CheckRInfo(RInfoType *)
Definition: metis.c:1411
void GrowBisection(CtrlType *, GraphType *, int *, float)
Definition: metis.c:2999
int idxsum(int, idxtype *)
Definition: metis.c:19590
int AreAnyVwgtsBelow(int, float, float *, float, float *, float)
Definition: metis.c:13231
void MocRefineKWayHorizontal(CtrlType *, GraphType *, GraphType *, int, float *)
Definition: metis.c:11150
void METIS_NodeWND(int *, idxtype *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *)
Definition: metis.c:14044
void ComputePartitionBalance(GraphType *, int, idxtype *, float *)
Definition: metis.c:17867
void WriteMeshPartition(char *, int, int, idxtype *, int, idxtype *)
void GrowBisectionNode(CtrlType *, GraphType *, float)
Definition: metis.c:3127
void MocBalance2Way(CtrlType *, GraphType *, float *, float)
Definition: metis.c:7512
void METIS_PartGraphRecursive(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *)
Definition: metis.c:15006
void ikeyvalsort(int, KeyValueType *)
Definition: metis.c:13720
GraphType * Coarsen2Way(CtrlType *, GraphType *)
Definition: metis.c:938
int AreAllVwgtsAbove(int, float, float *, float, float *, float)
Definition: metis.c:13248
void SplitGraphOrder(CtrlType *, GraphType *, GraphType *, GraphType *)
Definition: metis.c:14352
void General2WayBalance(CtrlType *, GraphType *, int *)
Definition: metis.c:173
void ConstructMinCoverSeparator0(CtrlType *, GraphType *, float)
Definition: metis.c:16171
void metis_mcpartgraphrecursive_(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *)
Definition: metis.c:2238
int samax2(int, float *)
Definition: metis.c:19533
void metis_wpartgraphvkway(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *)
Definition: metis.c:2287
int IsBetter2wayBalance(int, float *, float *, float *)
Definition: metis.c:8980
void BucketSortKeysInc(int, int, idxtype *, idxtype *, idxtype *)
Definition: metis.c:302
int WspaceAvail(CtrlType *)
Definition: metis.c:7937
void metis_mcpartgraphrecursive(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *)
Definition: metis.c:2234
void METIS_WPartGraphKway(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *)
Definition: metis.c:3382
void MlevelNodeBisectionMultiple(CtrlType *, GraphType *, int *, float)
Definition: metis.c:14230
void FM_2WayNodeRefine(CtrlType *, GraphType *, float, int)
Definition: metis.c:16413
void metis_nodewnd(int *, idxtype *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *)
Definition: metis.c:2124
int MocIsHBalanced(int, int, float *, float *)
Definition: metis.c:11018
int IsConnectedSubdomain(CtrlType *, GraphType *, int, int)
Definition: metis.c:2677
void sscale(int n, float, float *x)
Definition: metis.c:19683
void SetUpGraph2(GraphType *, int, int, idxtype *, idxtype *, float *, idxtype *)
Definition: metis.c:2472
void metis_meshtodual_(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *)
Definition: metis.c:2201
void PrintSubDomainGraph(GraphType *, int, idxtype *)
Definition: metis.c:18543
void MCMatch_SBHEM(CtrlType *, GraphType *, int)
Definition: metis.c:11760
float ComputeElementBalance(int, int, idxtype *)
Definition: metis.c:17901
void Test_ND(int, idxtype *, idxtype *)
void QUADNODALMETIS(int, int, idxtype *, idxtype *, idxtype *adjncy)
Definition: metis.c:8391
void METIS_MESHTODUAL(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *)
Definition: metis.c:2193
void MlevelNodeBisection(CtrlType *, GraphType *, int *, float)
Definition: metis.c:14312
void metis_estimatememory__(int *, idxtype *, idxtype *, int *, int *, int *)
Definition: metis.c:2223
void WritePermutation(char *, idxtype *, int)
int CheckBnd(GraphType *)
Definition: metis.c:1304
void METIS_WPartGraphKway2(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *)
Definition: metis.c:14652
int ComputeCoarseGraphSize(int, idxtype *, idxtype *, int, idxtype *, idxtype *, idxtype *)
Definition: metis.c:1608
void idxadd(int, idxtype *, idxtype *)
Definition: metis.c:19619
void ChangeMesh2CNumbering(int, idxtype *)
Definition: metis.c:1942
void metis_meshtonodal__(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *)
Definition: metis.c:2187
void MocGrowBisectionNew2(CtrlType *, GraphType *, float *, float *)
Definition: metis.c:9715
void Greedy_KWayEdgeBalanceMConn(CtrlType *, GraphType *, int, float *, float, int)
Definition: metis.c:18230
idxtype * idxwspacemalloc(CtrlType *, int)
Definition: metis.c:7946
void METIS_PartGraphKway2(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *)
Definition: metis.c:14630
void EliminateComponents(CtrlType *, GraphType *, int, float *, float)
Definition: metis.c:18966
void RandomizeGraph(GraphType *)
Definition: metis.c:2653
void metis_wpartgraphrecursive(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *)
Definition: metis.c:2029
int IsSeparable(GraphType *)
Definition: metis.c:1475
int CheckBnd2(GraphType *)
Definition: metis.c:1340
void METIS_EdgeND(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *)
Definition: metis.c:13862
void METIS_MeshToNodal(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *)
Definition: metis.c:8093
int AreAllHVwgtsBelow(int, float, float *, float, float *, float *)
Definition: metis.c:10965
void SelectQueue(int, float *, float *, int *, int *, PQueueType[MAXNCON][2])
Definition: metis.c:9241
idxtype * ReadMesh(char *, int *, int *, int *)
void MocRefine2Way2(CtrlType *, GraphType *, GraphType *, float *, float *)
Definition: metis.c:12939
int idxamax_strd(int, idxtype *, int)
Definition: metis.c:19504
int SplitGraphOrderCC(CtrlType *, GraphType *, GraphType *, int, idxtype *, idxtype *)
Definition: metis.c:14507
void MlevelNestedDissectionP(CtrlType *, GraphType *, idxtype *, int, int, int, idxtype *)
Definition: metis.c:14800
void Bnd2WayBalance(CtrlType *, GraphType *, int *)
Definition: metis.c:47
int PQueueDelete(PQueueType *, int, int)
Definition: metis.c:15523
void Refine2Way(CtrlType *, GraphType *, GraphType *, int *, float ubfactor)
Definition: metis.c:15924
int PQueueSeeMax(PQueueType *)
Definition: metis.c:15836
void MCGreedy_KWayEdgeBalanceHorizontal(CtrlType *, GraphType *, int, float *, int)
Definition: metis.c:10710
void METIS_NODEWND(int *, idxtype *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *)
Definition: metis.c:2120
void GKfree(void **,...)
Definition: metis.c:19409
int SelectQueueOneWay2(int, float *, PQueueType[MAXNCON][2], float *)
Definition: metis.c:9937
void metis_partgraphvkway__(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *)
Definition: metis.c:2278
int ComputeMaxNodeGain(int, idxtype *, idxtype *, idxtype *)
Definition: metis.c:17443
int IsHBalanceBetterTT(int, int, float *, float *, float *, float *)
Definition: metis.c:11094
void GENDUALMETIS(int, int, int, idxtype *, idxtype *, idxtype *adjncy)
Definition: metis.c:8125
void ProjectKWayPartition(CtrlType *, GraphType *, int)
Definition: metis.c:4488
int PQueueGetMax(PQueueType *)
Definition: metis.c:15765
void METIS_MeshToDual(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *)
Definition: metis.c:8074
void MCMatch_HEM(CtrlType *, GraphType *)
Definition: metis.c:11506
void metis_wpartgraphkway_(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *)
Definition: metis.c:2071
void METIS_NodeNDP(int, idxtype *, idxtype *, int, int *, idxtype *, idxtype *, idxtype *)
Definition: metis.c:14702
void WriteGraph(char *, int, idxtype *, idxtype *)
void Random_KWayEdgeRefine(CtrlType *, GraphType *, int, float *, float, int, int)
Definition: metis.c:3613
int MlevelKWayPartitioning(CtrlType *, GraphType *, int, idxtype *, float *, float)
Definition: metis.c:3432
void SelectQueue3(int, float *, float *, int *, int *, PQueueType[MAXNCON][2], float *)
Definition: metis.c:7428
int MlevelVolKWayPartitioning(CtrlType *, GraphType *, int, idxtype *, float *, float)
Definition: metis.c:3559
void metis_partgraphrecursive__(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *)
Definition: metis.c:2019
void METIS_PartGraphVKway(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *)
Definition: metis.c:3488
int mmdint(int, idxtype *xadj, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *)
Definition: metis.c:12238
GraphType * MCCoarsen2Way(CtrlType *, GraphType *)
Definition: metis.c:7769
void metis_edgend__(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *)
Definition: metis.c:2094
void MlevelEdgeBisection(CtrlType *, GraphType *, int *, float)
Definition: metis.c:15153
void AllocateWorkSpace(CtrlType *, GraphType *, int)
Definition: metis.c:7862
void Greedy_KWayEdgeBalance(CtrlType *, GraphType *, int, float *, float, int)
Definition: metis.c:4046
void idxwspacefree(CtrlType *, int)
Definition: metis.c:7958
void PQueueFree(CtrlType *ctrl, PQueueType *)
Definition: metis.c:15430
void Greedy_KWayEdgeRefine(CtrlType *, GraphType *, int, float *, float, int)
Definition: metis.c:3816
void METIS_mCPartGraphKway(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *)
Definition: metis.c:10353
void MoveGroup(CtrlType *, GraphType *, int, int, int, idxtype *, idxtype *)
Definition: metis.c:19092
int IsConnected2(GraphType *, int)
Definition: metis.c:2792
void MocProjectKWayPartition(CtrlType *, GraphType *, int)
Definition: metis.c:11302
void metis_estimatememory_(int *, idxtype *, idxtype *, int *, int *, int *)
Definition: metis.c:2219
void ComputeHKWayLoadImbalance(int, int, float *, float *)
Definition: metis.c:10998
void Allocate2WayNodePartitionMemory(CtrlType *, GraphType *)
Definition: metis.c:17529
void MocInit2WayBalance2(CtrlType *, GraphType *, float *, float *)
Definition: metis.c:9763
void Project2WayPartition(CtrlType *, GraphType *)
Definition: metis.c:16038
int IsConnected(CtrlType *, GraphType *, int)
Definition: metis.c:2755
void METIS_PartMeshDual(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *)
Definition: metis.c:8559
void metis_wpartgraphkway__(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *)
Definition: metis.c:2075
int CheckHeap(PQueueType *)
Definition: metis.c:15876
void MocRefine2Way(CtrlType *, GraphType *, GraphType *, float *, float)
Definition: metis.c:12994
void ChangeMesh2FNumbering2(int, idxtype *, int, int, idxtype *, idxtype *)
Definition: metis.c:1975
void metis_mcpartgraphkway_(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *)
Definition: metis.c:2256
void EliminateVolComponents(CtrlType *, GraphType *, int, float *, float)
Definition: metis.c:6272
int log2(int)
Definition: metis.c:19799
int * iset(int n, int val, int *x)
Definition: metis.c:19434
void metis_nodewnd_(int *, idxtype *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *)
Definition: metis.c:2128
void metis_mcpartgraphkway__(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *)
Definition: metis.c:2260
void metis_nodend(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *)
Definition: metis.c:2105
void Match_SHEM(CtrlType *, GraphType *)
Definition: metis.c:7079
void metis_partmeshdual_(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *)
Definition: metis.c:2165
void metis_meshtonodal_(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *)
Definition: metis.c:2183
void metis_edgend_(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *)
Definition: metis.c:2090
int idxamax(int, idxtype *)
Definition: metis.c:19491
void Test_PartGraphmC(int, idxtype *, idxtype *)
idxtype * idxset(int n, idxtype val, idxtype *x)
Definition: metis.c:19448
void MCHMlevelEdgeBisection(CtrlType *, GraphType *, float *, float *)
Definition: metis.c:12907
void MCMatch_SHEBM(CtrlType *, GraphType *, int)
Definition: metis.c:11659
int * ismalloc(int, int, char *)
Definition: metis.c:19366
void MocFM_2WayEdgeRefine2(CtrlType *, GraphType *, float *, float *, int)
Definition: metis.c:8674
void METIS_EstimateMemory(int *, idxtype *, idxtype *, int *, int *, int *)
Definition: metis.c:1519
void MinCover_RowDFS(idxtype *, idxtype *, int, idxtype *, idxtype *, int)
Definition: metis.c:9585
void PrintTimers(CtrlType *)
Definition: metis.c:19259
int CheckNodeBnd(GraphType *, int)
Definition: metis.c:1375
void iidxsort(int, idxtype *)
Definition: metis.c:13327
void PQueueUpdateUp(PQueueType *, int, int, int)
Definition: metis.c:15692
float ComputeLoadImbalance(int, int, float *, float *)
Definition: metis.c:13264
void ComputePartitionInfo(GraphType *, int, idxtype *)
Definition: metis.c:17651
void metis_nodend_(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *)
Definition: metis.c:2109
float snorm2(int, float *)
Definition: metis.c:19695
void MocRandomBisection(CtrlType *, GraphType *, float *, float)
Definition: metis.c:10080
int isum(int, int *)
Definition: metis.c:19642
void EliminateSubDomainEdges(CtrlType *, GraphType *, int, float *)
Definition: metis.c:18639
void VolSetUpGraph(GraphType *, int, int, int, idxtype *, idxtype *, idxtype *, idxtype *, int)
Definition: metis.c:2512
void Init2WayPartition(CtrlType *, GraphType *, int *, float)
Definition: metis.c:2938
void Random_KWayVolRefine(CtrlType *, GraphType *, int, float *, float, int, int)
Definition: metis.c:4677
void iintsort(int, int *)
Definition: metis.c:13455
void METIS_EdgeComputeSeparator(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, idxtype *)
Definition: metis.c:14932
void SetUpGraph(GraphType *, int, int, int, idxtype *, idxtype *, idxtype *, idxtype *, int)
Definition: metis.c:2322
int samax(int, float *)
Definition: metis.c:19520
void Match_RM_NVW(CtrlType *, GraphType *)
Definition: metis.c:6971
int MlevelRecursiveBisection(CtrlType *, GraphType *, int, idxtype *, float *, float, int)
Definition: metis.c:15087
void metis_wpartgraphrecursive_(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *)
Definition: metis.c:2033
void METIS_PartMeshNodal(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *)
Definition: metis.c:8471
void InitTimers(CtrlType *)
Definition: metis.c:19234
void SplitGraphPart(CtrlType *, GraphType *, GraphType *, GraphType *)
Definition: metis.c:15175
int IsHBalanceBetterFT(int, int, float *, float *, float *, float *)
Definition: metis.c:11046
void Allocate2WayPartitionMemory(CtrlType *, GraphType *)
Definition: metis.c:15962
void TRINODALMETIS(int, int, idxtype *, idxtype *, idxtype *adjncy)
Definition: metis.c:8220
int BetterBalance(int, float *, float *, float *)
Definition: metis.c:9306
int charsum(int, char *)
Definition: metis.c:19629
void metis_meshtonodal(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *)
Definition: metis.c:2179
int FindComponents(CtrlType *, GraphType *, idxtype *, idxtype *)
Definition: metis.c:2855
void Random_KWayVolRefineMConn(CtrlType *, GraphType *, int, float *, float, int, int)
Definition: metis.c:4821
int idxamin(int, idxtype *)
Definition: metis.c:19562
int PQueueUpdate(PQueueType *, int, int, int)
Definition: metis.c:15619
int VerifyPartmC(int, int, idxtype *, idxtype *, idxtype *, idxtype *, int, float *, int, idxtype *)
void FreeGraph(GraphType *)
Definition: metis.c:8044
void metis_partgraphrecursive_(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *)
Definition: metis.c:2015
void MocGrowBisection2(CtrlType *, GraphType *, float *, float *)
Definition: metis.c:9664
int MCHMlevelRecursiveBisection(CtrlType *, GraphType *, int, idxtype *, float *, int)
Definition: metis.c:12813
void MoveGroupMConn(CtrlType *, GraphType *, idxtype *, idxtype *, int, int, int, idxtype *)
Definition: metis.c:18810
void METIS_mCHPartGraphRecursive(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *)
Definition: metis.c:12603
void metis_wpartgraphvkway_(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *)
Definition: metis.c:2291
void HEXNODALMETIS(int, int, idxtype *, idxtype *, idxtype *adjncy)
Definition: metis.c:8318
void metis_wpartgraphkway(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *)
Definition: metis.c:2067
float * sset(int n, float val, float *x)
Definition: metis.c:19462
void Balance2Way(CtrlType *, GraphType *, int *, float)
Definition: metis.c:21
void METIS_mCPartGraphRecursiveInternal(int *, int *, idxtype *, idxtype *, float *, idxtype *, int *, int *, int *, idxtype *)
Definition: metis.c:12661
void METIS_mCPartGraphRecursive(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *)
Definition: metis.c:12550
void METIS_PARTGRAPHVKWAY(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *)
Definition: metis.c:2266
void METIS_WPartGraphRecursive(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *)
Definition: metis.c:15029
void metis_nodewnd__(int *, idxtype *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *)
Definition: metis.c:2132
void metis_partmeshdual(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *)
Definition: metis.c:2161
void METIS_PARTMESHNODAL(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *)
Definition: metis.c:2139
int MCMlevelKWayPartitioning(CtrlType *, GraphType *, int, idxtype *, float *)
Definition: metis.c:10405
void AllocateKWayPartitionMemory(CtrlType *, GraphType *, int)
Definition: metis.c:4381
void MocGeneral2WayBalance2(CtrlType *, GraphType *, float *, float *)
Definition: metis.c:7199
void ComputeVolKWayPartitionParams(CtrlType *, GraphType *, int)
Definition: metis.c:6565
void metis_partgraphvkway(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *)
Definition: metis.c:2270
float BetterVBalance(int, int, float *, float *, float *)
Definition: metis.c:11862
void Change2FNumbering(int, idxtype *, idxtype *, idxtype *)
Definition: metis.c:1884
void metis_wpartgraphvkway__(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *)
Definition: metis.c:2295
void SelectQueue2(int, float *, float *, int *, int *, PQueueType[MAXNCON][2], float *)
Definition: metis.c:8917
float ssum(int, float *)
Definition: metis.c:19655
void CreateCoarseGraphNoMask(CtrlType *, GraphType *, int, idxtype *, idxtype *)
Definition: metis.c:515
void METIS_WPARTGRAPHKWAY(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *)
Definition: metis.c:2063
int PQueueGetKey(PQueueType *)
Definition: metis.c:15855
void FM_2WayNodeRefine_OneSided(CtrlType *, GraphType *, float, int)
Definition: metis.c:17109
void genmmd(int, idxtype *, idxtype *, idxtype *, idxtype *, int, idxtype *, idxtype *, idxtype *, idxtype *, int, int *)
Definition: metis.c:11986
int VerifyWPart(int, idxtype *, idxtype *, idxtype *, idxtype *, int, float *, int, idxtype *)
void METIS_MCPARTGRAPHKWAY(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *)
Definition: metis.c:2248
void InitSeparator(CtrlType *, GraphType *, float)
Definition: metis.c:2972
void MlevelNestedDissection(CtrlType *, GraphType *, idxtype *, float, int)
Definition: metis.c:14103
void METIS_EDGEND(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *)
Definition: metis.c:2082
void METIS_ESTIMATEMEMORY(int *, idxtype *, idxtype *, int *, int *, int *)
Definition: metis.c:2211
void MocGrowBisection(CtrlType *, GraphType *, float *, float)
Definition: metis.c:10032
void ComputeKWayVolGains(CtrlType *, GraphType *, int)
Definition: metis.c:6645
void SetUpGraphKway(GraphType *, int, idxtype *, idxtype *)
Definition: metis.c:2443
void Test_PartGraphV(int, idxtype *, idxtype *)
void Change2FNumberingOrder(int, idxtype *, idxtype *, idxtype *, idxtype *)
Definition: metis.c:1919
void RefineVolKWay(CtrlType *, GraphType *, GraphType *, int, float *, float)
Definition: metis.c:6456
void PQueueInit(CtrlType *ctrl, PQueueType *, int, int)
Definition: metis.c:15349
void MCMatch_SHEM(CtrlType *, GraphType *)
Definition: metis.c:11565
void ComputeKWayBalanceBoundary(CtrlType *, GraphType *, int)
Definition: metis.c:4637
void MocBalance2Way2(CtrlType *, GraphType *, float *, float *)
Definition: metis.c:7185
void MCMlevelEdgeBisection(CtrlType *, GraphType *, float *, float)
Definition: metis.c:12890
int iamax(int, int *)
Definition: metis.c:19477
void PruneGraph(CtrlType *, GraphType *, int, idxtype *, idxtype *, idxtype *, float)
Definition: metis.c:1162
void METIS_PartGraphKway(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *)
Definition: metis.c:3361
int PQueueGetSize(PQueueType *)
Definition: metis.c:15455
void FM_2WayEdgeRefine(CtrlType *, GraphType *, int *, int)
Definition: metis.c:1674
void MocInit2WayBalance(CtrlType *, GraphType *, float *)
Definition: metis.c:10153
void metis_partgraphkway__(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *)
Definition: metis.c:2056
int CheckNodePartitionParams(GraphType *)
Definition: metis.c:1428
void MocCompute2WayPartitionParams(CtrlType *, GraphType *)
Definition: metis.c:13065
void CompressGraph(CtrlType *, GraphType *, int, idxtype *, idxtype *, idxtype *, idxtype *)
Definition: metis.c:1023
void Match_RM(CtrlType *, GraphType *)
Definition: metis.c:6918
float * fwspacemalloc(CtrlType *, int)
Definition: metis.c:7970
void METIS_PARTGRAPHKWAY(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *)
Definition: metis.c:2044
void metis_partgraphkway(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *)
Definition: metis.c:2048
void InitRandom(int)
Definition: metis.c:19780
void FreeWorkSpace(CtrlType *, GraphType *)
Definition: metis.c:7928
int VerifyPart(int, idxtype *, idxtype *, idxtype *, idxtype *, int, int, idxtype *)
double seconds(void)
Definition: metis.c:19282
void Refine2WayNode(CtrlType *, GraphType *, GraphType *, float)
Definition: metis.c:17482
void metis_partmeshnodal_(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *)
Definition: metis.c:2147
int VerifyWPartV(int, idxtype *, idxtype *, idxtype *, idxtype *, int, float *, int, idxtype *)
void ProjectVolKWayPartition(CtrlType *, GraphType *, int)
Definition: metis.c:6745
void metis_partgraphrecursive(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *)
Definition: metis.c:2011
void MinCover_ColDFS(idxtype *, idxtype *, int, idxtype *, idxtype *, int)
Definition: metis.c:9560
int MCMlevelRecursiveBisection(CtrlType *, GraphType *, int, idxtype *, float, int)
Definition: metis.c:12760
void FM_2WayNodeBalance(CtrlType *, GraphType *, float)
Definition: metis.c:17310
float Compute2WayHLoadImbalance(int, float *, float *)
Definition: metis.c:9322
void Change2CNumbering(int, idxtype *, idxtype *)
Definition: metis.c:1869
void CheckVolKWayPartitionParams(CtrlType *, GraphType *, int)
Definition: metis.c:5877
void METIS_MCPARTGRAPHRECURSIVE(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *)
Definition: metis.c:2230
void MinCover(idxtype *, idxtype *, int, int, idxtype *, int *)
Definition: metis.c:9389
void ComputeKWayPartitionParams(CtrlType *, GraphType *, int)
Definition: metis.c:4407
void MocInit2WayPartition2(CtrlType *, GraphType *, float *, float *)
Definition: metis.c:9628
void METIS_MESHTONODAL(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *)
Definition: metis.c:2175
void MocProject2WayPartition(CtrlType *, GraphType *)
Definition: metis.c:13124
void ComputeVolKWayBoundary(CtrlType *, GraphType *, int)
Definition: metis.c:6850
int AreAllBelow(int, float *, float *)
Definition: metis.c:13286
void saxpy(int, float, float *, int, float *, int)
Definition: metis.c:19726
void MocComputeKWayBalanceBoundary(CtrlType *, GraphType *, int)
Definition: metis.c:11408
void Random_KWayEdgeRefineMConn(CtrlType *, GraphType *, int, float *, float, int, int)
Definition: metis.c:17940
GraphType * SetUpCoarseGraph(GraphType *, int, int)
Definition: metis.c:799
void metis_partgraphkway_(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *)
Definition: metis.c:2052
void metis_meshtodual__(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *)
Definition: metis.c:2205
void ComputeVolSubDomainGraph(GraphType *, int, idxtype *, idxtype *)
Definition: metis.c:6003
void METIS_PARTGRAPHRECURSIVE(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *)
Definition: metis.c:2007
void mmdupd(int, int, idxtype *, idxtype *, int, int *, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, int, int *tag)
Definition: metis.c:12345
int ispow2(int)
Definition: metis.c:19770
void ikeysort(int, KeyValueType *)
Definition: metis.c:13584
void metis_nodend__(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *)
Definition: metis.c:2113
void METIS_NodeND(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *)
Definition: metis.c:13919
void EliminateVolSubDomainEdges(CtrlType *, GraphType *, int, float *)
Definition: metis.c:6045
void ReAdjustMemory(GraphType *, GraphType *, int)
Definition: metis.c:863
int MinCover_Augment(idxtype *, idxtype *, int, idxtype *, idxtype *, idxtype *, int)
Definition: metis.c:9474
int samin(int, float *)
Definition: metis.c:19576
void METIS_WPartGraphVKway(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *)
Definition: metis.c:3509
void METIS_WPARTGRAPHRECURSIVE(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *)
Definition: metis.c:2025
void MCMatch_RM(CtrlType *, GraphType *)
Definition: metis.c:11449
void InitGraph(GraphType *)
Definition: metis.c:8012
int PQueueInsert(PQueueType *, int, int)
Definition: metis.c:15464
void RefineKWay(CtrlType *, GraphType *, GraphType *, int, float *, float)
Definition: metis.c:4286
ADflow_intT idxtype
Definition: struct.h:19