-// Copyright (C) 2007-2015 CEA/DEN, EDF R&D
+// Copyright (C) 2007-2024 CEA, EDF
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
-%module MEDPartitioner
-
-%include std_string.i
-
%{
-#include "MEDFileData.hxx"
-
#include "MEDPARTITIONER_MEDPartitioner.hxx"
#include "MEDPARTITIONER.hxx"
#include "MEDPARTITIONER_Graph.hxx"
-using namespace ParaMEDMEM;
-using namespace INTERP_KERNEL;
using namespace MEDPARTITIONER;
%}
-%feature("autodoc", "1");
-%feature("docstring");
+
%newobject MEDPARTITIONER::MEDPartitioner::New;
%newobject MEDPARTITIONER::MEDPartitioner::Graph;
+%newobject MEDPARTITIONER::MEDPartitioner::Graph::getGraph;
+%newobject MEDPARTITIONER::MEDPartitioner::Graph::getPartition;
%newobject MEDPARTITIONER::MEDPartitioner::getMEDFileData;
-%feature("unref") ParaMEDMEM::MEDFileData "$this->decrRef();"
-
-%nodefaultctor;
-
-%rename (InterpKernelException) INTERP_KERNEL::Exception;
namespace MEDPARTITIONER
{
class Graph
{
public:
- virtual void partGraph(int ndomain, const std::string& options_string="", ParaDomainSelector *sel=0) throw(INTERP_KERNEL::Exception);
- const ParaMEDMEM::MEDCouplingSkyLineArray *getGraph() const;
- const ParaMEDMEM::MEDCouplingSkyLineArray *getPartition() const;
+ typedef enum {METIS,SCOTCH,PTSCOTCH} splitter_type;
+ public:
+ virtual void partGraph(int ndomain, const std::string& options_string="", ParaDomainSelector *sel=0);
+ MEDCoupling::MEDCouplingSkyLineArray *getGraph() const
+ {
+ const MEDCoupling::MEDCouplingSkyLineArray *ret(self->getGraph());
+ if(ret)
+ ret->incrRef();
+ return const_cast<MEDCoupling::MEDCouplingSkyLineArray *>(ret);
+ }
+ const MEDCoupling::MEDCouplingSkyLineArray *getPartition() const
+ {
+ const MEDCoupling::MEDCouplingSkyLineArray *ret(self->getPartition());
+ if(ret)
+ ret->incrRef();
+ return const_cast<MEDCoupling::MEDCouplingSkyLineArray *>(ret);
+ }
int nbVertices() const;
};
class MEDPartitioner
{
public:
- MEDPartitioner(const std::string& filename, int ndomains=1, const std::string& library="metis",bool creates_boundary_faces=false, bool create_joints=false, bool mesure_memory=false) throw(INTERP_KERNEL::Exception);
- MEDPartitioner(const ParaMEDMEM::MEDFileData* fileData, int ndomains=1, const std::string& library="metis",bool creates_boundary_faces=false, bool create_joints=false, bool mesure_memory=false) throw(INTERP_KERNEL::Exception);
- MEDPartitioner(const ParaMEDMEM::MEDFileData* fileData, Graph* graph, bool creates_boundary_faces=false, bool create_joints=false, bool mesure_memory=false) throw(INTERP_KERNEL::Exception);
- static MEDPARTITIONER::Graph* Graph(ParaMEDMEM::MEDCouplingSkyLineArray* graph, Graph::splitter_type split=Graph::METIS, int* edgeweight=0) throw(INTERP_KERNEL::Exception);
- ParaMEDMEM::MEDFileData* getMEDFileData() throw(INTERP_KERNEL::Exception);
- void write(const std::string& filename) throw(INTERP_KERNEL::Exception);
+ MEDPartitioner(const std::string& filename, int ndomains=1, const std::string& library="metis",bool create_boundary_faces=false, bool create_joints=false, bool mesure_memory=false);
+ MEDPartitioner(const MEDCoupling::MEDFileData* fileData, int ndomains=1, const std::string& library="metis",bool create_boundary_faces=false, bool create_joints=false, bool mesure_memory=false);
+ MEDPartitioner(const MEDCoupling::MEDFileData* fileData, Graph* graph, bool create_boundary_faces=false, bool create_joints=false, bool mesure_memory=false);
+ static MEDPARTITIONER::Graph* Graph(MEDCoupling::MEDCouplingSkyLineArray* graph, Graph::splitter_type split=Graph::METIS, int* edgeweight=0, MEDCoupling::DataArrayIdType* vlbloctab=0);
+ static std::vector<std::string> AvailableAlgorithms();
+ static std::vector<std::string> AllAlgorithms();
+ MEDCoupling::MEDFileData* getMEDFileData();
+ void write(const std::string& filename);
};
}