1# ifndef _RHEOLEF_FIELD_RDOF_NODE_H
2# define _RHEOLEF_FIELD_RDOF_NODE_H
36#include "rheolef/field_rdof.h"
37#include "rheolef/expression.h"
49template<
class UnaryFunction,
class InputIterator>
57 using value_type =
typename std::iterator_traits<InputIterator>::value_type;
92template<
class UnaryFunction,
class FieldRdof>
127template<
class UnaryFunction,
class FieldRdof>
130template<
class UnaryFunction,
class FieldRdof>
142#define _RHEOLEF_make_field_rdof_unary(FUNCTION,FUNCTOR) \
143template<class FieldRdof> \
146 details::has_field_rdof_interface<FieldRdof>::value \
147 ,details::field_rdof_unary<FUNCTOR,FieldRdof> \
149FUNCTION (const FieldRdof& rdof) \
151 return details::field_rdof_unary<FUNCTOR,FieldRdof> (FUNCTOR(), rdof); \
156#undef _RHEOLEF_make_field_rdof_unary
161#define _RHEOLEF_make_field_rdof_unary_scalar_first(FUNCTION,FUNCTOR) \
162template<class FieldRdof> \
165 details::has_field_rdof_interface<FieldRdof>::value \
166 ,details::field_rdof_unary<details::binder_first<FUNCTOR,typename FieldRdof::scalar_type>,FieldRdof> \
168FUNCTION (const typename FieldRdof::scalar_type& lambda, const FieldRdof& rdof) \
170 using A1 = details::binder_first<FUNCTOR,typename FieldRdof::scalar_type>; \
171 return details::field_rdof_unary<A1,FieldRdof> (A1(FUNCTOR(),lambda), rdof); \
174#define _RHEOLEF_make_field_rdof_unary_scalar_second(FUNCTION,FUNCTOR) \
175template<class FieldRdof> \
178 details::has_field_rdof_interface<FieldRdof>::value \
179 ,details::field_rdof_unary<details::binder_second<FUNCTOR,typename FieldRdof::scalar_type>,FieldRdof> \
181FUNCTION (const FieldRdof& rdof, const typename FieldRdof::scalar_type& lambda) \
183 using A2 = details::binder_second<FUNCTOR,typename FieldRdof::scalar_type>; \
184 return details::field_rdof_unary<A2,FieldRdof> (A2(FUNCTOR(),lambda), rdof); \
194#undef _RHEOLEF_make_field_rdof_unary_scalar_first
195#undef _RHEOLEF_make_field_rdof_unary_scalar_second
field_rdof_unary_iterator< UnaryFunction, InputIterator > self_type
typename std::iterator_traits< InputIterator >::value_type value_type
field_rdof_unary_iterator(const UnaryFunction &f, const InputIterator &iter)
const value_type * pointer
self_type operator++(int)
bool operator==(const self_type &j) const
field_rdof_unary_iterator()=delete
std::forward_iterator_tag iterator_category
self_type & operator+=(difference_type n)
bool operator!=(const self_type &j) const
value_type operator[](size_type n) const
const value_type & reference
value_type operator*() const
std::ptrdiff_t difference_type
self_type operator+(difference_type n) const
typename FieldRdof::scalar_type scalar_type
const_iterator end_dof() const
const_iterator begin_dof() const
typename FieldRdof::size_type size_type
field_rdof_unary_iterator< UnaryFunction, typename FieldRdof::const_iterator > const_iterator
field_rdof_unary(const UnaryFunction &f, const FieldRdof &expr)
field_rdof_unary< UnaryFunction, FieldRdof > self_type
typename field_wdof2rdof_traits< FieldRdof >::type field_rdof
typename float_traits< scalar_type >::type float_type
typename FieldRdof::memory_type memory_type
field_rdof_base< self_type > base
const space_type & get_space() const
#define _RHEOLEF_make_field_rdof_unary_scalar_second(FUNCTION, FUNCTOR)
#define _RHEOLEF_make_field_rdof_unary(FUNCTION, FUNCTOR)
#define _RHEOLEF_make_field_rdof_unary_scalar_first(FUNCTION, FUNCTOR)
This file is part of Rheolef.
typename FieldRdof::scalar_type scalar_type
typename FieldRdof::size_type size_type
typename FieldRdof::memory_type memory_type