16 #ifndef dealii_fe_update_flags_h
17 #define dealii_fe_update_flags_h
20 #include <deal.II/base/config.h>
22 #include <deal.II/base/derivative_form.h>
23 #include <deal.II/base/point.h>
24 #include <deal.II/base/table.h>
25 #include <deal.II/base/tensor.h>
30 DEAL_II_NAMESPACE_OPEN
76 update_values = 0x0001,
82 update_gradients = 0x0002,
88 update_hessians = 0x0004,
94 update_3rd_derivatives = 0x0008,
101 update_boundary_forms = 0x0010,
117 update_quadrature_points = 0x0020,
124 update_JxW_values = 0x0040,
131 update_normal_vectors = 0x0080,
135 update_face_normal_vectors DEAL_II_DEPRECATED = update_normal_vectors,
139 update_cell_normal_vectors DEAL_II_DEPRECATED = update_normal_vectors,
145 update_jacobians = 0x0100,
150 update_jacobian_grads = 0x0200,
156 update_inverse_jacobians = 0x0400,
163 update_covariant_transformation = 0x0800,
170 update_contravariant_transformation = 0x1000,
176 update_transformation_values = 0x2000,
182 update_transformation_gradients = 0x4000,
187 update_volume_elements = 0x10000,
192 update_jacobian_pushed_forward_grads = 0x100000,
196 update_jacobian_2nd_derivatives = 0x200000,
201 update_jacobian_pushed_forward_2nd_derivatives = 0x400000,
205 update_jacobian_3rd_derivatives = 0x800000,
210 update_jacobian_pushed_forward_3rd_derivatives = 0x1000000,
214 update_q_points DEAL_II_DEPRECATED = update_quadrature_points,
218 update_second_derivatives DEAL_II_DEPRECATED = update_hessians,
223 update_piola = update_volume_elements | update_contravariant_transformation,
229 update_quadrature_points | update_JxW_values | update_jacobians |
230 update_jacobian_grads | update_jacobian_pushed_forward_grads |
231 update_jacobian_2nd_derivatives |
232 update_jacobian_pushed_forward_2nd_derivatives |
233 update_jacobian_3rd_derivatives |
234 update_jacobian_pushed_forward_3rd_derivatives | update_inverse_jacobians |
235 update_boundary_forms | update_normal_vectors |
237 update_covariant_transformation | update_contravariant_transformation |
238 update_transformation_values | update_transformation_gradients |
240 update_volume_elements
249 template <
class StreamType>
251 operator<<(StreamType &s,
const UpdateFlags u)
253 s <<
" UpdateFlags|";
254 if (u & update_values)
256 if (u & update_gradients)
258 if (u & update_hessians)
260 if (u & update_3rd_derivatives)
261 s <<
"3rd_derivatives|";
262 if (u & update_quadrature_points)
263 s <<
"quadrature_points|";
264 if (u & update_JxW_values)
266 if (u & update_normal_vectors)
267 s <<
"normal_vectors|";
268 if (u & update_jacobians)
270 if (u & update_inverse_jacobians)
271 s <<
"inverse_jacobians|";
272 if (u & update_jacobian_grads)
273 s <<
"jacobian_grads|";
274 if (u & update_covariant_transformation)
275 s <<
"covariant_transformation|";
276 if (u & update_contravariant_transformation)
277 s <<
"contravariant_transformation|";
278 if (u & update_transformation_values)
279 s <<
"transformation_values|";
280 if (u & update_transformation_gradients)
281 s <<
"transformation_gradients|";
282 if (u & update_jacobian_pushed_forward_grads)
283 s <<
"jacobian_pushed_forward_grads|";
284 if (u & update_jacobian_2nd_derivatives)
285 s <<
"jacobian_2nd_derivatives|";
286 if (u & update_jacobian_pushed_forward_2nd_derivatives)
287 s <<
"jacobian_pushed_forward_2nd_derivatives|";
288 if (u & update_jacobian_3rd_derivatives)
289 s <<
"jacobian_3rd_derivatives|";
290 if (u & update_jacobian_pushed_forward_3rd_derivatives)
291 s <<
"jacobian_pushed_forward_3rd_derivatives|";
308 operator|(
const UpdateFlags f1,
const UpdateFlags f2)
310 return static_cast<UpdateFlags>(static_cast<unsigned int>(f1) |
311 static_cast<unsigned int>(f2));
323 operator|=(UpdateFlags &f1,
const UpdateFlags f2)
339 inline UpdateFlags
operator&(
const UpdateFlags f1,
const UpdateFlags f2)
341 return static_cast<UpdateFlags>(static_cast<unsigned int>(f1) &
342 static_cast<unsigned int>(f2));
353 operator&=(UpdateFlags &f1,
const UpdateFlags f2)
398 namespace FEValuesImplementation
412 template <
int dim,
int spacedim = dim>
420 initialize(
const unsigned int n_quadrature_points,
421 const UpdateFlags flags);
448 std::vector<DerivativeForm<1, dim, spacedim>>
jacobians;
518 template <
int dim,
int spacedim = dim>
526 initialize(
const unsigned int n_quadrature_points,
528 const UpdateFlags flags);
640 DEAL_II_NAMESPACE_CLOSE