deal.II version GIT relicensing-6960-g70e9c5b7be 2026-10-22 20:10:01+00:00
\(\newcommand{\dealvcentcolon}{\mathrel{\mathop{:}}}\) \(\newcommand{\dealcoloneq}{\dealvcentcolon\mathrel{\mkern-1.2mu}=}\) \(\newcommand{\jump}[1]{\left[\!\left[ #1 \right]\!\right]}\) \(\newcommand{\average}[1]{\left\{\!\left\{ #1 \right\}\!\right\}}\)
Loading...
Searching...
No Matches
Public Attributes | List of all members
Portable::MGTwoLevelTransfer< dim, VectorType >::MGTransferScheme Struct Reference

#include <deal.II/multigrid/portable_mg_transfer_global_coarsening.h>

Detailed Description

template<int dim, typename VectorType>
struct Portable::MGTwoLevelTransfer< dim, VectorType >::MGTransferScheme

A multigrid transfer scheme. A multigrid transfer class can have different transfer schemes to enable global coarsening (one transfer scheme for transfer between children and parent cells as well as one transfer scheme for cells that are not refined).

Definition at line 139 of file portable_mg_transfer_global_coarsening.h.

Public Attributes

unsigned int n_coarse_cells
 
unsigned int n_dofs_per_cell_coarse
 
unsigned int n_dofs_per_cell_fine
 
unsigned int degree_coarse
 
unsigned int degree_fine
 
Kokkos::View< Number *, MemorySpace::Default::kokkos_space > prolongation_matrix
 
bool use_constraint_crs = false
 
Kokkos::View< unsigned int *, MemorySpace::Default::kokkos_space > coarse_constraint_offsets
 
Kokkos::View< unsigned int *, MemorySpace::Default::kokkos_space > coarse_constraint_indices
 
Kokkos::View< Number *, MemorySpace::Default::kokkos_space > coarse_constraint_weights
 
Kokkos::View< unsigned int **, MemorySpace::Default::kokkos_space > dof_indices_fine
 
Kokkos::View< Number **, MemorySpace::Default::kokkos_space > weights
 
Kokkos::View<::internal::MatrixFreeFunctions::ConstraintKinds *, MemorySpace::Default::kokkos_space > hanging_node_masks
 

Member Data Documentation

◆ n_coarse_cells

template<int dim, typename VectorType >
unsigned int Portable::MGTwoLevelTransfer< dim, VectorType >::MGTransferScheme::n_coarse_cells

Number of coarse cells.

Definition at line 144 of file portable_mg_transfer_global_coarsening.h.

◆ n_dofs_per_cell_coarse

template<int dim, typename VectorType >
unsigned int Portable::MGTwoLevelTransfer< dim, VectorType >::MGTransferScheme::n_dofs_per_cell_coarse

Number of degrees of freedom of a coarse cell.

Note
For tensor-product elements, the value equals n_components * (degree_coarse + 1)^dim.

Definition at line 152 of file portable_mg_transfer_global_coarsening.h.

◆ n_dofs_per_cell_fine

template<int dim, typename VectorType >
unsigned int Portable::MGTwoLevelTransfer< dim, VectorType >::MGTransferScheme::n_dofs_per_cell_fine

Number of degrees of freedom of fine cell.

Note
For tensor-product elements, the value equals n_components * (n_dofs_per_cell_fine + 1)^dim.

Definition at line 160 of file portable_mg_transfer_global_coarsening.h.

◆ degree_coarse

template<int dim, typename VectorType >
unsigned int Portable::MGTwoLevelTransfer< dim, VectorType >::MGTransferScheme::degree_coarse

Polynomial degree of the finite element of a coarse cell.

Definition at line 165 of file portable_mg_transfer_global_coarsening.h.

◆ degree_fine

template<int dim, typename VectorType >
unsigned int Portable::MGTwoLevelTransfer< dim, VectorType >::MGTransferScheme::degree_fine

Number of basis functions per coordinate direction in a tensor product of the union of all children of a coarse cell, which we refer to as "polynomial degree" in analogy to the p-multigrid ingredients, meaning degree_fine * 2 + 1 if a cell is refined.

Definition at line 173 of file portable_mg_transfer_global_coarsening.h.

◆ prolongation_matrix

template<int dim, typename VectorType >
Kokkos::View<Number *, MemorySpace::Default::kokkos_space> Portable::MGTwoLevelTransfer< dim, VectorType >::MGTransferScheme::prolongation_matrix

Prolongation matrix used for the prolongate_and_add() and restrict_and_add() functions. Empty for the identity scheme (cells that are not refined between the two levels).

Definition at line 181 of file portable_mg_transfer_global_coarsening.h.

◆ use_constraint_crs

template<int dim, typename VectorType >
bool Portable::MGTwoLevelTransfer< dim, VectorType >::MGTransferScheme::use_constraint_crs = false

If false, coarse DoFs are gathered/scattered with a single global index per local DoF stored in coarse_constraint_indices (length n_coarse_cells * n_dofs_per_cell_coarse). Dirichlet DoFs use numbers::invalid_unsigned_int and contribute 0 / are skipped on write-back. If true, use the full CRS in coarse_constraint_offsets / coarse_constraint_indices / coarse_constraint_weights for multi-entry AffineConstraints (e.g. hanging nodes not resolved by hanging_node_masks).

Definition at line 193 of file portable_mg_transfer_global_coarsening.h.

◆ coarse_constraint_offsets

template<int dim, typename VectorType >
Kokkos::View<unsigned int *, MemorySpace::Default::kokkos_space> Portable::MGTwoLevelTransfer< dim, VectorType >::MGTransferScheme::coarse_constraint_offsets

CRS offsets into coarse_constraint_indices / coarse_constraint_weights. Empty if use_constraint_crs is false. Otherwise size is n_coarse_cells * n_dofs_per_cell_coarse + 1.

Definition at line 201 of file portable_mg_transfer_global_coarsening.h.

◆ coarse_constraint_indices

template<int dim, typename VectorType >
Kokkos::View<unsigned int *, MemorySpace::Default::kokkos_space> Portable::MGTwoLevelTransfer< dim, VectorType >::MGTransferScheme::coarse_constraint_indices

Global (locally owned + ghost) DoF indices for the coarse side. If use_constraint_crs is false, length is n_coarse_cells * n_dofs_per_cell_coarse with one entry per local DoF (numbers::invalid_unsigned_int for Dirichlet). If true, this is the CRS column index array with length equal to coarse_constraint_weights; for local DoF i on cell c, entries lie in [coarse_constraint_offsets(c * n_dofs_per_cell_coarse + i), coarse_constraint_offsets(c * n_dofs_per_cell_coarse + i + 1)).

Definition at line 215 of file portable_mg_transfer_global_coarsening.h.

◆ coarse_constraint_weights

template<int dim, typename VectorType >
Kokkos::View<Number *, MemorySpace::Default::kokkos_space> Portable::MGTwoLevelTransfer< dim, VectorType >::MGTransferScheme::coarse_constraint_weights

Constraint weights for the CRS path. Empty if use_constraint_crs is false. For unconstrained DoFs in the CRS path this is a single entry with weight 1.

Definition at line 223 of file portable_mg_transfer_global_coarsening.h.

◆ dof_indices_fine

template<int dim, typename VectorType >
Kokkos::View<unsigned int **, MemorySpace::Default::kokkos_space> Portable::MGTwoLevelTransfer< dim, VectorType >::MGTransferScheme::dof_indices_fine

DoF indices on the fine solution space.

Definition at line 229 of file portable_mg_transfer_global_coarsening.h.

◆ weights

template<int dim, typename VectorType >
Kokkos::View<Number **, MemorySpace::Default::kokkos_space> Portable::MGTwoLevelTransfer< dim, VectorType >::MGTransferScheme::weights

Weights for continuous elements.

Definition at line 234 of file portable_mg_transfer_global_coarsening.h.

◆ hanging_node_masks

template<int dim, typename VectorType >
Kokkos::View<::internal::MatrixFreeFunctions::ConstraintKinds *, MemorySpace::Default::kokkos_space> Portable::MGTwoLevelTransfer< dim, VectorType >::MGTransferScheme::hanging_node_masks

Fast hanging-node constraint masks for each coarse cell of this scheme (ConstraintKinds::unconstrained if none). Empty if the host setup did not enable the fast hanging-node algorithm.

Definition at line 243 of file portable_mg_transfer_global_coarsening.h.


The documentation for this struct was generated from the following file: