17 #ifndef dealii_matrix_free_mapping_info_h
18 #define dealii_matrix_free_mapping_info_h
21 #include <deal.II/base/aligned_vector.h>
22 #include <deal.II/base/exceptions.h>
23 #include <deal.II/base/vectorization.h>
25 #include <deal.II/fe/fe.h>
26 #include <deal.II/fe/mapping.h>
28 #include <deal.II/hp/q_collection.h>
30 #include <deal.II/matrix_free/face_info.h>
31 #include <deal.II/matrix_free/helper_functions.h>
36 DEAL_II_NAMESPACE_OPEN
41 namespace MatrixFreeFunctions
111 template <
int structdim,
int spacedim,
typename Number>
114 struct QuadratureDescriptor
119 QuadratureDescriptor();
126 const UpdateFlags update_flags_inner_faces = update_default);
137 unsigned int n_q_points;
148 std::array<AlignedVector<Number>, structdim> tensor_quadrature_weights;
229 spacedim *(spacedim + 1) / 2,
273 template <
typename StreamType>
295 template <
int dim,
typename Number>
308 const ::Triangulation<dim> & tria,
309 const std::vector<std::pair<unsigned int, unsigned int>> & cells,
311 const std::vector<unsigned int> & active_fe_index,
314 const UpdateFlags update_flags_cells,
315 const UpdateFlags update_flags_boundary_faces,
316 const UpdateFlags update_flags_inner_faces,
317 const UpdateFlags update_flags_faces_by_cells);
341 template <
typename StreamType>
366 std::vector<MappingInfoStorage<dim, dim, Number>>
cell_data;
385 const ::Triangulation<dim> & tria,
386 const std::vector<std::pair<unsigned int, unsigned int>> &cells,
387 const std::vector<unsigned int> & active_fe_index,
390 const UpdateFlags update_flags_cells);
398 const ::Triangulation<dim> & tria,
399 const std::vector<std::pair<unsigned int, unsigned int>> &cells,
404 const UpdateFlags update_flags_boundary_faces,
405 const UpdateFlags update_flags_inner_faces);
413 const ::Triangulation<dim> & tria,
414 const std::vector<std::pair<unsigned int, unsigned int>> &cells,
417 const UpdateFlags update_flags_faces_by_cells);
437 template <
int,
typename,
bool>
440 template <
int dim,
typename Number>
445 const unsigned int quad_no)
452 template <
int dim,
typename Number>
453 struct MappingInfoCellsOrFaces<dim, Number, true>
455 static const MappingInfoStorage<dim - 1, dim, Number> *
456 get(
const MappingInfo<dim, Number> &mapping_info,
457 const unsigned int quad_no)
460 return &mapping_info.face_data[quad_no];
477 template <
typename Number>
483 operator()(
const std::vector<Number> &v1,
484 const std::vector<Number> &v2)
const;
525 template <
int structdim,
int spacedim,
typename Number>
528 const unsigned int n_q_points)
const
530 for (
unsigned int i = 0; i < descriptor.size(); ++i)
531 if (n_q_points == descriptor[i].n_q_points)
538 template <
int dim,
typename Number>
543 return cell_type[cell_no];
549 DEAL_II_NAMESPACE_CLOSE