Salome HOME
Fix MEDCoupling tests currently failing on Windows OS:
[tools/medcoupling.git] / src / MEDPartitioner / MEDPARTITIONER_metis.c
index ec8cde2bc19f4a9d306950ab2d1a87ff18545a1d..8e4d680677c74f06468bf67731b55bde8a7dacdb 100644 (file)
@@ -1,9 +1,9 @@
-// Copyright (C) 2007-2012  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2022  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
 }