17 #ifndef dealii_matrix_free_mapping_info_h 18 #define dealii_matrix_free_mapping_info_h 21 #include <deal.II/base/exceptions.h> 22 #include <deal.II/base/vectorization.h> 23 #include <deal.II/base/aligned_vector.h> 24 #include <deal.II/hp/q_collection.h> 25 #include <deal.II/fe/fe.h> 26 #include <deal.II/fe/mapping.h> 27 #include <deal.II/matrix_free/helper_functions.h> 28 #include <deal.II/matrix_free/face_info.h> 33 DEAL_II_NAMESPACE_OPEN
38 namespace MatrixFreeFunctions
105 template <
int structdim,
int spacedim,
typename Number>
108 struct QuadratureDescriptor
113 QuadratureDescriptor();
129 unsigned int n_q_points;
140 std::array<AlignedVector<Number>, structdim> tensor_quadrature_weights;
261 template <
typename StreamType>
281 template <
int dim,
typename Number>
297 void initialize (const ::Triangulation<dim> &tria,
298 const std::vector<std::pair<unsigned int,unsigned int> > &cells,
300 const std::vector<unsigned int> &active_fe_index,
327 template <
typename StreamType>
351 std::vector<MappingInfoStorage<dim,dim,Number> >
cell_data;
369 const std::vector<std::pair<unsigned int,unsigned int> > &cells,
370 const std::vector<unsigned int> &active_fe_index,
380 const std::vector<std::pair<unsigned int,unsigned int> > &cells,
392 (const ::Triangulation<dim> &tria,
393 const std::vector<std::pair<unsigned int,unsigned int> > &cells,
418 template <
int dim,
typename Number>
423 const unsigned int quad_no)
426 return &mapping_info.cell_data[quad_no];
430 template <
int dim,
typename Number>
431 struct MappingInfoCellsOrFaces<dim,Number,true>
433 static const MappingInfoStorage<dim-1,dim,Number> *
434 get(
const MappingInfo<dim,Number> &mapping_info,
435 const unsigned int quad_no)
438 return &mapping_info.face_data[quad_no];
455 template <
typename Number>
460 bool operator() (
const std::vector<Number> &v1,
461 const std::vector<Number> &v2)
const;
481 template <
int structdim,
int spacedim,
typename Number>
487 for (
unsigned int i=0; i<descriptor.size(); ++i)
488 if (n_q_points == descriptor[i].n_q_points)
495 template <
int dim,
typename Number>
501 return cell_type[cell_no];
507 DEAL_II_NAMESPACE_CLOSE
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)
AlignedVector< unsigned int > data_index_offsets
AlignedVector< unsigned int > quadrature_point_offsets
#define AssertIndexRange(index, range)
void print_memory_consumption(StreamType &out, const TaskInfo &task_info) const
AlignedVector< Tensor< 1, spacedim, VectorizedArray< Number > > > normals_times_jacobians[2]
std::vector< GeometryType > face_type
std::vector< QuadratureDescriptor > descriptor
static UpdateFlags compute_update_flags(const UpdateFlags update_flags, const std::vector<::hp::QCollection< 1 > > &quad=std::vector<::hp::QCollection< 1 > >())
AlignedVector< Tensor< 2, spacedim, VectorizedArray< Number > > > jacobians[2]
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)
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)
AlignedVector< Tensor< 1, spacedim, VectorizedArray< Number > > > normal_vectors
GeometryType get_cell_type(const unsigned int cell_chunk_no) const
void print_memory_consumption(StreamType &out, const SizeInfo &task_info) const
std::vector< MappingInfoStorage< dim-1, dim, Number > > face_data_by_cells
std::size_t memory_consumption() const
unsigned int quad_index_from_n_q_points(const unsigned int n_q_points) const
std::vector< MappingInfoStorage< dim, dim, Number > > cell_data
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)
AlignedVector< Point< spacedim, VectorizedArray< Number > > > quadrature_points
std::size_t memory_consumption() const
AlignedVector< Tensor< 1, spacedim *(spacedim+1)/2, Tensor< 1, spacedim, VectorizedArray< Number > > > > jacobian_gradients[2]
std::vector< GeometryType > cell_type
AlignedVector< VectorizedArray< Number > > JxW_values
std::vector< MappingInfoStorage< dim-1, dim, Number > > face_data