-// Copyright (C) 2007-2012 CEA/DEN, EDF R&D
+// Copyright (C) 2007-2016 CEA/DEN, EDF R&D
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
#include "MEDPARTITIONER_metis.h"
-#if defined(MED_ENABLE_METIS)
- #include <metis.h>
+#if defined(MED_ENABLE_METIS) & !defined(MED_ENABLE_PARMETIS)
+ #ifndef MED_ENABLE_METIS_V5
+ #include "defs.h"
+ #endif // MED_ENABLE_METIS_V5
+ #include "metis.h"
+ #ifdef MED_ENABLE_METIS_V5
+ #define idxtype idx_t
+ #endif // MED_ENABLE_METIS_V5
#else
typedef int idxtype;
-#endif
+#endif // defined(MED_ENABLE_METIS) & !defined(MED_ENABLE_PARMETIS)
-void MEDPARTITIONER_METIS_PartGraphRecursive(int *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt,
- idxtype *adjwgt, int *wgtflag, int *numflag, int *nparts,
+void MEDPARTITIONER_METIS_PartGraphRecursive(int *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt,
+ idxtype *adjwgt, int *wgtflag, int *numflag, int *nparts,
int *options, int *edgecut, idxtype *part)
{
#if defined(MED_ENABLE_METIS)
- METIS_PartGraphRecursive(nvtxs, xadj, adjncy, vwgt,
- adjwgt, wgtflag, numflag, nparts,
+ #ifndef MED_ENABLE_METIS_V5
+ METIS_PartGraphRecursive(nvtxs, xadj, adjncy, vwgt,
+ adjwgt, wgtflag, numflag, nparts,
+ options, edgecut, part);
+ #else
+ int ncon=1;
+ options[METIS_OPTION_NCUTS]=1;
+ options[METIS_OPTION_NITER]=1;
+ options[METIS_OPTION_UFACTOR]=1;
+ METIS_PartGraphRecursive(nvtxs, &ncon, xadj, adjncy, vwgt, 0 /* vsize*/,
+ adjwgt, nparts,/* tpwgts*/ 0,/* ubvec */ 0,
options, edgecut, part);
+ #endif
#endif
}
-void MEDPARTITIONER_METIS_PartGraphKway(int *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt,
- idxtype *adjwgt, int *wgtflag, int *numflag, int *nparts,
+void MEDPARTITIONER_METIS_PartGraphKway(int *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt,
+ idxtype *adjwgt, int *wgtflag, int *numflag, int *nparts,
int *options, int *edgecut, idxtype *part)
{
#if defined(MED_ENABLE_METIS)
- METIS_PartGraphKway(nvtxs, xadj, adjncy, vwgt,
- adjwgt, wgtflag, numflag, nparts,
+ #ifndef MED_ENABLE_METIS_V5
+ METIS_PartGraphKway(nvtxs, xadj, adjncy, vwgt,
+ adjwgt, wgtflag, numflag, nparts,
+ options, edgecut, part);
+ #else
+ int ncon=1;
+ options[METIS_OPTION_NCUTS]=1;
+ options[METIS_OPTION_NITER]=1;
+ options[METIS_OPTION_UFACTOR]=1;
+ METIS_PartGraphKway(nvtxs, &ncon, xadj, adjncy, vwgt, 0 /* vsize*/,
+ adjwgt, nparts, 0 , 0 /* ubvec */,
options, edgecut, part);
+ #endif
#endif
}