libMesh
metis_partitioner.h
Go to the documentation of this file.
1 // The libMesh Finite Element Library.
2 // Copyright (C) 2002-2017 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner
3 
4 // This library is free software; you can redistribute it and/or
5 // modify it under the terms of the GNU Lesser General Public
6 // License as published by the Free Software Foundation; either
7 // version 2.1 of the License, or (at your option) any later version.
8 
9 // This library is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 // Lesser General Public License for more details.
13 
14 // You should have received a copy of the GNU Lesser General Public
15 // License along with this library; if not, write to the Free Software
16 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 
18 
19 
20 #ifndef LIBMESH_METIS_PARTITIONER_H
21 #define LIBMESH_METIS_PARTITIONER_H
22 
23 // Local Includes
24 #include "libmesh/partitioner.h"
25 
26 namespace libMesh
27 {
28 
38 {
39 public:
40 
45 
49  virtual UniquePtr<Partitioner> clone () const libmesh_override
50  {
52  }
53 
54  virtual void attach_weights(ErrorVector * weights) libmesh_override { _weights = weights; }
55 
59  virtual void partition_range(MeshBase & mesh,
62  const unsigned int n) libmesh_override;
63 
64 protected:
65 
69  virtual void _do_partition (MeshBase & mesh,
70  const unsigned int n) libmesh_override;
71 };
72 
73 } // namespace libMesh
74 
75 #endif // LIBMESH_METIS_PARTITIONER_H
The definition of the element_iterator struct.
Definition: mesh_base.h:1476
The ErrorVector is a specialization of the StatisticsVector for error data computed on a finite eleme...
Definition: error_vector.h:50
MeshBase & mesh
IterBase * end
Also have a polymorphic pointer to the end object, this prevents iterating past the end...
The MetisPartitioner uses the Metis graph partitioner to partition the elements.
The libMesh namespace provides an interface to certain functionality in the library.
This is the MeshBase class.
Definition: mesh_base.h:68
The Partitioner class provides a uniform interface for partitioning algorithms.
Definition: partitioner.h:48
std::unique_ptr< T > UniquePtr
Definition: auto_ptr.h:46
ErrorVector * _weights
The weights that might be used for partitioning.
Definition: partitioner.h:216
virtual void _do_partition(MeshBase &mesh, const unsigned int n) libmesh_override
Partition the MeshBase into n subdomains.
virtual void partition_range(MeshBase &mesh, MeshBase::element_iterator it, MeshBase::element_iterator end, const unsigned int n) libmesh_override
Called by the SubdomainPartitioner to partition elements in the range (it, end).
virtual UniquePtr< Partitioner > clone() const libmesh_override
virtual void attach_weights(ErrorVector *weights) libmesh_override
Attach weights that can be used for partitioning.