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"
62template <
class U,
class M>
class geo_abstract_rep;
63template <
class U,
class M>
class geo_rep;
64template <
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); }
193 void set_name (std::string name) { base::set_name(name); }
195 std::string
name ()
const {
return base::name(); }
203 void build_from_data (
207 std::vector<index_set>* ball);
213 std::vector<index_set>* ball);
224 base::build_union (a,b);
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); }
270 void set_name (std::string name) { base::set_name(name); }
272 std::string
name ()
const {
return base::name(); }
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()
326 base::build_union (a,b);
327 init_ios (omega.data());
334template <
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);
396 void set_map_dimension (
size_type map_dim);
397 std::string name ()
const;
399 bool is_broken()
const;
400 void set_broken(
bool b);
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);
443domain_indirect_basic<sequential>::size_type
446 return base::data().size();
449domain_indirect_basic<sequential>::size_type
452 return base::data().dis_size();
458 return base::data().ownership();
464 return base::data().oige (ioige);
467domain_indirect_basic<sequential>::const_iterator_ioige
470 return base::data().ioige_begin();
473domain_indirect_basic<sequential>::const_iterator_ioige
476 return base::data().ioige_end();
479domain_indirect_basic<sequential>::iterator_ioige
482 return base::data().ioige_begin();
485domain_indirect_basic<sequential>::iterator_ioige
488 return base::data().ioige_end();
494 return base::data().name();
497domain_indirect_basic<sequential>::size_type
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);
545domain_indirect_basic<sequential>
548 const domain_indirect_basic<sequential>& a,
549 const domain_indirect_basic<sequential>& b)
551 domain_indirect_basic<sequential> c;
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);
598 void set_map_dimension (
size_type map_dim);
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)
652domain_indirect_basic<distributed>::size_type
655 return base::data().size();
658domain_indirect_basic<distributed>::size_type
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();
694domain_indirect_basic<distributed>::size_type
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);
730domain_indirect_basic<distributed>::const_iterator_ioige
733 return base::data().ioige_begin();
736domain_indirect_basic<distributed>::const_iterator_ioige
739 return base::data().ioige_end();
742domain_indirect_basic<distributed>::iterator_ioige
745 return base::data().ioige_begin();
748domain_indirect_basic<distributed>::iterator_ioige
751 return base::data().ioige_end();
757 return base::data().ini_ownership();
760domain_indirect_basic<distributed>::size_type
763 return base::data().ioige2ini_dis_ioige (ioige);
766domain_indirect_basic<distributed>::size_type
769 return base::data().ini_ioige2dis_ioige (ini_ioige);
774domain_indirect_basic<distributed>
777 const domain_indirect_basic<distributed>& a,
778 const domain_indirect_basic<distributed>& b)
780 domain_indirect_basic<distributed> c;
781 c.data().build_union (omega, a.data(), b.data());
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
base::orientation_type orientation_type
const geo_element_indirect & oige(size_type ioige) const
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
base::orientation_type orientation_type
const geo_element_indirect & oige(size_type ioige) const
iterator_ioige ioige_end()
base::iterator_ioige iterator_ioige
generic mesh with rerefence counting
short int orientation_type
sequential mesh representation
idiststream: see the diststream page for the full documentation
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)