dune-composites (unstable)

parallelPartition.hh
1#include <array>
2
3#ifndef PARALLEL_PARTITION__HH
4#define PARALLEL_PARTITION__HH
5
6namespace Dune{
7 namespace Composites{
8
10 template<int d>
11 class YaspPartition : public Dune::Yasp::Partitioning<d>
12 {
13 public:
14 using iTuple = std::array<int,d>;
15 void partition(const iTuple& size, int numProc, iTuple& dims, int overlap) const override
16 {
17 dims = {1,1,1};
18 if(dims[0]*dims[1]*dims[2]!=numProc){
19
20 if(int(sqrt(numProc))*int(sqrt(numProc)) == numProc){
21 dims[0] = sqrt(numProc);
22 dims[1] = sqrt(numProc);
23 }
24 else{
25 if(int(numProc/8)*8 == numProc){
26 dims[0] = 8;
27 dims[1] = int(numProc/8);
28 dims[2] = 1;
29 }
30 else{
31 dims[0] = numProc;
32 }
33 }
34 }
35 }
36 };
37
38 }
39}
40
41#endif
Partition yaspgrid for parallelism.
Definition: parallelPartition.hh:12
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden & Uni Heidelberg  |  generated with Hugo v0.111.3 (Apr 15, 23:04, 2025)