Loading...
Searching...
No Matches
field_wdof_sliced.h
Go to the documentation of this file.
#ifndef _RHEOLEF_FIELD_WDOF_SLICED_H
#define _RHEOLEF_FIELD_WDOF_SLICED_H
// proxy class for indexations: uh[0], sigma_h(0,1), etc
// => progress with shift and increment >= 1
// SUMMARY:
// 1) field_sliced_const_iterator
// 2) field_sliced_iterator
// 3) field_rdof_sliced_base
// 4) field_rdof_sliced_const
// 5) field_wdof_sliced
#include "rheolef/field_wdof.h"
#include "rheolef/space_component.h"
namespace rheolef { namespace details {
// =================================================================================
// 1) field_sliced_const_iterator: progress with increment >= 1
// =================================================================================
template <class OutputIterator> class field_sliced_iterator; // forward decl
template <class InputIterator>
class field_sliced_const_iterator {
public:
// definitions:
using iterator_category = std::forward_iterator_tag;
using size_type = std::size_t;
using value_type = typename std::iterator_traits<InputIterator>::value_type;
using reference = const value_type&;
using pointer = const value_type*;
using difference_type = std::ptrdiff_t;
using self_type = field_sliced_const_iterator<InputIterator>;
// allocators:
field_sliced_const_iterator() = delete;
field_sliced_const_iterator(InputIterator iter, size_type incr) : _iter(iter), _incr(incr) {}
template<class OutputIterator>
field_sliced_const_iterator(field_sliced_iterator<OutputIterator> i) : _iter(i._iter), _incr(i._incr) {}
// accessors & modifiers:
reference operator* () const { return *_iter; }
reference operator[] (size_type n) const { return *(_iter + n*_incr); }
self_type& operator++ () { _iter += _incr; return *this; }
self_type operator++ (int) { self_type tmp = *this; operator++(); return tmp; }
self_type& operator+= (difference_type n) { _iter += n*_incr; return *this; }
self_type operator+ (difference_type n) const { self_type tmp = *this; return tmp += n; }
// comparators:
bool operator== (const self_type& j) const { return _iter == j._iter; }
bool operator!= (const self_type& j) const { return ! operator== (j); }
// protected:
// data:
InputIterator _iter;
size_type _incr;
};
// =================================================================================
// 2) field_sliced_iterator
// =================================================================================
template <class OutputIterator>
class field_sliced_iterator : public field_sliced_const_iterator<OutputIterator> {
public:
// definitions:
using base = field_sliced_const_iterator<OutputIterator>;
using size_type = typename base::size_type;
using value_type = typename base::value_type;
using difference_type = std::ptrdiff_t;
using self_type = field_sliced_iterator<OutputIterator>;
// allocators:
field_sliced_iterator () = delete;
field_sliced_iterator(OutputIterator iter, size_type incr) : base(iter,incr) {}
// accessors & modifiers:
value_type& operator* () { return *base::_iter; }
value_type& operator[] (size_type n) { return *(base::_iter + n*base::_incr); }
self_type& operator++ () { base::_iter += base::_incr; return *this; }
self_type operator++ (int) { self_type tmp = *this; operator++(); return tmp; }
self_type& operator+= (difference_type n) { base::_iter += n*base::_incr; return *this; }
self_type operator+ (difference_type n) const { self_type tmp = *this; return tmp += n; }
};
// =========================================================================
// 3) field_wdof_sliced_base
// =========================================================================
template<class FieldRdof>
class field_rdof_sliced_base {
public:
// definitions:
using size_type = typename FieldRdof::size_type;
using scalar_type = typename FieldRdof::scalar_type;
using memory_type = typename FieldRdof::memory_type;
using float_type = typename float_traits<scalar_type>::type;
using geo_type = typename FieldRdof::geo_type;
using space_type = typename FieldRdof::space_type;
using space_constitution_type = space_constitution<float_type,memory_type>;
// allocators:
field_rdof_sliced_base () : _Vi(), _i_comp(0) {}
field_rdof_sliced_base (const FieldRdof& uh, size_type i_comp);
// accessors:
const space_constitution_type& get_constitution() const { return _Vi.get_constitution(); }
#ifdef TO_CLEAN
std::string name() const { return _Vi.name(); }
bool have_homogeneous_space (space_type& Xh) const { Xh = get_space(); return true; }
#endif // TO_CLEAN
const distributor& ownership() const { return _Vi.ownership(); }
const communicator& comm() const { return ownership().comm(); }
const geo_type& get_geo() const { return _Vi.get_geo(); }
const space_type& get_space() const { return _Vi; }
size_type ndof() const { return ownership().size(); }
size_type dis_ndof() const { return ownership().dis_size(); }
size_type _shift (const FieldRdof& uh) const;
size_type _increment (const FieldRdof& uh) const;
protected:
// data:
space_type _Vi;
size_type _i_comp;
};
template<class FieldRdof>
field_rdof_sliced_base<FieldRdof>::field_rdof_sliced_base (const FieldRdof& uh, size_type i_comp)
: _Vi(),
_i_comp (i_comp)
{
if (! uh.get_space().get_constitution().is_hierarchical()) {
_Vi = space_type (uh.get_geo(), uh.get_space().get_constitution().get_basis()[_i_comp].name());
size_type n_comp = uh.get_space().get_constitution().get_basis().size();
check_macro (_i_comp < n_comp,
"field sliced index "<<_i_comp<<" is out of range [0:"<<n_comp<<"[");
} else {
_Vi = space_type (uh.get_space() [_i_comp]);
size_type n_comp = uh.get_space().get_constitution().size();
check_macro (_i_comp < n_comp,
"field sliced index "<<_i_comp<<" is out of range [0:"<<n_comp<<"[");
}
}
template<class FieldRdof>
typename field_rdof_sliced_base<FieldRdof>::size_type
field_rdof_sliced_base<FieldRdof>::_shift (const FieldRdof& uh) const
{
if (! uh.get_space().get_constitution().is_hierarchical()) {
return _i_comp;
} else {
size_type s = 0;
for (size_type j_comp = 0; j_comp < _i_comp; j_comp++) {
s += uh.get_space().get_constitution()[j_comp].ndof();
}
return s;
}
}
template<class FieldRdof>
typename field_rdof_sliced_base<FieldRdof>::size_type
field_rdof_sliced_base<FieldRdof>::_increment (const FieldRdof& uh) const
{
if (! uh.get_space().get_constitution().is_hierarchical()) {
return uh.get_space().get_constitution().get_basis().size();
} else {
return 1;
}
}
// =========================================================================
// 4) field_rdof_sliced_const
// =========================================================================
template<class FieldWdof> class field_wdof_sliced; // forward
template<class FieldRdof>
class field_rdof_sliced_const:
public field_wdof_base<field_rdof_sliced_const<FieldRdof>>
,public field_rdof_sliced_base<FieldRdof>
{
public:
// definitions:
using base = field_rdof_sliced_base<FieldRdof>;
using size_type = typename FieldRdof::size_type;
using scalar_type = typename FieldRdof::scalar_type;
using memory_type = typename FieldRdof::memory_type;
using geo_type = typename FieldRdof::geo_type;
using space_type = typename FieldRdof::space_type;
using const_iterator = field_sliced_const_iterator<typename FieldRdof::const_iterator>;
using float_type = typename float_traits<scalar_type>::type;
using space_constitution_type = space_constitution<float_type,memory_type>;
// allocators:
field_rdof_sliced_const () = delete;
field_rdof_sliced_const (const FieldRdof& uh, size_type i_comp);
field_rdof_sliced_const (const field_wdof_sliced<FieldRdof>& uh_comp);
field_rdof_sliced_const<FieldRdof>& operator= (const field_rdof_sliced_const<FieldRdof>& uh_comp) = delete;
const scalar_type& dof (size_type idof) const { return _start [idof]; }
const_iterator begin_dof() const { return _start; }
const_iterator end_dof() const { return _start + base::ndof(); }
protected:
// data:
const FieldRdof _uh;
const_iterator _start;
};
// concept:
template<class FieldRdof>
struct is_field_wdof<field_rdof_sliced_const<FieldRdof>>: std::true_type {};
template<class FieldRdof>
struct field_traits<field_rdof_sliced_const<FieldRdof>> {
using size_type = typename FieldRdof::size_type;
using scalar_type = typename FieldRdof::scalar_type;
using memory_type = typename FieldRdof::memory_type;
};
// -------------------
// inlined
// -------------------
template<class FieldRdof>
field_rdof_sliced_const<FieldRdof>::field_rdof_sliced_const (const FieldRdof& uh, size_type i_comp)
: base(uh, i_comp),
_uh(uh),
_start(uh.begin_dof() + base::_shift(uh), base::_increment(uh))
{
}
template<class FieldRdof>
field_rdof_sliced_const<FieldRdof>::field_rdof_sliced_const (const field_wdof_sliced<FieldRdof>& uh_comp)
: base(uh_comp),
_uh(uh_comp._uh),
_start(uh_comp.begin_dof())
{
}
// =========================================================================
// 5) field_wdof_sliced
// =========================================================================
template<class FieldWdof>
class field_wdof_sliced:
public field_wdof_base<field_wdof_sliced<FieldWdof>>
,public field_rdof_sliced_base<FieldWdof>
{
public:
// definitions:
using base0 = field_wdof_base<field_wdof_sliced<FieldWdof>>;
using base = field_rdof_sliced_base<FieldWdof>;
using size_type = typename FieldWdof::size_type;
using scalar_type = typename FieldWdof::scalar_type;
using memory_type = typename FieldWdof::memory_type;
using geo_type = typename FieldWdof::geo_type;
using space_type = typename FieldWdof::space_type;
using iterator = field_sliced_iterator<typename FieldWdof::iterator>;
using const_iterator = field_sliced_const_iterator<typename FieldWdof::const_iterator>;
using dis_reference = typename FieldWdof::dis_reference;
using self_type = field_wdof_sliced<FieldWdof>;
using float_type = typename float_traits<scalar_type>::type;
using space_constitution_type = space_constitution<float_type,memory_type>;
// allocators:
field_wdof_sliced() = delete;
field_wdof_sliced(const field_wdof_sliced<FieldWdof>&) = delete;
field_wdof_sliced<FieldWdof>& operator= (const field_wdof_sliced<FieldWdof>& expr);
template<class Sfinae
= typename std::enable_if<
has_field_wdof_interface<FieldWdof>::value
,void
>::type
>
field_wdof_sliced(FieldWdof& uh, size_type i_comp);
template <class Value>
typename std::enable_if<
details::is_rheolef_arithmetic<Value>::value
,field_wdof_sliced<FieldWdof>&
>::type
operator= (const Value& value) { base0::operator= (value); return *this; }
template <class FieldRdof>
typename std::enable_if<
has_field_rdof_interface<FieldRdof>::value
,field_wdof_sliced<FieldWdof>&
>::type
operator= (const FieldRdof& rdof) { base0::operator= (rdof); return *this; }
template<class FieldLazy>
typename std::enable_if<
has_field_lazy_interface<FieldLazy>::value
&& ! has_field_rdof_interface<FieldLazy>::value
,field_wdof_sliced<FieldWdof>&
>::type
operator= (const FieldLazy& lazy) { base0::operator= (lazy); return *this; }
// accessors & modifiers:
scalar_type& dof (size_type idof) { return _start [idof]; }
const scalar_type& dof (size_type idof) const { return _start [idof]; }
const scalar_type& dis_dof (size_type dis_idof) const;
dis_reference dis_dof_entry (size_type dis_idof);
template <class SetOp = details::generic_set_op>
void dis_dof_update (const SetOp& set_op = SetOp()) const;
iterator begin_dof() { return _start; }
iterator end_dof() { return _start + base::ndof(); }
const_iterator begin_dof() const { return const_iterator(_start); }
const_iterator end_dof() const { return const_iterator(_start + base::ndof()); }
// internals:
friend class field_rdof_sliced_const<FieldWdof>;
template<class Iterator>
static void _initialize (
const space_constitution_type& sup_constit,
size_type i_comp,
space_constitution_type& constit,
Iterator& start,
Iterator& last);
protected:
// data:
FieldWdof& _uh; // WARNING for cstor copy & assignt: contains a reference
iterator _start;
};
// concept:
template<class FieldWdof>
struct is_field_wdof<field_wdof_sliced<FieldWdof>>: std::true_type {};
template<class FieldWdof>
struct field_traits<field_wdof_sliced<FieldWdof>> {
using size_type = typename FieldWdof::size_type;
using scalar_type = typename FieldWdof::scalar_type;
using memory_type = typename FieldWdof::memory_type;
};
template<class FieldWdof>
struct field_wdof2rdof_traits<field_wdof_sliced<FieldWdof>> {
using type = field_rdof_sliced_const<FieldWdof>;
};
// -------------------
// inlined
// -------------------
template<class FieldWdof>
template<class Sfinae>
field_wdof_sliced<FieldWdof>::field_wdof_sliced (FieldWdof& uh, size_type i_comp)
: base(uh,i_comp),
_uh(uh),
_start(uh.begin_dof() + base::_shift(uh), base::_increment(uh))
{
}
template<class FieldWdof>
field_wdof_sliced<FieldWdof>&
field_wdof_sliced<FieldWdof>::operator= (const field_wdof_sliced<FieldWdof>& expr)
{
// explicit copy cstor (avoid simple copy of the proxy; see nfem/ptst/field_comp_assign_tst.cc )
return this -> template operator=<field_wdof_sliced<FieldWdof>> (expr);
}
template<class FieldWdof>
inline
const typename field_wdof_sliced<FieldWdof>::scalar_type&
field_wdof_sliced<FieldWdof>::dis_dof (size_type comp_dis_idof) const
{
size_type dis_dof = _uh.get_space().get_constitution().comp_dis_idof2dis_idof (base::_i_comp, comp_dis_idof);
return _uh.dis_dof (dis_dof);
}
template<class FieldWdof>
inline
typename field_wdof_sliced<FieldWdof>::dis_reference
field_wdof_sliced<FieldWdof>::dis_dof_entry (size_type comp_dis_idof)
{
size_type dis_dof = _uh.get_space().get_constitution().comp_dis_idof2dis_idof (base::_i_comp, comp_dis_idof);
return _uh.dis_dof_entry (dis_dof);
}
template<class FieldWdof>
template <class SetOp>
void
field_wdof_sliced<FieldWdof>::dis_dof_update (const SetOp& set_op) const
{
_uh.dis_dof_update (set_op);
}
}} // namespace rheolef::details
#endif // _RHEOLEF_FIELD_WDOF_SLICED_H
size_type
field::size_type size_type
Definition branch.cc:430
rheolef::details::field_rdof_sliced_base
Definition field_wdof_sliced.h:115
rheolef::details::field_rdof_sliced_base::scalar_type
typename FieldRdof::scalar_type scalar_type
Definition field_wdof_sliced.h:120
rheolef::details::field_rdof_sliced_base::_Vi
space_type _Vi
Definition field_wdof_sliced.h:151
rheolef::details::field_rdof_sliced_base::geo_type
typename FieldRdof::geo_type geo_type
Definition field_wdof_sliced.h:123
rheolef::details::field_rdof_sliced_base::get_constitution
const space_constitution_type & get_constitution() const
Definition field_wdof_sliced.h:134
rheolef::details::field_rdof_sliced_base::dis_ndof
size_type dis_ndof() const
Definition field_wdof_sliced.h:144
rheolef::details::field_rdof_sliced_base::_increment
size_type _increment(const FieldRdof &uh) const
Definition field_wdof_sliced.h:187
rheolef::details::field_rdof_sliced_base::field_rdof_sliced_base
field_rdof_sliced_base()
Definition field_wdof_sliced.h:129
rheolef::details::field_rdof_sliced_base::_i_comp
size_type _i_comp
Definition field_wdof_sliced.h:152
rheolef::details::field_rdof_sliced_base::size_type
typename FieldRdof::size_type size_type
Definition field_wdof_sliced.h:119
rheolef::details::field_rdof_sliced_base::space_constitution_type
space_constitution< float_type, memory_type > space_constitution_type
Definition field_wdof_sliced.h:125
rheolef::details::field_rdof_sliced_base::float_type
typename float_traits< scalar_type >::type float_type
Definition field_wdof_sliced.h:122
rheolef::details::field_rdof_sliced_base::memory_type
typename FieldRdof::memory_type memory_type
Definition field_wdof_sliced.h:121
rheolef::details::field_rdof_sliced_base::space_type
typename FieldRdof::space_type space_type
Definition field_wdof_sliced.h:124
rheolef::details::field_rdof_sliced_base::_shift
size_type _shift(const FieldRdof &uh) const
Definition field_wdof_sliced.h:173
rheolef::details::field_rdof_sliced_base::get_geo
const geo_type & get_geo() const
Definition field_wdof_sliced.h:141
rheolef::details::field_rdof_sliced_base::get_space
const space_type & get_space() const
Definition field_wdof_sliced.h:142
rheolef::details::field_rdof_sliced_base::ndof
size_type ndof() const
Definition field_wdof_sliced.h:143
rheolef::details::field_rdof_sliced_base::ownership
const distributor & ownership() const
Definition field_wdof_sliced.h:139
rheolef::details::field_rdof_sliced_base::comm
const communicator & comm() const
Definition field_wdof_sliced.h:140
rheolef::details::field_rdof_sliced_base::field_rdof_sliced_base
field_rdof_sliced_base(const FieldRdof &uh, size_type i_comp)
Definition field_wdof_sliced.h:155
rheolef::details::field_rdof_sliced_const
Definition field_wdof_sliced.h:204
rheolef::details::field_rdof_sliced_const::scalar_type
typename FieldRdof::scalar_type scalar_type
Definition field_wdof_sliced.h:211
rheolef::details::field_rdof_sliced_const::operator=
field_rdof_sliced_const< FieldRdof > & operator=(const field_rdof_sliced_const< FieldRdof > &uh_comp)=delete
rheolef::details::field_rdof_sliced_const::geo_type
typename FieldRdof::geo_type geo_type
Definition field_wdof_sliced.h:213
rheolef::details::field_rdof_sliced_const::_start
const_iterator _start
Definition field_wdof_sliced.h:232
rheolef::details::field_rdof_sliced_const::end_dof
const_iterator end_dof() const
Definition field_wdof_sliced.h:227
rheolef::details::field_rdof_sliced_const::field_rdof_sliced_const
field_rdof_sliced_const()=delete
rheolef::details::field_rdof_sliced_const::dof
const scalar_type & dof(size_type idof) const
Definition field_wdof_sliced.h:225
rheolef::details::field_rdof_sliced_const::begin_dof
const_iterator begin_dof() const
Definition field_wdof_sliced.h:226
rheolef::details::field_rdof_sliced_const::_uh
const FieldRdof _uh
Definition field_wdof_sliced.h:231
rheolef::details::field_rdof_sliced_const::base
field_rdof_sliced_base< FieldRdof > base
Definition field_wdof_sliced.h:209
rheolef::details::field_rdof_sliced_const::size_type
typename FieldRdof::size_type size_type
Definition field_wdof_sliced.h:210
rheolef::details::field_rdof_sliced_const::space_constitution_type
space_constitution< float_type, memory_type > space_constitution_type
Definition field_wdof_sliced.h:217
rheolef::details::field_rdof_sliced_const::float_type
typename float_traits< scalar_type >::type float_type
Definition field_wdof_sliced.h:216
rheolef::details::field_rdof_sliced_const::memory_type
typename FieldRdof::memory_type memory_type
Definition field_wdof_sliced.h:212
rheolef::details::field_rdof_sliced_const::space_type
typename FieldRdof::space_type space_type
Definition field_wdof_sliced.h:214
rheolef::details::field_sliced_const_iterator
Definition field_wdof_sliced.h:43
rheolef::details::field_sliced_const_iterator::field_sliced_const_iterator
field_sliced_const_iterator(InputIterator iter, size_type incr)
Definition field_wdof_sliced.h:59
rheolef::details::field_sliced_const_iterator::value_type
typename std::iterator_traits< InputIterator >::value_type value_type
Definition field_wdof_sliced.h:50
rheolef::details::field_sliced_const_iterator::pointer
const value_type * pointer
Definition field_wdof_sliced.h:52
rheolef::details::field_sliced_const_iterator::operator++
self_type operator++(int)
Definition field_wdof_sliced.h:69
rheolef::details::field_sliced_const_iterator::operator==
bool operator==(const self_type &j) const
Definition field_wdof_sliced.h:75
rheolef::details::field_sliced_const_iterator::operator[]
reference operator[](size_type n) const
Definition field_wdof_sliced.h:66
rheolef::details::field_sliced_const_iterator::iterator_category
std::forward_iterator_tag iterator_category
Definition field_wdof_sliced.h:48
rheolef::details::field_sliced_const_iterator::operator+=
self_type & operator+=(difference_type n)
Definition field_wdof_sliced.h:70
rheolef::details::field_sliced_const_iterator::_iter
InputIterator _iter
Definition field_wdof_sliced.h:79
rheolef::details::field_sliced_const_iterator::self_type
field_sliced_const_iterator< InputIterator > self_type
Definition field_wdof_sliced.h:54
rheolef::details::field_sliced_const_iterator::field_sliced_const_iterator
field_sliced_const_iterator()=delete
rheolef::details::field_sliced_const_iterator::operator!=
bool operator!=(const self_type &j) const
Definition field_wdof_sliced.h:76
rheolef::details::field_sliced_const_iterator::field_sliced_const_iterator
field_sliced_const_iterator(field_sliced_iterator< OutputIterator > i)
Definition field_wdof_sliced.h:61
rheolef::details::field_sliced_const_iterator::operator*
reference operator*() const
Definition field_wdof_sliced.h:65
rheolef::details::field_sliced_const_iterator::reference
const value_type & reference
Definition field_wdof_sliced.h:51
rheolef::details::field_sliced_const_iterator::difference_type
std::ptrdiff_t difference_type
Definition field_wdof_sliced.h:53
rheolef::details::field_sliced_const_iterator::_incr
size_type _incr
Definition field_wdof_sliced.h:80
rheolef::details::field_sliced_const_iterator::operator+
self_type operator+(difference_type n) const
Definition field_wdof_sliced.h:71
rheolef::details::field_sliced_const_iterator::size_type
std::size_t size_type
Definition field_wdof_sliced.h:49
rheolef::details::field_sliced_const_iterator::operator++
self_type & operator++()
Definition field_wdof_sliced.h:68
rheolef::details::field_sliced_iterator
Definition field_wdof_sliced.h:86
rheolef::details::field_sliced_iterator::value_type
typename base::value_type value_type
Definition field_wdof_sliced.h:92
rheolef::details::field_sliced_iterator::operator[]
value_type & operator[](size_type n)
Definition field_wdof_sliced.h:104
rheolef::details::field_sliced_iterator::operator++
self_type operator++(int)
Definition field_wdof_sliced.h:107
rheolef::details::field_sliced_iterator::operator*
value_type & operator*()
Definition field_wdof_sliced.h:103
rheolef::details::field_sliced_iterator::self_type
field_sliced_iterator< OutputIterator > self_type
Definition field_wdof_sliced.h:94
rheolef::details::field_sliced_iterator::field_sliced_iterator
field_sliced_iterator()=delete
rheolef::details::field_sliced_iterator::operator+=
self_type & operator+=(difference_type n)
Definition field_wdof_sliced.h:108
rheolef::details::field_sliced_iterator::size_type
typename base::size_type size_type
Definition field_wdof_sliced.h:91
rheolef::details::field_sliced_iterator::difference_type
std::ptrdiff_t difference_type
Definition field_wdof_sliced.h:93
rheolef::details::field_sliced_iterator::field_sliced_iterator
field_sliced_iterator(OutputIterator iter, size_type incr)
Definition field_wdof_sliced.h:99
rheolef::details::field_sliced_iterator::operator+
self_type operator+(difference_type n) const
Definition field_wdof_sliced.h:109
rheolef::details::field_sliced_iterator::operator++
self_type & operator++()
Definition field_wdof_sliced.h:106
rheolef::details::field_wdof_base
Definition field_wdof.h:36
rheolef::details::field_wdof_base< field_wdof_sliced< FieldWdof > >::operator=
std::enable_if< details::is_rheolef_arithmetic< Value >::value, field_wdof_base< field_wdof_sliced< FieldWdof > > & >::type operator=(const Value &)
Definition field_wdof.icc:45
rheolef::details::field_wdof_sliced
Definition field_wdof_sliced.h:268
rheolef::details::field_wdof_sliced::_uh
FieldWdof & _uh
Definition field_wdof_sliced.h:348
rheolef::details::field_wdof_sliced::size_type
typename FieldWdof::size_type size_type
Definition field_wdof_sliced.h:275
rheolef::details::field_wdof_sliced::field_wdof_sliced
field_wdof_sliced(const field_wdof_sliced< FieldWdof > &)=delete
rheolef::details::field_wdof_sliced::dis_dof_update
void dis_dof_update(const SetOp &set_op=SetOp()) const
Definition field_wdof_sliced.h:404
rheolef::details::field_wdof_sliced::const_iterator
field_sliced_const_iterator< typename FieldWdof::const_iterator > const_iterator
Definition field_wdof_sliced.h:281
rheolef::details::field_wdof_sliced::end_dof
iterator end_dof()
Definition field_wdof_sliced.h:333
rheolef::details::field_wdof_sliced::end_dof
const_iterator end_dof() const
Definition field_wdof_sliced.h:335
rheolef::details::field_wdof_sliced::space_type
typename FieldWdof::space_type space_type
Definition field_wdof_sliced.h:279
rheolef::details::field_wdof_sliced::_start
iterator _start
Definition field_wdof_sliced.h:349
rheolef::details::field_wdof_sliced::dof
const scalar_type & dof(size_type idof) const
Definition field_wdof_sliced.h:326
rheolef::details::field_wdof_sliced::begin_dof
const_iterator begin_dof() const
Definition field_wdof_sliced.h:334
rheolef::details::field_wdof_sliced::begin_dof
iterator begin_dof()
Definition field_wdof_sliced.h:332
rheolef::details::field_wdof_sliced::scalar_type
typename FieldWdof::scalar_type scalar_type
Definition field_wdof_sliced.h:276
rheolef::details::field_wdof_sliced::dis_reference
typename FieldWdof::dis_reference dis_reference
Definition field_wdof_sliced.h:282
rheolef::details::field_wdof_sliced::space_constitution_type
space_constitution< float_type, memory_type > space_constitution_type
Definition field_wdof_sliced.h:285
rheolef::details::field_wdof_sliced::field_wdof_sliced
field_wdof_sliced()=delete
rheolef::details::field_wdof_sliced::geo_type
typename FieldWdof::geo_type geo_type
Definition field_wdof_sliced.h:278
rheolef::details::field_wdof_sliced::float_type
typename float_traits< scalar_type >::type float_type
Definition field_wdof_sliced.h:284
rheolef::details::field_wdof_sliced::dis_dof_entry
dis_reference dis_dof_entry(size_type dis_idof)
Definition field_wdof_sliced.h:396
rheolef::details::field_wdof_sliced::_initialize
static void _initialize(const space_constitution_type &sup_constit, size_type i_comp, space_constitution_type &constit, Iterator &start, Iterator &last)
rheolef::details::field_wdof_sliced::self_type
field_wdof_sliced< FieldWdof > self_type
Definition field_wdof_sliced.h:283
rheolef::details::field_wdof_sliced::memory_type
typename FieldWdof::memory_type memory_type
Definition field_wdof_sliced.h:277
rheolef::details::field_wdof_sliced::dof
scalar_type & dof(size_type idof)
Definition field_wdof_sliced.h:325
rheolef::details::field_wdof_sliced::dis_dof
const scalar_type & dis_dof(size_type dis_idof) const
Definition field_wdof_sliced.h:388
rheolef::details::field_wdof_sliced::operator=
field_wdof_sliced< FieldWdof > & operator=(const field_wdof_sliced< FieldWdof > &expr)
Definition field_wdof_sliced.h:380
rheolef::distributor
see the distributor page for the full documentation
Definition distributor.h:69
rheolef::distributor::dis_size
size_type dis_size() const
global and local sizes
Definition distributor.h:214
rheolef::distributor::size
size_type size(size_type iproc) const
Definition distributor.h:170
rheolef::distributor::comm
const communicator_type & comm() const
Definition distributor.h:152
rheolef::space_constitution
Definition space_constitution.h:405
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
This file is part of Rheolef.
Definition compiler_eigen.h:39
rheolef::begin_dof
const_iterator begin_dof() const
Definition field_expr_recursive.h:611
rheolef::have_homogeneous_space
bool have_homogeneous_space(space_basic< scalar_type, memory_type > &Vh) const
Definition field_expr_recursive.h:586
rheolef::details::field_traits< field_rdof_sliced_const< FieldRdof > >::scalar_type
typename FieldRdof::scalar_type scalar_type
Definition field_wdof_sliced.h:241
rheolef::details::field_traits< field_rdof_sliced_const< FieldRdof > >::size_type
typename FieldRdof::size_type size_type
Definition field_wdof_sliced.h:240
rheolef::details::field_traits< field_rdof_sliced_const< FieldRdof > >::memory_type
typename FieldRdof::memory_type memory_type
Definition field_wdof_sliced.h:242
rheolef::details::field_traits< field_wdof_sliced< FieldWdof > >::size_type
typename FieldWdof::size_type size_type
Definition field_wdof_sliced.h:357
rheolef::details::field_traits< field_wdof_sliced< FieldWdof > >::scalar_type
typename FieldWdof::scalar_type scalar_type
Definition field_wdof_sliced.h:358
rheolef::details::field_traits< field_wdof_sliced< FieldWdof > >::memory_type
typename FieldWdof::memory_type memory_type
Definition field_wdof_sliced.h:359
rheolef::details::field_traits
Definition field_lazy.h:265
rheolef::details::field_wdof2rdof_traits
Definition field_rdof.h:70
rheolef::details::has_field_lazy_interface
Definition field_concept.h:74
rheolef::details::has_field_rdof_interface
Definition field_concept.h:58
rheolef::details::has_field_wdof_interface
Definition field_concept.h:42
rheolef::details::is_field_wdof
Definition field_concept.h:38
rheolef::details::is_rheolef_arithmetic
Definition Float.h:150
rheolef::float_traits::type
T type
Definition Float.h:94