FEAT 3
Finite Element Analysis Toolbox
Loading...
Searching...
No Matches
eval_tags.hpp
1// FEAT3: Finite Element Analysis Toolbox, Version 3
2// Copyright (C) 2010 by Stefan Turek & the FEAT group
3// FEAT3 is released under the GNU General Public License version 3,
4// see the file 'copyright.txt' in the top level directory for details.
5
6#pragma once
7
9
10namespace FEAT
11{
21 enum class TrafoTags
22 {
23 none = 0,
25 dom_point = 0x0001,
27 img_point = 0x0002,
29 jac_mat = 0x0004,
31 jac_inv = 0x0008,
33 jac_det = 0x0010,
35 hess_ten = 0x0020,
37 hess_inv = 0x0040,
41 normal = 0x0080
42 };
43
53 static constexpr inline TrafoTags operator|(TrafoTags a, TrafoTags b)
54 {
55 return static_cast<TrafoTags>(static_cast<int>(a) | static_cast<int>(b));
56 }
57
67 static constexpr inline TrafoTags operator&(TrafoTags a, TrafoTags b)
68 {
69 return static_cast<TrafoTags>(static_cast<int>(a) & static_cast<int>(b));
70 }
71
81 static constexpr inline bool operator*(TrafoTags a)
82 {
83 // just check the interesting bits
84 return (static_cast<int>(a) & 0xFF) != 0;
85 }
86
96 enum class SpaceTags
97 {
98 none = 0,
100 value = 0x0001,
102 grad = 0x0002,
104 hess = 0x0004,
106 ref_value = 0x0008,
108 ref_grad = 0x0010,
110 ref_hess = 0x0020
111 };
112
122 static constexpr inline SpaceTags operator|(SpaceTags a, SpaceTags b)
123 {
124 return (SpaceTags)(static_cast<int>(a) | static_cast<int>(b));
125 }
126
136 static constexpr inline SpaceTags operator&(SpaceTags a, SpaceTags b)
137 {
138 return (SpaceTags)(static_cast<int>(a) & static_cast<int>(b));
139 }
140
150 static constexpr inline bool operator*(SpaceTags a)
151 {
152 // just check the interesting bits
153 return (static_cast<int>(a) & 0x3F) != 0;
154 }
155} // namespace FEAT
FEAT Kernel base header.
FEAT namespace.
Definition: adjactor.hpp:12
static constexpr bool operator*(TrafoTags a)
bool conversion operator
Definition: eval_tags.hpp:81
static constexpr TrafoTags operator|(TrafoTags a, TrafoTags b)
Binary OR operator for TrafoTags values.
Definition: eval_tags.hpp:53
static constexpr TrafoTags operator&(TrafoTags a, TrafoTags b)
Binary AND operator for TrafoTags values.
Definition: eval_tags.hpp:67
SpaceTags
Space configuration tags enum.
Definition: eval_tags.hpp:97
@ value
specifies whether the space should supply basis function values
@ hess
specifies whether the space should supply basis function hessians
@ ref_value
specifies whether the space should supply reference basis function values
@ ref_hess
specifies whether the space should supply reference basis function hessians
@ ref_grad
specifies whether the space should supply reference basis function gradients
@ grad
specifies whether the space should supply basis function gradients
TrafoTags
Trafo configuration tags enum.
Definition: eval_tags.hpp:22
@ img_point
specifies whether the trafo should supply image point coordinates
@ hess_inv
specifies whether the trafo should supply inverse hessian tensors
@ dom_point
specifies whether the trafo should supply domain point coordinates
@ hess_ten
specifies whether the trafo should supply hessian tensors
@ jac_inv
specifies whether the trafo should supply inverse jacobian matrices
@ jac_mat
specifies whether the trafo should supply jacobian matrices
@ jac_det
specifies whether the trafo should supply jacobian determinants