41 static inline DEAL_II_ALWAYS_INLINE
42 dealii::Tensor<rank, dim, dealii::VectorizedArray<Number>>
43 value(dealii::Function<dim>
const & function,
44 dealii::Point<dim, dealii::VectorizedArray<Number>>
const & q_points)
49 AssertThrow(
false, dealii::ExcMessage(
"should not arrive here."));
51 return dealii::Tensor<rank, dim, dealii::VectorizedArray<Number>>();
54 static inline DEAL_II_ALWAYS_INLINE
55 dealii::Tensor<rank, dim, dealii::VectorizedArray<Number>>
56 value(dealii::Function<dim> & function,
57 dealii::Point<dim, dealii::VectorizedArray<Number>>
const & q_points,
60 function.set_time(time);
61 return value(function, q_points);
64 static inline DEAL_II_ALWAYS_INLINE
65 dealii::Tensor<rank, dim, dealii::VectorizedArray<Number>>
67 unsigned int const face,
69 unsigned int const quad_index)
76 AssertThrow(
false, dealii::ExcMessage(
"should not arrive here."));
78 return dealii::Tensor<rank, dim, dealii::VectorizedArray<Number>>();
81 static inline DEAL_II_ALWAYS_INLINE
82 dealii::Tensor<rank, dim, dealii::VectorizedArray<Number>>
84 dealii::Point<dim, dealii::VectorizedArray<Number>>
const & q_points,
85 dealii::Tensor<1, dim, dealii::VectorizedArray<Number>>
const & normals)
87 (void)function_with_normal;
91 AssertThrow(
false, dealii::ExcMessage(
"not implemented."));
93 return dealii::Tensor<rank, dim, dealii::VectorizedArray<Number>>();
96 static inline DEAL_II_ALWAYS_INLINE
97 dealii::Tensor<rank, dim, dealii::VectorizedArray<Number>>
99 dealii::Point<dim, dealii::VectorizedArray<Number>>
const & q_points,
100 dealii::Tensor<1, dim, dealii::VectorizedArray<Number>>
const & normals,
103 function_with_normal.set_time(time);
104 return value(function_with_normal, q_points, normals);
107 static inline DEAL_II_ALWAYS_INLINE
108 dealii::SymmetricTensor<rank, dim, dealii::VectorizedArray<Number>>
109 value_symmetric(dealii::Function<dim>
const & function,
110 dealii::Point<dim, dealii::VectorizedArray<Number>>
const & q_points)
115 AssertThrow(
false, dealii::ExcMessage(
"should not arrive here."));
117 return dealii::SymmetricTensor<rank, dim, dealii::VectorizedArray<Number>>();
120 static inline DEAL_II_ALWAYS_INLINE
121 dealii::SymmetricTensor<rank, dim, dealii::VectorizedArray<Number>>
122 value_symmetric(dealii::Function<dim> & function,
123 dealii::Point<dim, dealii::VectorizedArray<Number>>
const & q_points,
126 function.set_time(time);
127 return value_symmetric(function, q_points);
130 static inline DEAL_II_ALWAYS_INLINE
131 dealii::SymmetricTensor<rank, dim, dealii::VectorizedArray<Number>>
133 unsigned int const face,
134 unsigned int const q,
135 unsigned int const quad_index)
142 AssertThrow(
false, dealii::ExcMessage(
"should not arrive here."));
144 return dealii::SymmetricTensor<rank, dim, dealii::VectorizedArray<Number>>();
151 static inline DEAL_II_ALWAYS_INLINE
152 dealii::Tensor<0, dim, dealii::VectorizedArray<Number>>
153 value(dealii::Function<dim>
const & function,
154 dealii::Point<dim, dealii::VectorizedArray<Number>>
const & q_points)
156 dealii::VectorizedArray<Number> value = dealii::make_vectorized_array<Number>(0.0);
158 for(
unsigned int v = 0; v < dealii::VectorizedArray<Number>::size(); ++v)
160 dealii::Point<dim> q_point;
161 for(
unsigned int d = 0; d < dim; ++d)
162 q_point[d] = q_points[d][v];
164 value[v] = function.value(q_point);
170 static inline DEAL_II_ALWAYS_INLINE
171 dealii::Tensor<0, dim, dealii::VectorizedArray<Number>>
172 value(dealii::Function<dim> & function,
173 dealii::Point<dim, dealii::VectorizedArray<Number>>
const & q_points,
176 function.set_time(time);
177 return value(function, q_points);
181 static inline DEAL_II_ALWAYS_INLINE
182 dealii::Tensor<0, dim, dealii::VectorizedArray<Number>>
184 unsigned int const face,
185 unsigned int const q,
186 unsigned int const quad_index)
188 dealii::VectorizedArray<Number> value = dealii::make_vectorized_array<Number>(0.0);
190 for(
unsigned int v = 0; v < dealii::VectorizedArray<Number>::size(); ++v)
191 value[v] = function.get_data(quad_index, face, q, v);
200 static inline DEAL_II_ALWAYS_INLINE
201 dealii::Tensor<1, dim, dealii::VectorizedArray<Number>>
202 value(dealii::Function<dim>
const & function,
203 dealii::Point<dim, dealii::VectorizedArray<Number>>
const & q_points)
205 dealii::Tensor<1, dim, dealii::VectorizedArray<Number>> value;
207 for(
unsigned int d = 0; d < dim; ++d)
209 for(
unsigned int v = 0; v < dealii::VectorizedArray<Number>::size(); ++v)
211 dealii::Point<dim> q_point;
212 for(
unsigned int i = 0; i < dim; ++i)
213 q_point[i] = q_points[i][v];
215 value[d][v] = function.value(q_point, d);
222 static inline DEAL_II_ALWAYS_INLINE
223 dealii::Tensor<1, dim, dealii::VectorizedArray<Number>>
224 value(dealii::Function<dim> & function,
225 dealii::Point<dim, dealii::VectorizedArray<Number>>
const & q_points,
228 function.set_time(time);
229 return value(function, q_points);
232 static inline DEAL_II_ALWAYS_INLINE
233 dealii::Tensor<1, dim, dealii::VectorizedArray<Number>>
235 unsigned int const face,
236 unsigned int const q,
237 unsigned int const quad_index)
239 dealii::Tensor<1, dim, dealii::VectorizedArray<Number>> value;
241 std::array<dealii::Tensor<1, dim, Number>, dealii::VectorizedArray<Number>::size()>
244 for(
unsigned int v = 0; v < dealii::VectorizedArray<Number>::size(); ++v)
245 tensor_array[v] = function.get_data(quad_index, face, q, v);
247 for(
unsigned int d = 0; d < dim; ++d)
249 for(
unsigned int v = 0; v < dealii::VectorizedArray<Number>::size(); ++v)
250 value[d][v] = tensor_array[v][d];
256 static inline DEAL_II_ALWAYS_INLINE
257 dealii::Tensor<1, dim, dealii::VectorizedArray<Number>>
259 dealii::Point<dim, dealii::VectorizedArray<Number>>
const & q_points,
260 dealii::Tensor<1, dim, dealii::VectorizedArray<Number>>
const & normals)
262 dealii::Tensor<1, dim, dealii::VectorizedArray<Number>> value;
264 for(
unsigned int d = 0; d < dim; ++d)
266 for(
unsigned int v = 0; v < dealii::VectorizedArray<Number>::size(); ++v)
268 dealii::Point<dim> q_point;
269 dealii::Tensor<1, dim> normal;
270 for(
unsigned int i = 0; i < dim; ++i)
272 q_point[i] = q_points[i][v];
273 normal[i] = normals[i][v];
275 function_with_normal.set_normal_vector(normal);
276 value[d][v] = function_with_normal.value(q_point, d);
283 static inline DEAL_II_ALWAYS_INLINE
284 dealii::Tensor<1, dim, dealii::VectorizedArray<Number>>
286 dealii::Point<dim, dealii::VectorizedArray<Number>>
const & q_points,
287 dealii::Tensor<1, dim, dealii::VectorizedArray<Number>>
const & normals,
290 function_with_normal.set_time(time);
291 return value(function_with_normal, q_points, normals);
298 static inline DEAL_II_ALWAYS_INLINE
299 dealii::Tensor<2, dim, dealii::VectorizedArray<Number>>
300 value(dealii::Function<dim>
const & function,
301 dealii::Point<dim, dealii::VectorizedArray<Number>>
const & q_points)
303 dealii::Tensor<2, dim, dealii::VectorizedArray<Number>> value;
305 for(
unsigned int d1 = 0; d1 < dim; ++d1)
307 for(
unsigned int d2 = 0; d2 < dim; ++d2)
309 for(
unsigned int v = 0; v < dealii::VectorizedArray<Number>::size(); ++v)
311 dealii::Point<dim> q_point;
313 for(
unsigned int i = 0; i < dim; ++i)
314 q_point[i] = q_points[i][v];
316 auto const unrolled_index =
317 dealii::Tensor<2, dim>::component_to_unrolled_index(dealii::TableIndices<2>(d1, d2));
319 value[d1][d2][v] = function.value(q_point, unrolled_index);
327 static inline DEAL_II_ALWAYS_INLINE
328 dealii::Tensor<2, dim, dealii::VectorizedArray<Number>>
329 value(dealii::Function<dim> & function,
330 dealii::Point<dim, dealii::VectorizedArray<Number>>
const & q_points,
333 function.set_time(time);
334 return value(function, q_points);
337 static inline DEAL_II_ALWAYS_INLINE
338 dealii::Tensor<2, dim, dealii::VectorizedArray<Number>>
340 unsigned int const face,
341 unsigned int const q,
342 unsigned int const quad_index)
344 dealii::Tensor<2, dim, dealii::VectorizedArray<Number>> value;
346 std::array<dealii::Tensor<2, dim, Number>, dealii::VectorizedArray<Number>::size()>
349 for(
unsigned int v = 0; v < dealii::VectorizedArray<Number>::size(); ++v)
350 tensor_array[v] = function.get_data(quad_index, face, q, v);
352 for(
unsigned int d1 = 0; d1 < dim; ++d1)
354 for(
unsigned int d2 = 0; d2 < dim; ++d2)
356 for(
unsigned int v = 0; v < dealii::VectorizedArray<Number>::size(); ++v)
357 value[d1][d2][v] = tensor_array[v][d1][d2];
364 static inline DEAL_II_ALWAYS_INLINE
365 dealii::SymmetricTensor<2, dim, dealii::VectorizedArray<Number>>
366 value_symmetric(dealii::Function<dim>
const & function,
367 dealii::Point<dim, dealii::VectorizedArray<Number>>
const & q_points)
369 dealii::SymmetricTensor<2, dim, dealii::VectorizedArray<Number>> value;
371 for(
unsigned int d1 = 0; d1 < dim; ++d1)
373 for(
unsigned int d2 = d1; d2 < dim; ++d2)
375 for(
unsigned int v = 0; v < dealii::VectorizedArray<Number>::size(); ++v)
377 dealii::Point<dim> q_point;
379 for(
unsigned int i = 0; i < dim; ++i)
380 q_point[i] = q_points[i][v];
382 auto const unrolled_index = dealii::SymmetricTensor<2, dim>::component_to_unrolled_index(
383 dealii::TableIndices<2>(d1, d2));
385 value[d1][d2][v] = function.value(q_point, unrolled_index);
393 static inline DEAL_II_ALWAYS_INLINE
394 dealii::SymmetricTensor<2, dim, dealii::VectorizedArray<Number>>
395 value_symmetric(dealii::Function<dim> & function,
396 dealii::Point<dim, dealii::VectorizedArray<Number>>
const & q_points,
399 function.set_time(time);
400 return value(q_points, time);
403 static inline DEAL_II_ALWAYS_INLINE
404 dealii::SymmetricTensor<2, dim, dealii::VectorizedArray<Number>>
406 unsigned int const face,
407 unsigned int const q,
408 unsigned int const quad_index)
410 dealii::SymmetricTensor<2, dim, dealii::VectorizedArray<Number>> value;
412 std::array<dealii::SymmetricTensor<2, dim, Number>, dealii::VectorizedArray<Number>::size()>
415 for(
unsigned int v = 0; v < dealii::VectorizedArray<Number>::size(); ++v)
416 tensor_array[v] = function.get_data(quad_index, face, q, v);
418 for(
unsigned int d1 = 0; d1 < dim; ++d1)
420 for(
unsigned int d2 = d1; d2 < dim; ++d2)
422 for(
unsigned int v = 0; v < dealii::VectorizedArray<Number>::size(); ++v)
423 value[d1][d2][v] = tensor_array[v][d1][d2];