Rheolef  7.1
an efficient C++ finite element environment
form_field_expr.h
Go to the documentation of this file.
1 # ifndef _RHEOLEF_FORM_FIELD_EXPR_H
2 # define _RHEOLEF_FORM_FIELD_EXPR_H
3 
24 #include "rheolef/form.h"
25 #include "rheolef/field_component.h"
26 #include "rheolef/field_indirect.h"
27 #include "rheolef/field_expr.h"
28 namespace rheolef {
29 
30 // -----------------------------------------------------------------------
31 // form*field_expr
32 // -----------------------------------------------------------------------
33 #define _RHEOLEF_form_mult_field_var(field_var) \
34 template <class T, class M> \
35 inline \
36 field_basic<T,M> \
37 operator* (const form_basic<T,M>& a, const field_var<T,M>& expr) \
38 { \
39  field_basic<T,M> eh = expr; \
40  return a.operator* (eh); \
41 }
42 _RHEOLEF_form_mult_field_var(field_component)
43 _RHEOLEF_form_mult_field_var(field_component_const)
44 _RHEOLEF_form_mult_field_var(field_indirect)
45 _RHEOLEF_form_mult_field_var(field_indirect_const)
46 #undef _RHEOLEF_form_mult_field_var
47 
48 template <class T, class M, class Expr>
49 inline
50 typename
51 std::enable_if<
52  details::is_field_convertible<Expr>::value
53  && ! details::is_field <Expr>::value
54  ,field_basic<T,M>
55 >::type
56 operator* (const form_basic<T,M>& a, const Expr& expr)
57 {
58  field_basic<T,M> eh = expr;
59  return a.operator* (eh);
60 }
61 
62 }// namespace rheolef
63 # endif /* _RHEOLEF_FORM_FIELD_EXPR_H */
mkgeo_ball.expr
expr
Definition: mkgeo_ball.sh:361
rheolef::operator*
csr< T, sequential > operator*(const T &lambda, const csr< T, sequential > &a)
Definition: csr.h:437
rheolef::type
rheolef::std type
a
Definition: diffusion_isotropic.h:25
eh
field_basic< T, M > eh
Definition: form_field_expr.h:58
rheolef
This file is part of Rheolef.
Definition: compiler_eigen.h:37
rheolef::_RHEOLEF_form_mult_field_var
_RHEOLEF_form_mult_field_var(field_component) _RHEOLEF_form_mult_field_var(field_component_const) _RHEOLEF_form_mult_field_var(field_indirect) _RHEOLEF_form_mult_field_var(field_indirect_const) template< class T