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

Go to the source code of this file.

Classes

class  field_expr_v2_variational_unary< UnaryFunction, Expr >
 
struct  field_expr_v2_variational_unary< UnaryFunction, Expr >::evaluate_call_check< Result, Arg, Status >
 
struct  field_expr_v2_variational_unary< UnaryFunction, Expr >::evaluate_call_check< Result, Arg, std::true_type >
 
struct  field_expr_v2_variational_unary< UnaryFunction, Expr >::evaluate_switch< This, Result, Arg, Status >
 
struct  field_expr_v2_variational_unary< UnaryFunction, Expr >::evaluate_switch< This, Result, Arg, std::true_type >
 
struct  is_field_expr_v2_variational_arg< field_expr_v2_variational_unary< F, Expr > >
 
class  field_expr_v2_variational_binary< BinaryFunction, Expr1, Expr2 >
 
struct  field_expr_v2_variational_binary< BinaryFunction, Expr1, Expr2 >::evaluate_call_check< Result, Arg1, Arg2, Status >
 
struct  field_expr_v2_variational_binary< BinaryFunction, Expr1, Expr2 >::evaluate_call_check< Result, Arg1, Arg2, std::true_type >
 
struct  field_expr_v2_variational_binary< BinaryFunction, Expr1, Expr2 >::evaluate_switch< This, Result, Arg1, Arg2, Undet1, Undet2 >
 
struct  field_expr_v2_variational_binary< BinaryFunction, Expr1, Expr2 >::evaluate_switch< This, Result, Arg1, Arg2, std::false_type, std::false_type >
 
struct  field_expr_v2_variational_binary< BinaryFunction, Expr1, Expr2 >::evaluate_switch< This, Result, Arg1, Arg2, std::true_type, std::false_type >
 
struct  field_expr_v2_variational_binary< BinaryFunction, Expr1, Expr2 >::evaluate_switch< This, Result, Arg1, Arg2, std::false_type, std::true_type >
 
struct  field_expr_v2_variational_binary< BinaryFunction, Expr1, Expr2 >::evaluate_switch< This, Result, Arg1, Arg2, std::true_type, std::true_type >
 
struct  field_expr_v2_variational_binary< BinaryFunction, Expr1, Expr2 >::hint< Result >
 
struct  is_field_expr_v2_variational_arg< field_expr_v2_variational_binary< F, Expr1, Expr2 > >
 
struct  is_field_expr_v2_variational_binary_plus_minus< Expr1, Expr2, Sfinae >
 
struct  is_field_expr_v2_variational_binary_plus_minus< Expr1, Expr2, typename std::enable_if< is_field_expr_v2_variational_arg< Expr1 >::value &&is_field_expr_v2_variational_arg< Expr2 >::value >::type >
 
struct  nl_switch< This, Arg1 >
 
struct  nl_switch< This, typename This::scalar_type >
 
struct  nl_switch< This, point_basic< typename This::scalar_type > >
 
struct  nl_switch< This, tensor_basic< typename This::scalar_type > >
 
struct  nl_switch< This, tensor3_basic< typename This::scalar_type > >
 
struct  nl_switch< This, tensor4_basic< typename This::scalar_type > >
 
class  field_expr_v2_variational_binary_binded< BinaryFunction, NLExpr, VFExpr >
 
struct  field_expr_v2_variational_binary_binded< BinaryFunction, NLExpr, VFExpr >::evaluate_call_check< Result, Arg1, Arg2, Status >
 
struct  field_expr_v2_variational_binary_binded< BinaryFunction, NLExpr, VFExpr >::evaluate_call_check< Result, Arg1, Arg2, std::true_type >
 
struct  field_expr_v2_variational_binary_binded< BinaryFunction, NLExpr, VFExpr >::evaluate_switch< This, Result, Arg1, Arg2, Undet1, Undet2 >
 
struct  field_expr_v2_variational_binary_binded< BinaryFunction, NLExpr, VFExpr >::evaluate_switch< This, Result, Arg1, Arg2, std::false_type, std::false_type >
 
struct  field_expr_v2_variational_binary_binded< BinaryFunction, NLExpr, VFExpr >::evaluate_switch< This, Result, Arg1, Arg2, std::true_type, std::false_type >
 
