ug4
load_balancing.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2011-2015: G-CSC, Goethe University Frankfurt
3  * Author: Sebastian Reiter
4  *
5  * This file is part of UG4.
6  *
7  * UG4 is free software: you can redistribute it and/or modify it under the
8  * terms of the GNU Lesser General Public License version 3 (as published by the
9  * Free Software Foundation) with the following additional attribution
10  * requirements (according to LGPL/GPL v3 §7):
11  *
12  * (1) The following notice must be displayed in the Appropriate Legal Notices
13  * of covered and combined works: "Based on UG4 (www.ug4.org/license)".
14  *
15  * (2) The following notice must be displayed at a prominent place in the
16  * terminal output of covered works: "Based on UG4 (www.ug4.org/license)".
17  *
18  * (3) The following bibliography is recommended for citation and must be
19  * preserved in all covered files:
20  * "Reiter, S., Vogel, A., Heppner, I., Rupp, M., and Wittum, G. A massively
21  * parallel geometric multigrid solver on hierarchically distributed grids.
22  * Computing and visualization in science 16, 4 (2013), 151-164"
23  * "Vogel, A., Reiter, S., Rupp, M., Nägel, A., and Wittum, G. UG4 -- a novel
24  * flexible software system for simulating pde based models on high performance
25  * computers. Computing and visualization in science 16, 4 (2013), 165-179"
26  *
27  * This program is distributed in the hope that it will be useful,
28  * but WITHOUT ANY WARRANTY; without even the implied warranty of
29  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
30  * GNU Lesser General Public License for more details.
31  */
32 
33 #ifndef __H__UG__load_balancing__
34 #define __H__UG__load_balancing__
35 
36 #include <vector>
39 #include "lib_grid/multi_grid.h"
42 
43 namespace ug
44 {
45 
48 
58 template <class TElem, class TIterator, class TAAPos>
60  TIterator begin, TIterator end,
61  int numCellsX, int numCellsY, int numCellsZ,
62  TAAPos& aaPos,
63  typename Grid::traits<TElem>::callback cbConsiderElem
64  = ConsiderAll(),
65  int bucketSubset = -1);
66 
69 
77 template <class TGeomBaseObj>
78 bool PartitionGrid_MetisKway(SubsetHandler& shPartitionOut,
79  Grid& grid, int numParts);
80 
83 
100 template <class TGeomBaseObj>
101 bool PartitionMultiGrid_MetisKway(SubsetHandler& shPartitionOut,
102  MultiGrid& grid, int numParts,
103  size_t baseLevel = 0,
104  int hWeight = 1, int vWeight = 1);
105 
108 
123 template <class TGeomBaseObj>
124 bool PartitionMultiGrid_MetisKway(SubsetHandler& shPartitionOut,
125  MultiGrid& grid, int numParts, size_t baseLevel,
126  boost::function<int (TGeomBaseObj*, TGeomBaseObj*)>& weightFct);
127 
130 
142 template <class TGeomBaseObj>
144  MultiGrid& mg, int numParts, size_t level);
145 
148 
157 template <class TGeomBaseObj>
159  MultiGrid& mg, int numParts, size_t level);
160 
161 }// end of namespace
162 
163 
165 // include implementation
166 #include "load_balancing_impl.hpp"
167 
168 #endif
bool PartitionElements_RegularGrid(SubsetHandler &shOut, TIterator begin, TIterator end, int numCellsX, int numCellsY, int numCellsZ, TAAPos &aaPos, typename Grid::traits< TElem >::callback cbConsiderElem=ConsiderAll(), int bucketSubset=-1)
Partitions the elements in the grid by sorting them into a regular grid.
Definition: load_balancing_impl.hpp:50
the ug namespace
bool PartitionGrid_MetisKway(SubsetHandler &shPartitionOut, Grid &grid, int numParts)
Partitions the elements in the grid using the METIS library.
Definition: load_balancing.cpp:64
bool PartitionMultiGridLevel_ParmetisKway(SubsetHandler &shPartitionOut, MultiGrid &mg, int numParts, size_t level)
Partitions the elements in the multi-grid using the PARMETIS library.
Definition: load_balancing.cpp:515
GridSubsetHandler SubsetHandler
Definition: subset_handler_grid.h:376
bool PartitionMultiGrid_MetisKway(SubsetHandler &shPartitionOut, MultiGrid &mg, int numParts, size_t baseLevel, int hWeight, int vWeight)
Partitions the elements in the multi-grid using the METIS library.
Definition: load_balancing.cpp:137
bool PartitionMultiGridLevel_MetisKway(SubsetHandler &shPartitionOut, MultiGrid &mg, int numParts, size_t level)
Partitions the elements in the multi-grid using the METIS library.
Definition: load_balancing.cpp:327
boost::function< bool(base_object *)> callback
callback type for the elements base type.
Definition: grid.h:150