an efficient C++ finite element environment
|
|
Go to the documentation of this file. 1 # ifndef _RHEOLEF_FIELD_INDIRECT_H
2 # define _RHEOLEF_FIELD_INDIRECT_H
24 #include "rheolef/field.h"
29 template <
class T,
class M>
30 class field_indirect_const;
38 template <
class T,
class M = rheo_default_memory_model>
39 class field_indirect {
60 if (! (
_V.get_basis().option().is_restricted_to_sides()
61 &&
_V.get_geo().map_dimension() ==
_dom.map_dimension() + 1)) {
89 =
typename std::enable_if<
106 std::string
name()
const;
128 template<
class T,
class M>
136 template<
class T,
class M>
141 return _name_internal (_V, _dom);
143 template<
class T,
class M>
151 V.get_geo().name() +
"[" + dom.name() +
"]" :
153 return V.get_basis().name() +
"{" + dom_name +
"}";
155 template<
class T,
class M>
160 dis_dof_indexes_requires_update();
163 template<
class T,
class M>
168 dis_dof_indexes_requires_update();
169 return operator[] (get_space().
get_geo().
operator[] (dom_name));
174 template <
class T,
class M>
186 : _idof_iter(idof_iter),
_val(val) {}
202 template<
class T,
class M>
207 return iterator (_indirect.begin(), _val);
209 template<
class T,
class M>
214 return iterator (_indirect.end(), _val);
219 template <
class T,
class M>
231 : _idof_iter(idof_iter),
_val(val) {}
246 template<
class T,
class M>
253 template<
class T,
class M>
265 template <
class T,
class M = rheo_default_memory_model>
303 std::string
name()
const;
320 template<
class T,
class M>
327 template<
class T,
class M>
334 template<
class T,
class M>
339 return operator[] (get_space().
get_geo().
operator[] (dom_name));
344 template <
class T,
class M>
358 : _idof_iter(idof_iter),
_val(val) {}
373 template<
class T,
class M>
380 template<
class T,
class M>
390 template <
class T,
class M>
396 return tmp.put (ops);
398 template <
class T,
class M>
404 return tmp.put (ops);
field_basic< T, M >::const_iterator _val
const_iterator begin_dof() const
const_iterator & operator++()
const_iterator(typename disarray< size_type, M >::const_iterator idof_iter, typename field_basic< T, M >::const_iterator val)
generic mesh with rerefence counting
bool operator!=(const heap_allocator< T1 > &lhs, const heap_allocator< T1 > &rhs)
const_iterator begin_dof() const
field gh(Float epsilon, Float t, const field &uh, const test &v)
Float alpha[pmax+1][pmax+1]
const communicator_type & comm() const
const T & dof(size_type idof) const
disarray< size_type, M >::const_iterator _idof_iter
const distributor & ownership() const
disarray< size_type, M > _indirect
const T & dof(size_type idof) const
bool have_homogeneous_space(space_basic< T, M > &Xh) const
disarray< size_type, M >::const_iterator _idof_iter
csr< T, sequential > operator*(const T &lambda, const csr< T, sequential > &a)
scalar_traits< value_type >::type scalar_type
vec< T, M >::size_type size_type
see the distributor page for the full documentation
void set_restricted_to_sides(bool r=true)
const_iterator end_dof() const
disarray< size_type, M >::const_iterator _idof_iter
field_basic< T, M >::iterator _val
see the basis_option page for the full documentation
vec< T, M >::size_type size_type
field_basic< T, M >::const_iterator _val
std::ptrdiff_t difference_type
field_indirect(field_basic< T, M > &uh, const geo_basic< T, M > &dom)
bool operator==(const heap_allocator< T1 > &lhs, const heap_allocator< T1 > &rhs)
const communicator & comm() const
abstract base interface class
std::forward_iterator_tag iterator_category
const typedef T * pointer
space_basic< T, M > get_space() const
see the basis page for the full documentation
const_iterator(typename disarray< size_type, M >::const_iterator idof_iter, typename field_basic< T, M >::const_iterator val)
const_iterator & operator++()
field_basic< T, M >::iterator _val
std::forward_iterator_tag iterator_category
const typedef T & reference
field_indirect_const(field_indirect< T, M > gh)
bool have_homogeneous_space(space_basic< T, M > &Xh) const
const space_basic< T, M > & get_space() const
This file is part of Rheolef.
size_type dis_size() const
global and local sizes
iterator(typename disarray< size_type, M >::const_iterator idof_iter, typename field_basic< T, M >::iterator val)
field_basic< T, M >::size_type size_type
odiststream: see the diststream page for the full documentation
std::ptrdiff_t difference_type
std::ptrdiff_t difference_type
field_indirect< T, M > & operator=(const T &alpha)
const typedef T & reference
vec< T, M >::size_type size_type
const typedef T * pointer
std::forward_iterator_tag iterator_category
field_basic< T, M >::size_type size_type
field_indirect< T, M > operator[](const geo_basic< T, M > &dom)
void get_geo(istream &in, my_geo &omega)
disarray< size_type, M > _indirect
field_indirect_const(const field_basic< T, M > &uh, const geo_basic< T, M > &dom)
size_type dis_ndof() const
std::string itos(std::string::size_type i)
itos: see the rheostream page for the full documentation
std::ostream & operator<<(std::ostream &os, const catchmark &m)
const communicator & comm() const
field_basic< T, M >::const_iterator _val
const distributor & ownership() const
base::size_type size_type
float_traits< scalar_type >::type float_type
size_type size(size_type iproc) const
size_type dis_ndof() const
static std::string _name_internal(const space_basic< T, M > &V, const geo_basic< T, M > &dom)