struct  field_expr_v2_variational_binary_binded< BinaryFunction, NLExpr, VFExpr >::evaluate_switch< This, Result, Arg1, Arg2, std::false_type, std::true_type >
 
struct  field_expr_v2_variational_binary_binded< BinaryFunction, NLExpr, VFExpr >::evaluate_switch< This, Result, Arg1, Arg2, std::true_type, std::true_type >
 
struct  field_expr_v2_variational_binary_binded< BinaryFunction, NLExpr, VFExpr >::hint< Result >
 
struct  is_field_expr_v2_variational_arg< field_expr_v2_variational_binary_binded< F, Expr1, Expr2 > >
 
struct  is_field_expr_v2_variational_binary_multiplies_divides_left< Expr1, Expr2, Sfinae >
 
struct  is_field_expr_v2_variational_binary_multiplies_divides_left< Expr1, Expr2, typename std::enable_if< is_field_expr_v2_nonlinear_arg< Expr1 >::value &&! is_field_expr_v2_constant< Expr1 >::value &&is_field_expr_v2_variational_arg< Expr2 >::value >::type >
 
struct  is_field_expr_v2_variational_binary_multiplies_divides_right< Expr1, Expr2 >
 

Namespaces

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

Macros

#define _RHEOLEF_switch(VALUED, VALUE)
 
#define _RHEOLEF_switch(VALUED, VALUE)
 
#define _RHEOLEF_make_field_expr_v2_variational_unary_operator(FUNCTION, FUNCTOR)
 
#define _RHEOLEF_switch1(VALUED1, VALUE1)
 
#define _RHEOLEF_switch1(VALUED1, VALUE1)
 
#define _RHEOLEF_switch2(VALUED2, VALUE2)
 
#define _RHEOLEF_switch2(VALUED2, VALUE2)
 
#define _RHEOLEF_switch2(VALUE1, VALUED2, VALUE2)
 
#define _RHEOLEF_switch1(VALUED1, VALUE1)
 
#define _RHEOLEF_switch2(VALUE1, VALUED2, VALUE2)
 
#define _RHEOLEF_switch1(VALUED1, VALUE1)
 
#define _RHEOLEF_make_field_expr_v2_variational_binary_operator_plus_minus(FUNCTION, FUNCTOR)
 
#define _RHEOLEF_switch(A1_VALUED, A1_VALUE)
 
#define _RHEOLEF_switch(A1_VALUED, A1_VALUE)
 
#define _RHEOLEF_switch(A2_VALUED, A2_VALUE)
 
#define _RHEOLEF_switch(A2_VALUED, A2_VALUE)
 
#define _RHEOLEF_switch_A2(A1_VALUE, A2_VALUED, A2_VALUE)
 
#define _RHEOLEF_switch(A1_VALUED, A1_VALUE)
 
#define _RHEOLEF_switch_A2(A1_VALUE, A2_VALUED, A2_VALUE)
 
#define _RHEOLEF_switch(A1_VALUED, A1_VALUE)
 
#define _RHEOLEF_make_field_expr_v2_variational_binary_operator_multiplies_divides_left(FUNCTION, FUNCTOR)
 
#define _RHEOLEF_make_field_expr_v2_variational_binary_operator_multiplies_divides_right(FUNCTION, FUNCTOR)
 
#define _RHEOLEF_make_field_expr_v2_variational_binary_operator_multiplies_divides(FUNCTION, FUNCTOR)
 
#define _RHEOLEF_make_field_expr_v2_variational_binary_operator_multiplies_divides_constant_left(FUNCTION, FUNCTOR)
 
#define _RHEOLEF_make_field_expr_v2_variational_binary_operator_multiplies_divides_constant_right(FUNCTION, FUNCTOR)
 
#define _RHEOLEF_make_field_expr_v2_variational_binary_operator_multiplies_divides_constant(FUNCTION, FUNCTOR)
 

Functions

 _RHEOLEF_make_field_expr_v2_variational_unary_operator (operator+, details::unary_plus) _RHEOLEF_make_field_expr_v2_variational_unary_operator(operator-
 
details::negate _RHEOLEF_make_field_expr_v2_variational_unary_operator (tr, details::tr_) _RHEOLEF_make_field_expr_v2_variational_unary_operator(trans
 
 _RHEOLEF_make_field_expr_v2_variational_binary_operator_plus_minus (operator+, details::plus) _RHEOLEF_make_field_expr_v2_variational_binary_operator_plus_minus(operator-
 
 _RHEOLEF_make_field_expr_v2_variational_binary_operator_multiplies_divides (operator*, details::multiplies) _RHEOLEF_make_field_expr_v2_variational_binary_operator_multiplies_divides_right(operator/
 
details::divides _RHEOLEF_make_field_expr_v2_variational_binary_operator_multiplies_divides (dot, details::dot_) _RHEOLEF_make_field_expr_v2_variational_binary_operator_multiplies_divides(ddot
 
details::divides details::ddot_ _RHEOLEF_make_field_expr_v2_variational_binary_operator_multiplies_divides (dddot, details::dddot_) namespace details
 
 _RHEOLEF_make_field_expr_v2_variational_binary_operator_multiplies_divides_constant (operator*, details::multiplies) _RHEOLEF_make_field_expr_v2_variational_binary_operator_multiplies_divides_constant_right(operator/
 
details::divides _RHEOLEF_make_field_expr_v2_variational_binary_operator_multiplies_divides_constant (dot, details::dot_) _RHEOLEF_make_field_expr_v2_variational_binary_operator_multiplies_divides_constant(ddot
 

Macro Definition Documentation

◆ _RHEOLEF_switch [1/8]

#define _RHEOLEF_switch (   VALUED,
  VALUE 
)
Value:
case space_constant::VALUED: \
obj.template evaluate_internal<Result, VALUE>(omega_K, K, value); break;

◆ _RHEOLEF_switch [2/8]

#define _RHEOLEF_switch (   VALUED,
  VALUE 
)
Value:
case space_constant::VALUED: \
obj.template evaluate_internal<Result, VALUE>(omega_K, K, sid,value, do_local_component_assembly); break;

◆ _RHEOLEF_make_field_expr_v2_variational_unary_operator

#define _RHEOLEF_make_field_expr_v2_variational_unary_operator (   FUNCTION,
  FUNCTOR 
)
Value:
template<class Expr> \
inline \
typename \
std::enable_if< \
details::is_field_expr_v2_variational_arg<Expr>::value \
,details::field_expr_v2_variational_unary< \
FUNCTOR \
,Expr \
> \
>::type \
FUNCTION (const Expr& expr) \
{ \
return details::field_expr_v2_variational_unary <FUNCTOR,Expr> (FUNCTOR(), expr); \
}

Definition at line 300 of file field_expr_variational.h.

◆ _RHEOLEF_switch1 [1/4]

#define _RHEOLEF_switch1 (   VALUED1,
  VALUE1 
)
Value:
case space_constant::VALUED1: \
obj.template evaluate_internal<Result, VALUE1, Arg2>(omega_K, K, value); break;

◆ _RHEOLEF_switch1 [2/4]

#define _RHEOLEF_switch1 (   VALUED1,
  VALUE1 
)
Value:
case space_constant::VALUED1: \
obj.template evaluate_on_side_internal<Result, VALUE1, Arg2>(omega_K, K, sid, value, do_local_component_assembly); break;

◆ _RHEOLEF_switch2 [1/4]

#define _RHEOLEF_switch2 (   VALUED2,
  VALUE2 
)
Value:
case space_constant::VALUED2: \
obj.template evaluate_internal<Result, Arg1, VALUE2>(omega_K, K, value); break;

◆ _RHEOLEF_switch2 [2/4]

#define _RHEOLEF_switch2 (   VALUED2,
  VALUE2 
)
Value:
case space_constant::VALUED2: \
obj.template evaluate_on_side_internal<Result, Arg1, VALUE2>(omega_K, K, sid, value, do_local_component_assembly); break;

◆ _RHEOLEF_switch2 [3/4]

#define _RHEOLEF_switch2 (   VALUE1,
  VALUED2,
  VALUE2 
)
Value:
case space_constant::VALUED2: \
obj.template evaluate_internal<Result, VALUE1, VALUE2>(omega_K, K, value); break;

◆ _RHEOLEF_switch1 [3/4]

#define _RHEOLEF_switch1 (   VALUED1,
  VALUE1 
)
Value:
case space_constant::VALUED1: { \
switch (arg2_valued_tag) { \
_RHEOLEF_switch2(VALUE1,scalar,T2) \
_RHEOLEF_switch2(VALUE1,vector,point_basic<T2>) \
_RHEOLEF_switch2(VALUE1,tensor,tensor_basic<T2>) \
_RHEOLEF_switch2(VALUE1,unsymmetric_tensor,tensor_basic<T2>) \
_RHEOLEF_switch2(VALUE1,tensor3,tensor3_basic<T2>) \
_RHEOLEF_switch2(VALUE1,tensor4,tensor4_basic<T2>) \
default: error_macro ("unexpected second argument valued tag="<<arg2_valued_tag); \
} \
break; \
}
see the tensor3 page for the full documentation
see the tensor4 page for the full documentation
see the tensor page for the full documentation
#define error_macro(message)
Definition dis_macros.h:49

◆ _RHEOLEF_switch2 [4/4]

#define _RHEOLEF_switch2 (   VALUE1,
  VALUED2,
  VALUE2 
)
Value:
case space_constant::VALUED2: \
obj.template evaluate_on_side_internal<Result, VALUE1, VALUE2>(omega_K, K, sid, value, do_local_component_assembly); break;

◆ _RHEOLEF_switch1 [4/4]

#define _RHEOLEF_switch1 (   VALUED1,
  VALUE1 
)
Value:
case space_constant::VALUED1: { \
switch (arg2_valued_tag) { \
_RHEOLEF_switch2(VALUE1,scalar,T2) \
_RHEOLEF_switch2(VALUE1,vector,point_basic<T2>) \
_RHEOLEF_switch2(VALUE1,tensor,tensor_basic<T2>) \
_RHEOLEF_switch2(VALUE1,unsymmetric_tensor,tensor_basic<T2>) \
_RHEOLEF_switch2(VALUE1,tensor3,tensor3_basic<T2>) \
_RHEOLEF_switch2(VALUE1,tensor4,tensor4_basic<T2>) \
default: error_macro ("unexpected second argument valued tag="<<arg2_valued_tag); \
} \
break; \
}

◆ _RHEOLEF_make_field_expr_v2_variational_binary_operator_plus_minus

#define _RHEOLEF_make_field_expr_v2_variational_binary_operator_plus_minus (   FUNCTION,
  FUNCTOR 
)
Value:
template<class Expr1, class Expr2> \
inline \
typename \
std::enable_if< \
details::is_field_expr_v2_variational_binary_plus_minus <Expr1,Expr2>::value \
,details::field_expr_v2_variational_binary< \
FUNCTOR \
,Expr1 \
,Expr2 \
> \
>::type \
FUNCTION (const Expr1& expr1, const Expr2& expr2) \
{ \
return details::field_expr_v2_variational_binary <FUNCTOR, Expr1, Expr2> (FUNCTOR(), expr1, expr2); \
}

Definition at line 770 of file field_expr_variational.h.

◆ _RHEOLEF_switch [3/8]

#define _RHEOLEF_switch (   A1_VALUED,
  A1_VALUE 
)
Value:
case space_constant::A1_VALUED: \
obj.template evaluate_internal<Result, A1_VALUE, Arg2> (omega_K, K, value); break;

◆ _RHEOLEF_switch [4/8]

#define _RHEOLEF_switch (   A1_VALUED,
  A1_VALUE 
)
Value:
case space_constant::A1_VALUED: \
obj.template evaluate_on_side_internal<Result, A1_VALUE, Arg2> (omega_K, K, sid, value, do_local_component_assembly); break;

◆ _RHEOLEF_switch [5/8]

#define _RHEOLEF_switch (   A2_VALUED,
  A2_VALUE 
)
Value:
case space_constant::A2_VALUED: \
obj.template evaluate_internal<Result, Arg1, A2_VALUE> (omega_K, K, value); break;

◆ _RHEOLEF_switch [6/8]

#define _RHEOLEF_switch (   A2_VALUED,
  A2_VALUE 
)
Value:
case space_constant::A2_VALUED: \
obj.template evaluate_on_side_internal<Result, Arg1, A2_VALUE> (omega_K, K, sid, value, do_local_component_assembly); break;

◆ _RHEOLEF_switch_A2 [1/2]

#define _RHEOLEF_switch_A2 (   A1_VALUE,
  A2_VALUED,
  A2_VALUE 
)
Value:
case space_constant::A2_VALUED: \
obj.template evaluate_internal<Result, A1_VALUE, A2_VALUE> (omega_K, K, value); break;

◆ _RHEOLEF_switch [7/8]

#define _RHEOLEF_switch (   A1_VALUED,
  A1_VALUE 
)
Value:
case space_constant::A1_VALUED: { \
switch (arg2_valued_tag) { \
_RHEOLEF_switch_A2(A1_VALUE,scalar,T2) \
_RHEOLEF_switch_A2(A1_VALUE,vector,point_basic<T2>) \
_RHEOLEF_switch_A2(A1_VALUE,tensor,tensor_basic<T2>) \
_RHEOLEF_switch_A2(A1_VALUE,unsymmetric_tensor,tensor_basic<T2>) \
_RHEOLEF_switch_A2(A1_VALUE,tensor3,tensor3_basic<T2>) \
_RHEOLEF_switch_A2(A1_VALUE,tensor4,tensor4_basic<T2>) \
default: error_macro ("unexpected second argument valued tag="<<arg2_valued_tag); \
} \
break; \
}

◆ _RHEOLEF_switch_A2 [2/2]

#define _RHEOLEF_switch_A2 (   A1_VALUE,
  A2_VALUED,
  A2_VALUE 
)
Value:
case space_constant::A2_VALUED: \
obj.template evaluate_on_side_internal<Result, A1_VALUE, A2_VALUE> (omega_K, K, sid, value, do_local_component_assembly); break;

◆ _RHEOLEF_switch [8/8]

#define _RHEOLEF_switch (   A1_VALUED,
  A1_VALUE 
)
Value:
case space_constant::A1_VALUED: { \
switch (arg2_valued_tag) { \
_RHEOLEF_switch_A2(A1_VALUE,scalar,T2) \
_RHEOLEF_switch_A2(A1_VALUE,vector,point_basic<T2>) \
_RHEOLEF_switch_A2(A1_VALUE,tensor,tensor_basic<T2>) \
_RHEOLEF_switch_A2(A1_VALUE,unsymmetric_tensor,tensor_basic<T2>) \
_RHEOLEF_switch_A2(A1_VALUE,tensor3,tensor3_basic<T2>) \
_RHEOLEF_switch_A2(A1_VALUE,tensor4,tensor4_basic<T2>) \
default: error_macro ("unexpected second argument valued tag="<<arg2_valued_tag); \
} \
break; \
}

◆ _RHEOLEF_make_field_expr_v2_variational_binary_operator_multiplies_divides_left

#define _RHEOLEF_make_field_expr_v2_variational_binary_operator_multiplies_divides_left (   FUNCTION,
  FUNCTOR 
)
Value:
template<class Expr1, class Expr2> \
inline \
typename \
std::enable_if< \
details::is_field_expr_v2_variational_binary_multiplies_divides_left <Expr1,Expr2>::value \
,details::field_expr_v2_variational_binary_binded< \
FUNCTOR \
,typename details::field_expr_v2_nonlinear_terminal_wrapper_traits<Expr1>::type \
,Expr2 /* vf */ \
> \
>::type \
FUNCTION (const Expr1& expr1, const Expr2& expr2) \
{ \
typedef typename details::field_expr_v2_nonlinear_terminal_wrapper_traits<Expr1>::type wrap1_t; \
return details::field_expr_v2_variational_binary_binded \
<FUNCTOR, wrap1_t, Expr2> \
(FUNCTOR(), wrap1_t(expr1), expr2); \
}

Definition at line 1400 of file field_expr_variational.h.

◆ _RHEOLEF_make_field_expr_v2_variational_binary_operator_multiplies_divides_right

