20 #ifndef LIBMESH_PARMETIS_PARTITIONER_H 21 #define LIBMESH_PARMETIS_PARTITIONER_H 24 #include "libmesh/id_types.h" 25 #include "libmesh/partitioner.h" 30 #include <unordered_map> 81 virtual std::unique_ptr<Partitioner>
clone ()
const override 83 return std::make_unique<ParmetisPartitioner>(*this);
96 const unsigned int n)
override;
102 const unsigned int n)
override;
104 #ifdef LIBMESH_HAVE_PARMETIS 131 #endif // LIBMESH_PARMETIS_PARTITIONER_H std::unique_ptr< ParmetisHelper > _pmetis
Pointer to the Parmetis-specific data structures.
ParmetisPartitioner & operator=(const ParmetisPartitioner &)=delete
This class contains a unique_ptr member, so it can't be default copy assigned.
virtual PartitionerType type() const override
void initialize(const MeshBase &mesh, const unsigned int n_sbdmns)
Initialize data structures.
virtual void _do_repartition(MeshBase &mesh, const unsigned int n) override
Parmetis can handle dynamically repartitioning a mesh such that the redistribution costs are minimize...
virtual void build_graph(const MeshBase &mesh) override
Build the graph.
ParmetisPartitioner()
Default and copy ctors.
The libMesh namespace provides an interface to certain functionality in the library.
The ParmetisPartitioner uses the Parmetis graph partitioner to partition the elements.
virtual std::unique_ptr< Partitioner > clone() const override
virtual ~ParmetisPartitioner()
The destructor is out-of-line-defaulted to play nice with forward declarations.
This is the MeshBase class.
The Partitioner class provides a uniform interface for partitioning algorithms.
PartitionerType
Defines an enum for mesh partitioner types.
virtual void _do_partition(MeshBase &mesh, const unsigned int n) override
Partition the MeshBase into n subdomains.