an efficient C++ finite element environment
|
|
Go to the documentation of this file. 1 #ifndef _RHEOLEF_SPACE_CONSTITUTION_H
2 #define _RHEOLEF_SPACE_CONSTITUTION_H
24 #include "rheolef/geo.h"
25 #include "rheolef/geo_domain.h"
26 #include "rheolef/space_constant.h"
31 template <
class T,
class M>
class space_mult_list;
80 template <
class T,
class M>
99 trace_macro (
"physical copy of space_scalar_constitution_rep: size="<<
size());
147 template <
class T,
class M>
180 {
base::data().set_ios_permutations (idof2ios_dis_idof, ios_idof2dis_idof); }
207 template <
class T,
class M>
215 typedef typename hierarchy_type::iterator
iterator;
229 std::string
name()
const;
286 std::set<size_type>& ext_dof_set,
290 std::set<size_type>& ext_dof_set,
292 const std::vector<distributor>& start_by_component,
296 const std::vector<distributor>& start_by_component,
317 std::vector<distributor>& start_by_flattened_component)
const;
322 typename std::vector<geo_element::size_type>::iterator& dis_idof_t,
324 const std::vector<distributor>& start_by_flattened_component,
338 mutable std::array<size_type, reference_element::max_variant>
_loc_ndof;
344 template <
class T,
class M>
347 : _is_initialized(false),
349 _start_by_flattened_component(),
350 _start_by_component(),
352 _valued_tag(space_constant::
mixed),
358 _loc_ndof.fill (std::numeric_limits<size_type>::max());
360 template <
class T,
class M>
363 : _is_initialized(x._is_initialized),
364 _flattened_size(x._flattened_size),
365 _start_by_flattened_component(x._start_by_flattened_component),
366 _start_by_component(x._start_by_component),
367 _ownership(x._ownership),
368 _valued_tag(x._valued_tag),
369 _is_hier(x._is_hier),
370 _scalar_constit(x._scalar_constit),
371 _hier_constit(x._hier_constit),
374 _loc_ndof.fill (std::numeric_limits<size_type>::max());
380 template <
class T,
class M = rheo_default_memory_model>
403 :
base(new_macro(
rep (omega,approx))) {}
421 return base::data().assembly_loc_ndof (dom, bgd_K); }
431 {
base::data().compute_external_dofs(ext_dof_set); }
465 {
base::data().set_ios_permutations (idof2ios_dis_idof, ios_idof2dis_idof); }
478 {
base::data().set_ios_permutation_recursion (idof2ios_dis_idof, comp_start_idof, comp_start_dis_idof); }
480 template<
class T,
class M>
482 operator>> (idiststream& ids, space_constitution<T,M>& constit);
485 #endif // _RHEOLEF_SPACE_CONSTITUTION_H
size_type _init_flattened_size() const
void unblock(const domain_indirect_basic< M > &dom)
std::vector< distributor > _start_by_flattened_component
smart_pointer< rep > base
generic mesh with rerefence counting
void build_blocked_flag_recursive(disarray< size_type, M > &blocked_flag, const std::vector< distributor > &start_by_component, size_type &i_comp) 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
void set_ios_permutations(disarray< size_type, M > &idof2ios_dis_idof, disarray< size_type, M > &ios_idof2dis_idof) const
bool is_discontinuous() const
void set_ios_permutation_recursion(disarray< size_type, M > &idof2ios_dis_idof, size_type &comp_start_idof, size_type &comp_start_dis_idof) const
bool have_compact_support_inside_element() const
void neighbour_guard() const
std::vector< value_type > hierarchy_type
smart_pointer< rep > base
void set_valued(const std::string &valued)
check_macro(expr1.have_homogeneous_space(Xh1), "dual(expr1,expr2); expr1 should have homogeneous space. HINT: use dual(interpolate(Xh, expr1),expr2)")
bool is_hierarchical() const
size_type degree_max() const
const communicator_type & comm() const
bool is_discontinuous() const
const_iterator end() const
space_scalar_constitution(const geo_basic< T, M > &omega, std::string approx)
const scalar_type & get_scalar() const
void set_ios_permutations(disarray< size_type, M > &idof2ios_dis_idof, disarray< size_type, M > &ios_idof2dis_idof) const
void block_n(const domain_indirect_basic< M > &dom)
bool is_initialized() const
void compute_external_dofs(std::set< size_type > &ext_dof_set) const
space_constitution< T, M > & operator[](size_type i_comp)
space_constitution< T, M > & operator[](size_type i_comp)
space_constitution_rep< T, M > rep
const geo_basic< T, M > & get_background_geo() const
container_type::const_iterator const_iterator
space_constitution_rep< T, M > this_type
void set_ios_permutations(disarray< size_type, M > &idof2ios_dis_idof, disarray< size_type, M > &ios_idof2dis_idof) const
size_type ios_ndof() const
void unblock(const domain_indirect_basic< M > &dom)
rep::const_iterator const_iterator
void neighbour_guard() const
void do_act(const space_act &act)
const std::string & get_domain_name() const
const geo_basic< T, M > & get_background_geo() const
void scalar_guard() const
void _init_start_by_component() const
void set_valued_tag(valued_type valued_tag)
space_constitution(const space_mult_list< T, M > &expr)
valued_type valued_tag(const std::string &name)
space_scalar_constitution_rep()
size_type loc_ndof(const reference_element &hat_K) 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
const valued_type & valued_tag() 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
bool is_discontinuous() const
see the distributor page for the full documentation
space_scalar_constitution_rep(const space_scalar_constitution_rep< T, M > &scr)
see the geo_element page for the full documentation
hierarchy_type & get_hierarchy()
size_type dis_ndof() const
size_type degree_max() const
void put(std::ostream &out, size_type level=0) const
void dis_idof(const basis_basic< T > &b, const geo_size &gs, const geo_element &K, typename std::vector< size_type >::iterator dis_idof_tab)
void do_act(const space_act &act)
size_type get_component_index() const
const basis_basic< T > & get_basis() const
void set_valued(const std::string &valued)
void block(const domain_indirect_basic< M > &dom)
const geo_basic< T, M > & get_background_geo() const
void hierarchy_guard() const
bool have_compact_support_inside_element() const
space_scalar_constitution_rep< T, M > rep
bool operator==(const space_constitution< T, M > &V2) const
see the reference_element page for the full documentation
see the smart_pointer page for the full documentation
hierarchy_type::const_iterator const_iterator
hierarchy_type::iterator iterator
size_type degree_max() 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
space_constant::valued_type valued_type
std::vector< space_act > container_type
const geo_basic< T, M > & get_geo() const
void set_valued_tag(valued_type valued_tag)
const std::string & valued() const
size_type flattened_size() const
const basis_basic< T > & get_basis() const
const basis_basic< T > & get_basis() const
void set_hierarchy(bool hier=true)
const geo_basic< T, M > & get_background_geo() const
void neighbour_guard() const
bool operator==(const space_scalar_constitution< T, M > &V2) const
size_type flattened_size() const
void build_blocked_flag(disarray< size_type, M > &blocked_flag, const distributor &comp_ownership, const distributor &start_by_component) const
rep::valued_type valued_type
bool is_hierarchical() const
void do_act(const space_act &act)
const geo_basic< T, M > & get_geo() const
const basis_basic< T > & get_basis() const
rep::const_iterator const_iterator
bool have_compact_support_inside_element() const
container_type::size_type size_type
hierarchy_type::size_type size_type
const distributor & ownership() const
void block(const domain_indirect_basic< M > &dom)
const hierarchy_type & get_hierarchy() const
size_type degree_max() const
rep::scalar_type scalar_type
void set_basis(const basis_basic< T > &b)
const std::string & valued_name(valued_type valued_tag)
std::istream & operator>>(std::istream &is, const catchmark &m)
space_act(const std::string &dom_name, size_type i_comp, act_type act)
This file is part of Rheolef.
size_type dis_size() const
global and local sizes
bool have_compact_support_inside_element() const
void block_n(const domain_indirect_basic< M > &dom)
void do_act(const space_act &act)
const geo_basic< T, M > & get_geo() const
space_constitution(const base &b)
const valued_type & valued_tag() const
void set_ios_permutation_recursion(disarray< size_type, M > &idof2ios_dis_idof, size_type &comp_start_idof, size_type &comp_start_dis_idof) const
hierarchy_type & get_hierarchy()
static const size_type unset_index
void set_hierarchy(bool hier)
void unblock_n(const domain_indirect_basic< M > &dom)
bool operator==(const space_constitution_rep< T, M > &V2) const
communicator comm() const
communicator comm() const
void set_geo(const geo_basic< T, M > &omega)
std::vector< space_act > _acts
space_scalar_constitution< T, M > & get_scalar()
space_scalar_constitution< T, M > scalar_type
std::array< size_type, reference_element::max_variant > _loc_ndof
bool is_discontinuous() const
basis_basic< T > _fem_basis
size_type assembly_loc_ndof(const geo_basic< T, M > &dom, const geo_element &bgd_K) const
disarray< size_type, M > build_blocked_flag() const
space_constitution(const geo_basic< T, M > &omega, std::string approx)
void compute_external_dofs(std::set< size_type > &ext_dof_set) const
rep::hierarchy_type hierarchy_type
const distributor & ownership() const
const geo_basic< T, M > & get_geo() const
field::size_type size_type
hierarchy_type _hier_constit
scalar_type _scalar_constit
space_scalar_constitution()
space_act(const std::string &dom_name, act_type act)
std::vector< distributor > _start_by_component
scalar_type & get_scalar()
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
size_type loc_ndof(const reference_element &hat_K) const
const std::string & valued() const
space_act(const space_act &x)
size_type ios_ndof() const
void set_ios_permutations(disarray< size_type, M > &idof2ios_dis_idof, disarray< size_type, M > &ios_idof2dis_idof) const
disarray< size_type, M > build_blocked_flag() const
size_type dis_ndof() const
void set_geo(const geo_basic< T, M > &omega)
the finite element boundary domain
size_type _flattened_size
void neighbour_guard() const
void set_basis(const basis_basic< T > &b)
size_type assembly_loc_ndof(const geo_basic< T, M > &dom, const geo_element &bgd_K) const
size_type size(size_type iproc) const
bool operator==(const space_scalar_constitution_rep< T, M > &V2) const
const_iterator end() const
space_constitution< T, M > value_type
void unblock_n(const domain_indirect_basic< M > &dom)
const_iterator begin() const
const space_scalar_constitution< T, M > & get_scalar() const
const_iterator begin() const
#define trace_macro(message)
const hierarchy_type & get_hierarchy() const