Rheolef  7.2
an efficient C++ finite element environment
 
Loading...
Searching...
No Matches
vec_expr_v2.h File Reference

Go to the source code of this file.

Classes

struct  is_vec< T >
 
struct  is_vec< vec< T, M > >
 
struct  is_vec_expr_v2_arg< T >
 
struct  is_vec_expr_v2_arg< vec< T, M > >
 
struct  vec_expr_v2_unary< Op, Expr >
 
struct  vec_expr_v2_unary< Op, Expr >::const_iterator
 
struct  is_vec_expr_v2_arg< vec_expr_v2_unary< Op, Expr > >
 
struct  vec_expr_v2_binary< Op, Expr1, Expr2 >
 
struct  vec_expr_v2_binary< Op, Expr1, Expr2 >::const_iterator
 
struct  is_vec_expr_v2_arg< vec_expr_v2_binary< Op, Expr1, Expr2 > >
 
struct  vec_expr_v2_binary_traits< Op, Expr1, Expr2, Sfinae >
 
struct  vec_expr_v2_binary_traits< Op, Expr1, Expr2, typename std::enable_if< details::is_vec_expr_v2_arg< Expr1 >::value &&details::is_vec_expr_v2_arg< Expr2 >::value >::type >
 
struct  vec_expr_v2_binary_traits< Op, Expr1, Expr2, typename std::enable_if< details::is_rheolef_arithmetic< Expr1 >::value &&details::is_vec_expr_v2_arg< Expr2 >::value >::type >
 
struct  vec_expr_v2_binary_traits< Op, Expr1, Expr2, typename std::enable_if< details::is_vec_expr_v2_arg< Expr1 >::value &&details::is_rheolef_arithmetic< Expr2 >::value >::type >
 
class  std
 

Namespaces

namespace  rheolef
 This file is part of Rheolef.
 
namespace  rheolef::details
 

Macros

#define _RHEOLEF_vec_expr_v2_unary_operator(OP, FUNCTOR)
 
#define _RHEOLEF_vec_expr_v2_binary_operator(OP, FUNCTOR)
 
#define _RHEOLEF_vec_expr_v2_op_assign(OP, FUNCTOR)
 
#define _RHEOLEF_vec_expr_v2_op_assign_constant(OP, FUNCTOR)
 

Typedefs

typedef Expr1::memory_type M
 

