X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDPartitioner%2FMEDPARTITIONER_metis.c;h=0b372f4e6d573d185292ef0f0b5ecba8aad3d710;hb=e057263132f3cb4871fb280f8d9c963ba17567a1;hp=98ef41eeee3bcd86ec3a616d95d0e53ba3056f21;hpb=e547c6bc6de6b7f929fa9ba06b0e4824a8c51d00;p=tools%2Fmedcoupling.git diff --git a/src/MEDPartitioner/MEDPARTITIONER_metis.c b/src/MEDPartitioner/MEDPARTITIONER_metis.c index 98ef41eee..0b372f4e6 100644 --- a/src/MEDPartitioner/MEDPARTITIONER_metis.c +++ b/src/MEDPartitioner/MEDPARTITIONER_metis.c @@ -1,9 +1,9 @@ -// Copyright (C) 2007-2013 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 @@ -26,32 +26,56 @@ #include "MEDPARTITIONER_metis.h" -#if defined(MED_ENABLE_METIS) - #include "defs.h" - #include "struct.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 }