-// Copyright (C) 2007-2015 CEA/DEN, EDF R&D
+// Copyright (C) 2007-2023 CEA, EDF
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
#define __MEDPARTITIONER_GRAPH_HXX__
#include "MEDPARTITIONER.hxx"
+#include "MCAuto.hxx"
+#include "MCType.hxx"
#include <string>
class MEDCouplingSkyLineArray;
}
+using namespace MEDCoupling;
+
namespace MEDPARTITIONER
{
class ParaDomainSelector;
class MEDPARTITIONER_EXPORT Graph
{
public:
- typedef enum {METIS,SCOTCH} splitter_type;
+ typedef enum {METIS,SCOTCH,PTSCOTCH} splitter_type;
- Graph(){};
- //creates a graph from a SKYLINEARRAY
- Graph(MEDCoupling::MEDCouplingSkyLineArray* graph, int* edgeweight=0);
+ Graph();
+ //creates a graph from a SKYLINEARRAY- WARNING!! Graph takes ownership of the array.
+ Graph(MEDCouplingSkyLineArray* graph, int* edgeweight=0);
virtual ~Graph();
void setEdgesWeights(int *edgeweight) { _edge_weight=edgeweight; }
virtual void partGraph(int ndomain, const std::string& options_string="", ParaDomainSelector *sel=0) = 0;
//returns the partitioning
- const int *getPart() const;
+ const mcIdType *getPart() const;
//returns the number of graph vertices (which can correspond to the cells in the mesh!)
- int nbVertices() const;
+ mcIdType nbVertices() const;
// returns nb of domains in _partition
int nbDomains() const;
-
- const MEDCoupling::MEDCouplingSkyLineArray *getGraph() const { return _graph; }
- const MEDCoupling::MEDCouplingSkyLineArray *getPartition() const { return _partition; }
+
+ const MEDCouplingSkyLineArray *getGraph() const { return (const MEDCouplingSkyLineArray*)_graph; }
+ const MEDCouplingSkyLineArray *getPartition() const { return (const MEDCouplingSkyLineArray*)_partition; }
protected:
- MEDCoupling::MEDCouplingSkyLineArray* _graph;
- MEDCoupling::MEDCouplingSkyLineArray* _partition;
+ MCAuto<MEDCouplingSkyLineArray> _graph;
+ MCAuto<MEDCouplingSkyLineArray> _partition;
int* _edge_weight;
int* _cell_weight;
};