1 #ifndef _RHEOLEF_DOMAIN_INDIRECT_H
2 #define _RHEOLEF_DOMAIN_INDIRECT_H
54 #include "rheolef/disarray.h"
55 #include "rheolef/geo_element.h"
56 #include "rheolef/geo_element_indirect.h"
57 #include "rheolef/index_set.h"
62 template <
class U,
class M>
class geo_abstract_rep;
63 template <
class U,
class M>
class geo_rep;
64 template <
class U,
class M>
class geo_basic;
89 const communicator& comm,
90 const std::vector<size_type>& ie_list);
92 const communicator& comm,
93 const std::vector<size_type>& ie_list);
136 const std::string&
name,
138 const communicator& comm,
139 const std::vector<size_type>& ie_list)
167 const std::string&
name,
169 const communicator& comm,
170 const std::vector<size_type>& ie_list)
191 return base::oige (ioige); }
203 void build_from_data (
207 std::vector<index_set>* ball);
213 std::vector<index_set>* ball);
227 #ifdef _RHEOLEF_HAVE_MPI
247 const std::string&
name,
249 const communicator& comm,
250 const std::vector<size_type>& ie_list);
268 return base::oige (ioige); }
291 template <
class U1,
class M1>
friend class geo_rep;
299 _ioige2ini_dis_ioige(),
300 _ini_ioige2dis_ioige()
307 const std::string&
name,
309 const communicator& comm,
310 const std::vector<size_type>& ie_list)
312 _ioige2ini_dis_ioige(),
313 _ini_ioige2dis_ioige()
327 init_ios (omega.
data());
334 template <
class M = rheo_default_memory_model>
360 const std::string&
name,
362 const communicator& comm,
363 const std::vector<size_type>& ie_list);
368 const std::string&
name,
370 const communicator& comm,
371 const std::vector<size_type>& ie_list);
378 std::vector<index_set>* ball);
395 void set_name (std::string
name);
397 std::string
name ()
const;
399 bool is_broken()
const;
400 void set_broken(
bool b);
406 idiststream& get (idiststream& ips,
const geo_rep<T,sequential>& omega, std::vector<index_set> *ball);
418 const std::string&
name,
420 const communicator& comm,
421 const std::vector<size_type>& ie_list)
429 const std::string&
name,
431 const communicator& comm,
432 const std::vector<size_type>& ie_list)
440 return base::data().resize (
n);
446 return base::data().size();
452 return base::data().dis_size();
458 return base::data().ownership();
464 return base::data().oige (ioige);
470 return base::data().ioige_begin();
476 return base::data().ioige_end();
482 return base::data().ioige_begin();
488 return base::data().ioige_end();
494 return base::data().name();
500 return base::data().map_dimension();
506 return base::data().is_broken();
512 base::data().set_broken(
b);
518 return base::data().set_name (
name);
524 return base::data().set_map_dimension (
map_dim);
530 return base::data().put (ops);
538 std::vector<index_set> *ball)
540 return base::data().template get (ips, omega, ball);
552 c.data().build_union (
a.data(),
b.data());
556 #ifdef _RHEOLEF_HAVE_MPI
576 const std::string&
name,
578 const communicator& comm,
579 const std::vector<size_type>& ie_list);
584 const std::string&
name,
586 const communicator& comm,
587 const std::vector<size_type>& ie_list);
597 void set_name (std::string
name);
599 std::string
name ()
const;
601 bool is_broken()
const;
602 void set_broken(
bool b);
633 const std::string&
name,
635 const communicator& comm,
636 const std::vector<size_type>& ie_list)
644 const std::string&
name,
646 const communicator& comm,
647 const std::vector<size_type>& ie_list)
655 return base::data().size();
661 return base::data().dis_size();
667 return base::data().ownership();
676 return base::data().template get (ips, omega);
685 return base::data().template
put (ops, omega);
691 return base::data().name();
697 return base::data().map_dimension();
703 return base::data().set_name (
name);
709 return base::data().set_map_dimension (
map_dim);
715 return base::data().is_broken();
721 base::data().set_broken(
b);
727 return base::data().oige (ioige);
733 return base::data().ioige_begin();
739 return base::data().ioige_end();
745 return base::data().ioige_begin();
751 return base::data().ioige_end();
757 return base::data().ini_ownership();
763 return base::data().ioige2ini_dis_ioige (ioige);
769 return base::data().ini_ioige2dis_ioige (ini_ioige);
781 c.data().build_union (omega,
a.data(),
b.data());
void put(idiststream &in, odiststream &out, bool do_proj, bool do_lumped_mass, bool def_fill_opt, size_type extract_id, const Float &scale_value, const std::pair< Float, Float > &u_range, render_type render)
see the disarray page for the full documentation
rep::base::const_iterator const_iterator
rep::base::iterator iterator
rep::base::size_type size_type
see the distributor page for the full documentation
void build_from_list(const std::string &name, size_type map_dim, const communicator &comm, const std::vector< size_type > &ie_list)
void build_union(const domain_indirect_base_rep< M > &a, const domain_indirect_base_rep< M > &b)
geo_element_indirect::orientation_type orientation_type
iterator_ioige ioige_begin()
geo_element_indirect::size_type size_type
size_type dis_size() const
void set_map_dimension(size_type map_dim)
base::const_iterator const_iterator_ioige
size_type map_dimension() const
void set_name(std::string name)
const_iterator_ioige ioige_begin() const
domain_indirect_base_rep(const std::string &name, size_type map_dim, const communicator &comm, const std::vector< size_type > &ie_list)
base::iterator iterator_ioige
const_iterator_ioige ioige_end() const
domain_indirect_base_rep()
const geo_element_indirect & oige(size_type ioige) const
disarray< geo_element_indirect, M > base
iterator_ioige ioige_end()
domain_indirect_rep< distributed > rep
rep::iterator_ioige iterator_ioige
smart_pointer< rep > base
rep::const_iterator_ioige const_iterator_ioige
rep::iterator_ioige iterator_ioige
smart_pointer< rep > base
rep::const_iterator_ioige const_iterator_ioige
domain_indirect_rep< sequential > rep
the finite element boundary domain
size_type ioige2ini_dis_ioige(size_type ioige) const
disarray< size_type, distributed > _ioige2ini_dis_ioige
size_type dis_size() const
void set_map_dimension(size_type map_dim)
disarray< size_type, distributed > _ini_ioige2dis_ioige
size_type ini_ioige2dis_ioige(size_type ini_ioige) const
base::const_iterator_ioige const_iterator_ioige
size_type map_dimension() const
base::size_type size_type
void set_name(std::string name)
domain_indirect_base_rep< distributed > base
const distributor & ini_ownership() const
const geo_element_indirect & oige(size_type ioige) const
base::orientation_type orientation_type
base::iterator_ioige iterator_ioige
domain_indirect_rep(const std::string &name, size_type map_dim, const communicator &comm, const std::vector< size_type > &ie_list)
iterator_ioige ioige_begin()
size_type dis_size() const
domain_indirect_base_rep< sequential > base
void set_map_dimension(size_type map_dim)
base::const_iterator_ioige const_iterator_ioige
size_type map_dimension() const
base::size_type size_type
void set_name(std::string name)
const_iterator_ioige ioige_begin() const
const_iterator_ioige ioige_end() const
const geo_element_indirect & oige(size_type ioige) const
base::orientation_type orientation_type
iterator_ioige ioige_end()
base::iterator_ioige iterator_ioige
distributed mesh with rerefence counting
generic mesh with rerefence counting
short int orientation_type
distributed mesh representation
sequential mesh representation
odiststream: see the diststream page for the full documentation
see the smart_pointer page for the full documentation
domain_indirect_basic< rheo_default_memory_model > domain_indirect
This file is part of Rheolef.
void put(std::ostream &out, std::string name, const tiny_matrix< T > &a)
domain_indirect_basic< sequential > build_union(const geo_basic< T, sequential > &omega, const domain_indirect_basic< sequential > &a, const domain_indirect_basic< sequential > &b)
domain_indirect_basic< distributed > build_union(const geo_basic< T, distributed > &omega, const domain_indirect_basic< distributed > &a, const domain_indirect_basic< distributed > &b)