|
| geo_rep () |
|
| geo_rep (const geo_rep< T, distributed > &) |
|
geo_abstract_rep< T, distributed > * | clone () const |
|
void | build_from_domain (const domain_indirect_rep< distributed > &indirect, const geo_abstract_rep< T, distributed > &omega, std::map< size_type, size_type > &bgd_ie2dom_ie, std::map< size_type, size_type > &dis_bgd_ie2dis_dom_ie) |
|
| 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) |
|
distributor | geo_element_ios_ownership (size_type dim) const |
|
size_type | ige2ios_dis_ige (size_type dim, size_type ige) const |
|
size_type | dis_ige2ios_dis_ige (size_type dim, size_type dis_ige) const |
|
size_type | ios_ige2dis_ige (size_type dim, size_type ios_ige) const |
|
const geo_size & | ios_sizes () const |
|
void | locate (const disarray< point_basic< T >, distributed > &x, disarray< size_type, distributed > &dis_ie, bool do_check=false) const |
|
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 |
|
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 |
|
void | nearest (const disarray< point_basic< T >, distributed > &x, disarray< point_basic< T >, distributed > &x_nearest, disarray< size_type, distributed > &dis_ie) const |
|
size_type | map_dimension () const |
|
bool | is_broken () const |
|
size_type | size (size_type dim) const |
|
const distributor & | geo_element_ownership (size_type dim) const |
|
const_reference | get_geo_element (size_type dim, size_type ige) const |
|
reference | get_geo_element (size_type dim, size_type ige) |
|
const_iterator | begin (size_type dim) const |
|
const_iterator | end (size_type dim) const |
|
iterator | begin (size_type dim) |
|
iterator | end (size_type dim) |
|
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 |
|
size_type | size () const |
|
const distributor & | vertex_ownership () const |
|
const_reference | operator[] (size_type ie) const |
|
void | reset_order (size_type order) |
|
void | build_by_subdividing (const geo_basic< T, distributed > &omega, size_type k) |
|
idiststream & | get (idiststream &) |
|
odiststream & | put (odiststream &) const |
|
void | dump (std::string name) const |
|
void | load (std::string name, const communicator &comm) |
|
bool | check (bool verbose) const |
|
void | set_ios_permutation (disarray< size_type, distributed > &idof2ios_dis_idof) const |
|
const std::array< disarray< size_type, distributed >, reference_element::max_variant > & | get_igev2ios_dis_igev () const |
|
| geo_base_rep () |
|
| geo_base_rep (const geo_base_rep< T, distributed > &) |
|
void | build_from_list (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) |
|
| ~geo_base_rep () |
|
size_type | variant () const |
|
std::string | familyname () const |
|
std::string | name () const |
|
size_type | serial_number () const |
|
size_type | dimension () const |
|
size_type | map_dimension () const |
|
bool | is_broken () const |
|
coordinate_type | coordinate_system () const |
|
void | set_coordinate_system (coordinate_type sys_coord) |
|
void | set_name (std::string name) |
|
void | set_dimension (size_type dim) |
|
void | set_serial_number (size_type i) |
|
const basis_basic< T > & | get_piola_basis () const |
|
const node_type & | xmin () const |
|
const node_type & | xmax () const |
|
const T & | hmin () const |
|
const T & | hmax () const |
|
const geo_size & | sizes () const |
|
const geo_size & | ios_sizes () const |
|
const distributor & | geo_element_ownership (size_type dim) const |
|
const_reference | get_geo_element (size_type dim, size_type ige) const |
|
reference | get_geo_element (size_type dim, size_type ige) |
|
const_reference | dis_get_geo_element (size_type dim, size_type dis_ige) const |
|
const_iterator_by_variant | begin_by_variant (variant_type variant) const |
|
iterator_by_variant | begin_by_variant (variant_type variant) |
|
const_iterator_by_variant | end_by_variant (variant_type variant) const |
|
iterator_by_variant | end_by_variant (variant_type variant) |
|
const node_type & | node (size_type inod) const |
|
const node_type & | node (const geo_element &K, size_type loc_inod) const |
|
const node_type & | dis_node (size_type dis_inod) const |
|
void | dis_inod (const geo_element &K, std::vector< size_type > &dis_inod) const |
|
const disarray< node_type, distributed > & | get_nodes () const |
|
void | set_nodes (const disarray< node_type, distributed > &x) |
|
size_type | n_domain_indirect () const |
|
bool | have_domain_indirect (const std::string &name) const |
|
const domain_indirect_basic< distributed > & | get_domain_indirect (size_type i) const |
|
const domain_indirect_basic< distributed > & | get_domain_indirect (const std::string &name) const |
|
void | insert_domain_indirect (const domain_indirect_basic< distributed > &dom) const |
|
size_type | seq_locate (const point_basic< T > &x, size_type dis_ie_guest=std::numeric_limits< size_type >::max()) const |
|
size_type | dis_locate (const point_basic< T > &x, size_type dis_ie_guest=std::numeric_limits< size_type >::max()) const |
|
size_type | seq_trace_move (const point_basic< T > &x, const point_basic< T > &v, point_basic< T > &y) const |
|
size_type | dis_trace_move (const point_basic< T > &x, const point_basic< T > &v, point_basic< T > &y) const |
|
size_type | seq_nearest (const point_basic< T > &x, point_basic< T > &x_nearest) const |
|
size_type | dis_nearest (const point_basic< T > &x, point_basic< T > &x_nearest) const |
|
size_type | neighbour (size_type ie, size_type loc_isid) const |
|
void | neighbour_guard () const |
|
iterator | begin (size_type dim) |
| iterator by dimension: wraps iterator by geo_element variant More...
|
|
const_iterator | begin (size_type dim) const |
|
const_iterator | begin () const |
|
iterator | end (size_type dim) |
|
const_iterator | end (size_type dim) const |
|
const_iterator | end () const |
|
size_type | size (size_type dim) const |
|
size_type | size () const |
|
size_type | dis_size (size_type dim) const |
|
size_type | dis_size () const |
|
const distributor & | ownership () const |
|
const distributor & | vertex_ownership () const |
|
const communicator & | comm () const |
|
size_type | order () const |
|
size_type | n_node () const |
|
size_type | dis_n_node () const |
|
size_type | n_vertex () const |
|
size_type | dis_n_vertex () const |
|
size_type | dis_n_edge () const |
|
size_type | dis_n_face () const |
|
size_type | dis_inod2dis_iv (size_type dis_inod) const |
|
size_type | dis_iv2dis_inod (size_type dis_iv) const |
|
const_reference | operator[] (size_type ie) const |
|
reference | operator[] (size_type ie) |
|
const_iterator | begin_edge () const |
|
const_iterator | end_edge () const |
|
const_iterator | begin_face () const |
|
const_iterator | end_face () const |
|
| geo_abstract_rep () |
|
virtual | ~geo_abstract_rep () |
|
virtual const_reference | dis_get_geo_element (size_type dim, size_type dis_ige) const =0 |
|
virtual void | insert_domain_indirect (const domain_indirect_basic< distributed > &dom) const =0 |
|
| geo_abstract_base_rep () |
|
virtual | ~geo_abstract_base_rep () |
|
virtual const geo_element & | bgd2dom_geo_element (const geo_element &bgd_K) const |
|
virtual const geo_element & | dom2bgd_geo_element (const geo_element &dom_K) const |
|
virtual size_type | neighbour (size_type ie, size_type loc_isid) const =0 |
|
virtual const_iterator_by_variant | begin_by_variant (variant_type variant) const =0 |
|
virtual const_iterator_by_variant | end_by_variant (variant_type variant) const =0 |
|
const_iterator | begin (size_type dim) const |
|
const_iterator | end (size_type dim) const |
|
virtual void | dis_inod (const geo_element &K, std::vector< size_type > &dis_inod) const =0 |
|
virtual size_type | dis_inod2dis_iv (size_type dis_inod) const =0 |
|
virtual size_type | seq_locate (const point_basic< T > &x, size_type dis_ie_guest=std::numeric_limits< size_type >::max()) const =0 |
|
virtual size_type | dis_locate (const point_basic< T > &x, size_type dis_ie_guest=std::numeric_limits< size_type >::max()) const =0 |
|
bool | operator== (const geo_abstract_base_rep< T > &omega2) const |
|
template<class T>
class rheolef::geo_rep< T, distributed >
distributed mesh representation
Definition at line 929 of file geo.h.
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.