#define _RHEOLEF_make_field_expr_v2_variational_binary_operator_multiplies_divides_right (   FUNCTION,
  FUNCTOR 
)
Value:
template<class Expr1, class Expr2> \
inline \
typename \
std::enable_if< \
details::is_field_expr_v2_variational_binary_multiplies_divides_right <Expr1,Expr2>::value \
,details::field_expr_v2_variational_binary_binded< \
details::swapper<FUNCTOR> \
, typename details::field_expr_v2_nonlinear_terminal_wrapper_traits<Expr2>::type \
,Expr1 /* vf */ \
> \
>::type \
FUNCTION (const Expr1& expr1, const Expr2& expr2) \
{ \
typedef typename details::field_expr_v2_nonlinear_terminal_wrapper_traits<Expr2>::type wrap2_t; \
return details::field_expr_v2_variational_binary_binded \
<details::swapper<FUNCTOR>, wrap2_t, Expr1> \
(details::swapper<FUNCTOR>(FUNCTOR()), wrap2_t(expr2), expr1); \
}

Definition at line 1420 of file field_expr_variational.h.

◆ _RHEOLEF_make_field_expr_v2_variational_binary_operator_multiplies_divides

#define _RHEOLEF_make_field_expr_v2_variational_binary_operator_multiplies_divides (   FUNCTION,
  FUNCTOR 
)
Value:
_RHEOLEF_make_field_expr_v2_variational_binary_operator_multiplies_divides_right (FUNCTION,FUNCTOR)
#define _RHEOLEF_make_field_expr_v2_variational_binary_operator_multiplies_divides_left(FUNCTION, FUNCTOR)

Definition at line 1439 of file field_expr_variational.h.

◆ _RHEOLEF_make_field_expr_v2_variational_binary_operator_multiplies_divides_constant_left

#define _RHEOLEF_make_field_expr_v2_variational_binary_operator_multiplies_divides_constant_left (   FUNCTION,
  FUNCTOR 
)
Value:
template<class Expr1, class Expr2> \
inline \
typename \
std::enable_if< \
details::is_field_expr_v2_variational_binary_multiplies_divides_constant_left <Expr1,Expr2>::value \
,details::field_expr_v2_variational_unary< \
details::binder_first <FUNCTOR, Expr1> \
,Expr2 /* vf */ \
> \
>::type \
FUNCTION (const Expr1& expr1, const Expr2& expr2) \
{ \
return details::field_expr_v2_variational_unary \
<details::binder_first <FUNCTOR,Expr1>, Expr2> \
(details::binder_first <FUNCTOR,Expr1> (FUNCTOR(), expr1), expr2); \
}

Definition at line 1479 of file field_expr_variational.h.

◆ _RHEOLEF_make_field_expr_v2_variational_binary_operator_multiplies_divides_constant_right

#define _RHEOLEF_make_field_expr_v2_variational_binary_operator_multiplies_divides_constant_right (   FUNCTION,
  FUNCTOR 
)
Value:
template<class Expr1, class Expr2> \
inline \
typename \
std::enable_if< \
details::is_field_expr_v2_variational_binary_multiplies_divides_constant_right <Expr1,Expr2>::value \
,details::field_expr_v2_variational_unary< \
details::binder_second <FUNCTOR, Expr2> \
,Expr1 /* vf */ \
> \
>::type \
FUNCTION (const Expr1& expr1, const Expr2& expr2) \
{ \
return details::field_expr_v2_variational_unary \
<details::binder_second <FUNCTOR,Expr2>, Expr1> \
(details::binder_second <FUNCTOR,Expr2> (FUNCTOR(), expr2), expr1); \
}

Definition at line 1497 of file field_expr_variational.h.

◆ _RHEOLEF_make_field_expr_v2_variational_binary_operator_multiplies_divides_constant

#define _RHEOLEF_make_field_expr_v2_variational_binary_operator_multiplies_divides_constant (   FUNCTION,
  FUNCTOR 
)
Value:
_RHEOLEF_make_field_expr_v2_variational_binary_operator_multiplies_divides_constant_right (FUNCTION,FUNCTOR)
#define _RHEOLEF_make_field_expr_v2_variational_binary_operator_multiplies_divides_constant_left(FUNCTION, FUNCTOR)

Definition at line 1515 of file field_expr_variational.h.