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();
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,
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,
398 const ::Triangulation<dim> & tria,
399 const std::vector<std::pair<unsigned int, unsigned int>> &cells,
413 const ::Triangulation<dim> & tria,
414 const std::vector<std::pair<unsigned int, unsigned int>> &cells,
437 template <
int,
typename,
bool>
440 template <
int dim,
typename Number>
445 const unsigned int quad_no)
448 return &mapping_info.cell_data[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
AlignedVector< Tensor< 1, spacedim, VectorizedArray< Number > > > normals_times_jacobians[2]
AlignedVector< unsigned int > data_index_offsets
AlignedVector< Tensor< 1, spacedim *(spacedim+1)/2, Tensor< 1, spacedim, VectorizedArray< Number > > > > jacobian_gradients[2]
AlignedVector< unsigned int > quadrature_point_offsets
#define AssertIndexRange(index, range)
void initialize(const ::Triangulation< dim > &tria, const std::vector< std::pair< unsigned int, unsigned int >> &cells, const FaceInfo< VectorizedArray< Number >::n_array_elements > &faces, const std::vector< unsigned int > &active_fe_index, const Mapping< dim > &mapping, const std::vector<::hp::QCollection< 1 >> &quad, const UpdateFlags update_flags_cells, const UpdateFlags update_flags_boundary_faces, const UpdateFlags update_flags_inner_faces, const UpdateFlags update_flags_faces_by_cells)
void initialize_cells(const ::Triangulation< dim > &tria, const std::vector< std::pair< unsigned int, unsigned int >> &cells, const std::vector< unsigned int > &active_fe_index, const Mapping< dim > &mapping, const std::vector<::hp::QCollection< 1 >> &quad, const UpdateFlags update_flags_cells)
void print_memory_consumption(StreamType &out, const TaskInfo &task_info) const
std::vector< MappingInfoStorage< dim, dim, Number > > cell_data
std::vector< MappingInfoStorage< dim - 1, dim, Number > > face_data_by_cells
std::vector< GeometryType > face_type
std::vector< QuadratureDescriptor > descriptor
GeometryType get_cell_type(const unsigned int cell_chunk_no) const
void initialize_faces_by_cells(const ::Triangulation< dim > &tria, const std::vector< std::pair< unsigned int, unsigned int >> &cells, const Mapping< dim > &mapping, const std::vector<::hp::QCollection< 1 >> &quad, const UpdateFlags update_flags_faces_by_cells)
std::vector< MappingInfoStorage< dim - 1, dim, Number > > face_data
void print_memory_consumption(StreamType &out, const SizeInfo &task_info) const
void initialize_faces(const ::Triangulation< dim > &tria, const std::vector< std::pair< unsigned int, unsigned int >> &cells, const std::vector< FaceToCellTopology< VectorizedArray< Number >::n_array_elements >> &faces, const Mapping< dim > &mapping, const std::vector<::hp::QCollection< 1 >> &quad, const UpdateFlags update_flags_boundary_faces, const UpdateFlags update_flags_inner_faces)
AlignedVector< Point< spacedim, VectorizedArray< Number > > > quadrature_points
std::size_t memory_consumption() const
unsigned int quad_index_from_n_q_points(const unsigned int n_q_points) const
AlignedVector< Tensor< 1, spacedim, VectorizedArray< Number > > > normal_vectors
static UpdateFlags compute_update_flags(const UpdateFlags update_flags, const std::vector<::hp::QCollection< 1 >> &quad=std::vector<::hp::QCollection< 1 >>())
std::size_t memory_consumption() const
std::vector< GeometryType > cell_type
AlignedVector< Tensor< 2, spacedim, VectorizedArray< Number > > > jacobians[2]
AlignedVector< VectorizedArray< Number > > JxW_values