geo_domain_indirect_mpi.cc
Go to the documentation of this file.
#include "rheolef/config.h"
#ifdef _RHEOLEF_HAVE_MPI
#include "rheolef/geo_domain_indirect.h"
namespace rheolef {
template<class T>
distributor
geo_domain_indirect_rep<T,distributed>::geo_element_ios_ownership (size_type dim) const
{
if (dim == base::map_dimension()) return base::_indirect.ini_ownership();
check_macro (dim < base::map_dimension(), "unexpected dimension = " << dim << " > domain dimension = " << base::map_dimension());
return base::_omega.geo_element_ios_ownership(dim);
}
template <class T>
typename geo_domain_indirect_rep<T,distributed>::const_reference
geo_domain_indirect_rep<T,distributed>::dis_get_geo_element (size_type dim, size_type dis_ige) const
{
#ifdef TODO
// see geo_domain_indirect_seq.cc : get_geo_element (dim, ige)
if (dim == map_dimension()) return base::_omega.get_geo_element (dim, _indirect.oige(ige).index());
#endif // TODO
return base::_omega.dis_get_geo_element (dim, dis_ige);
}
template<class T>
typename geo_domain_indirect_rep<T,distributed>::size_type
geo_domain_indirect_rep<T,distributed>::ige2ios_dis_ige (size_type dim, size_type ige) const
{
if (dim == base::map_dimension()) return base::_indirect.ioige2ini_dis_ioige (ige);
check_macro (dim < base::map_dimension(), "unexpected dimension = " << dim << " > domain dimension = " << base::map_dimension());
return base::_omega.ige2ios_dis_ige (dim, ige);
}
template<class T>
typename geo_domain_indirect_rep<T,distributed>::size_type
geo_domain_indirect_rep<T,distributed>::dis_ige2ios_dis_ige (size_type dim, size_type dis_ige) const
{
check_macro (dim < base::map_dimension(), "unexpected dimension = " << dim << " > domain dimension = " << base::map_dimension());
return base::_omega.dis_ige2ios_dis_ige (dim, dis_ige);
}
template<class T>
typename geo_domain_indirect_rep<T,distributed>::size_type
geo_domain_indirect_rep<T,distributed>::ios_ige2dis_ige (size_type dim, size_type ios_ige) const
{
if (dim == base::map_dimension()) return base::_indirect.ini_ioige2dis_ioige (ios_ige);
check_macro (dim < base::map_dimension(), "unexpected dimension = " << dim << " > domain dimension = " << base::map_dimension());
return base::_omega.ios_ige2dis_ige (dim, ios_ige);
}
template<class T>
void
geo_domain_indirect_rep<T,distributed>::set_ios_permutation (
disarray<size_type,distributed>& idof2ios_dis_idof) const
{
fatal_macro ("set_ios_permutation: not yet");
}
// used by space_constritution for ios numbering
template<class T>
const std::array<disarray<typename geo_domain_indirect_rep<T,distributed>::size_type,distributed>,reference_element::max_variant>&
geo_domain_indirect_rep<T,distributed>::get_igev2ios_dis_igev() const
{
fatal_macro ("get_igev2ios_dis_igev: not yet");
return base::get_background_geo().get_igev2ios_dis_igev(); // return something
}
// ----------------------------------------------------------------------------
// instanciation in library
// ----------------------------------------------------------------------------
template class geo_domain_indirect_rep<Float,distributed>;
} // namespace rheolef
#endif // _RHEOLEF_HAVE_MPI
rheolef::geo_domain_indirect_rep
Definition: geo.h:187
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::geo_abstract_base_rep::size_type
geo_element_hack::size_type size_type
Definition: geo.h:260
rheolef::distributed
Definition: distributed.h:88
fatal_macro
#define fatal_macro(message)
Definition: dis_macros.h:33
rheolef
This file is part of Rheolef.
Definition: compiler_eigen.h:37
rheolef::reference_element::max_variant
static const variant_type max_variant
Definition: reference_element.h:82
rheolef::disarray
see the disarray page for the full documentation
Definition: disarray.h:459
size_type
field::size_type size_type
Definition: branch.cc:425
mkgeo_ball.dim
dim
Definition: mkgeo_ball.sh:307