1
/* Copyright 2004,2007-2009 ENSEIRB, INRIA & CNRS
3
** This file is part of the Scotch software package for static mapping,
4
** graph partitioning and sparse matrix ordering.
6
** This software is governed by the CeCILL-C license under French law
7
** and abiding by the rules of distribution of free software. You can
8
** use, modify and/or redistribute the software under the terms of the
9
** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following
10
** URL: "http://www.cecill.info".
12
** As a counterpart to the access to the source code and rights to copy,
13
** modify and redistribute granted by the license, users are provided
14
** only with a limited warranty and the software's author, the holder of
15
** the economic rights, and the successive licensors have only limited
18
** In this respect, the user's attention is drawn to the risks associated
19
** with loading, using, modifying and/or developing or reproducing the
20
** software by the user in light of its specific status of free software,
21
** that may mean that it is complicated to manipulate, and that also
22
** therefore means that it is reserved for developers and experienced
23
** professionals having in-depth computer knowledge. Users are therefore
24
** encouraged to load and test the software's suitability as regards
25
** their requirements in conditions enabling the security of their
26
** systems and/or data to be ensured and, more generally, to use and
27
** operate it in the same conditions as regards security.
29
** The fact that you are presently reading this means that you have had
30
** knowledge of the CeCILL-C license and that you accept its terms.
32
/************************************************************/
34
/** NAME : library.h **/
36
/** AUTHOR : Francois PELLEGRINI **/
38
/** FUNCTION : Declaration file for the LibScotch **/
39
/** static mapping and sparse matrix block **/
40
/** ordering sequential library. **/
42
/** DATES : # Version 3.2 : from : 07 sep 1996 **/
43
/** to 22 aug 1998 **/
44
/** # Version 3.3 : from : 02 oct 1998 **/
45
/** to 31 may 1999 **/
46
/** # Version 3.4 : from : 10 oct 1999 **/
47
/** to 15 nov 2001 **/
48
/** # Version 4.0 : from : 11 dec 2001 **/
49
/** to 20 dec 2005 **/
50
/** # Version 5.0 : from : 26 apr 2006 **/
51
/** to : 20 feb 2008 **/
52
/** # Version 5.1 : from : 30 nov 2007 **/
53
/** to : 06 jun 2009 **/
55
/************************************************************/
58
** The type and structure definitions.
61
/*+ Parallel processing flag. +*/
63
#ifndef SCOTCH_PTSCOTCH
64
#define SCOTCH_DUMMYPTFLAG
65
#endif /* SCOTCH_PTSCOTCH */
69
typedef DUMMYINT SCOTCH_Num;
71
#define SCOTCH_NUMMAX DUMMYMAXINT
73
/*+ Opaque objects. The dummy sizes of these objects,
74
computed at compile-time by program "dummysizes",
75
are given as double values for proper padding +*/
78
double dummy[DUMMYSIZEARCH];
81
#ifdef SCOTCH_PTSCOTCH
83
double dummy[DUMMYSIZEDGRAPH];
87
double dummy[DUMMYSIZEDGRAPHHALOREQ];
88
} SCOTCH_DgraphHaloReq;
91
double dummy[DUMMYSIZEDMAP];
95
double dummy[DUMMYSIZEDORDER];
97
#endif /* SCOTCH_PTSCOTCH */
100
double dummy[DUMMYSIZEGEOM];
104
double dummy[DUMMYSIZEGRAPH];
108
double dummy[DUMMYSIZEMESH];
112
double dummy[DUMMYSIZEMAP];
116
double dummy[DUMMYSIZEORDER];
120
double dummy[DUMMYSIZESTRAT];
124
** The function prototypes.
129
#endif /* __cplusplus */
131
void SCOTCH_errorProg (const char * const);
132
void SCOTCH_errorPrint (const char * const, ...);
133
void SCOTCH_errorPrintW (const char * const, ...);
135
int SCOTCH_archInit (SCOTCH_Arch * const);
136
void SCOTCH_archExit (SCOTCH_Arch * const);
137
int SCOTCH_archLoad (SCOTCH_Arch * const, FILE * const);
138
int SCOTCH_archSave (const SCOTCH_Arch * const, FILE * const);
139
int SCOTCH_archBuild (SCOTCH_Arch * const, const SCOTCH_Graph * const, const SCOTCH_Num, const SCOTCH_Num * const, const SCOTCH_Strat * const);
140
char * SCOTCH_archName (const SCOTCH_Arch * const);
141
SCOTCH_Num SCOTCH_archSize (const SCOTCH_Arch * const);
142
int SCOTCH_archCmplt (SCOTCH_Arch * const, const SCOTCH_Num);
143
int SCOTCH_archCmpltw (SCOTCH_Arch * const, const SCOTCH_Num, const SCOTCH_Num * const);
144
int SCOTCH_archHcub (SCOTCH_Arch * const, const SCOTCH_Num);
145
int SCOTCH_archMesh2 (SCOTCH_Arch * const, const SCOTCH_Num, const SCOTCH_Num);
146
int SCOTCH_archMesh3 (SCOTCH_Arch * const, const SCOTCH_Num, const SCOTCH_Num, const SCOTCH_Num);
147
int SCOTCH_archTleaf (SCOTCH_Arch * const, const SCOTCH_Num, const SCOTCH_Num, const SCOTCH_Num);
148
int SCOTCH_archTorus2 (SCOTCH_Arch * const, const SCOTCH_Num, const SCOTCH_Num);
149
int SCOTCH_archTorus3 (SCOTCH_Arch * const, const SCOTCH_Num, const SCOTCH_Num, const SCOTCH_Num);
150
int SCOTCH_archVcmplt (SCOTCH_Arch * const);
151
int SCOTCH_archVhcub (SCOTCH_Arch * const);
153
#ifdef SCOTCH_PTSCOTCH
154
int SCOTCH_dgraphInit (SCOTCH_Dgraph * const, MPI_Comm);
155
void SCOTCH_dgraphExit (SCOTCH_Dgraph * const);
156
void SCOTCH_dgraphFree (SCOTCH_Dgraph * const);
157
int SCOTCH_dgraphLoad (SCOTCH_Dgraph * const, FILE * const, const SCOTCH_Num, const SCOTCH_Num);
158
int SCOTCH_dgraphSave (SCOTCH_Dgraph * const, FILE * const);
159
int SCOTCH_dgraphCheck (const SCOTCH_Dgraph * const);
160
int SCOTCH_dgraphBuild (SCOTCH_Dgraph * const, const SCOTCH_Num, const SCOTCH_Num, const SCOTCH_Num, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, const SCOTCH_Num, const SCOTCH_Num, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const);
161
int SCOTCH_dgraphBuildGrid3D (SCOTCH_Dgraph * const, const SCOTCH_Num, const SCOTCH_Num, const SCOTCH_Num, const SCOTCH_Num);
162
int SCOTCH_dgraphGather (const SCOTCH_Dgraph * const, SCOTCH_Graph * const);
163
int SCOTCH_dgraphScatter (SCOTCH_Dgraph * const, const SCOTCH_Graph * const);
164
void SCOTCH_dgraphSize (const SCOTCH_Dgraph * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const);
165
void SCOTCH_dgraphData (const SCOTCH_Dgraph * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num ** const, SCOTCH_Num ** const, SCOTCH_Num ** const, SCOTCH_Num ** const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num ** const, SCOTCH_Num ** const, SCOTCH_Num ** const, MPI_Comm * const);
166
int SCOTCH_dgraphStat (const SCOTCH_Dgraph * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, double * const, double * const, SCOTCH_Num * const, SCOTCH_Num * const, double * const, double * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, double * const, double * const);
167
int SCOTCH_dgraphGhst (SCOTCH_Dgraph * const);
168
int SCOTCH_dgraphHalo (SCOTCH_Dgraph * const, void * const, const MPI_Datatype);
169
int SCOTCH_dgraphHaloAsync (SCOTCH_Dgraph * const, void * const, const MPI_Datatype, SCOTCH_DgraphHaloReq * const);
170
int SCOTCH_dgraphHaloWait (SCOTCH_DgraphHaloReq * const);
171
int SCOTCH_dgraphMapInit (const SCOTCH_Dgraph * const, SCOTCH_Dmapping * const, const SCOTCH_Arch * const, SCOTCH_Num * const);
172
void SCOTCH_dgraphMapExit (const SCOTCH_Dgraph * const, SCOTCH_Dmapping * const);
173
int SCOTCH_dgraphMapSave (const SCOTCH_Dgraph * const, const SCOTCH_Dmapping * const, FILE * const);
174
int SCOTCH_dgraphMapView (SCOTCH_Dgraph * const, const SCOTCH_Dmapping * const, FILE * const);
175
int SCOTCH_dgraphMapCompute (const SCOTCH_Dgraph * const, SCOTCH_Dmapping * const, const SCOTCH_Strat * const);
176
int SCOTCH_dgraphMap (const SCOTCH_Dgraph * const, const SCOTCH_Arch * const, const SCOTCH_Strat * const, SCOTCH_Num * const);
177
int SCOTCH_dgraphPart (const SCOTCH_Dgraph * const, const SCOTCH_Num, const SCOTCH_Strat * const, SCOTCH_Num * const);
178
int SCOTCH_dgraphCorderInit (const SCOTCH_Dgraph * const, SCOTCH_Ordering * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const);
179
void SCOTCH_dgraphCorderExit (const SCOTCH_Dgraph * const, SCOTCH_Ordering * const);
181
int SCOTCH_dgraphOrderInit (const SCOTCH_Dgraph * const, SCOTCH_Dordering * const);
182
void SCOTCH_dgraphOrderExit (const SCOTCH_Dgraph * const, SCOTCH_Dordering * const);
183
int SCOTCH_dgraphOrderSave (const SCOTCH_Dgraph * const, const SCOTCH_Dordering * const, FILE * const);
184
int SCOTCH_dgraphOrderSaveBlock (const SCOTCH_Dgraph * const, const SCOTCH_Dordering * const, FILE * const);
185
int SCOTCH_dgraphOrderSaveMap (const SCOTCH_Dgraph * const, const SCOTCH_Dordering * const, FILE * const);
186
int SCOTCH_dgraphOrderSaveTree (const SCOTCH_Dgraph * const, const SCOTCH_Dordering * const, FILE * const);
187
int SCOTCH_dgraphOrderPerm (const SCOTCH_Dgraph * const, const SCOTCH_Dordering * const, SCOTCH_Num * const);
188
SCOTCH_Num SCOTCH_dgraphOrderCblkDist (const SCOTCH_Dgraph * const, const SCOTCH_Dordering * const);
189
int SCOTCH_dgraphOrderTreeDist (const SCOTCH_Dgraph * const, const SCOTCH_Dordering * const, SCOTCH_Num * const, SCOTCH_Num * const);
190
int SCOTCH_dgraphOrderCompute (const SCOTCH_Dgraph * const, SCOTCH_Dordering * const, const SCOTCH_Strat * const);
191
int SCOTCH_dgraphOrderComputeList (const SCOTCH_Dgraph * const, SCOTCH_Dordering * const, const SCOTCH_Num, const SCOTCH_Num * const, const SCOTCH_Strat * const);
192
int SCOTCH_dgraphOrderGather (const SCOTCH_Dgraph * const, const SCOTCH_Dordering * const, SCOTCH_Ordering * const);
193
#endif /* SCOTCH_PTSCOTCH */
195
int SCOTCH_geomInit (SCOTCH_Geom * const);
196
void SCOTCH_geomExit (SCOTCH_Geom * const);
197
void SCOTCH_geomData (const SCOTCH_Geom * const, SCOTCH_Num * const, double ** const);
199
int SCOTCH_graphInit (SCOTCH_Graph * const);
200
void SCOTCH_graphExit (SCOTCH_Graph * const);
201
void SCOTCH_graphFree (SCOTCH_Graph * const);
202
int SCOTCH_graphLoad (SCOTCH_Graph * const, FILE * const, const SCOTCH_Num, const SCOTCH_Num);
203
int SCOTCH_graphSave (const SCOTCH_Graph * const, FILE * const);
204
int SCOTCH_graphBuild (SCOTCH_Graph * const, const SCOTCH_Num, const SCOTCH_Num, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num, const SCOTCH_Num * const, const SCOTCH_Num * const);
205
SCOTCH_Num SCOTCH_graphBase (SCOTCH_Graph * const, const SCOTCH_Num baseval);
206
int SCOTCH_graphCheck (const SCOTCH_Graph * const);
207
void SCOTCH_graphSize (const SCOTCH_Graph * const, SCOTCH_Num * const, SCOTCH_Num * const);
208
void SCOTCH_graphData (const SCOTCH_Graph * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num ** const, SCOTCH_Num ** const, SCOTCH_Num ** const, SCOTCH_Num ** const, SCOTCH_Num * const, SCOTCH_Num ** const, SCOTCH_Num ** const);
209
void SCOTCH_graphStat (const SCOTCH_Graph * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, double * const, double * const, SCOTCH_Num * const, SCOTCH_Num * const, double * const, double * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, double * const, double * const);
210
int SCOTCH_graphGeomLoadChac (SCOTCH_Graph * const, SCOTCH_Geom * const, FILE * const, FILE * const, const char * const);
211
int SCOTCH_graphGeomLoadHabo (SCOTCH_Graph * const, SCOTCH_Geom * const, FILE * const, FILE * const, const char * const);
212
int SCOTCH_graphGeomLoadMmkt (SCOTCH_Graph * const, SCOTCH_Geom * const, FILE * const, FILE * const, const char * const);
213
int SCOTCH_graphGeomLoadScot (SCOTCH_Graph * const, SCOTCH_Geom * const, FILE * const, FILE * const, const char * const);
214
int SCOTCH_graphGeomSaveChac (const SCOTCH_Graph * const, const SCOTCH_Geom * const, FILE * const, FILE * const, const char * const);
215
int SCOTCH_graphGeomSaveMmkt (const SCOTCH_Graph * const, const SCOTCH_Geom * const, FILE * const, FILE * const, const char * const);
216
int SCOTCH_graphGeomSaveScot (const SCOTCH_Graph * const, const SCOTCH_Geom * const, FILE * const, FILE * const, const char * const);
218
int SCOTCH_graphMapInit (const SCOTCH_Graph * const, SCOTCH_Mapping * const, const SCOTCH_Arch * const, SCOTCH_Num * const);
219
void SCOTCH_graphMapExit (const SCOTCH_Graph * const, SCOTCH_Mapping * const);
220
int SCOTCH_graphMapLoad (const SCOTCH_Graph * const, const SCOTCH_Mapping * const, FILE * const);
221
int SCOTCH_graphMapSave (const SCOTCH_Graph * const, const SCOTCH_Mapping * const, FILE * const);
222
int SCOTCH_graphMapView (const SCOTCH_Graph * const, const SCOTCH_Mapping * const, FILE * const);
223
int SCOTCH_graphMapCompute (const SCOTCH_Graph * const, SCOTCH_Mapping * const, const SCOTCH_Strat * const);
224
int SCOTCH_graphMap (const SCOTCH_Graph * const, const SCOTCH_Arch * const, const SCOTCH_Strat * const, SCOTCH_Num * const);
225
int SCOTCH_graphPart (const SCOTCH_Graph * const, const SCOTCH_Num, const SCOTCH_Strat * const, SCOTCH_Num * const);
227
int SCOTCH_graphOrderInit (const SCOTCH_Graph * const, SCOTCH_Ordering * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const);
228
void SCOTCH_graphOrderExit (const SCOTCH_Graph * const, SCOTCH_Ordering * const);
229
int SCOTCH_graphOrderLoad (const SCOTCH_Graph * const, SCOTCH_Ordering * const, FILE * const);
230
int SCOTCH_graphOrderSave (const SCOTCH_Graph * const, const SCOTCH_Ordering * const, FILE * const);
231
int SCOTCH_graphOrderSaveMap (const SCOTCH_Graph * const, const SCOTCH_Ordering * const, FILE * const);
232
int SCOTCH_graphOrderSaveTree (const SCOTCH_Graph * const, const SCOTCH_Ordering * const, FILE * const);
233
int SCOTCH_graphOrderCompute (const SCOTCH_Graph * const, SCOTCH_Ordering * const, const SCOTCH_Strat * const);
234
int SCOTCH_graphOrderComputeList (const SCOTCH_Graph * const, SCOTCH_Ordering * const, const SCOTCH_Num, const SCOTCH_Num * const, const SCOTCH_Strat * const);
235
int SCOTCH_graphOrderFactor (const SCOTCH_Graph * const, const SCOTCH_Ordering * const, SCOTCH_Graph * const);
236
int SCOTCH_graphOrderView (const SCOTCH_Graph * const, const SCOTCH_Ordering * const, FILE * const);
237
int SCOTCH_graphOrder (const SCOTCH_Graph * const, const SCOTCH_Strat * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const);
238
int SCOTCH_graphOrderList (const SCOTCH_Graph * const, const SCOTCH_Num, const SCOTCH_Num * const, const SCOTCH_Strat * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const);
239
int SCOTCH_graphOrderCheck (const SCOTCH_Graph * const, const SCOTCH_Ordering * const);
241
int SCOTCH_meshInit (SCOTCH_Mesh * const);
242
void SCOTCH_meshExit (SCOTCH_Mesh * const);
243
int SCOTCH_meshLoad (SCOTCH_Mesh * const, FILE * const, const SCOTCH_Num);
244
int SCOTCH_meshSave (const SCOTCH_Mesh * const, FILE * const);
245
int SCOTCH_meshBuild (SCOTCH_Mesh * const, const SCOTCH_Num, const SCOTCH_Num, const SCOTCH_Num, const SCOTCH_Num, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num * const, const SCOTCH_Num, const SCOTCH_Num * const);
246
int SCOTCH_meshCheck (const SCOTCH_Mesh * const);
247
void SCOTCH_meshSize (const SCOTCH_Mesh * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const);
248
void SCOTCH_meshData (const SCOTCH_Mesh * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num ** const, SCOTCH_Num ** const, SCOTCH_Num ** const, SCOTCH_Num ** const, SCOTCH_Num ** const, SCOTCH_Num * const, SCOTCH_Num ** const, SCOTCH_Num * const);
249
void SCOTCH_meshStat (const SCOTCH_Mesh * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, double * const, double * const, SCOTCH_Num * const, SCOTCH_Num * const, double * const, double * const, SCOTCH_Num * const, SCOTCH_Num * const, double * const, double * const);
250
int SCOTCH_meshGraph (const SCOTCH_Mesh * const, SCOTCH_Graph * const);
251
int SCOTCH_meshGeomLoadHabo (SCOTCH_Mesh * const, SCOTCH_Geom * const, FILE * const, FILE * const, const char * const);
252
int SCOTCH_meshGeomLoadScot (SCOTCH_Mesh * const, SCOTCH_Geom * const, FILE * const, FILE * const, const char * const);
253
int SCOTCH_meshGeomSaveScot (const SCOTCH_Mesh * const, const SCOTCH_Geom * const, FILE * const, FILE * const, const char * const);
255
int SCOTCH_meshOrderInit (const SCOTCH_Mesh * const, SCOTCH_Ordering * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const);
256
void SCOTCH_meshOrderExit (const SCOTCH_Mesh * const, SCOTCH_Ordering * const);
257
int SCOTCH_meshOrderSave (const SCOTCH_Mesh * const, const SCOTCH_Ordering * const, FILE * const);
258
int SCOTCH_meshOrderSaveMap (const SCOTCH_Mesh * const, const SCOTCH_Ordering * const, FILE * const);
259
int SCOTCH_meshOrderSaveTree (const SCOTCH_Mesh * const, const SCOTCH_Ordering * const, FILE * const);
260
int SCOTCH_meshOrderCompute (const SCOTCH_Mesh * const, SCOTCH_Ordering * const, const SCOTCH_Strat * const);
261
int SCOTCH_meshOrderComputeList (const SCOTCH_Mesh * const, SCOTCH_Ordering * const, const SCOTCH_Num, const SCOTCH_Num * const, const SCOTCH_Strat * const);
262
int SCOTCH_meshOrder (const SCOTCH_Mesh * const, const SCOTCH_Strat * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const);
263
int SCOTCH_meshOrderList (const SCOTCH_Mesh * const, const SCOTCH_Num, const SCOTCH_Num * const, const SCOTCH_Strat * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const);
264
int SCOTCH_meshOrderCheck (const SCOTCH_Mesh * const, const SCOTCH_Ordering * const);
266
void SCOTCH_randomReset (void);
268
int SCOTCH_stratInit (SCOTCH_Strat * const);
269
void SCOTCH_stratExit (SCOTCH_Strat * const);
270
void SCOTCH_stratFree (SCOTCH_Strat * const);
271
int SCOTCH_stratSave (const SCOTCH_Strat * const, FILE * const);
272
#ifdef SCOTCH_PTSCOTCH
273
int SCOTCH_stratDgraphMap (SCOTCH_Strat * const, const char * const);
274
int SCOTCH_stratDgraphOrder (SCOTCH_Strat * const, const char * const);
275
#endif /* SCOTCH_PTSCOTCH */
276
int SCOTCH_stratGraphBipart (SCOTCH_Strat * const, const char * const);
277
int SCOTCH_stratGraphMap (SCOTCH_Strat * const, const char * const);
278
int SCOTCH_stratGraphOrder (SCOTCH_Strat * const, const char * const);
279
int SCOTCH_stratMeshOrder (SCOTCH_Strat * const, const char * const);
281
void SCOTCH_memoryTrace (void);
282
void SCOTCH_memoryUntrace (void);
283
void SCOTCH_memoryTraceReset (void);
284
unsigned long SCOTCH_memoryTraceGet (void);
288
#endif /* __cplusplus */