Rheolef
7.2
an efficient C++ finite element environment
|
distributed mesh representation
Protected Member Functions | |
void | build_external_entities () |
void | set_element_side_index (size_type side_dim) |
void | domain_set_side_part1 (const domain_indirect_rep< distributed > &indirect, const geo_abstract_rep< T, distributed > &bgd_omega, size_type sid_dim, disarray< size_type > &bgd_isid2dom_dis_isid, disarray< size_type > &dom_isid2bgd_isid, disarray< size_type > &dom_isid2dom_ios_dis_isid, size_type size_by_variant[reference_element::max_variant]) |
void | domain_set_side_part2 (const domain_indirect_rep< distributed > &indirect, const geo_abstract_rep< T, distributed > &bgd_omega, disarray< size_type > &bgd_iv2dom_dis_iv, size_type sid_dim, disarray< size_type > &bgd_isid2dom_dis_isid, disarray< size_type > &dom_isid2bgd_isid, disarray< size_type > &dom_isid2dom_ios_dis_isid, size_type size_by_variant[reference_element::max_variant]) |
void | node_renumbering (const distributor &ios_node_ownership) |
![]() | |
void | compute_bbox () |
void | init_neighbour () const |
Additional Inherited Members | |
![]() | |
static loaded_map_t & | loaded_map () |
![]() | |
static loaded_map_t | _loaded_map |
typedef geo_base_rep<T,distributed> base |
typedef base::node_type node_type |
typedef base::variant_type variant_type |
typedef base::node_map_type node_map_type |
typedef base::reference reference |
typedef base::const_reference const_reference |
typedef base::iterator iterator |
typedef base::const_iterator const_iterator |
typedef base::iterator_by_variant iterator_by_variant |
typedef base::const_iterator_by_variant const_iterator_by_variant |
typedef base::coordinate_type coordinate_type |
typedef base::geo_element_map_type geo_element_map_type |
geo_rep | ( | const geo_rep< T, distributed > & | o | ) |
geo_rep | ( | const geo_basic< T, distributed > & | lambda, |
const disarray< point_basic< T >, distributed > & | node_list, | ||
const std::array< disarray< geo_element_auto< heap_allocator< size_type > >, distributed >, reference_element::max_variant > & | elt_list | ||
) |
Definition at line 148 of file geo_build_from_list.cc.
geo_abstract_rep< T, distributed > * clone | ( | ) | const |
void build_from_domain | ( | const domain_indirect_rep< distributed > & | indirect, |
const geo_abstract_rep< T, distributed > & | bgd_omega, | ||
std::map< size_type, size_type > & | bgd_ie2dom_ie, | ||
std::map< size_type, size_type > & | bgd_dis_ie2dom_dis_ie | ||
) |
build_from_domain : geo constructor
Implementation notes:
There are four vertices numbering:
a) bgd_iv : background vertex index i.e. index of vertex as numbered in the backgroud geo omega
b) bgd_ios_iv : background vertex index for i/o (nproc independent)
c) dom_iv : index of a vertex as numbered in the current geo_domain this is a reduced set of vertices: vertices that not appears in the list of elements of the domain are skipped. This numbering is constrained to follow the background vertex distribution.
d) dom_ios_iv : index of a vertex on the domain for i/o (nproc independent) This numbering is constrained to follow the background ios vertex distribution.
The numbering bgd_iv and bgd_ios_iv are already defined. The numbering dom_iv and dom_ios_iv are defined here. The correspondances dom_iv <--> dom_ios_iv are also defined for i/o.
Algorithm: for vertices renumbering
1) scan the domain and mark vertex in the bgd numbering: bool bgd_iv_is_on_domain [bgd_iv_ownership] = false bool bgd_ios_iv_is_on_domain [bgd_ios_iv_ownership] = false for K in omega.domain for iloc=0..K.size bgd_dis_iv = K[iloc] bgd_ios_dis_ie = omega.dis_ie2ios_dis_ie (0,bgd_iv) bgd_iv_is_on_domain [[bgd_dis_iv]] = true bgd_ios_iv_is_on_domain [[bgd_ios_dis_iv]] = true bgd_iv_is_on_domain.assembly bgd_ios_iv_is_on_domain.assembly
2) counting & distribution for dom_iv dom_nv = 0 for bdg_iv = ... if bgd_iv_is_on_domain [bgd_iv] then dom_nv++ dom_iv_ownership = distributor (-,comm,dom_nv)
3) numbering dom_iv & permutation: bgd_iv --> dom_iv disarray bgd_iv2dom_iv [bgd_iv_ownership] dom_iv = 0 for bdg_iv = ... if bgd_iv_is_on_domain [bgd_iv] then bgd_iv2dom_iv [bgd_iv] = dom_iv dom_iv++
4) counting & distribution for dom_ios_iv dom_ios_nv = 0 for bdg_ios_iv = ... if bgd_ios_iv_is_on_domain [bgd_ios_iv] then dom_ios_nv++ dom_ios_iv_ownership = distributor (-,comm,dom_ios_nv)
5) numbering dom_ios_iv & permutation: bgd_ios_iv --> dom_ios_iv disarray bgd_ios_iv2dom_ios_iv [bgd_ios_iv_ownership] dom_ios_iv = 0 for bdg_ios_iv = ... if bgd_ios_iv_is_on_domain [bgd_ios_iv] then bgd_ios_iv2dom_ios_iv [bgd_ios_iv] = dom_ios_iv dom_ios_iv++
6) permutation: bgd_iv --> dom_ios_iv disarray bgd_iv2dom_ios_dis_iv [bgd_iv_ownership] for bdg_ios_iv = ... if bgd_ios_iv_is_on_domain [bgd_ios_iv] then dom_ios_iv = bgd_ios_iv2dom_ios_iv [bgd_ios_iv] bgd_dis_iv = omega.ios_iv2dis_iv (bgd_ios_iv) bgd_iv2dom_ios_dis_iv [[bgd_dis_iv]] = dom_ios_dis_iv bgd_iv2dom_ios_dis_iv.assembly
7) permutations: dom_ios_iv <--> dom_iv disarray dom_ios_iv2dom_dis_iv [dom_iv_ownership] disarray dom_iv2dom_ios_dis_iv [dom_ios_iv_ownership] for bdg_iv = ... if bgd_iv_is_on_domain [bgd_iv] then dom_iv = bgd_iv2dom_iv [bgd_iv] dom_ios_dis_iv = bgd_iv2dom_ios_dis_iv [bgd_iv] dom_iv2dom_ios_dis_iv [dom_iv] = dom_ios_dis_iv dom_dis_iv = first_dom_dis_iv + dom_iv dom_ios_iv2dom_dis_iv [[dom_ios_dis_iv]] = dom_dis_iv dom_ios_iv2dom_dis_iv.assembly
8) loop on elements and copy from domain with new vertex numbering
Definition at line 309 of file geo_domain_mpi.cc.
distributor geo_element_ios_ownership | ( | size_type | dim | ) | const |
Definition at line 39 of file geo_mpi.cc.
geo_rep< T, distributed >::size_type ige2ios_dis_ige | ( | size_type | dim, |
size_type | ige | ||
) | const |
Definition at line 51 of file geo_mpi.cc.
geo_rep< T, distributed >::size_type dis_ige2ios_dis_ige | ( | size_type | dim, |
size_type | dis_ige | ||
) | const |
Definition at line 29 of file geo_mpi.cc.
geo_rep< T, distributed >::size_type ios_ige2dis_ige | ( | size_type | dim, |
size_type | ios_ige | ||
) | const |
Definition at line 45 of file geo_mpi.cc.
void locate | ( | const disarray< point_basic< T >, distributed > & | x, |
disarray< size_type, distributed > & | dis_ie, | ||
bool | do_check = false |
||
) | const |
Definition at line 441 of file geo_locate.cc.
void trace_ray_boundary | ( | const disarray< point_basic< T >, distributed > & | x, |
const disarray< point_basic< T >, distributed > & | v, | ||
disarray< size_type, distributed > & | dis_ie, | ||
disarray< point_basic< T >, distributed > & | y, | ||
bool | do_check = false |
||
) | const |
Definition at line 602 of file geo_trace_ray_boundary.cc.
void trace_move | ( | const disarray< point_basic< T >, distributed > & | x, |
const disarray< point_basic< T >, distributed > & | v, | ||
disarray< size_type, distributed > & | dis_ie, | ||
disarray< point_basic< T >, distributed > & | y | ||
) | const |
Definition at line 128 of file geo_trace_move.cc.
void nearest | ( | const disarray< point_basic< T >, distributed > & | x, |
disarray< point_basic< T >, distributed > & | x_nearest, | ||
disarray< size_type, distributed > & | dis_ie | ||
) | const |
Definition at line 380 of file geo_nearest.cc.
const distributor & geo_element_ownership | ( | size_type | dim | ) | const |
const_reference get_geo_element | ( | size_type | dim, |
size_type | ige | ||
) | const |
const_iterator begin | ( | size_type | dim | ) | const |
const_iterator end | ( | size_type | dim | ) | const |
const geo_element_map_type & get_external_geo_element_map | ( | size_type | variant | ) | const |
const domain_indirect_basic< distributed > & get_domain_indirect | ( | size_type | idom | ) | const |
const domain_indirect_basic< distributed > & get_domain_indirect | ( | const std::string & | name | ) | const |
const distributor & vertex_ownership | ( | ) | const |
const_reference operator[] | ( | size_type | ie | ) | const |
void build_by_subdividing | ( | const geo_basic< T, distributed > & | omega, |
size_type | k | ||
) |
idiststream & get | ( | idiststream & | ips | ) |
Definition at line 637 of file geo_mpi_get.cc.
odiststream & put | ( | odiststream & | ops | ) | const |
Definition at line 52 of file geo_mpi_put.cc.
void dump | ( | std::string | name | ) | const |
Definition at line 151 of file geo_mpi_put.cc.
void load | ( | std::string | name, |
const communicator & | comm | ||
) |
Definition at line 998 of file geo_mpi_get.cc.
bool check | ( | bool | verbose | ) | const |
Definition at line 163 of file geo_seq_check.cc.
void set_ios_permutation | ( | disarray< size_type, distributed > & | idof2ios_dis_idof | ) | const |
Definition at line 620 of file geo_mpi_get.cc.
|
protected |
loop on geo_element (edges, faces, etc): identify some vertices, that are referenced by locally-managed geo_elements, but these vertices are managed
Definition at line 349 of file geo_mpi_get.cc.
Definition at line 451 of file geo_mpi_get.cc.
|
protected |
Definition at line 34 of file geo_domain_mpi.cc.
|
protected |
Definition at line 156 of file geo_domain_mpi.cc.
|
protected |
Definition at line 626 of file geo_mpi_get.cc.
const std::array< disarray< size_type, distributed >, reference_element::max_variant > & get_igev2ios_dis_igev | ( | ) | const |
|
protected |
|
protected |