17 #ifndef dealii_matrix_free_dof_info_h 18 #define dealii_matrix_free_dof_info_h 21 #include <deal.II/base/exceptions.h> 22 #include <deal.II/base/partitioner.h> 23 #include <deal.II/base/vectorization.h> 25 #include <deal.II/dofs/dof_handler.h> 27 #include <deal.II/lac/affine_constraints.h> 28 #include <deal.II/lac/dynamic_sparsity_pattern.h> 30 #include <deal.II/matrix_free/face_info.h> 31 #include <deal.II/matrix_free/task_info.h> 37 DEAL_II_NAMESPACE_OPEN
41 namespace MatrixFreeFunctions
43 template <
typename Number>
44 struct ConstraintValues;
103 const unsigned int fe_degree)
const;
126 const unsigned int cell,
127 const bool with_constraints =
true)
const;
137 template <
typename number>
140 const std::vector<types::global_dof_index> &local_indices,
141 const std::vector<unsigned int> & lexicographic_inv,
143 const unsigned int cell_number,
144 ConstraintValues<double> & constraint_values,
145 bool & cell_at_boundary);
155 assign_ghosts(
const std::vector<unsigned int> &boundary_cells);
165 const std::vector<unsigned int> & renumbering,
166 const std::vector<unsigned int> & constraint_pool_row_index,
167 const std::vector<unsigned char> &irregular_cells);
175 const std::vector<unsigned char> &irregular_cells);
181 template <
int length>
193 const std::vector<unsigned int> &renumbering,
208 std::vector<types::global_dof_index> &renumbering);
219 template <
int length>
235 template <
typename StreamType>
244 template <
typename Number>
246 print(
const std::vector<Number> & constraint_pool_data,
247 const std::vector<unsigned int> &constraint_pool_row_index,
248 std::ostream & out)
const;
396 std::vector<std::pair<unsigned int, unsigned int>>
row_starts;
424 std::vector<std::pair<unsigned short, unsigned short>>
482 std::array<std::shared_ptr<const Utilities::MPI::Partitioner>, 3>
611 const unsigned int fe_degree)
const 616 for (
unsigned int i = 0; i < n_indices; ++i)
622 #endif // ifndef DOXYGEN 627 DEAL_II_NAMESPACE_CLOSE
void get_dof_indices_on_cell_batch(std::vector< unsigned int > &locall_indices, const unsigned int cell, const bool with_constraints=true) const
std::vector< unsigned int > plain_dof_indices
static const unsigned int invalid_unsigned_int
unsigned int fe_index_from_degree(const unsigned int first_selected_component, const unsigned int fe_degree) const
std::vector< unsigned int > component_to_base_index
std::vector< IndexStorageVariants > index_storage_variants[3]
std::vector< unsigned int > dof_indices_interleave_strides[3]
std::shared_ptr< const Utilities::MPI::Partitioner > vector_partitioner
std::vector< unsigned int > vector_zero_range_list_index
std::size_t memory_consumption() const
unsigned int n_base_elements
std::vector< unsigned int > dof_indices
std::vector< unsigned char > n_vectorization_lanes_filled[3]
std::vector< unsigned int > dofs_per_face
void compute_dof_renumbering(std::vector< types::global_dof_index > &renumbering)
void compute_cell_index_compression(const std::vector< unsigned char > &irregular_cells)
std::vector< unsigned int > dof_indices_interleaved
void print(const std::vector< Number > &constraint_pool_data, const std::vector< unsigned int > &constraint_pool_row_index, std::ostream &out) const
std::vector< unsigned int > row_starts_plain_indices
std::vector< std::vector< unsigned int > > fe_index_conversion
std::vector< std::pair< unsigned int, unsigned int > > row_starts
void compute_vector_zero_access_pattern(const TaskInfo &task_info, const std::vector< FaceToCellTopology< length >> &faces)
void print_memory_consumption(StreamType &out, const TaskInfo &size_info) const
std::vector< std::pair< unsigned short, unsigned short > > constraint_indicator
unsigned int global_base_element_offset
unsigned int max_fe_index
void compute_face_index_compression(const std::vector< FaceToCellTopology< length >> &faces)
std::vector< types::global_dof_index > ghost_dofs
std::vector< unsigned int > cell_active_fe_index
std::vector< unsigned int > dof_indices_contiguous[3]
std::vector< std::vector< unsigned int > > component_dof_indices_offset
void make_connectivity_graph(const TaskInfo &task_info, const std::vector< unsigned int > &renumbering, DynamicSparsityPattern &connectivity) const
std::vector< unsigned int > dofs_per_cell
std::vector< unsigned int > constrained_dofs
unsigned int vectorization_length
std::vector< unsigned int > vector_zero_range_list
void read_dof_indices(const std::vector< types::global_dof_index > &local_indices, const std::vector< unsigned int > &lexicographic_inv, const AffineConstraints< number > &constraints, const unsigned int cell_number, ConstraintValues< double > &constraint_values, bool &cell_at_boundary)
std::vector< unsigned int > start_components
void reorder_cells(const TaskInfo &task_info, const std::vector< unsigned int > &renumbering, const std::vector< unsigned int > &constraint_pool_row_index, const std::vector< unsigned char > &irregular_cells)
std::vector< unsigned int > n_components
static const unsigned int chunk_size_zero_vector
void assign_ghosts(const std::vector< unsigned int > &boundary_cells)
std::array< std::shared_ptr< const Utilities::MPI::Partitioner >, 3 > vector_partitioner_face_variants