Rheolef
7.2
an efficient C++ finite element environment
Loading...
Searching...
No Matches
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
23
24
#include "rheolef/form.h"
25
#include "rheolef/field_wdof_sliced.h"
26
#include "rheolef/field_wdof_indirect.h"
27
#include "rheolef/field_expr.h"
28
namespace
rheolef
{
29
30
// -----------------------------------------------------------------------
31
// form*field_expr
32
// -----------------------------------------------------------------------
33
#ifdef TO_CLEAN
34
#define _RHEOLEF_form_mult_field_var_old(field_var) \
35
template <class T, class M> \
36
inline \
37
field_basic<T,M> \
38
operator* (const form_basic<T,M>& a, const field_var<T,M>& expr) \
39
{ \
40
field_basic<T,M> eh = expr; \
41
return a.operator* (eh); \
42
}
43
#undef _RHEOLEF_form_mult_field_var_old
44
#endif
// TO_CLEAN
45
46
// TODO: via a template FieldRdof instead of field_var<FieldRdof>
47
// and move it in the form.h file
48
#define _RHEOLEF_form_mult_field_var(field_var) \
49
template <class T, class M, class FieldRdof> \
50
inline \
51
field_basic<T,M> \
52
operator* (const form_basic<T,M>& a, const field_var<FieldRdof>& expr) \
53
{ \
54
field_basic<T,M> eh = expr; \
55
return a.operator* (eh); \
56
}
57
_RHEOLEF_form_mult_field_var
(
details::field_wdof_sliced
)
58
_RHEOLEF_form_mult_field_var
(
details::field_rdof_sliced_const
)
59
_RHEOLEF_form_mult_field_var
(
details::field_wdof_indirect
)
60
_RHEOLEF_form_mult_field_var
(
details::field_rdof_indirect_const
)
61
#undef _RHEOLEF_form_mult_field_var_new
62
63
template
<
class
T,
class
M,
class
Expr>
64
inline
65
typename
66
std::enable_if<
67
details::is_field_wdof<Expr>::value
68
&& ! details::is_field <Expr>::value
69
,
field_basic<T,M>
70
>::type
71
operator*
(
const
form_basic<T,M>
& a,
const
Expr& expr)
72
{
73
field_basic<T,M>
eh = expr;
74
return
a.operator* (eh);
75
}
76
77
}
// namespace rheolef
78
# endif
/* _RHEOLEF_FORM_FIELD_EXPR_H */
rheolef::details::field_rdof_indirect_const
Definition
field_wdof_indirect.h:212
rheolef::details::field_rdof_sliced_const
Definition
field_wdof_sliced.h:204
rheolef::details::field_wdof_indirect
Definition
field_wdof_indirect.h:317
rheolef::details::field_wdof_sliced
Definition
field_wdof_sliced.h:268
rheolef::field_basic
Definition
field.h:219
rheolef::form_basic
Definition
form.h:146
_RHEOLEF_form_mult_field_var
#define _RHEOLEF_form_mult_field_var(field_var)
Definition
form_field_expr.h:48
rheolef
This file is part of Rheolef.
Definition
compiler_eigen.h:39
rheolef::operator*
csr< T, sequential > operator*(const T &lambda, const csr< T, sequential > &a)
Definition
csr.h:437
rheolef::details::is_field_wdof
Definition
field_concept.h:38