22#include "rheolef/geo.h"
23#include "rheolef/geo_domain.h"
24#include "rheolef/dis_macros.h"
25#include "rheolef/rheostream.h"
26#include "rheolef/iorheo.h"
27#include "rheolef/index_set.h"
34template <
class T,
class M>
54 _gs._map_dimension = 0;
65 _gs.node_ownership =
_node.ownership();
90 _gs.ownership_by_dimension [0] =
_gs.node_ownership;
94 size_type first_dis_iv =
_gs.ownership_by_dimension [0].first_index();
95 for (
size_type iv = 0, nv =
_gs.ownership_by_dimension [0].size(); iv < nv; iv++) {
106 size_type first_dis_ie =
_gs.ownership_by_dimension [
_gs._map_dimension].first_index();
117 iter != last; iter++, ge_iter++, dis_ie++, dis_igev++) {
119 size_type ios_dis_ie = first_dis_v + dis_igev;
120 (*ge_iter).set_dis_ie (dis_ie);
121 (*ge_iter).set_ios_dis_ie (ios_dis_ie);
123 first_dis_v +=
_gs.ownership_by_variant[
variant].dis_size();
125 if (
_gs._map_dimension >= 2) {
146#ifdef _RHEOLEF_HAVE_MPI
213#define _RHEOLEF_instanciation(T,M) \
216geo_base_rep<T,M>::build_from_list ( \
217 const geo_basic<T,M>& lambda, \
218 const disarray<point_basic<T>,M>& node_list, \
219 const std::array<disarray<geo_element_auto<heap_allocator<size_type> >,M>, \
220 reference_element::max_variant>& ge_list); \
222geo_rep<T,M>::geo_rep ( \
223 const geo_basic<T,M>& lambda, \
224 const disarray<point_basic<T>,M>& node_list, \
225 const std::array<disarray<geo_element_auto<heap_allocator<size_type> >,M>, \
226 reference_element::max_variant>& ge_list); \
229#ifdef _RHEOLEF_HAVE_MPI
#define _RHEOLEF_instanciation(T, M, A)
see the Float page for the full documentation
see the communicator page for the full documentation
see the disarray page for the full documentation
rep::base::const_iterator const_iterator
see the distributor page for the full documentation
static const size_type decide
void build_from_list(const geo_basic< T, M > &lambda, const disarray< point_basic< T >, M > &node_list, const std::array< disarray< geo_element_auto< heap_allocator< size_type > >, M >, reference_element::max_variant > &elt_list)
coordinate_type _sys_coord
base::size_type size_type
basis_basic< T > _piola_basis
iterator end(size_type dim)
iterator begin(size_type dim)
iterator by dimension: wraps iterator by geo_element variant
disarray< node_type, M > _node
size_type variant() const
std::array< hack_array< geo_element_hack, M >, reference_element::max_variant > _geo_element
const distributor & ownership() const
const communicator & comm() const
size_type dis_size(size_type dim) const
generic mesh with rerefence counting
see the geo_element page for the full documentation
void set_ios_dis_ie(size_type ios_dis_ie)
void set_dis_ie(size_type dis_ie)
size_type size(size_type dim) const
std::array< disarray< size_type, distributed >, reference_element::max_variant > _ios_igev2dis_igev
std::array< disarray< size_type >, 4 > _ios_ige2dis_ige
std::array< disarray< size_type, distributed >, reference_element::max_variant > _igev2ios_dis_igev
base::size_type size_type
disarray< size_type > _ios_inod2dis_inod
disarray< size_type > _inod2ios_dis_inod
void build_external_entities()
std::vector< T, A >::iterator iterator
static const variant_type max_variant
static variant_type last_variant_by_dimension(size_type dim)
size_type dimension() const
static variant_type first_variant_by_dimension(size_type dim)
static const variant_type p
#define trace_macro(message)
#define dis_trace_macro(message)
check_macro(expr1.have_homogeneous_space(Xh1), "dual(expr1,expr2); expr1 should have homogeneous space. HINT: use dual(interpolate(Xh, expr1),expr2)")
This file is part of Rheolef.
void compute_bbox(const geo_base_rep< T, M > &omega, const geo_element &K, point_basic< T > &xmin, point_basic< T > &xmax)