43 static inline DEAL_II_ALWAYS_INLINE
44 dealii::Tensor<rank, dim, dealii::VectorizedArray<Number>>
45 value(dealii::Function<dim>
const & function,
46 dealii::Point<dim, dealii::VectorizedArray<Number>>
const & q_points)
51 AssertThrow(
false, dealii::ExcMessage(
"should not arrive here."));
53 return dealii::Tensor<rank, dim, dealii::VectorizedArray<Number>>();
56 static inline DEAL_II_ALWAYS_INLINE
57 dealii::Tensor<rank, dim, dealii::VectorizedArray<Number>>
58 value(dealii::Function<dim> & function,
59 dealii::Point<dim, dealii::VectorizedArray<Number>>
const & q_points,
62 function.set_time(time);
63 return value(function, q_points);
66 static inline DEAL_II_ALWAYS_INLINE
67 dealii::Tensor<rank, dim, dealii::VectorizedArray<Number>>
69 unsigned int const face,
71 unsigned int const quad_index)
78 AssertThrow(
false, dealii::ExcMessage(
"should not arrive here."));
80 return dealii::Tensor<rank, dim, dealii::VectorizedArray<Number>>();
83 static inline DEAL_II_ALWAYS_INLINE
84 dealii::Tensor<rank, dim, dealii::VectorizedArray<Number>>
86 dealii::Point<dim, dealii::VectorizedArray<Number>>
const & q_points,
87 dealii::Tensor<1, dim, dealii::VectorizedArray<Number>>
const & normals)
89 (void)function_with_normal;
93 AssertThrow(
false, dealii::ExcMessage(
"not implemented."));
95 return dealii::Tensor<rank, dim, dealii::VectorizedArray<Number>>();
98 static inline DEAL_II_ALWAYS_INLINE
99 dealii::Tensor<rank, dim, dealii::VectorizedArray<Number>>
101 dealii::Point<dim, dealii::VectorizedArray<Number>>
const & q_points,
102 dealii::Tensor<1, dim, dealii::VectorizedArray<Number>>
const & normals,
105 function_with_normal.set_time(time);
106 return value(function_with_normal, q_points, normals);
109 static inline DEAL_II_ALWAYS_INLINE
110 dealii::SymmetricTensor<rank, dim, dealii::VectorizedArray<Number>>
111 value_symmetric(dealii::Function<dim>
const & function,
112 dealii::Point<dim, dealii::VectorizedArray<Number>>
const & q_points)
117 AssertThrow(
false, dealii::ExcMessage(
"should not arrive here."));
119 return dealii::SymmetricTensor<rank, dim, dealii::VectorizedArray<Number>>();
122 static inline DEAL_II_ALWAYS_INLINE
123 dealii::SymmetricTensor<rank, dim, dealii::VectorizedArray<Number>>
124 value_symmetric(dealii::Function<dim> & function,
125 dealii::Point<dim, dealii::VectorizedArray<Number>>
const & q_points,
128 function.set_time(time);
129 return value_symmetric(function, q_points);
132 static inline DEAL_II_ALWAYS_INLINE
133 dealii::SymmetricTensor<rank, dim, dealii::VectorizedArray<Number>>
135 unsigned int const face,
136 unsigned int const q,
137 unsigned int const quad_index)
144 AssertThrow(
false, dealii::ExcMessage(
"should not arrive here."));
146 return dealii::SymmetricTensor<rank, dim, dealii::VectorizedArray<Number>>();
153 static inline DEAL_II_ALWAYS_INLINE
154 dealii::Tensor<0, dim, dealii::VectorizedArray<Number>>
155 value(dealii::Function<dim>
const & function,
156 dealii::Point<dim, dealii::VectorizedArray<Number>>
const & q_points)
158 dealii::VectorizedArray<Number> value = dealii::make_vectorized_array<Number>(0.0);
160 for(
unsigned int v = 0; v < dealii::VectorizedArray<Number>::size(); ++v)
162 dealii::Point<dim> q_point;
163 for(
unsigned int d = 0; d < dim; ++d)
164 q_point[d] = q_points[d][v];
166 value[v] = function.value(q_point);
172 static inline DEAL_II_ALWAYS_INLINE
173 dealii::Tensor<0, dim, dealii::VectorizedArray<Number>>
174 value(dealii::Function<dim> & function,
175 dealii::Point<dim, dealii::VectorizedArray<Number>>
const & q_points,
178 function.set_time(time);
179 return value(function, q_points);
183 static inline DEAL_II_ALWAYS_INLINE
184 dealii::Tensor<0, dim, dealii::VectorizedArray<Number>>
186 unsigned int const face,
187 unsigned int const q,
188 unsigned int const quad_index)
190 dealii::VectorizedArray<Number> value = dealii::make_vectorized_array<Number>(0.0);
192 for(
unsigned int v = 0; v < dealii::VectorizedArray<Number>::size(); ++v)
193 value[v] = function.get_data(quad_index, face, q, v);
202 static inline DEAL_II_ALWAYS_INLINE
203 dealii::Tensor<1, dim, dealii::VectorizedArray<Number>>
204 value(dealii::Function<dim>
const & function,
205 dealii::Point<dim, dealii::VectorizedArray<Number>>
const & q_points)
207 dealii::Tensor<1, dim, dealii::VectorizedArray<Number>> value;
209 for(
unsigned int d = 0; d < dim; ++d)
211 for(
unsigned int v = 0; v < dealii::VectorizedArray<Number>::size(); ++v)
213 dealii::Point<dim> q_point;
214 for(
unsigned int i = 0; i < dim; ++i)
215 q_point[i] = q_points[i][v];
217 value[d][v] = function.value(q_point, d);
224 static inline DEAL_II_ALWAYS_INLINE
225 dealii::Tensor<1, dim, dealii::VectorizedArray<Number>>
226 value(dealii::Function<dim> & function,
227 dealii::Point<dim, dealii::VectorizedArray<Number>>
const & q_points,
230 function.set_time(time);
231 return value(function, q_points);
234 static inline DEAL_II_ALWAYS_INLINE
235 dealii::Tensor<1, dim, dealii::VectorizedArray<Number>>
237 unsigned int const face,
238 unsigned int const q,
239 unsigned int const quad_index)
241 dealii::Tensor<1, dim, dealii::VectorizedArray<Number>> value;
243 std::array<dealii::Tensor<1, dim, Number>, dealii::VectorizedArray<Number>::size()>
246 for(
unsigned int v = 0; v < dealii::VectorizedArray<Number>::size(); ++v)
247 tensor_array[v] = function.get_data(quad_index, face, q, v);
249 for(
unsigned int d = 0; d < dim; ++d)
251 for(
unsigned int v = 0; v < dealii::VectorizedArray<Number>::size(); ++v)
252 value[d][v] = tensor_array[v][d];
258 static inline DEAL_II_ALWAYS_INLINE
259 dealii::Tensor<1, dim, dealii::VectorizedArray<Number>>
261 dealii::Point<dim, dealii::VectorizedArray<Number>>
const & q_points,
262 dealii::Tensor<1, dim, dealii::VectorizedArray<Number>>
const & normals)
264 dealii::Tensor<1, dim, dealii::VectorizedArray<Number>> value;
266 for(
unsigned int d = 0; d < dim; ++d)
268 for(
unsigned int v = 0; v < dealii::VectorizedArray<Number>::size(); ++v)
270 dealii::Point<dim> q_point;
271 dealii::Tensor<1, dim> normal;
272 for(
unsigned int i = 0; i < dim; ++i)
274 q_point[i] = q_points[i][v];
275 normal[i] = normals[i][v];
277 function_with_normal.set_normal_vector(normal);
278 value[d][v] = function_with_normal.value(q_point, d);
285 static inline DEAL_II_ALWAYS_INLINE
286 dealii::Tensor<1, dim, dealii::VectorizedArray<Number>>
288 dealii::Point<dim, dealii::VectorizedArray<Number>>
const & q_points,
289 dealii::Tensor<1, dim, dealii::VectorizedArray<Number>>
const & normals,
292 function_with_normal.set_time(time);
293 return value(function_with_normal, q_points, normals);
300 static inline DEAL_II_ALWAYS_INLINE
301 dealii::Tensor<2, dim, dealii::VectorizedArray<Number>>
302 value(dealii::Function<dim>
const & function,
303 dealii::Point<dim, dealii::VectorizedArray<Number>>
const & q_points)
305 dealii::Tensor<2, dim, dealii::VectorizedArray<Number>> value;
307 for(
unsigned int d1 = 0; d1 < dim; ++d1)
309 for(
unsigned int d2 = 0; d2 < dim; ++d2)
311 for(
unsigned int v = 0; v < dealii::VectorizedArray<Number>::size(); ++v)
313 dealii::Point<dim> q_point;
315 for(
unsigned int i = 0; i < dim; ++i)
316 q_point[i] = q_points[i][v];
318 auto const unrolled_index =
319 dealii::Tensor<2, dim>::component_to_unrolled_index(dealii::TableIndices<2>(d1, d2));
321 value[d1][d2][v] = function.value(q_point, unrolled_index);
329 static inline DEAL_II_ALWAYS_INLINE
330 dealii::Tensor<2, dim, dealii::VectorizedArray<Number>>
331 value(dealii::Function<dim> & function,
332 dealii::Point<dim, dealii::VectorizedArray<Number>>
const & q_points,
335 function.set_time(time);
336 return value(function, q_points);
339 static inline DEAL_II_ALWAYS_INLINE
340 dealii::Tensor<2, dim, dealii::VectorizedArray<Number>>
342 unsigned int const face,
343 unsigned int const q,
344 unsigned int const quad_index)
346 dealii::Tensor<2, dim, dealii::VectorizedArray<Number>> value;
348 std::array<dealii::Tensor<2, dim, Number>, dealii::VectorizedArray<Number>::size()>
351 for(
unsigned int v = 0; v < dealii::VectorizedArray<Number>::size(); ++v)
352 tensor_array[v] = function.get_data(quad_index, face, q, v);
354 for(
unsigned int d1 = 0; d1 < dim; ++d1)
356 for(
unsigned int d2 = 0; d2 < dim; ++d2)
358 for(
unsigned int v = 0; v < dealii::VectorizedArray<Number>::size(); ++v)
359 value[d1][d2][v] = tensor_array[v][d1][d2];
366 static inline DEAL_II_ALWAYS_INLINE
367 dealii::SymmetricTensor<2, dim, dealii::VectorizedArray<Number>>
368 value_symmetric(dealii::Function<dim>
const & function,
369 dealii::Point<dim, dealii::VectorizedArray<Number>>
const & q_points)
371 dealii::SymmetricTensor<2, dim, dealii::VectorizedArray<Number>> value;
373 for(
unsigned int d1 = 0; d1 < dim; ++d1)
375 for(
unsigned int d2 = d1; d2 < dim; ++d2)
377 for(
unsigned int v = 0; v < dealii::VectorizedArray<Number>::size(); ++v)
379 dealii::Point<dim> q_point;
381 for(
unsigned int i = 0; i < dim; ++i)
382 q_point[i] = q_points[i][v];
384 auto const unrolled_index = dealii::SymmetricTensor<2, dim>::component_to_unrolled_index(
385 dealii::TableIndices<2>(d1, d2));
387 value[d1][d2][v] = function.value(q_point, unrolled_index);
395 static inline DEAL_II_ALWAYS_INLINE
396 dealii::SymmetricTensor<2, dim, dealii::VectorizedArray<Number>>
397 value_symmetric(dealii::Function<dim> & function,
398 dealii::Point<dim, dealii::VectorizedArray<Number>>
const & q_points,
401 function.set_time(time);
402 return value(q_points, time);
405 static inline DEAL_II_ALWAYS_INLINE
406 dealii::SymmetricTensor<2, dim, dealii::VectorizedArray<Number>>
408 unsigned int const face,
409 unsigned int const q,
410 unsigned int const quad_index)
412 dealii::SymmetricTensor<2, dim, dealii::VectorizedArray<Number>> value;
414 std::array<dealii::SymmetricTensor<2, dim, Number>, dealii::VectorizedArray<Number>::size()>
417 for(
unsigned int v = 0; v < dealii::VectorizedArray<Number>::size(); ++v)
418 tensor_array[v] = function.get_data(quad_index, face, q, v);
420 for(
unsigned int d1 = 0; d1 < dim; ++d1)
422 for(
unsigned int d2 = d1; d2 < dim; ++d2)
424 for(
unsigned int v = 0; v < dealii::VectorizedArray<Number>::size(); ++v)
425 value[d1][d2][v] = tensor_array[v][d1][d2];