Loading...
Searching...
No Matches
space_constitution.h
Go to the documentation of this file.
#ifndef _RHEOLEF_SPACE_CONSTITUTION_H
#define _RHEOLEF_SPACE_CONSTITUTION_H
#include "rheolef/geo.h"
#include "rheolef/geo_domain.h"
#include "rheolef/space_constant.h"
namespace rheolef {
// forward declarations:
template <class T, class M> class space_mult_list;
template <class T, class M> class space_constitution;
// =====================================================================
// space_act = a domain + an act (block, unblock)
// =====================================================================
class space_act {
public:
// typedefs:
typedef size_t size_type;
static const size_type unset_index = std::numeric_limits<size_type>::max();
enum act_type {
block = 0,
unblock = 1,
block_n = 2,
unblock_n = 3
};
// allocators:
space_act(const std::string& dom_name, act_type act)
: _dom_name(dom_name), _i_comp(unset_index), _act(act) {}
space_act(const std::string& dom_name, size_type i_comp, act_type act)
: _dom_name(dom_name), _i_comp(i_comp), _act(act) {}
space_act()
: _dom_name(), _i_comp(unset_index), _act() {}
space_act(const space_act& x)
: _dom_name(x._dom_name), _i_comp(x._i_comp), _act(x._act) {}
// accessors:
const std::string& get_domain_name() const { return _dom_name; }
act_type get_act() const { return _act; }
size_type get_component_index() const { return _i_comp; }
// data:
protected:
std::string _dom_name;
size_type _i_comp;
act_type _act;
};
// =====================================================================
// space_constitution_terminal = a table of acts
// =====================================================================
template <class T, class M>
class space_constitution_terminal_rep {
public:
typedef typename std::vector<space_act> container_type;
typedef typename container_type::size_type size_type;
typedef typename container_type::const_iterator const_iterator;
// allocators:
space_constitution_terminal_rep()
: _acts(), _omega(), _fem_basis() {}
space_constitution_terminal_rep(
const geo_basic<T,M>& omega,
std::string approx);
space_constitution_terminal_rep (const space_constitution_terminal_rep<T,M>& scr)
: _acts(scr._acts), _omega(scr._omega), _fem_basis(scr._fem_basis)
{
trace_macro ("physical copy of space_constitution_terminal_rep: size="<< size());
}
// accessors:
const geo_basic<T,M>& get_geo() const { return _omega; }
const geo_basic<T,M>& get_background_geo() const { return _omega.get_background_geo(); }
const basis_basic<T>& get_basis() const { return _fem_basis; }
bool is_initialized() const { return _fem_basis.is_initialized(); }
size_type size() const { return _acts.size(); }
const_iterator begin() const { return _acts.begin(); }
const_iterator end() const { return _acts.end(); }
// utility:
void set_ios_permutations (
disarray<size_type,M>& idof2ios_dis_idof,
disarray<size_type,M>& ios_idof2dis_idof) const;
// inquiries:
size_type degree_max() const { return _fem_basis.degree(); }
bool have_compact_support_inside_element() const { return _fem_basis.have_compact_support_inside_element(); }
bool is_discontinuous() const { return ! _fem_basis.is_continuous(); }
void neighbour_guard() const { return get_geo().neighbour_guard(); }
// modifiers
void set_geo (const geo_basic<T,M>& omega) { _omega = omega; }
void set_basis (const basis_basic<T>& b) { _fem_basis = b; }
void do_act (const space_act& act);
// comparator:
bool operator== (const space_constitution_terminal_rep<T,M>& V2) const { return _omega == V2._omega && _fem_basis.name() == V2._fem_basis.name(); }
// internal:
void build_blocked_flag (
disarray<size_type,M>& blocked_flag,
const distributor& comp_ownership,
const distributor& start_by_component) const;
protected:
// data:
std::vector<space_act> _acts;
geo_basic<T,M> _omega;
basis_basic<T> _fem_basis;
};
template <class T, class M>
class space_constitution_terminal : public smart_pointer<space_constitution_terminal_rep<T,M> > {
public:
typedef space_constitution_terminal_rep<T,M> rep;
typedef smart_pointer<rep> base;
typedef typename rep::size_type size_type;
typedef typename rep::const_iterator const_iterator;
// allocators:
space_constitution_terminal()
: smart_pointer<rep>(new_macro(rep)) {}
space_constitution_terminal(
const geo_basic<T,M>& omega,
std::string approx)
: smart_pointer<rep>(new_macro(rep (omega,approx))) {}
// accessors:
const geo_basic<T,M>& get_geo() const { return base::data().get_geo(); }
const geo_basic<T,M>& get_background_geo() const { return base::data().get_background_geo(); }
const basis_basic<T>& get_basis() const { return base::data().get_basis(); }
size_type size() const { return base::data().size(); }
const_iterator begin() const { return base::data().begin(); }
const_iterator end() const { return base::data().end(); }
// utility:
void set_ios_permutations (
disarray<size_type,M>& idof2ios_dis_idof,
disarray<size_type,M>& ios_idof2dis_idof) const
{ base::data().set_ios_permutations (idof2ios_dis_idof, ios_idof2dis_idof); }
// inquiries:
bool have_compact_support_inside_element() const { return base::data().have_compact_support_inside_element(); }
bool is_discontinuous() const { return base::data().is_discontinuous(); }
size_type degree_max() const { return base::data().degree_max(); }
void neighbour_guard() const { return base::data().neighbour_guard(); }
// comparator:
bool operator== (const space_constitution_terminal<T,M>& V2) const { return base::data().operator==(V2.data()); }
// modifiers
void set_geo (const geo_basic<T,M>& omega) { base::data().set_geo (omega); }
void set_basis (const basis_basic<T>& b) { base::data().set_basis (b); }
void do_act (const space_act& act) { base::data().do_act(act); }
void block (const domain_indirect_basic<M>& dom) { do_act (space_act(dom.name(), space_act::block)); }
void unblock (const domain_indirect_basic<M>& dom) { do_act (space_act(dom.name(), space_act::unblock)); }
void block_n (const domain_indirect_basic<M>& dom) { do_act (space_act(dom.name(), space_act::block_n)); }
void unblock_n (const domain_indirect_basic<M>& dom) { do_act (space_act(dom.name(), space_act::unblock_n)); }
};
// =======================================================================
// space_constitution = a recursive hierarchy of constitution
// =======================================================================
template <class T, class M>
class space_constitution_rep {
public:
typedef space_constitution_rep<T,M> this_type;
typedef space_constitution<T,M> value_type;
typedef std::vector<value_type> hierarchy_type;
typedef space_constitution_terminal<T,M> scalar_type;
typedef typename hierarchy_type::size_type size_type;
typedef typename hierarchy_type::iterator iterator;
typedef typename hierarchy_type::const_iterator const_iterator;
typedef typename space_constant::valued_type valued_type;
// allocator:
space_constitution_rep();
space_constitution_rep (const space_constitution_rep<T,M>& x);
space_constitution_rep (const geo_basic<T,M>& omega, std::string approx);
space_constitution_rep (const space_mult_list<T,M>&);
// accessors & modifiers:
const distributor& ownership() const { return _ownership; }
std::string name() const;
size_type ndof() const { return _ownership.size(); }
size_type dis_ndof() const { return _ownership.dis_size(); }
communicator comm() const { return _ownership.comm(); }
size_type ios_ndof() const;
void do_act (const space_act& act);
const geo_basic<T,M>& get_geo() const;
const geo_basic<T,M>& get_background_geo() const;
const basis_basic<T>& get_basis() const;
size_type loc_ndof (const reference_element& hat_K) const;
size_type assembly_loc_ndof (const geo_basic<T,M>& dom, const geo_element& bgd_K) const;
void assembly_dis_idof (const geo_basic<T,M>& dom,
const geo_element& bgd_K, std::vector<geo_element::size_type>& dis_idof) const;
void compute_external_dofs (std::set<size_type>& ext_dof_set) const;
void set_valued_tag (valued_type valued_tag){ _valued_tag = valued_tag; }
void set_valued (const std::string& valued){ _valued_tag = space_constant::valued_tag (valued); }
const valued_type& valued_tag() const { return _valued_tag; }
const std::string& valued() const { return space_constant::valued_name (_valued_tag); }
bool is_hierarchical() const { return _is_hier; }
void set_hierarchy (bool hier) { _is_hier = hier; }
// inquiries:
bool have_compact_support_inside_element() const;
bool is_discontinuous() const;
size_type degree_max() const;
void neighbour_guard() const;
// scalar accessors & modifiers:
const scalar_type& get_terminal() const { scalar_guard(); return _terminal_constit; }
scalar_type& get_terminal() { scalar_guard(); return _terminal_constit; }
// hierarchy accessors & modifiers:
const hierarchy_type& get_hierarchy() const { hierarchy_guard(); return _hier_constit; }
hierarchy_type& get_hierarchy() { hierarchy_guard(); return _hier_constit; }
size_type size() const { return _is_hier ? _hier_constit.size() : 0; }
space_constitution<T,M>& operator[] (size_type i_comp) { return get_hierarchy() [i_comp]; }
const space_constitution<T,M>& operator[] (size_type i_comp) const { return get_hierarchy() [i_comp]; }
size_type flattened_size() const { return _flattened_size; }
size_type comp_dis_idof2dis_idof (size_type i_comp, size_type comp_dis_idof) const;
// utility:
void set_ios_permutations (
disarray<size_type,M>& idof2ios_dis_idof,
disarray<size_type,M>& ios_idof2dis_idof) const;
// comparator:
bool operator== (const space_constitution_rep<T,M>& V2) const;
// internal:
void initialize() const;
void append_external_dof (
const geo_basic<T,M>& dom,
std::set<size_type>& ext_dof_set,
const distributor& dof_ownership,
const distributor& start_by_component) const;
void compute_external_dofs (
std::set<size_type>& ext_dof_set,
const distributor& dof_ownership,
const std::vector<distributor>& start_by_component,
size_type& i_comp) const;
void build_blocked_flag_recursive (
disarray<size_type,M>& blocked_flag, // disarray<bool,M> not supported
const std::vector<distributor>& start_by_component,
size_type& i_comp) const;
disarray<size_type,M> build_blocked_flag() const;
// io:
void put (std::ostream& out, size_type level = 0) const;
protected:
// internals:
friend class space_constitution<T,M>;
void hierarchy_guard() const { check_macro ( _is_hier, "invalid access to a non-hierarchical constitution"); }
void scalar_guard() const { check_macro (!_is_hier, "invalid access to a hierarchical constitution"); }
void set_ios_permutation_recursion (
disarray<size_type,M>& idof2ios_dis_idof,
size_type& comp_start_idof,
size_type& comp_start_dis_idof) const;
size_type _init_flattened_size() const;
void _init_start_by_flattened_component(
size_type& i_flat_comp,
size_type& start_flat_comp_idof,
size_type& dis_start_flat_comp_idof,
std::vector<distributor>& start_by_flattened_component) const;
void _init_start_by_component() const;
void _assembly_dis_idof_recursive (
const geo_basic<T,M>& dom,
const geo_element& bgd_K,
typename std::vector<geo_element::size_type>::iterator& dis_idof_t,
const distributor& hier_ownership,
const std::vector<distributor>& start_by_flattened_component,
size_type& i_flat_comp) const;
// data:
// union (hier,not hier):
mutable bool _is_initialized;
mutable size_type _flattened_size;
mutable std::vector<distributor> _start_by_flattened_component;
mutable std::vector<distributor> _start_by_component;
mutable distributor _ownership;
valued_type _valued_tag;
bool _is_hier;
scalar_type _terminal_constit;
hierarchy_type _hier_constit;
mutable std::array<size_type, reference_element::max_variant> _loc_ndof; // working array
};
// ----------------------------------------------------------------------------
// inlined
// ----------------------------------------------------------------------------
// allocators: there are 4 allocators, here are 2, the 2 others are in .cc
template <class T, class M>
inline
space_constitution_rep<T,M>::space_constitution_rep()
: _is_initialized(false),
_flattened_size(0),
_start_by_flattened_component(),
_start_by_component(),
_ownership(),
_valued_tag(space_constant::mixed),
_is_hier(false),
_terminal_constit(),
_hier_constit(),
_loc_ndof()
{
_loc_ndof.fill (std::numeric_limits<size_type>::max());
}
template <class T, class M>
inline
space_constitution_rep<T,M>::space_constitution_rep (const space_constitution_rep<T,M>& x)
: _is_initialized(x._is_initialized),
_flattened_size(x._flattened_size),
_start_by_flattened_component(x._start_by_flattened_component),
_start_by_component(x._start_by_component),
_ownership(x._ownership),
_valued_tag(x._valued_tag),
_is_hier(x._is_hier),
_terminal_constit(x._terminal_constit),
_hier_constit(x._hier_constit),
_loc_ndof()
{
_loc_ndof.fill (std::numeric_limits<size_type>::max());
}
template <class T, class M>
inline
space_constitution_rep<T,M>::space_constitution_rep (
const geo_basic<T,M>& omega,
std::string approx)
: _is_initialized(false),
_flattened_size(0),
_start_by_flattened_component(),
_start_by_component(),
_ownership(),
_valued_tag(space_constant::scalar),
_is_hier(false),
_terminal_constit(),
_hier_constit(),
_loc_ndof()
{
_loc_ndof.fill (std::numeric_limits<size_type>::max());
_terminal_constit = scalar_type (omega, approx);
if (_terminal_constit.get_basis().is_initialized()) {
_valued_tag = _terminal_constit.get_basis().valued_tag();
}
initialize();
}
// ----------------------------------------------------------------------------
// space_constitution
// ----------------------------------------------------------------------------
template <class T, class M = rheo_default_memory_model>
class space_constitution : public smart_pointer<space_constitution_rep<T,M> > {
public:
typedef space_constitution_rep<T,M> rep;
typedef smart_pointer<rep> base;
typedef typename rep::size_type size_type;
typedef typename rep::const_iterator const_iterator;
typedef typename rep::scalar_type scalar_type;
typedef typename rep::hierarchy_type hierarchy_type;
typedef typename rep::valued_type valued_type;
// allocators:
space_constitution()
: base(new_macro(rep)) {}
space_constitution(const base& b)
: base(b) {}
space_constitution(
const geo_basic<T,M>& omega,
std::string approx)
: base(new_macro(rep (omega,approx))) {}
space_constitution(const space_mult_list<T,M>& expr)
: base(new_macro(rep (expr))) {}
// accessors & modifiers:
const distributor& ownership() const { return base::data().ownership(); }
std::string name() const { return base::data().name(); }
size_type ndof() const { return base::data().ndof(); }
size_type dis_ndof() const { return base::data().dis_ndof(); }
size_type ios_ndof() const { return base::data().ios_ndof(); }
communicator comm() const { return base::data().comm(); }
const geo_basic<T,M>& get_geo() const { return base::data().get_geo(); }
const geo_basic<T,M>& get_background_geo() const { return base::data().get_background_geo(); }
const basis_basic<T>& get_basis() const { return base::data().get_basis(); }
size_type loc_ndof (const reference_element& hat_K) const { return base::data().loc_ndof (hat_K); }
size_type assembly_loc_ndof (const geo_basic<T,M>& dom, const geo_element& bgd_K) const {
return base::data().assembly_loc_ndof (dom, bgd_K); }
void assembly_dis_idof ( const geo_basic<T,M>& dom, const geo_element& bgd_K, std::vector<geo_element::size_type>& dis_idof) const {
base::data().assembly_dis_idof (dom, bgd_K, dis_idof); }
void do_act (const space_act& act) { base::data().do_act(act); }
void block (const domain_indirect_basic<M>& dom) { do_act (space_act(dom.name(), space_act::block)); }
void unblock (const domain_indirect_basic<M>& dom) { do_act (space_act(dom.name(), space_act::unblock)); }
void block_n (const domain_indirect_basic<M>& dom) { do_act (space_act(dom.name(), space_act::block_n)); }
void unblock_n (const domain_indirect_basic<M>& dom) { do_act (space_act(dom.name(), space_act::unblock_n)); }
disarray<size_type,M> build_blocked_flag() const { return base::data().build_blocked_flag(); }
void compute_external_dofs (std::set<size_type>& ext_dof_set) const
{ base::data().compute_external_dofs(ext_dof_set); }
bool is_hierarchical() const { return base::data().is_hierarchical(); }
// inquiries:
bool have_compact_support_inside_element() const { return base::data().have_compact_support_inside_element(); }
bool is_discontinuous() const { return base::data().is_discontinuous(); }
size_type degree_max() const { return base::data().degree_max(); }
void neighbour_guard() const { return base::data().neighbour_guard(); }
// scalar accessors & modifiers:
const space_constitution_terminal<T,M>& get_terminal() const { return base::data().get_terminal(); }
space_constitution_terminal<T,M>& get_terminal() { return base::data().get_terminal(); }
// hierarchy accessors & modifiers:
void set_hierarchy(bool hier = true) { return base::data().set_hierarchy(hier); }
void set_valued_tag (valued_type valued_tag){ base::data().set_valued_tag(valued_tag); }
void set_valued (const std::string& valued){ base::data().set_valued (valued); }
const valued_type& valued_tag() const { return base::data().valued_tag(); }
const std::string& valued() const { return base::data().valued(); }
const hierarchy_type& get_hierarchy() const { return base::data().get_hierarchy(); }
hierarchy_type& get_hierarchy() { return base::data().get_hierarchy(); }
size_type size() const { return base::data().size(); }
space_constitution<T,M>& operator[] (size_type i_comp) { return base::data().operator[] (i_comp); }
const space_constitution<T,M>& operator[] (size_type i_comp) const { return base::data().operator[] (i_comp); }
size_type flattened_size() const { return base::data().flattened_size(); }
size_type comp_dis_idof2dis_idof (size_type i_comp, size_type comp_dis_idof) const
{ return base::data().comp_dis_idof2dis_idof (i_comp, comp_dis_idof); }
// utility:
void set_ios_permutations (
disarray<size_type,M>& idof2ios_dis_idof,
disarray<size_type,M>& ios_idof2dis_idof) const
{ base::data().set_ios_permutations (idof2ios_dis_idof, ios_idof2dis_idof); }
// comparator:
bool operator== (const space_constitution<T,M>& V2) const { return base::data().operator==(V2.data()); }
protected:
// internal:
friend class space_constitution_rep<T,M>;
void set_ios_permutation_recursion (
disarray<size_type,M>& idof2ios_dis_idof,
size_type& comp_start_idof,
size_type& comp_start_dis_idof) const
{ base::data().set_ios_permutation_recursion (idof2ios_dis_idof, comp_start_idof, comp_start_dis_idof); }
};
template<class T, class M>
idiststream&
operator>> (idiststream& ids, space_constitution<T,M>& constit);
} // namespace rheolef
#endif // _RHEOLEF_SPACE_CONSTITUTION_H
communicator
see the communicator page for the full documentation
rheolef::basis_basic
Definition basis.h:566
rheolef::disarray
see the disarray page for the full documentation
Definition disarray.h:497
rheolef::distributor
see the distributor page for the full documentation
Definition distributor.h:69
rheolef::domain_indirect_basic
the finite element boundary domain
Definition domain_indirect.h:335
rheolef::geo_basic
generic mesh with rerefence counting
Definition geo.h:1089
rheolef::geo_element
see the geo_element page for the full documentation
Definition geo_element.h:102
rheolef::reference_element
see the reference_element page for the full documentation
Definition reference_element.h:66
rheolef::smart_pointer_base::data
const T & data() const
Definition smart_pointer.h:266
rheolef::smart_pointer< space_constitution_terminal_rep< T, M > >::smart_pointer
smart_pointer(T *p=0)
Definition smart_pointer.h:357
rheolef::space_act
Definition space_constitution.h:38
rheolef::space_act::size_type
size_t size_type
Definition space_constitution.h:43
rheolef::space_act::get_domain_name
const std::string & get_domain_name() const
Definition space_constitution.h:66
rheolef::space_act::_dom_name
std::string _dom_name
Definition space_constitution.h:72
rheolef::space_act::get_component_index
size_type get_component_index() const
Definition space_constitution.h:68
rheolef::space_act::space_act
space_act(const std::string &dom_name, act_type act)
Definition space_constitution.h:55
rheolef::space_act::_i_comp
size_type _i_comp
Definition space_constitution.h:73
rheolef::space_act::act_type
act_type
Definition space_constitution.h:46
rheolef::space_act::unblock
@ unblock
Definition space_constitution.h:48
rheolef::space_act::block_n
@ block_n
Definition space_constitution.h:49
rheolef::space_act::unblock_n
@ unblock_n
Definition space_constitution.h:50
rheolef::space_act::block
@ block
Definition space_constitution.h:47
rheolef::space_act::space_act
space_act(const space_act &x)
Definition space_constitution.h:61
rheolef::space_act::_act
act_type _act
Definition space_constitution.h:74
rheolef::space_act::space_act
space_act()
Definition space_constitution.h:59
rheolef::space_act::unset_index
static const size_type unset_index
Definition space_constitution.h:44
rheolef::space_act::space_act
space_act(const std::string &dom_name, size_type i_comp, act_type act)
Definition space_constitution.h:57
rheolef::space_act::get_act
act_type get_act() const
Definition space_constitution.h:67
rheolef::space_constitution_rep
Definition space_constitution.h:208
rheolef::space_constitution_rep::append_external_dof
void append_external_dof(const geo_basic< T, M > &dom, std::set< size_type > &ext_dof_set, const distributor &dof_ownership, const distributor &start_by_component) const
Definition space_constitution.cc:431
rheolef::space_constitution_rep::get_terminal
const scalar_type & get_terminal() const
Definition space_constitution.h:259
rheolef::space_constitution_rep::build_blocked_flag
disarray< size_type, M > build_blocked_flag() const
Definition space_constitution.cc:196
rheolef::space_constitution_rep::_hier_constit
hierarchy_type _hier_constit
Definition space_constitution.h:338
rheolef::space_constitution_rep::scalar_type
space_constitution_terminal< T, M > scalar_type
Definition space_constitution.h:213
rheolef::space_constitution_rep::name
std::string name() const
Definition space_constitution.cc:511
rheolef::space_constitution_rep::have_compact_support_inside_element
bool have_compact_support_inside_element() const
Definition space_constitution.cc:257
rheolef::space_constitution_rep::set_ios_permutations
void set_ios_permutations(disarray< size_type, M > &idof2ios_dis_idof, disarray< size_type, M > &ios_idof2dis_idof) const
Definition space_constitution.cc:618
rheolef::space_constitution_rep::get_basis
const basis_basic< T > & get_basis() const
Definition space_constitution.cc:247
rheolef::space_constitution_rep::ios_ndof
size_type ios_ndof() const
Definition space_constitution.cc:555
rheolef::space_constitution_rep::_init_start_by_component
void _init_start_by_component() const
Definition space_constitution.cc:362
rheolef::space_constitution_rep::get_background_geo
const geo_basic< T, M > & get_background_geo() const
Definition space_constitution.cc:234
rheolef::space_constitution_rep::dis_ndof
size_type dis_ndof() const
Definition space_constitution.h:231
rheolef::space_constitution_rep::flattened_size
size_type flattened_size() const
Definition space_constitution.h:270
rheolef::space_constitution_rep::space_constitution_rep
space_constitution_rep()
Definition space_constitution.h:347
rheolef::space_constitution_rep::_loc_ndof
std::array< size_type, reference_element::max_variant > _loc_ndof
Definition space_constitution.h:339
rheolef::space_constitution_rep::put
void put(std::ostream &out, size_type level=0) const
Definition space_constitution.cc:492
rheolef::space_constitution_rep::_init_flattened_size
size_type _init_flattened_size() const
Definition space_constitution.cc:326
rheolef::space_constitution_rep::hierarchy_type
std::vector< value_type > hierarchy_type
Definition space_constitution.h:212
rheolef::space_constitution_rep::is_discontinuous
bool is_discontinuous() const
Definition space_constitution.cc:271
rheolef::space_constitution_rep::valued_tag
const valued_type & valued_tag() const
Definition space_constitution.h:245
rheolef::space_constitution_rep::_start_by_flattened_component
std::vector< distributor > _start_by_flattened_component
Definition space_constitution.h:332
rheolef::space_constitution_rep::size
size_type size() const
Definition space_constitution.h:266
rheolef::space_constitution_rep::this_type
space_constitution_rep< T, M > this_type
Definition space_constitution.h:210
rheolef::space_constitution_rep::_ownership
distributor _ownership
Definition space_constitution.h:334
rheolef::space_constitution_rep::set_valued
void set_valued(const std::string &valued)
Definition space_constitution.h:244
rheolef::space_constitution_rep::build_blocked_flag_recursive
void build_blocked_flag_recursive(disarray< size_type, M > &blocked_flag, const std::vector< distributor > &start_by_component, size_type &i_comp) const
Definition space_constitution.cc:177
rheolef::space_constitution_rep::valued_type
space_constant::valued_type valued_type
Definition space_constitution.h:217
rheolef::space_constitution_rep::_init_start_by_flattened_component
void _init_start_by_flattened_component(size_type &i_flat_comp, size_type &start_flat_comp_idof, size_type &dis_start_flat_comp_idof, std::vector< distributor > &start_by_flattened_component) const
Definition space_constitution.cc:338
rheolef::space_constitution_rep::set_ios_permutation_recursion
void set_ios_permutation_recursion(disarray< size_type, M > &idof2ios_dis_idof, size_type &comp_start_idof, size_type &comp_start_dis_idof) const
Definition space_constitution.cc:581
rheolef::space_constitution_rep::iterator
hierarchy_type::iterator iterator
Definition space_constitution.h:215
rheolef::space_constitution_rep::hierarchy_guard
void hierarchy_guard() const
Definition space_constitution.h:307
rheolef::space_constitution_rep::operator==
bool operator==(const space_constitution_rep< T, M > &V2) const
Definition space_constitution.cc:308
rheolef::space_constitution_rep::_terminal_constit
scalar_type _terminal_constit
Definition space_constitution.h:337
rheolef::space_constitution_rep::assembly_dis_idof
void assembly_dis_idof(const geo_basic< T, M > &dom, const geo_element &bgd_K, std::vector< geo_element::size_type > &dis_idof) const
Definition space_constitution_assembly.cc:344
rheolef::space_constitution_rep::degree_max
size_type degree_max() const
Definition space_constitution.cc:522
rheolef::space_constitution_rep::value_type
space_constitution< T, M > value_type
Definition space_constitution.h:211
rheolef::space_constitution_rep::_assembly_dis_idof_recursive
void _assembly_dis_idof_recursive(const geo_basic< T, M > &dom, const geo_element &bgd_K, typename std::vector< geo_element::size_type >::iterator &dis_idof_t, const distributor &hier_ownership, const std::vector< distributor > &start_by_flattened_component, size_type &i_flat_comp) const
Definition space_constitution_assembly.cc:223
rheolef::space_constitution_rep::get_hierarchy
hierarchy_type & get_hierarchy()
Definition space_constitution.h:265
rheolef::space_constitution_rep::set_hierarchy
void set_hierarchy(bool hier)
Definition space_constitution.h:248
rheolef::space_constitution_rep::loc_ndof
size_type loc_ndof(const reference_element &hat_K) const
Definition space_constitution_assembly.cc:43
rheolef::space_constitution_rep::get_hierarchy
const hierarchy_type & get_hierarchy() const
Definition space_constitution.h:264
rheolef::space_constitution_rep::const_iterator
hierarchy_type::const_iterator const_iterator
Definition space_constitution.h:216
rheolef::space_constitution_rep::_is_initialized
bool _is_initialized
Definition space_constitution.h:330
rheolef::space_constitution_rep::comm
communicator comm() const
Definition space_constitution.h:232
rheolef::space_constitution_rep::_start_by_component
std::vector< distributor > _start_by_component
Definition space_constitution.h:333
rheolef::space_constitution_rep::initialize
void initialize() const
Definition space_constitution.cc:383
rheolef::space_constitution_rep::operator[]
space_constitution< T, M > & operator[](size_type i_comp)
Definition space_constitution.h:267
rheolef::space_constitution_rep::is_hierarchical
bool is_hierarchical() const
Definition space_constitution.h:247
rheolef::space_constitution_rep::size_type
hierarchy_type::size_type size_type
Definition space_constitution.h:214
rheolef::space_constitution_rep::ndof
size_type ndof() const
Definition space_constitution.h:230
rheolef::space_constitution_rep::valued
const std::string & valued() const
Definition space_constitution.h:246
rheolef::space_constitution_rep::get_geo
const geo_basic< T, M > & get_geo() const
Definition space_constitution.cc:209
rheolef::space_constitution_rep::get_terminal
scalar_type & get_terminal()
Definition space_constitution.h:260
rheolef::space_constitution_rep::set_valued_tag
void set_valued_tag(valued_type valued_tag)
Definition space_constitution.h:243
rheolef::space_constitution_rep::assembly_loc_ndof
size_type assembly_loc_ndof(const geo_basic< T, M > &dom, const geo_element &bgd_K) const
Definition space_constitution_assembly.cc:137
rheolef::space_constitution_rep::scalar_guard
void scalar_guard() const
Definition space_constitution.h:308
rheolef::space_constitution_rep::_flattened_size
size_type _flattened_size
Definition space_constitution.h:331
rheolef::space_constitution_rep::ownership
const distributor & ownership() const
Definition space_constitution.h:228
rheolef::space_constitution_rep::compute_external_dofs
void compute_external_dofs(std::set< size_type > &ext_dof_set) const
Definition space_constitution.cc:480
rheolef::space_constitution_rep::_is_hier
bool _is_hier
Definition space_constitution.h:336
rheolef::space_constitution_rep::_valued_tag
valued_type _valued_tag
Definition space_constitution.h:335
rheolef::space_constitution_rep::neighbour_guard
void neighbour_guard() const
Definition space_constitution.cc:536
rheolef::space_constitution_rep::do_act
void do_act(const space_act &act)
Definition space_constitution.cc:85
rheolef::space_constitution_rep::comp_dis_idof2dis_idof
size_type comp_dis_idof2dis_idof(size_type i_comp, size_type comp_dis_idof) const
Definition space_constitution.cc:652
rheolef::space_constitution_terminal_rep
Definition space_constitution.h:81
rheolef::space_constitution_terminal_rep::space_constitution_terminal_rep
space_constitution_terminal_rep()
Definition space_constitution.h:89
rheolef::space_constitution_terminal_rep::size_type
container_type::size_type size_type
Definition space_constitution.h:84
rheolef::space_constitution_terminal_rep::operator==
bool operator==(const space_constitution_terminal_rep< T, M > &V2) const
Definition space_constitution.h:134
rheolef::space_constitution_terminal_rep::have_compact_support_inside_element
bool have_compact_support_inside_element() const
Definition space_constitution.h:122
rheolef::space_constitution_terminal_rep::set_ios_permutations
void set_ios_permutations(disarray< size_type, M > &idof2ios_dis_idof, disarray< size_type, M > &ios_idof2dis_idof) const
Definition space_constitution.cc:573
rheolef::space_constitution_terminal_rep::get_basis
const basis_basic< T > & get_basis() const
Definition space_constitution.h:106
rheolef::space_constitution_terminal_rep::const_iterator
container_type::const_iterator const_iterator
Definition space_constitution.h:85
rheolef::space_constitution_terminal_rep::degree_max
size_type degree_max() const
Definition space_constitution.h:121
rheolef::space_constitution_terminal_rep::begin
const_iterator begin() const
Definition space_constitution.h:110
rheolef::space_constitution_terminal_rep::get_background_geo
const geo_basic< T, M > & get_background_geo() const
Definition space_constitution.h:105
rheolef::space_constitution_terminal_rep::_acts
std::vector< space_act > _acts
Definition space_constitution.h:143
rheolef::space_constitution_terminal_rep::space_constitution_terminal_rep
space_constitution_terminal_rep(const space_constitution_terminal_rep< T, M > &scr)
Definition space_constitution.h:96
rheolef::space_constitution_terminal_rep::is_discontinuous
bool is_discontinuous() const
Definition space_constitution.h:123
rheolef::space_constitution_terminal_rep::size
size_type size() const
Definition space_constitution.h:109
rheolef::space_constitution_terminal_rep::build_blocked_flag
void build_blocked_flag(disarray< size_type, M > &blocked_flag, const distributor &comp_ownership, const distributor &start_by_component) const
Definition space_constitution.cc:104
rheolef::space_constitution_terminal_rep::container_type
std::vector< space_act > container_type
Definition space_constitution.h:83
rheolef::space_constitution_terminal_rep::is_initialized
bool is_initialized() const
Definition space_constitution.h:108
rheolef::space_constitution_terminal_rep::_fem_basis
basis_basic< T > _fem_basis
Definition space_constitution.h:145
rheolef::space_constitution_terminal_rep::set_basis
void set_basis(const basis_basic< T > &b)
Definition space_constitution.h:129
rheolef::space_constitution_terminal_rep::set_geo
void set_geo(const geo_basic< T, M > &omega)
Definition space_constitution.h:128
rheolef::space_constitution_terminal_rep::_omega
geo_basic< T, M > _omega
Definition space_constitution.h:144
rheolef::space_constitution_terminal_rep::end
const_iterator end() const
Definition space_constitution.h:111
rheolef::space_constitution_terminal_rep::get_geo
const geo_basic< T, M > & get_geo() const
Definition space_constitution.h:104
rheolef::space_constitution_terminal_rep::neighbour_guard
void neighbour_guard() const
Definition space_constitution.h:124
rheolef::space_constitution_terminal_rep::do_act
void do_act(const space_act &act)
Definition space_constitution.cc:75
rheolef::space_constitution_terminal
Definition space_constitution.h:148
rheolef::space_constitution_terminal::const_iterator
rep::const_iterator const_iterator
Definition space_constitution.h:154
rheolef::space_constitution_terminal::have_compact_support_inside_element
bool have_compact_support_inside_element() const
Definition space_constitution.h:184
rheolef::space_constitution_terminal::set_ios_permutations
void set_ios_permutations(disarray< size_type, M > &idof2ios_dis_idof, disarray< size_type, M > &ios_idof2dis_idof) const
Definition space_constitution.h:177
rheolef::space_constitution_terminal::get_basis
const basis_basic< T > & get_basis() const
Definition space_constitution.h:170
rheolef::space_constitution_terminal::degree_max
size_type degree_max() const
Definition space_constitution.h:186
rheolef::space_constitution_terminal::begin
const_iterator begin() const
Definition space_constitution.h:172
rheolef::space_constitution_terminal::get_background_geo
const geo_basic< T, M > & get_background_geo() const
Definition space_constitution.h:169
rheolef::space_constitution_terminal::block
void block(const domain_indirect_basic< M > &dom)
Definition space_constitution.h:199
rheolef::space_constitution_terminal::is_discontinuous
bool is_discontinuous() const
Definition space_constitution.h:185
rheolef::space_constitution_terminal::size
size_type size() const
Definition space_constitution.h:171
rheolef::space_constitution_terminal::unblock_n
void unblock_n(const domain_indirect_basic< M > &dom)
Definition space_constitution.h:202
rheolef::space_constitution_terminal::set_basis
void set_basis(const basis_basic< T > &b)
Definition space_constitution.h:196
rheolef::space_constitution_terminal::base
smart_pointer< rep > base
Definition space_constitution.h:152
rheolef::space_constitution_terminal::set_geo
void set_geo(const geo_basic< T, M > &omega)
Definition space_constitution.h:195
rheolef::space_constitution_terminal::operator==
bool operator==(const space_constitution_terminal< T, M > &V2) const
Definition space_constitution.h:191
rheolef::space_constitution_terminal::block_n
void block_n(const domain_indirect_basic< M > &dom)
Definition space_constitution.h:201
rheolef::space_constitution_terminal::space_constitution_terminal
space_constitution_terminal()
Definition space_constitution.h:158
rheolef::space_constitution_terminal::unblock
void unblock(const domain_indirect_basic< M > &dom)
Definition space_constitution.h:200
rheolef::space_constitution_terminal::size_type
rep::size_type size_type
Definition space_constitution.h:153
rheolef::space_constitution_terminal::end
const_iterator end() const
Definition space_constitution.h:173
rheolef::space_constitution_terminal::space_constitution_terminal
space_constitution_terminal(const geo_basic< T, M > &omega, std::string approx)
Definition space_constitution.h:161
rheolef::space_constitution_terminal::get_geo
const geo_basic< T, M > & get_geo() const
Definition space_constitution.h:168
rheolef::space_constitution_terminal::rep
space_constitution_terminal_rep< T, M > rep
Definition space_constitution.h:151
rheolef::space_constitution_terminal::neighbour_guard
void neighbour_guard() const
Definition space_constitution.h:187
rheolef::space_constitution_terminal::do_act
void do_act(const space_act &act)
Definition space_constitution.h:197
rheolef::space_constitution
Definition space_constitution.h:405
rheolef::space_constitution::build_blocked_flag
disarray< size_type, M > build_blocked_flag() const
Definition space_constitution.h:453
rheolef::space_constitution< float_type, memory_type >::const_iterator
rep::const_iterator const_iterator
Definition space_constitution.h:411
rheolef::space_constitution::space_constitution
space_constitution()
Definition space_constitution.h:418
rheolef::space_constitution::operator==
bool operator==(const space_constitution< T, M > &V2) const
Definition space_constitution.h:495
rheolef::space_constitution< float_type, memory_type >::rep
space_constitution_rep< float_type, memory_type > rep
Definition space_constitution.h:408
rheolef::space_constitution::name
std::string name() const
Definition space_constitution.h:435
rheolef::space_constitution::have_compact_support_inside_element
bool have_compact_support_inside_element() const
Definition space_constitution.h:460
rheolef::space_constitution::set_ios_permutations
void set_ios_permutations(disarray< size_type, M > &idof2ios_dis_idof, disarray< size_type, M > &ios_idof2dis_idof) const
Definition space_constitution.h:488
rheolef::space_constitution::get_basis
const basis_basic< T > & get_basis() const
Definition space_constitution.h:442
rheolef::space_constitution::degree_max
size_type degree_max() const
Definition space_constitution.h:462
rheolef::space_constitution::get_background_geo
const geo_basic< T, M > & get_background_geo() const
Definition space_constitution.h:441
rheolef::space_constitution::dis_ndof
size_type dis_ndof() const
Definition space_constitution.h:437
rheolef::space_constitution::flattened_size
size_type flattened_size() const
Definition space_constitution.h:482
rheolef::space_constitution::block
void block(const domain_indirect_basic< M > &dom)
Definition space_constitution.h:449
rheolef::space_constitution::space_constitution
space_constitution(const base &b)
Definition space_constitution.h:421
rheolef::space_constitution::is_discontinuous
bool is_discontinuous() const
Definition space_constitution.h:461
rheolef::space_constitution< float_type, memory_type >::valued_tag
const valued_type & valued_tag() const
Definition space_constitution.h:475
rheolef::space_constitution::get_terminal
space_constitution_terminal< T, M > & get_terminal()
Definition space_constitution.h:468
rheolef::space_constitution< float_type, memory_type >::hierarchy_type
rep::hierarchy_type hierarchy_type
Definition space_constitution.h:413
rheolef::space_constitution::size
size_type size() const
Definition space_constitution.h:479
rheolef::space_constitution::set_valued
void set_valued(const std::string &valued)
Definition space_constitution.h:474
rheolef::space_constitution::loc_ndof
size_type loc_ndof(const reference_element &hat_K) const
Definition space_constitution.h:443
rheolef::space_constitution::space_constitution
space_constitution(const space_mult_list< T, M > &expr)
Definition space_constitution.h:429
rheolef::space_constitution::unblock_n
void unblock_n(const domain_indirect_basic< M > &dom)
Definition space_constitution.h:452
rheolef::space_constitution::set_ios_permutation_recursion
void set_ios_permutation_recursion(disarray< size_type, M > &idof2ios_dis_idof, size_type &comp_start_idof, size_type &comp_start_dis_idof) const
Definition space_constitution.h:500
rheolef::space_constitution::assembly_loc_ndof
size_type assembly_loc_ndof(const geo_basic< T, M > &dom, const geo_element &bgd_K) const
Definition space_constitution.h:444
rheolef::space_constitution::set_hierarchy
void set_hierarchy(bool hier=true)
Definition space_constitution.h:472
rheolef::space_constitution::assembly_dis_idof
void assembly_dis_idof(const geo_basic< T, M > &dom, const geo_element &bgd_K, std::vector< geo_element::size_type > &dis_idof) const
Definition space_constitution.h:446
rheolef::space_constitution< float_type, memory_type >::valued_type
rep::valued_type valued_type
Definition space_constitution.h:414
rheolef::space_constitution< float_type, memory_type >::base
smart_pointer< rep > base
Definition space_constitution.h:409
rheolef::space_constitution::get_hierarchy
hierarchy_type & get_hierarchy()
Definition space_constitution.h:478
rheolef::space_constitution::get_terminal
const space_constitution_terminal< T, M > & get_terminal() const
Definition space_constitution.h:467
rheolef::space_constitution::space_constitution
space_constitution(const geo_basic< T, M > &omega, std::string approx)
Definition space_constitution.h:424
rheolef::space_constitution::get_hierarchy
const hierarchy_type & get_hierarchy() const
Definition space_constitution.h:477
rheolef::space_constitution::block_n
void block_n(const domain_indirect_basic< M > &dom)
Definition space_constitution.h:451
rheolef::space_constitution::ios_ndof
size_type ios_ndof() const
Definition space_constitution.h:438
rheolef::space_constitution::comm
communicator comm() const
Definition space_constitution.h:439
rheolef::space_constitution::operator[]
space_constitution< T, M > & operator[](size_type i_comp)
Definition space_constitution.h:480
rheolef::space_constitution::unblock
void unblock(const domain_indirect_basic< M > &dom)
Definition space_constitution.h:450
rheolef::space_constitution::is_hierarchical
bool is_hierarchical() const
Definition space_constitution.h:456
rheolef::space_constitution< float_type, memory_type >::size_type
rep::size_type size_type
Definition space_constitution.h:410
rheolef::space_constitution::comp_dis_idof2dis_idof
size_type comp_dis_idof2dis_idof(size_type i_comp, size_type comp_dis_idof) const
Definition space_constitution.h:483
rheolef::space_constitution::ndof
size_type ndof() const
Definition space_constitution.h:436
rheolef::space_constitution< float_type, memory_type >::valued
const std::string & valued() const
Definition space_constitution.h:476
rheolef::space_constitution::get_geo
const geo_basic< T, M > & get_geo() const
Definition space_constitution.h:440
rheolef::space_constitution::set_valued_tag
void set_valued_tag(valued_type valued_tag)
Definition space_constitution.h:473
rheolef::space_constitution::ownership
const distributor & ownership() const
Definition space_constitution.h:434
rheolef::space_constitution::compute_external_dofs
void compute_external_dofs(std::set< size_type > &ext_dof_set) const
Definition space_constitution.h:454
rheolef::space_constitution::neighbour_guard
void neighbour_guard() const
Definition space_constitution.h:463
rheolef::space_constitution::do_act
void do_act(const space_act &act)
Definition space_constitution.h:448
rheolef::space_constitution< float_type, memory_type >::scalar_type
rep::scalar_type scalar_type
Definition space_constitution.h:412
rheolef::space_mult_list
Definition space_mult.h:54
trace_macro
#define trace_macro(message)
Definition dis_macros.h:111
T
Expr1::float_type T
Definition field_expr.h:230
check_macro
check_macro(expr1.have_homogeneous_space(Xh1), "dual(expr1,expr2); expr1 should have homogeneous space. HINT: use dual(interpolate(Xh, expr1),expr2)")
rheolef::space_constant
Definition space_constant.cc:25
rheolef::space_constant::valued_type
valued_type
Definition space_constant.h:133
rheolef::space_constant::valued_name
const std::string & valued_name(valued_type valued_tag)
Definition space_constant.cc:43
rheolef::space_constant::valued_tag
valued_type valued_tag(const std::string &name)
Definition space_constant.cc:50
rheolef
This file is part of Rheolef.
Definition compiler_eigen.h:39
rheolef::operator>>
std::istream & operator>>(std::istream &is, const catchmark &m)
Definition catchmark.h:88
M
Expr1::memory_type M
Definition vec_expr_v2.h:416