source: inundation/pymetis/metis-4.0/Lib/proto.h @ 2051

Last change on this file since 2051 was 2051, checked in by jack, 18 years ago

Python interface to metis. Currently provides only the
METIS_PartMeshNodal function, since that is what is currently needed for partitioning.
Module name is metis.

File size: 26.9 KB
Line 
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: proto.h,v 1.1 1998/11/27 17:59:28 karypis Exp $
12 *
13 */
14
15/* balance.c */
16void Balance2Way(CtrlType *, GraphType *, int *, float);
17void Bnd2WayBalance(CtrlType *, GraphType *, int *);
18void General2WayBalance(CtrlType *, GraphType *, int *);
19
20/* bucketsort.c */
21void BucketSortKeysInc(int, int, idxtype *, idxtype *, idxtype *);
22
23/* ccgraph.c */
24void CreateCoarseGraph(CtrlType *, GraphType *, int, idxtype *, idxtype *);
25void CreateCoarseGraphNoMask(CtrlType *, GraphType *, int, idxtype *, idxtype *);
26void CreateCoarseGraph_NVW(CtrlType *, GraphType *, int, idxtype *, idxtype *);
27GraphType *SetUpCoarseGraph(GraphType *, int, int);
28void ReAdjustMemory(GraphType *, GraphType *, int);
29
30/* coarsen.c */
31GraphType *Coarsen2Way(CtrlType *, GraphType *);
32
33/* compress.c */
34void CompressGraph(CtrlType *, GraphType *, int, idxtype *, idxtype *, idxtype *, idxtype *);
35void PruneGraph(CtrlType *, GraphType *, int, idxtype *, idxtype *, idxtype *, float);
36
37/* debug.c */
38int ComputeCut(GraphType *, idxtype *);
39int CheckBnd(GraphType *);
40int CheckBnd2(GraphType *);
41int CheckNodeBnd(GraphType *, int);
42int CheckRInfo(RInfoType *);
43int CheckNodePartitionParams(GraphType *);
44int IsSeparable(GraphType *);
45
46/* estmem.c */
47void METIS_EstimateMemory(int *, idxtype *, idxtype *, int *, int *, int *);
48void EstimateCFraction(int, idxtype *, idxtype *, float *, float *);
49int ComputeCoarseGraphSize(int, idxtype *, idxtype *, int, idxtype *, idxtype *, idxtype *);
50
51/* fm.c */
52void FM_2WayEdgeRefine(CtrlType *, GraphType *, int *, int);
53
54/* fortran.c */
55void Change2CNumbering(int, idxtype *, idxtype *);
56void Change2FNumbering(int, idxtype *, idxtype *, idxtype *);
57void Change2FNumbering2(int, idxtype *, idxtype *);
58void Change2FNumberingOrder(int, idxtype *, idxtype *, idxtype *, idxtype *);
59void ChangeMesh2CNumbering(int, idxtype *);
60void ChangeMesh2FNumbering(int, idxtype *, int, idxtype *, idxtype *);
61void ChangeMesh2FNumbering2(int, idxtype *, int, int, idxtype *, idxtype *);
62
63/* frename.c */
64void METIS_PARTGRAPHRECURSIVE(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *); 
65void metis_partgraphrecursive(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *); 
66void metis_partgraphrecursive_(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *); 
67void metis_partgraphrecursive__(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *); 
68void METIS_WPARTGRAPHRECURSIVE(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *); 
69void metis_wpartgraphrecursive(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *); 
70void metis_wpartgraphrecursive_(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *); 
71void metis_wpartgraphrecursive__(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *); 
72void METIS_PARTGRAPHKWAY(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *); 
73void metis_partgraphkway(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *); 
74void metis_partgraphkway_(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *); 
75void metis_partgraphkway__(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *); 
76void METIS_WPARTGRAPHKWAY(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *); 
77void metis_wpartgraphkway(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *); 
78void metis_wpartgraphkway_(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *); 
79void metis_wpartgraphkway__(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *); 
80void METIS_EDGEND(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *); 
81void metis_edgend(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *); 
82void metis_edgend_(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *); 
83void metis_edgend__(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *); 
84void METIS_NODEND(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *); 
85void metis_nodend(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *); 
86void metis_nodend_(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *); 
87void metis_nodend__(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *); 
88void METIS_NODEWND(int *, idxtype *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *); 
89void metis_nodewnd(int *, idxtype *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *); 
90void metis_nodewnd_(int *, idxtype *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *); 
91void metis_nodewnd__(int *, idxtype *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *); 
92void METIS_PARTMESHNODAL(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *);
93void metis_partmeshnodal(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *);
94void metis_partmeshnodal_(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *);
95void metis_partmeshnodal__(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *);
96void METIS_PARTMESHDUAL(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *);
97void metis_partmeshdual(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *);
98void metis_partmeshdual_(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *);
99void metis_partmeshdual__(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *);
100void METIS_MESHTONODAL(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *);
101void metis_meshtonodal(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *);
102void metis_meshtonodal_(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *);
103void metis_meshtonodal__(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *);
104void METIS_MESHTODUAL(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *);
105void metis_meshtodual(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *);
106void metis_meshtodual_(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *);
107void metis_meshtodual__(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *);
108void METIS_ESTIMATEMEMORY(int *, idxtype *, idxtype *, int *, int *, int *);
109void metis_estimatememory(int *, idxtype *, idxtype *, int *, int *, int *);
110void metis_estimatememory_(int *, idxtype *, idxtype *, int *, int *, int *);
111void metis_estimatememory__(int *, idxtype *, idxtype *, int *, int *, int *);
112void METIS_MCPARTGRAPHRECURSIVE(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
113void metis_mcpartgraphrecursive(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
114void metis_mcpartgraphrecursive_(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
115void metis_mcpartgraphrecursive__(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
116void METIS_MCPARTGRAPHKWAY(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
117void metis_mcpartgraphkway(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
118void metis_mcpartgraphkway_(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
119void metis_mcpartgraphkway__(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
120void METIS_PARTGRAPHVKWAY(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
121void metis_partgraphvkway(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
122void metis_partgraphvkway_(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
123void metis_partgraphvkway__(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
124void METIS_WPARTGRAPHVKWAY(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
125void metis_wpartgraphvkway(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
126void metis_wpartgraphvkway_(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
127void metis_wpartgraphvkway__(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
128
129/* graph.c */
130void SetUpGraph(GraphType *, int, int, int, idxtype *, idxtype *, idxtype *, idxtype *, int);
131void SetUpGraphKway(GraphType *, int, idxtype *, idxtype *);
132void SetUpGraph2(GraphType *, int, int, idxtype *, idxtype *, float *, idxtype *);
133void VolSetUpGraph(GraphType *, int, int, int, idxtype *, idxtype *, idxtype *, idxtype *, int);
134void RandomizeGraph(GraphType *);
135int IsConnectedSubdomain(CtrlType *, GraphType *, int, int);
136int IsConnected(CtrlType *, GraphType *, int);
137int IsConnected2(GraphType *, int);
138int FindComponents(CtrlType *, GraphType *, idxtype *, idxtype *);
139
140/* initpart.c */
141void Init2WayPartition(CtrlType *, GraphType *, int *, float);
142void InitSeparator(CtrlType *, GraphType *, float);
143void GrowBisection(CtrlType *, GraphType *, int *, float);
144void GrowBisectionNode(CtrlType *, GraphType *, float);
145void RandomBisection(CtrlType *, GraphType *, int *, float);
146
147/* kmetis.c */
148void METIS_PartGraphKway(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *); 
149void METIS_WPartGraphKway(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *); 
150int MlevelKWayPartitioning(CtrlType *, GraphType *, int, idxtype *, float *, float);
151
152/* kvmetis.c */
153void METIS_PartGraphVKway(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
154void METIS_WPartGraphVKway(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
155int MlevelVolKWayPartitioning(CtrlType *, GraphType *, int, idxtype *, float *, float);
156
157/* kwayfm.c */
158void Random_KWayEdgeRefine(CtrlType *, GraphType *, int, float *, float, int, int);
159void Greedy_KWayEdgeRefine(CtrlType *, GraphType *, int, float *, float, int);
160void Greedy_KWayEdgeBalance(CtrlType *, GraphType *, int, float *, float, int);
161
162/* kwayrefine.c */
163void RefineKWay(CtrlType *, GraphType *, GraphType *, int, float *, float);
164void AllocateKWayPartitionMemory(CtrlType *, GraphType *, int);
165void ComputeKWayPartitionParams(CtrlType *, GraphType *, int);
166void ProjectKWayPartition(CtrlType *, GraphType *, int);
167int IsBalanced(idxtype *, int, float *, float);
168void ComputeKWayBoundary(CtrlType *, GraphType *, int);
169void ComputeKWayBalanceBoundary(CtrlType *, GraphType *, int);
170
171/* kwayvolfm.c */
172void Random_KWayVolRefine(CtrlType *, GraphType *, int, float *, float, int, int);
173void Random_KWayVolRefineMConn(CtrlType *, GraphType *, int, float *, float, int, int);
174void Greedy_KWayVolBalance(CtrlType *, GraphType *, int, float *, float, int);
175void Greedy_KWayVolBalanceMConn(CtrlType *, GraphType *, int, float *, float, int);
176void KWayVolUpdate(CtrlType *, GraphType *, int, int, int, idxtype *, idxtype *, idxtype *);
177void ComputeKWayVolume(GraphType *, int, idxtype *, idxtype *, idxtype *);
178int ComputeVolume(GraphType *, idxtype *);
179void CheckVolKWayPartitionParams(CtrlType *, GraphType *, int);
180void ComputeVolSubDomainGraph(GraphType *, int, idxtype *, idxtype *);
181void EliminateVolSubDomainEdges(CtrlType *, GraphType *, int, float *);
182void EliminateVolComponents(CtrlType *, GraphType *, int, float *, float);
183
184/* kwayvolrefine.c */
185void RefineVolKWay(CtrlType *, GraphType *, GraphType *, int, float *, float);
186void AllocateVolKWayPartitionMemory(CtrlType *, GraphType *, int);
187void ComputeVolKWayPartitionParams(CtrlType *, GraphType *, int);
188void ComputeKWayVolGains(CtrlType *, GraphType *, int);
189void ProjectVolKWayPartition(CtrlType *, GraphType *, int);
190void ComputeVolKWayBoundary(CtrlType *, GraphType *, int);
191void ComputeVolKWayBalanceBoundary(CtrlType *, GraphType *, int);
192
193/* match.c */
194void Match_RM(CtrlType *, GraphType *);
195void Match_RM_NVW(CtrlType *, GraphType *);
196void Match_HEM(CtrlType *, GraphType *);
197void Match_SHEM(CtrlType *, GraphType *);
198
199/* mbalance.c */
200void MocBalance2Way(CtrlType *, GraphType *, float *, float);
201void MocGeneral2WayBalance(CtrlType *, GraphType *, float *, float);
202
203/* mbalance2.c */
204void MocBalance2Way2(CtrlType *, GraphType *, float *, float *);
205void MocGeneral2WayBalance2(CtrlType *, GraphType *, float *, float *);
206void SelectQueue3(int, float *, float *, int *, int *, PQueueType [MAXNCON][2], float *);
207
208/* mcoarsen.c */
209GraphType *MCCoarsen2Way(CtrlType *, GraphType *);
210
211/* memory.c */
212void AllocateWorkSpace(CtrlType *, GraphType *, int);
213void FreeWorkSpace(CtrlType *, GraphType *);
214int WspaceAvail(CtrlType *);
215idxtype *idxwspacemalloc(CtrlType *, int);
216void idxwspacefree(CtrlType *, int);
217float *fwspacemalloc(CtrlType *, int);
218void fwspacefree(CtrlType *, int);
219GraphType *CreateGraph(void);
220void InitGraph(GraphType *);
221void FreeGraph(GraphType *);
222
223/* mesh.c */
224void METIS_MeshToDual(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *);
225void METIS_MeshToNodal(int *, int *, idxtype *, int *, int *, idxtype *, idxtype *);
226void GENDUALMETIS(int, int, int, idxtype *, idxtype *, idxtype *adjncy);
227void TRINODALMETIS(int, int, idxtype *, idxtype *, idxtype *adjncy);
228void TETNODALMETIS(int, int, idxtype *, idxtype *, idxtype *adjncy);
229void HEXNODALMETIS(int, int, idxtype *, idxtype *, idxtype *adjncy);
230void QUADNODALMETIS(int, int, idxtype *, idxtype *, idxtype *adjncy);
231
232/* meshpart.c */
233void METIS_PartMeshNodal(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *);
234void METIS_PartMeshDual(int *, int *, idxtype *, int *, int *, int *, int *, idxtype *, idxtype *);
235
236/* mfm.c */
237void MocFM_2WayEdgeRefine(CtrlType *, GraphType *, float *, int);
238void SelectQueue(int, float *, float *, int *, int *, PQueueType [MAXNCON][2]);
239int BetterBalance(int, float *, float *, float *);
240float Compute2WayHLoadImbalance(int, float *, float *);
241void Compute2WayHLoadImbalanceVec(int, float *, float *, float *);
242
243/* mfm2.c */
244void MocFM_2WayEdgeRefine2(CtrlType *, GraphType *, float *, float *, int);
245void SelectQueue2(int, float *, float *, int *, int *, PQueueType [MAXNCON][2], float *);
246int IsBetter2wayBalance(int, float *, float *, float *);
247
248/* mincover.o */
249void MinCover(idxtype *, idxtype *, int, int, idxtype *, int *);
250int MinCover_Augment(idxtype *, idxtype *, int, idxtype *, idxtype *, idxtype *, int);
251void MinCover_Decompose(idxtype *, idxtype *, int, int, idxtype *, idxtype *, int *);
252void MinCover_ColDFS(idxtype *, idxtype *, int, idxtype *, idxtype *, int);
253void MinCover_RowDFS(idxtype *, idxtype *, int, idxtype *, idxtype *, int);
254
255/* minitpart.c */
256void MocInit2WayPartition(CtrlType *, GraphType *, float *, float);
257void MocGrowBisection(CtrlType *, GraphType *, float *, float);
258void MocRandomBisection(CtrlType *, GraphType *, float *, float);
259void MocInit2WayBalance(CtrlType *, GraphType *, float *);
260int SelectQueueoneWay(int, float *, float *, int, PQueueType [MAXNCON][2]);
261
262/* minitpart2.c */
263void MocInit2WayPartition2(CtrlType *, GraphType *, float *, float *);
264void MocGrowBisection2(CtrlType *, GraphType *, float *, float *);
265void MocGrowBisectionNew2(CtrlType *, GraphType *, float *, float *);
266void MocInit2WayBalance2(CtrlType *, GraphType *, float *, float *);
267int SelectQueueOneWay2(int, float *, PQueueType [MAXNCON][2], float *);
268
269/* mkmetis.c */
270void METIS_mCPartGraphKway(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
271int MCMlevelKWayPartitioning(CtrlType *, GraphType *, int, idxtype *, float *);
272
273/* mkwayfmh.c */
274void MCRandom_KWayEdgeRefineHorizontal(CtrlType *, GraphType *, int, float *, int);
275void MCGreedy_KWayEdgeBalanceHorizontal(CtrlType *, GraphType *, int, float *, int);
276int AreAllHVwgtsBelow(int, float, float *, float, float *, float *);
277int AreAllHVwgtsAbove(int, float, float *, float, float *, float *);
278void ComputeHKWayLoadImbalance(int, int, float *, float *);
279int MocIsHBalanced(int, int, float *, float *);
280int IsHBalanceBetterFT(int, int, float *, float *, float *, float *);
281int IsHBalanceBetterTT(int, int, float *, float *, float *, float *);
282
283/* mkwayrefine.c */
284void MocRefineKWayHorizontal(CtrlType *, GraphType *, GraphType *, int, float *);
285void MocAllocateKWayPartitionMemory(CtrlType *, GraphType *, int);
286void MocComputeKWayPartitionParams(CtrlType *, GraphType *, int);
287void MocProjectKWayPartition(CtrlType *, GraphType *, int);
288void MocComputeKWayBalanceBoundary(CtrlType *, GraphType *, int);
289
290/* mmatch.c */
291void MCMatch_RM(CtrlType *, GraphType *);
292void MCMatch_HEM(CtrlType *, GraphType *);
293void MCMatch_SHEM(CtrlType *, GraphType *);
294void MCMatch_SHEBM(CtrlType *, GraphType *, int);
295void MCMatch_SBHEM(CtrlType *, GraphType *, int);
296float BetterVBalance(int, int, float *, float *, float *);
297int AreAllVwgtsBelowFast(int, float *, float *, float);
298
299/* mmd.c */
300void genmmd(int, idxtype *, idxtype *, idxtype *, idxtype *, int , idxtype *, idxtype *, idxtype *, idxtype *, int, int *);
301void mmdelm(int, idxtype *xadj, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, int, int);
302int  mmdint(int, idxtype *xadj, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *);
303void mmdnum(int, idxtype *, idxtype *, idxtype *);
304void mmdupd(int, int, idxtype *, idxtype *, int, int *, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, int, int *tag);
305
306/* mpmetis.c */
307void METIS_mCPartGraphRecursive(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *);
308void METIS_mCHPartGraphRecursive(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *);
309void METIS_mCPartGraphRecursiveInternal(int *, int *, idxtype *, idxtype *, float *, idxtype *, int *, int *, int *, idxtype *);
310void METIS_mCHPartGraphRecursiveInternal(int *, int *, idxtype *, idxtype *, float *, idxtype *, int *, float *, int *, int *, idxtype *);
311int MCMlevelRecursiveBisection(CtrlType *, GraphType *, int, idxtype *, float, int);
312int MCHMlevelRecursiveBisection(CtrlType *, GraphType *, int, idxtype *, float *, int);
313void MCMlevelEdgeBisection(CtrlType *, GraphType *, float *, float);
314void MCHMlevelEdgeBisection(CtrlType *, GraphType *, float *, float *);
315
316/* mrefine.c */
317void MocRefine2Way(CtrlType *, GraphType *, GraphType *, float *, float);
318void MocAllocate2WayPartitionMemory(CtrlType *, GraphType *);
319void MocCompute2WayPartitionParams(CtrlType *, GraphType *);
320void MocProject2WayPartition(CtrlType *, GraphType *);
321
322/* mrefine2.c */
323void MocRefine2Way2(CtrlType *, GraphType *, GraphType *, float *, float *);
324
325/* mutil.c */
326int AreAllVwgtsBelow(int, float, float *, float, float *, float);
327int AreAnyVwgtsBelow(int, float, float *, float, float *, float);
328int AreAllVwgtsAbove(int, float, float *, float, float *, float);
329float ComputeLoadImbalance(int, int, float *, float *);
330int AreAllBelow(int, float *, float *);
331
332/* myqsort.c */
333void iidxsort(int, idxtype *);
334void iintsort(int, int *);
335void ikeysort(int, KeyValueType *);
336void ikeyvalsort(int, KeyValueType *);
337
338/* ometis.c */
339void METIS_EdgeND(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *); 
340void METIS_NodeND(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *); 
341void METIS_NodeWND(int *, idxtype *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *); 
342void MlevelNestedDissection(CtrlType *, GraphType *, idxtype *, float, int);
343void MlevelNestedDissectionCC(CtrlType *, GraphType *, idxtype *, float, int);
344void MlevelNodeBisectionMultiple(CtrlType *, GraphType *, int *, float);
345void MlevelNodeBisection(CtrlType *, GraphType *, int *, float);
346void SplitGraphOrder(CtrlType *, GraphType *, GraphType *, GraphType *);
347void MMDOrder(CtrlType *, GraphType *, idxtype *, int);
348int SplitGraphOrderCC(CtrlType *, GraphType *, GraphType *, int, idxtype *, idxtype *);
349
350/* parmetis.c */
351void METIS_PartGraphKway2(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *); 
352void METIS_WPartGraphKway2(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *); 
353void METIS_NodeNDP(int, idxtype *, idxtype *, int, int *, idxtype *, idxtype *, idxtype *);
354void MlevelNestedDissectionP(CtrlType *, GraphType *, idxtype *, int, int, int, idxtype *);
355void METIS_NodeComputeSeparator(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, idxtype *); 
356void METIS_EdgeComputeSeparator(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, idxtype *); 
357
358/* pmetis.c */
359void METIS_PartGraphRecursive(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *); 
360void METIS_WPartGraphRecursive(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *); 
361int MlevelRecursiveBisection(CtrlType *, GraphType *, int, idxtype *, float *, float, int);
362void MlevelEdgeBisection(CtrlType *, GraphType *, int *, float);
363void SplitGraphPart(CtrlType *, GraphType *, GraphType *, GraphType *);
364void SetUpSplitGraph(GraphType *, GraphType *, int, int);
365
366/* pqueue.c */
367void PQueueInit(CtrlType *ctrl, PQueueType *, int, int);
368void PQueueReset(PQueueType *);
369void PQueueFree(CtrlType *ctrl, PQueueType *);
370int PQueueGetSize(PQueueType *);
371int PQueueInsert(PQueueType *, int, int);
372int PQueueDelete(PQueueType *, int, int);
373int PQueueUpdate(PQueueType *, int, int, int);
374void PQueueUpdateUp(PQueueType *, int, int, int);
375int PQueueGetMax(PQueueType *);
376int PQueueSeeMax(PQueueType *);
377int PQueueGetKey(PQueueType *);
378int CheckHeap(PQueueType *);
379
380/* refine.c */
381void Refine2Way(CtrlType *, GraphType *, GraphType *, int *, float ubfactor);
382void Allocate2WayPartitionMemory(CtrlType *, GraphType *);
383void Compute2WayPartitionParams(CtrlType *, GraphType *);
384void Project2WayPartition(CtrlType *, GraphType *);
385
386/* separator.c */
387void ConstructSeparator(CtrlType *, GraphType *, float);
388void ConstructMinCoverSeparator0(CtrlType *, GraphType *, float);
389void ConstructMinCoverSeparator(CtrlType *, GraphType *, float);
390
391/* sfm.c */
392void FM_2WayNodeRefine(CtrlType *, GraphType *, float, int);
393void FM_2WayNodeRefineEqWgt(CtrlType *, GraphType *, int);
394void FM_2WayNodeRefine_OneSided(CtrlType *, GraphType *, float, int);
395void FM_2WayNodeBalance(CtrlType *, GraphType *, float);
396int ComputeMaxNodeGain(int, idxtype *, idxtype *, idxtype *);
397
398/* srefine.c */
399void Refine2WayNode(CtrlType *, GraphType *, GraphType *, float);
400void Allocate2WayNodePartitionMemory(CtrlType *, GraphType *);
401void Compute2WayNodePartitionParams(CtrlType *, GraphType *);
402void Project2WayNodePartition(CtrlType *, GraphType *);
403
404/* stat.c */
405void ComputePartitionInfo(GraphType *, int, idxtype *);
406void ComputePartitionInfoBipartite(GraphType *, int, idxtype *);
407void ComputePartitionBalance(GraphType *, int, idxtype *, float *);
408float ComputeElementBalance(int, int, idxtype *);
409
410/* subdomains.c */
411void Random_KWayEdgeRefineMConn(CtrlType *, GraphType *, int, float *, float, int, int);
412void Greedy_KWayEdgeBalanceMConn(CtrlType *, GraphType *, int, float *, float, int);
413void PrintSubDomainGraph(GraphType *, int, idxtype *);
414void ComputeSubDomainGraph(GraphType *, int, idxtype *, idxtype *);
415void EliminateSubDomainEdges(CtrlType *, GraphType *, int, float *);
416void MoveGroupMConn(CtrlType *, GraphType *, idxtype *, idxtype *, int, int, int, idxtype *);
417void EliminateComponents(CtrlType *, GraphType *, int, float *, float);
418void MoveGroup(CtrlType *, GraphType *, int, int, int, idxtype *, idxtype *);
419
420/* timing.c */
421void InitTimers(CtrlType *);
422void PrintTimers(CtrlType *);
423double seconds(void);
424
425/* util.c */
426void errexit(char *,...);
427#ifndef DMALLOC
428int *imalloc(int, char *);
429idxtype *idxmalloc(int, char *);
430float *fmalloc(int, char *);
431int *ismalloc(int, int, char *);
432idxtype *idxsmalloc(int, idxtype, char *);
433void *GKmalloc(int, char *);
434#endif
435/*void GKfree(void **,...); */
436int *iset(int n, int val, int *x);
437idxtype *idxset(int n, idxtype val, idxtype *x);
438float *sset(int n, float val, float *x);
439int iamax(int, int *);
440int idxamax(int, idxtype *);
441int idxamax_strd(int, idxtype *, int);
442int samax(int, float *);
443int samax2(int, float *);
444int idxamin(int, idxtype *);
445int samin(int, float *);
446int idxsum(int, idxtype *);
447int idxsum_strd(int, idxtype *, int);
448void idxadd(int, idxtype *, idxtype *);
449int charsum(int, char *);
450int isum(int, int *);
451float ssum(int, float *);
452float ssum_strd(int n, float *x, int);
453void sscale(int n, float, float *x);
454float snorm2(int, float *);
455float sdot(int n, float *, float *);
456void saxpy(int, float, float *, int, float *, int);
457void RandomPermute(int, idxtype *, int);
458double drand48();
459void srand48(long);
460int ispow2(int);
461void InitRandom(int);
462int log2(int);
463
464
465
466
467
468
469
470
471
472
473/***************************************************************
474* Programs Directory
475****************************************************************/
476
477/* io.c */
478void ReadGraph(GraphType *, char *, int *);
479void WritePartition(char *, idxtype *, int, int);
480void WriteMeshPartition(char *, int, int, idxtype *, int, idxtype *);
481void WritePermutation(char *, idxtype *, int);
482int CheckGraph(GraphType *);
483idxtype *ReadMesh(char *, int *, int *, int *);
484void WriteGraph(char *, int, idxtype *, idxtype *);
485
486/* smbfactor.c */
487void ComputeFillIn(GraphType *, idxtype *);
488idxtype ComputeFillIn2(GraphType *, idxtype *);
489int smbfct(int, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, int *, idxtype *, idxtype *, int *);
490
491
492/***************************************************************
493* Test Directory
494****************************************************************/
495void Test_PartGraph(int, idxtype *, idxtype *);
496int VerifyPart(int, idxtype *, idxtype *, idxtype *, idxtype *, int, int, idxtype *);
497int VerifyWPart(int, idxtype *, idxtype *, idxtype *, idxtype *, int, float *, int, idxtype *);
498void Test_PartGraphV(int, idxtype *, idxtype *);
499int VerifyPartV(int, idxtype *, idxtype *, idxtype *, idxtype *, int, int, idxtype *);
500int VerifyWPartV(int, idxtype *, idxtype *, idxtype *, idxtype *, int, float *, int, idxtype *);
501void Test_PartGraphmC(int, idxtype *, idxtype *);
502int VerifyPartmC(int, int, idxtype *, idxtype *, idxtype *, idxtype *, int, float *, int, idxtype *);
503void Test_ND(int, idxtype *, idxtype *);
504int VerifyND(int, idxtype *, idxtype *);
505
Note: See TracBrowser for help on using the repository browser.