X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDPartitioner%2FMEDPARTITIONER_ParMetisGraph.cxx;h=a17bd6f8b8013ec9ab3b145adee15159b3205487;hb=8411b13fec372c7635bf04d2bb81a869dc038fdd;hp=5e85a6f94bf59bd07da938dbf5fc63837e359ba9;hpb=10f37bf6f33a762626d7f1093b2f5450c1688667;p=tools%2Fmedcoupling.git diff --git a/src/MEDPartitioner/MEDPARTITIONER_ParMetisGraph.cxx b/src/MEDPartitioner/MEDPARTITIONER_ParMetisGraph.cxx index 5e85a6f94..a17bd6f8b 100644 --- a/src/MEDPartitioner/MEDPARTITIONER_ParMetisGraph.cxx +++ b/src/MEDPartitioner/MEDPARTITIONER_ParMetisGraph.cxx @@ -1,9 +1,9 @@ -// Copyright (C) 2007-2012 CEA/DEN, EDF R&D +// Copyright (C) 2007-2020 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 @@ -17,35 +17,38 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -#include "MEDPARTITIONER_MetisGraph.hxx" +#include "MEDPARTITIONER_ParMetisGraph.hxx" #include "MEDPARTITIONER_ParaDomainSelector.hxx" #include "MEDPARTITIONER_Utils.hxx" +#include "MEDCouplingSkyLineArray.hxx" #include "InterpKernelException.hxx" #include #ifdef MED_ENABLE_PARMETIS -#include -#include "parmetis.h" +#include +// #if PARMETIS_MAJOR_VERSION == 4 +// #define ParMETIS_PartKway ParMETIS_V3_PartKway +// #endif #endif using namespace MEDPARTITIONER; -METISGraph::METISGraph():Graph() +ParMETISGraph::ParMETISGraph():Graph() { } -METISGraph::METISGraph(MEDPARTITIONER::SkyLineArray* graph, int* edgeweight) +ParMETISGraph::ParMETISGraph(MEDCoupling::MEDCouplingSkyLineArray* graph, int* edgeweight) :Graph(graph,edgeweight) { } -METISGraph::~METISGraph() +ParMETISGraph::~ParMETISGraph() { } -void METISGraph::partGraph(int ndomain, +void ParMETISGraph::partGraph(int ndomain, const std::string& options_string, ParaDomainSelector *parallelizer) { @@ -53,13 +56,20 @@ void METISGraph::partGraph(int ndomain, vector ran,vx,va; //for randomize if (MyGlobals::_Verbose>10) - std::cout << "proc " << MyGlobals::_Rank << " : METISGraph::partGraph" << std::endl; + std::cout << "proc " << MyGlobals::_Rank << " : ParMETISGraph::partGraph" << std::endl; // number of graph vertices - int n=_graph->getNumberOf(); + int n=FromIdType(_graph->getNumberOf()); //graph +#ifdef MEDCOUPLING_USE_64BIT_IDS + std::vector indexVec( _graph->getIndex(), _graph->getIndexArray()->end() ); + std::vector valueVec( _graph->getValues(), _graph->getValuesArray()->end() ); + int * xadj=indexVec.data(); + int * adjncy=valueVec.data(); +#else int * xadj=const_cast(_graph->getIndex()); - int * adjncy=const_cast(_graph->getValue()); + int * adjncy=const_cast(_graph->getValues()); +#endif //constraints int * vwgt=_cell_weight; int * adjwgt=_edge_weight; @@ -81,12 +91,12 @@ void METISGraph::partGraph(int ndomain, // output parameters int edgecut; #if !defined(MED_ENABLE_PARMETIS) - throw INTERP_KERNEL::Exception("METISGraph::partGraph : PARMETIS is not available. Check your products, please."); + throw INTERP_KERNEL::Exception("ParMETISGraph::partGraph : PARMETIS is not available. Check your products, please."); #else int* partition=new int[n]; if (MyGlobals::_Verbose>10) - std::cout << "proc " << MyGlobals::_Rank << " : METISGraph::partGraph ParMETIS_PartKway new" << std::endl; + std::cout << "proc " << MyGlobals::_Rank << " : ParMETISGraph::partGraph ParMETIS_PartKway new" << std::endl; int * vtxdist=parallelizer->getProcVtxdist(); MPI_Comm comm=MPI_COMM_WORLD; ParMETIS_PartKway(vtxdist, xadj, adjncy, vwgt, @@ -107,8 +117,8 @@ void METISGraph::partGraph(int ndomain, MPI_Comm *comm); */ - vector index(n+1); - vector value(n); + vector index(n+1); + vector value(n); index[0]=0; if (ran.size()>0 && MyGlobals::_Atomize==0) //there is randomize { @@ -117,7 +127,7 @@ void METISGraph::partGraph(int ndomain, for (int i=0; i