Functions

 _RHEOLEF_vec_expr_v2_unary_operator (+, details::generic_unary_plus<>) _RHEOLEF_vec_expr_v2_unary_operator(-
 
 _RHEOLEF_vec_expr_v2_binary_operator (+, details::generic_plus<>) _RHEOLEF_vec_expr_v2_binary_operator(-
 
template<class Expr1 , class Expr2 >
details::generic_minus std::enable_if<(details::is_rheolef_arithmetic< Expr1 >::value &&details::is_vec_expr_v2_arg< Expr2 >::value)||(details::is_vec_expr_v2_arg< Expr1 >::value &&details::is_rheolef_arithmetic< Expr2 >::value), typenamedetails::vec_expr_v2_binary_traits< details::generic_multiplies<>, Expr1, Expr2 >::type >::type operator* (const Expr1 &expr1, const Expr2 &expr2)
 
template<class Expr1 , class Expr2 >
std::enable_if<(details::is_vec_expr_v2_arg< Expr1 >::value &&details::is_rheolef_arithmetic< Expr2 >::value), typenamedetails::vec_expr_v2_binary_traits< details::generic_divides<>, Expr1, Expr2 >::type >::type operator/ (const Expr1 &expr1, const Expr2 &expr2)
 
 _RHEOLEF_vec_expr_v2_op_assign (+=, details::plus_assign) _RHEOLEF_vec_expr_v2_op_assign(-
 
 _RHEOLEF_vec_expr_v2_op_assign_constant (+=, details::plus_assign) _RHEOLEF_vec_expr_v2_op_assign_constant(-
 
details::minus_assign _RHEOLEF_vec_expr_v2_op_assign_constant details::multiplies_assign _RHEOLEF_vec_expr_v2_op_assign_constant (/=, details::divides_assign) template< class Expr1
 dot(x,y): see the expression page for the full documentation
 
rheolef::std enable_if ::type dot const Expr1 expr1, const Expr2 expr2 dot (const Expr1 &expr1, const Expr2 &expr2)
 
return dis_inner_product (expr1.begin(), expr2.begin(), expr1.size(), expr1.ownership().comm(), M())
 
template<class Expr1 , class Expr2 >
std::enable_if< details::is_vec_expr_v2_arg< Expr1 >::value &&details::is_rheolef_arithmetic< Expr2 >::value, typenameExpr1::float_type >::type dot (const Expr1 &expr1, const Expr2 &expr2)
 dot(x,y): see the expression page for the full documentation
 

Variables

rheolef::details::is_vec dot
 

Macro Definition Documentation

◆ _RHEOLEF_vec_expr_v2_unary_operator

#define _RHEOLEF_vec_expr_v2_unary_operator (   OP,
  FUNCTOR 
)
Value:
template <class Expr> \
inline \
typename \
std::enable_if< \
details::is_vec_expr_v2_arg<Expr>::value, \
details::vec_expr_v2_unary< \
FUNCTOR, \
Expr \
> \
>::type \
operator OP (const Expr& expr) \
{ \
typedef details::vec_expr_v2_unary <FUNCTOR, Expr> expr_t; \
return expr_t (FUNCTOR(), expr); \
}

Definition at line 129 of file vec_expr_v2.h.

◆ _RHEOLEF_vec_expr_v2_binary_operator

#define _RHEOLEF_vec_expr_v2_binary_operator (   OP,
  FUNCTOR 
)
Value:
template <class Expr1, class Expr2> \
inline \
typename \
std::enable_if< \
(details::is_vec_expr_v2_arg<Expr1>::value && \
details::is_vec_expr_v2_arg<Expr2>::value) || \
(details::is_rheolef_arithmetic<Expr1>::value && \
details::is_vec_expr_v2_arg<Expr2>::value) || \
(details::is_vec_expr_v2_arg<Expr1>::value && \
details::is_rheolef_arithmetic<Expr2>::value), \
typename \
details::vec_expr_v2_binary_traits< \
FUNCTOR, \
Expr1, Expr2 \
>::type \
>::type \
operator OP (const Expr1& expr1, const Expr2& expr2) \
{ \
typedef typename details::vec_expr_v2_binary_traits <FUNCTOR, Expr1, Expr2>::type expr_t; \
return expr_t (FUNCTOR(), expr1, expr2); \
}

Definition at line 248 of file vec_expr_v2.h.

◆ _RHEOLEF_vec_expr_v2_op_assign

#define _RHEOLEF_vec_expr_v2_op_assign (   OP,
  FUNCTOR 
)
Value:
template<class T, class M, class Expr> \
inline \
typename std::enable_if< \
details::is_vec_expr_v2_arg<Expr>::value, \
vec<T,M>&>::type \
operator OP (vec<T,M>& x, const Expr& expr) \
{ \
check_macro (x.size() == expr.size(), "vec " << #OP << " vec_expression : incompatible spaces " \
<< x.size() << " and " << expr.size()); \
details::assign_with_operator (x.begin(), x.end(), expr.begin(), FUNCTOR()); \
return x; \
}

Definition at line 352 of file vec_expr_v2.h.

◆ _RHEOLEF_vec_expr_v2_op_assign_constant

#define _RHEOLEF_vec_expr_v2_op_assign_constant (   OP,
  FUNCTOR 
)
Value:
template<class T, class M, class Expr> \
inline \
typename std::enable_if< \
details::is_rheolef_arithmetic<Expr>::value, \
vec<T,M>&>::type \
operator OP (vec<T,M>& x, const Expr& expr) \
{ \
details::assign_with_operator (x.begin(), x.end(), details::iterator_on_constant<Expr>(expr), FUNCTOR()); \
return x; \
}

Definition at line 370 of file vec_expr_v2.h.

Typedef Documentation

◆ M

typedef Expr1::memory_type M

Definition at line 416 of file vec_expr_v2.h.

Function Documentation

◆ dis_inner_product()

return dis_inner_product ( expr1.  begin(),
expr2.  begin(),
expr1.  size(),
expr1.  ownership).comm(,
M()   
)