Rheolef
7.2
an efficient C++ finite element environment
Loading...
Searching...
No Matches
geo_domain_indirect_mpi.cc
Go to the documentation of this file.
1
21
22
#include "rheolef/config.h"
23
24
#ifdef _RHEOLEF_HAVE_MPI
25
#include "rheolef/geo_domain_indirect.h"
26
27
namespace
rheolef
{
28
29
template
<
class
T>
30
distributor
31
geo_domain_indirect_rep<T,distributed>::geo_element_ios_ownership
(
size_type
dim)
const
32
{
33
if
(dim == base::map_dimension())
return
base::_indirect.ini_ownership();
34
check_macro
(dim < base::map_dimension(),
"unexpected dimension = "
<< dim <<
" > domain dimension = "
<< base::map_dimension());
35
return
base::_omega.geo_element_ios_ownership(dim);
36
}
37
template
<
class
T>
38
typename
geo_domain_indirect_rep<T,distributed>::const_reference
39
geo_domain_indirect_rep<T,distributed>::dis_get_geo_element
(
size_type
dim,
size_type
dis_ige)
const
40
{
41
#ifdef TODO
42
// see geo_domain_indirect_seq.cc : get_geo_element (dim, ige)
43
if
(dim == map_dimension())
return
base::_omega.get_geo_element (dim, _indirect.oige(ige).index());
44
#endif
// TODO
45
return
base::_omega.dis_get_geo_element (dim, dis_ige);
46
}
47
template
<
class
T>
48
typename
geo_domain_indirect_rep<T,distributed>::size_type
49
geo_domain_indirect_rep<T,distributed>::ige2ios_dis_ige
(
size_type
dim,
size_type
ige)
const
50
{
51
if
(dim == base::map_dimension())
return
base::_indirect.ioige2ini_dis_ioige (ige);
52
check_macro
(dim < base::map_dimension(),
"unexpected dimension = "
<< dim <<
" > domain dimension = "
<< base::map_dimension());
53
return
base::_omega.ige2ios_dis_ige (dim, ige);
54
}
55
template
<
class
T>
56
typename
geo_domain_indirect_rep<T,distributed>::size_type
57
geo_domain_indirect_rep<T,distributed>::dis_ige2ios_dis_ige
(
size_type
dim,
size_type
dis_ige)
const
58
{
59
check_macro
(dim < base::map_dimension(),
"unexpected dimension = "
<< dim <<
" > domain dimension = "
<< base::map_dimension());
60
return
base::_omega.dis_ige2ios_dis_ige (dim, dis_ige);
61
}
62
template
<
class
T>
63
typename
geo_domain_indirect_rep<T,distributed>::size_type
64
geo_domain_indirect_rep<T,distributed>::ios_ige2dis_ige
(
size_type
dim,
size_type
ios_ige)
const
65
{
66
if
(dim == base::map_dimension())
return
base::_indirect.ini_ioige2dis_ioige (ios_ige);
67
check_macro
(dim < base::map_dimension(),
"unexpected dimension = "
<< dim <<
" > domain dimension = "
<< base::map_dimension());
68
return
base::_omega.ios_ige2dis_ige (dim, ios_ige);
69
}
70
template
<
class
T>
71
void
72
geo_domain_indirect_rep<T,distributed>::set_ios_permutation
(
73
disarray<size_type,distributed>
& idof2ios_dis_idof)
const
74
{
75
fatal_macro
(
"set_ios_permutation: not yet"
);
76
}
77
// used by space_constritution for ios numbering
78
template
<
class
T>
79
const
std::array<disarray<typename geo_domain_indirect_rep<T,distributed>::size_type,
distributed
>,
reference_element::max_variant
>&
80
geo_domain_indirect_rep<T,distributed>::get_igev2ios_dis_igev
()
const
81
{
82
fatal_macro
(
"get_igev2ios_dis_igev: not yet"
);
83
return
base::get_background_geo().get_igev2ios_dis_igev();
// return something
84
}
85
// ----------------------------------------------------------------------------
86
// instanciation in library
87
// ----------------------------------------------------------------------------
88
template
class
geo_domain_indirect_rep<Float,distributed>
;
89
90
}
// namespace rheolef
91
#endif
// _RHEOLEF_HAVE_MPI
rheolef::disarray
see the disarray page for the full documentation
Definition
disarray.h:497
rheolef::geo_domain_indirect_rep< T, distributed >::size_type
base::size_type size_type
Definition
geo_domain_indirect.h:230
rheolef::geo_domain_indirect_rep
Definition
geo_domain_indirect.h:208
rheolef::reference_element::max_variant
static const variant_type max_variant
Definition
reference_element.h:82
fatal_macro
#define fatal_macro(message)
Definition
dis_macros.h:33
check_macro
check_macro(expr1.have_homogeneous_space(Xh1), "dual(expr1,expr2); expr1 should have homogeneous space. HINT: use dual(interpolate(Xh, expr1),expr2)")
rheolef
This file is part of Rheolef.
Definition
compiler_eigen.h:39
rheolef::distributed
Definition
communicator.h:128