36 std::vector<QCollection<q_dim>>
39 std::vector<QCollection<q_dim>> q_collections;
41 q_collections.reserve(q_collection.size());
42 for (
unsigned int q = 0; q < q_collection.size(); ++q)
43 q_collections.emplace_back(q_collection[q]);
58 for (
unsigned int q = 0; q < q_collections.size(); ++q)
67 template <
int dim,
int q_dim,
typename FEValuesType>
87 template <
int dim,
int q_dim,
typename FEValuesType>
108 template <
int dim,
int q_dim,
typename FEValuesType>
122 template <
int dim,
int q_dim,
typename FEValuesType>
137 template <
int dim,
int q_dim,
typename FEValuesType>
155 for (
unsigned int fe_index = 0; fe_index < other.
fe_values_table.size(0);
157 for (
unsigned int m_index = 0; m_index < other.
fe_values_table.size(1);
159 for (
unsigned int q_index = 0; q_index < other.
fe_values_table.size(2);
164 fe_values_table[fe_index][m_index][q_index] =
165 std::make_unique<FEValuesType>((*mapping_collection)[m_index],
166 (*fe_collection)[fe_index],
167 q_collections[q_index],
171 task_group.join_all();
176 template <
int dim,
int q_dim,
typename FEValuesType>
179 const unsigned int fe_index,
180 const unsigned int mapping_index,
181 const unsigned int q_index)
206 template <
int dim,
int q_dim,
typename FEValuesType>
209 const std::vector<unsigned int> &fe_indices,
210 const std::vector<unsigned int> &mapping_indices,
211 const std::vector<unsigned int> &q_indices)
217 for (
unsigned int i = 0; i < fe_indices.size(); ++i)
219 const unsigned int fe_index = fe_indices[i],
220 mapping_index = mapping_indices[i],
221 q_index = q_indices[i];
230 std::make_unique<FEValuesType>(
243 template <
int dim,
int q_dim,
typename FEValuesType>
248 std::vector<unsigned int> indices(size);
249 std::iota(indices.begin(), indices.end(), 0);
255 std::vector<unsigned int>(size, 0),
259 std::vector<unsigned int>(size, 0));
269 template <
int dim,
int spacedim>
282 template <
int dim,
int spacedim>
293 template <
int dim,
int spacedim>
298 const unsigned int q_index,
299 const unsigned int mapping_index,
300 const unsigned int fe_index)
303 unsigned int real_q_index = q_index, real_mapping_index = mapping_index,
304 real_fe_index = fe_index;
308 if (this->q_collections.size() > 1)
309 real_q_index = cell->active_fe_index();
317 real_mapping_index = cell->active_fe_index();
319 real_mapping_index = 0;
323 real_fe_index = cell->active_fe_index();
337 template <
int dim,
int spacedim>
341 const unsigned int q_index,
342 const unsigned int mapping_index,
343 const unsigned int fe_index)
346 unsigned int real_q_index = q_index, real_mapping_index = mapping_index,
347 real_fe_index = fe_index;
353 real_mapping_index = 0;
372 template <
int dim,
int spacedim>
385 template <
int dim,
int spacedim>
399 template <
int dim,
int spacedim>
411 template <
int dim,
int spacedim>
423 template <
int dim,
int spacedim>
428 const unsigned int face_no,
429 const unsigned int q_index,
430 const unsigned int mapping_index,
431 const unsigned int fe_index)
435 unsigned int real_q_index = q_index, real_mapping_index = mapping_index,
436 real_fe_index = fe_index;
440 if (this->q_collections.size() > 1)
441 real_q_index = cell->active_fe_index();
449 real_mapping_index = cell->active_fe_index();
451 real_mapping_index = 0;
455 real_fe_index = cell->active_fe_index();
463 this->select_fe_values(real_fe_index, real_mapping_index, real_q_index)
464 .reinit(cell, face_no);
469 template <
int dim,
int spacedim>
475 const unsigned int q_index,
476 const unsigned int mapping_index,
477 const unsigned int fe_index)
479 const auto face_n = cell->face_iterator_to_index(face);
480 reinit(cell, face_n, q_index, mapping_index, fe_index);
485 template <
int dim,
int spacedim>
489 const unsigned int face_no,
490 const unsigned int q_index,
491 const unsigned int mapping_index,
492 const unsigned int fe_index)
496 unsigned int real_q_index = q_index, real_mapping_index = mapping_index,
497 real_fe_index = fe_index;
503 real_mapping_index = 0;
515 .reinit(cell, face_no);
520 template <
int dim,
int spacedim>
525 const unsigned int q_index,
526 const unsigned int mapping_index,
527 const unsigned int fe_index)
530 reinit(cell, face_n, q_index, mapping_index, fe_index);
537 template <
int dim,
int spacedim>
542 const UpdateFlags update_flags)
551 template <
int dim,
int spacedim>
555 const UpdateFlags update_flags)
563 template <
int dim,
int spacedim>
568 const unsigned int face_no,
569 const unsigned int subface_no,
570 const unsigned int q_index,
571 const unsigned int mapping_index,
572 const unsigned int fe_index)
575 unsigned int real_q_index = q_index, real_mapping_index = mapping_index,
576 real_fe_index = fe_index;
580 if (this->q_collections.size() > 1)
581 real_q_index = cell->active_fe_index();
589 real_mapping_index = cell->active_fe_index();
591 real_mapping_index = 0;
595 real_fe_index = cell->active_fe_index();
603 this->select_fe_values(real_fe_index, real_mapping_index, real_q_index)
604 .reinit(cell, face_no, subface_no);
609 template <
int dim,
int spacedim>
613 const unsigned int face_no,
614 const unsigned int subface_no,
615 const unsigned int q_index,
616 const unsigned int mapping_index,
617 const unsigned int fe_index)
620 unsigned int real_q_index = q_index, real_mapping_index = mapping_index,
621 real_fe_index = fe_index;
627 real_mapping_index = 0;
638 this->select_fe_values(real_fe_index, real_mapping_index, real_q_index)
639 .reinit(cell, face_no, subface_no);
645#include "hp/fe_values.inst"
unsigned int face_iterator_to_index(const TriaIterator< TriaAccessor< dim - 1, dim, spacedim > > &face) const
void reinit(const TriaIterator< DoFCellAccessor< dim, spacedim, lda > > &cell, const unsigned int face_no, const unsigned int q_index=numbers::invalid_unsigned_int, const unsigned int mapping_index=numbers::invalid_unsigned_int, const unsigned int fe_index=numbers::invalid_unsigned_int)
FEFaceValues(const hp::MappingCollection< dim, spacedim > &mapping_collection, const hp::FECollection< dim, spacedim > &fe_collection, const hp::QCollection< dim - 1 > &q_collection, const UpdateFlags update_flags)
void reinit(const TriaIterator< DoFCellAccessor< dim, spacedim, lda > > &cell, const unsigned int face_no, const unsigned int subface_no, const unsigned int q_index=numbers::invalid_unsigned_int, const unsigned int mapping_index=numbers::invalid_unsigned_int, const unsigned int fe_index=numbers::invalid_unsigned_int)
FESubfaceValues(const hp::MappingCollection< dim, spacedim > &mapping_collection, const hp::FECollection< dim, spacedim > &fe_collection, const hp::QCollection< dim - 1 > &q_collection, const UpdateFlags update_flags)
const ObserverPointer< const FECollection< dim, FEValuesType::space_dimension >, FEValuesBase< dim, q_dim, FEValuesType > > fe_collection
FEValuesBase(const MappingCollection< dim, FEValuesType::space_dimension > &mapping_collection, const FECollection< dim, FEValuesType::space_dimension > &fe_collection, const QCollection< q_dim > &q_collection, const UpdateFlags update_flags)
const std::vector< QCollection< q_dim > > q_collections
void precalculate_fe_values(const std::vector< unsigned int > &fe_indices, const std::vector< unsigned int > &mapping_indices, const std::vector< unsigned int > &q_indices)
FEValuesType & select_fe_values(const unsigned int fe_index, const unsigned int mapping_index, const unsigned int q_index)
const QCollection< q_dim > q_collection
const ObserverPointer< const MappingCollection< dim, FEValuesType::space_dimension >, FEValuesBase< dim, q_dim, FEValuesType > > mapping_collection
Table< 3, std::unique_ptr< ::FEFaceValues< dim, spacedim > > > fe_values_table
TableIndices< 3 > present_fe_values_index
void precalculate_fe_values()
const UpdateFlags update_flags
void reinit(const TriaIterator< DoFCellAccessor< dim, spacedim, lda > > &cell, const unsigned int q_index=numbers::invalid_unsigned_int, const unsigned int mapping_index=numbers::invalid_unsigned_int, const unsigned int fe_index=numbers::invalid_unsigned_int)
FEValues(const MappingCollection< dim, spacedim > &mapping_collection, const FECollection< dim, spacedim > &fe_collection, const QCollection< dim > &q_collection, const UpdateFlags update_flags)
void push_back(const Quadrature< dim_in > &new_quadrature)
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
const unsigned int DoFAccessor< structdim, dim, spacedim, level_dof_access >::space_dimension
#define AssertDimension(dim1, dim2)
#define AssertIndexRange(index, range)
TriaIterator< TriaAccessor< dim - 1, dim, spacedim > > face_iterator
TriaIterator< CellAccessor< dim, spacedim > > cell_iterator
Task< RT > new_task(const std::function< RT()> &function)
MappingQ< dim, spacedim > StaticMappingQ1< dim, spacedim >::mapping
MappingCollection< dim, spacedim > StaticMappingQ1< dim, spacedim >::mapping_collection
constexpr unsigned int invalid_unsigned_int