13#ifndef dealii_portable_mg_transfer_global_coarsening_h
14#define dealii_portable_mg_transfer_global_coarsening_h
40 template <
typename Number>
41 struct MGTransferSharedData;
67 template <
int dim,
typename VectorType>
77 "This class is currently only implemented for vectors of "
78 "type LinearAlgebra::distributed::Vector.");
83 using Number =
typename VectorType::value_type;
108 interpolate(VectorType &dst,
const VectorType &src)
const override;
114 std::pair<bool, bool>
116 const std::shared_ptr<const Utilities::MPI::Partitioner>
118 const std::shared_ptr<const Utilities::MPI::Partitioner>
130 std::pair<const DoFHandler<dim> *,
unsigned int>
180 Kokkos::View<Number *, MemorySpace::Default::kokkos_space>
200 Kokkos::View<unsigned int *, MemorySpace::Default::kokkos_space>
214 Kokkos::View<unsigned int *, MemorySpace::Default::kokkos_space>
222 Kokkos::View<Number *, MemorySpace::Default::kokkos_space>
228 Kokkos::View<unsigned int **, MemorySpace::Default::kokkos_space>
234 Kokkos::View<Number **, MemorySpace::Default::kokkos_space>
weights;
254 MemorySpace::Default::kokkos_space::execution_space>::member_type;
258 MemorySpace::Default::kokkos_space::execution_space::
259 scratch_memory_space,
260 Kokkos::MemoryTraits<Kokkos::Unmanaged>>;
291 const VectorType &src)
const override;
295 const VectorType &src)
const override;
322 Kokkos::View<Number *, MemorySpace::Default::kokkos_space>
std::shared_ptr< const Utilities::MPI::Partitioner > partitioner_fine
std::shared_ptr< const Utilities::MPI::Partitioner > partitioner_coarse
friend class internal::MGTwoLevelTransferImplementation
::MGTwoLevelTransfer< dim, LinearAlgebra::distributed::Vector< Number, MemorySpace::Host > > transfer_cpu
unsigned int n_components
void prolongate_and_add_internal(VectorType &dst, const VectorType &src) const override
std::pair< bool, bool > enable_inplace_operations_if_possible(const std::shared_ptr< const Utilities::MPI::Partitioner > &partitioner_coarse, const std::shared_ptr< const Utilities::MPI::Partitioner > &partitioner_fine) override
typename VectorType::value_type Number
std::pair< const DoFHandler< dim > *, unsigned int > get_dof_handler_fine() const override
void interpolate(VectorType &dst, const VectorType &src) const override
unsigned int mg_level_fine
ObserverPointer< const DoFHandler< dim > > dof_handler_fine
void reinit_geometric_transfer(const DoFHandler< dim > &dof_handler_fine, const DoFHandler< dim > &dof_handler_coarse, const AffineConstraints< Number > &constraint_fine=AffineConstraints< Number >(), const AffineConstraints< Number > &constraint_coarse=AffineConstraints< Number >(), const unsigned int mg_level_fine=numbers::invalid_unsigned_int, const unsigned int mg_level_coarse=numbers::invalid_unsigned_int)
std::vector< MGTransferScheme > schemes
void restrict_and_add_internal(VectorType &dst, const VectorType &src) const override
Kokkos::View< Number *, MemorySpace::Default::kokkos_space > hanging_node_constraint_weights
std::size_t memory_consumption() const override
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
constexpr unsigned int invalid_unsigned_int
::Kokkos::DefaultExecutionSpace::memory_space kokkos_space
unsigned int degree_coarse
unsigned int n_dofs_per_cell_coarse
Kokkos::View< Number *, MemorySpace::Default::kokkos_space > prolongation_matrix
Kokkos::View< unsigned int **, MemorySpace::Default::kokkos_space > dof_indices_fine
Kokkos::View<::internal::MatrixFreeFunctions::ConstraintKinds *, MemorySpace::Default::kokkos_space > hanging_node_masks
Kokkos::View< Number *, MemorySpace::Default::kokkos_space > coarse_constraint_weights
unsigned int n_dofs_per_cell_fine
Kokkos::View< unsigned int *, MemorySpace::Default::kokkos_space > coarse_constraint_indices
Kokkos::View< unsigned int *, MemorySpace::Default::kokkos_space > coarse_constraint_offsets
Kokkos::View< Number **, MemorySpace::Default::kokkos_space > weights
unsigned int n_coarse_cells
SharedViewScratchPad & values_fine
SharedViewScratchPad & values_coarse
const SharedViewScratchPad & prolongation_matrix_device
Kokkos::View< Number *, MemorySpace::Default::kokkos_space::execution_space::scratch_memory_space, Kokkos::MemoryTraits< Kokkos::Unmanaged > > SharedViewScratchPad
SharedViewScratchPad & scratch_pad
Kokkos::TeamPolicy< MemorySpace::Default::kokkos_space::execution_space >::member_type TeamHandle