CEPS  24.01
Cardiac ElectroPhysiology Simulator
PtscotchPartitioner.hpp
Go to the documentation of this file.
1 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2  This file is part of CEPS.
3 
4  CEPS is free software: you can redistribute it and/or modify
5  it under the terms of the GNU General Public License as published by
6  the Free Software Foundation, either version 3 of the License, or
7  (at your option) any later version.
8 
9  CEPS 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
12  GNU General Public License for more details.
13 
14  You should have received a copy of the GNU General Public License
15  along with CEPS (see file LICENSE at root of project).
16  If not, see <https://www.gnu.org/licenses/>.
17 
18 
19  Copyright 2019-2024 Inria, Universite de Bordeaux
20 
21  Authors, in alphabetical order:
22 
23  Pierre-Elliott BECUE, Florian CARO, Yves COUDIERE(*), Andjela DAVIDOVIC,
24  Charlie DOUANLA-LONTSI, Marc FUENTES, Mehdi JUHOOR, Michael LEGUEBE(*),
25  Pauline MIGERDITICHAN, Valentin PANNETIER(*), Nejib ZEMZEMI.
26  * : currently active authors
27 
28 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
31 #pragma once
32 
33 #include "common/CepsCommon.hpp"
36 
47 {
48 public:
50  PtscotchPartitioner() = delete;
51 
53  explicit PtscotchPartitioner(Geometry *geom);
54 
56  ~PtscotchPartitioner() override = default;
57 
67  CepsUInt
68  computePartition() override;
69 
70 private:
75 
115  void
117 
119  void
121 
123  void
125 
127  void
129 };
std::vector< _Type, _Alloc > CepsVector
C++ vector.
Definition: CepsTypes.hpp:155
std::make_unsigned_t< CepsInt > CepsUInt
Unsigned version on CepsInt.
Definition: CepsTypes.hpp:109
Class is used to compute a geometry (multiple meshes) partitioning.
Encapsulates all the geometrical data.
Definition: Geometry.hpp:50
Geometry partitioning with PtScotch.
CepsVector< CepsInt > nodePartitioning()
Compute a Partitioning using Scotch on the primal graph GeomNode,.
PtscotchPartitioner()=delete
no default constructor
~PtscotchPartitioner() override=default
Destructor.
CepsUInt computePartition() override
Calls the partitioning method specified in the Geometry.
void buildCellPartitionMap(CepsVector< CepsInt > &nodeOwnership)
Gives new labels to cell such that they are grouped on each cpu.
void removeFalseDuplicates(CepsVector< CepsInt > &nodeOwnership)
Internal routine that removes the nodes prev. added for multiple unknowns per node.
void buildDualGraph(CepsVector< CepsInt > &verttab, CepsVector< CepsInt > &edgetab)
Convert a graph from elements (nodeIndicesOffset,nodeIndices) to a GeomNode graph in Scotch format.
void restrictCoupledNodesToLocal()
Keep only coupled nodes local to the cpu.