Home
About Us
Publications
Developers
Installation
Examples
Documentation
SomeWebsiteLogo
Home
About Us
Publications
Developers
Installation
Examples
Documentation
src
partitioning
partitioner_factory.C
Go to the documentation of this file.
1
// The libMesh Finite Element Library.
2
// Copyright (C) 2002-2018 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
// Local Includes
21
#include "
libmesh/libmesh_config.h
"
22
#include "
libmesh/centroid_partitioner.h
"
23
#include "
libmesh/metis_partitioner.h
"
24
#include "
libmesh/parmetis_partitioner.h
"
25
#include "
libmesh/linear_partitioner.h
"
26
#include "
libmesh/hilbert_sfc_partitioner.h
"
27
#include "
libmesh/morton_sfc_partitioner.h
"
28
#include "
libmesh/factory.h
"
29
30
namespace
libMesh
31
{
32
33
34
//-------------------------------------------------
35
// Full specialization for the Factory<Partitioner>
36
template
<>
37
std::map<std::string, Factory<Partitioner> *> &
38
Factory<Partitioner>::factory_map
()
39
{
40
static
std::map<std::string, Factory<Partitioner> *> _map;
41
return
_map;
42
}
43
44
45
46
// ------------------------------------------------------------
47
// Register Partitioning classes with the factory. These will never
48
// be called from user code, they just need to get instantiated. Hide
49
// them in an anonymous namespace to prevent name clashes
50
namespace
{
51
52
#ifdef LIBMESH_HAVE_METIS
53
FactoryImp<MetisPartitioner, Partitioner>
metis (
"Metis"
);
54
#endif
55
56
#ifdef LIBMESH_HAVE_PARMETIS
57
FactoryImp<ParmetisPartitioner, Partitioner>
parmetis (
"Parmetis"
);
58
#endif
59
60
#ifdef LIBMESH_HAVE_SFCURVES
61
FactoryImp<SFCPartitioner, Partitioner>
sfc (
"SFCurves"
);
62
FactoryImp<HilbertSFCPartitioner, Partitioner>
hilbert (
"Hilbert"
);
63
FactoryImp<MortonSFCPartitioner, Partitioner>
morton (
"Morton"
);
64
#endif
65
66
FactoryImp<LinearPartitioner, Partitioner>
linear (
"Linear"
);
67
FactoryImp<CentroidPartitioner, Partitioner>
centroid (
"Centroid"
);
68
69
}
70
71
}
// namespace libMesh
parmetis_partitioner.h
libMesh::Factory::factory_map
static std::map< std::string, Factory< Base > * > & factory_map()
libMesh
Definition:
default_coupling.C:31
libMesh::FactoryImp
Definition:
factory.h:88
centroid_partitioner.h
hilbert_sfc_partitioner.h
factory.h
linear_partitioner.h
metis_partitioner.h
libmesh_config.h
morton_sfc_partitioner.h
generated by