The space is characterized by two entities: its finite element, described by the basis
class and its mesh, described by the geo
class. By default, the space is scalar valued. It extends to vector and tensor valued functions.
The 'space::real()' function returns the space of reals and could be used in a product of spaces as:
This convention is useful e.g. when a Lagrange multiplier is a real, not a field. It extends to IR^n
for any size_t n
as:
template <class T>
class space_basic<
T,sequential> :
public smart_pointer<space_rep<T,sequential> > {
public:
typedef space_rep<T,sequential> rep;
typedef smart_pointer<rep> base;
typedef typename rep::valued_type valued_type;
space_basic (const geo_basic<T,sequential>& omega = (geo_basic<T,sequential>()),
std::string approx = "",
std::string prod_valued = "scalar");
space_basic (const geo_basic<T,sequential>& omega,
const basis_basic<T>& b);
space_basic (const space_mult_list<T,sequential>& expr);
space_basic (const space_constitution<T,sequential>& constit);
static space_basic<T,sequential> real();
void block (std::string dom_name);
void unblock(std::string dom_name);
void block (const domain_indirect_basic<sequential>& dom);
void unblock(const domain_indirect_basic<sequential>& dom);
void block_n (std::string dom_name);
void unblock_n(std::string dom_name);
void block_n (const domain_indirect_basic<sequential>& dom);
void unblock_n(const domain_indirect_basic<sequential>& dom);
const distributor& ownership() const;
const geo_basic<T,sequential>&
get_geo()
const;
const basis_basic<T>& get_basis() const;
const std::string& valued() const;
space_component<T,sequential> operator[] (
size_type i_comp);
space_component_const<T,sequential> operator[] (
size_type i_comp)
const;
const space_constitution<T,sequential>& get_constitution() const;
std::string get_approx() const;
std::string name() const;
void dis_idof (const geo_element& K, std::vector<size_type>& dis_idof) const;
const distributor& iu_ownership() const;
const distributor& ib_ownership() const;
bool dis_is_blocked (
size_type dis_idof)
const;
const distributor& ios_ownership() const;
const point_basic<T>& xdof (
size_type idof)
const;
const disarray<point_basic<T>,sequential>& get_xdofs() const;
template <class Function>
template <class Function>
point_basic<T> vector_momentum (
const Function&
f,
size_type idof)
const;
template <class Function>
tensor_basic<T> tensor_momentum (
const Function&
f,
size_type idof)
const;
disarray<size_type, sequential> build_dom_dis_idof2bgd_dis_idof (
const space_basic<T,sequential>& Wh, const std::string& dom_name) const;
disarray<size_type, sequential> build_dom_dis_idof2bgd_dis_idof (
const space_basic<T,sequential>& Wh, const geo_basic<T,sequential>& bgd_gamma) const;
const std::set<size_type>& ext_iu_set() const { return base::data().ext_iu_set(); }
const std::set<size_type>& ext_ib_set() const { return base::data().ext_ib_set(); }
bool operator== (
const space_basic<T,sequential>& V2)
const {
return base::data().operator==(V2.data()); }
friend bool are_compatible (const space_basic<T,sequential>& V1, const space_basic<T,sequential>& V2) {
return are_compatible (V1.data(), V2.data()); }
template <class Set>
void get_parent_subgeo_owner_dis_indexes (Set& ext_dis_idofs) const
{ base::data().get_parent_subgeo_owner_dis_indexes (ext_dis_idofs); }
{ return base::data().get_parent_subgeo_owner (dis_idof); }
};
field::size_type size_type
see the communicator page for the full documentation
void get_geo(istream &in, my_geo &omega)
bool operator!=(const heap_allocator< T1 > &lhs, const heap_allocator< T1 > &rhs)
bool operator==(const heap_allocator< T1 > &lhs, const heap_allocator< T1 > &rhs)
space_constant::valued_type valued_tag() const