Reference documentation for deal.II version 9.2.0
\(\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\}}\)
Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
CUDAWrappers::internal::HangingNodes< dim > Class Template Reference

#include <deal.II/matrix_free/cuda_hanging_nodes_internal.h>

Public Member Functions

 HangingNodes (unsigned int fe_degree, const DoFHandler< dim > &dof_handler, const std::vector< unsigned int > &lexicographic_mapping)
 
template<typename CellIterator >
void setup_constraints (std::vector< types::global_dof_index > &dof_indices, const CellIterator &cell, const std::shared_ptr< const Utilities::MPI::Partitioner > &partitioner, unsigned int &mask) const
 

Private Types

using cell_iterator = typename DoFHandler< dim >::cell_iterator
 
using active_cell_iterator = typename DoFHandler< dim >::active_cell_iterator
 

Private Member Functions

void setup_line_to_cell ()
 
void rotate_subface_index (int times, unsigned int &subface_index) const
 
void rotate_face (int times, unsigned int n_dofs_1d, std::vector< types::global_dof_index > &dofs) const
 
unsigned int line_dof_idx (int local_line, unsigned int dof, unsigned int n_dofs_1d) const
 
void transpose_face (std::vector< types::global_dof_index > &dofs) const
 
void transpose_subface_index (unsigned int &subface) const
 
void setup_line_to_cell ()
 

Private Attributes

const unsigned int n_raw_lines
 
std::vector< std::vector< std::pair< cell_iterator, unsigned int > > > line_to_cells
 
const std::vector< unsigned int > & lexicographic_mapping
 
const unsigned int fe_degree
 
const DoFHandler< dim > & dof_handler
 

Detailed Description

template<int dim>
class CUDAWrappers::internal::HangingNodes< dim >

This class creates the mask used in the treatment of hanging nodes in CUDAWrappers::MatrixFree. The implementation of this class is explained in Section 3 of Matrix-Free Finite-Element Computations On Graphics Processors With Adaptively Refined Unstructured Meshes by Karl Ljungkvist, SpringSim-HPC, 2017 April 23-26.

Definition at line 46 of file cuda_hanging_nodes_internal.h.

Member Typedef Documentation

◆ cell_iterator

template<int dim>
using CUDAWrappers::internal::HangingNodes< dim >::cell_iterator = typename DoFHandler<dim>::cell_iterator
private

Definition at line 93 of file cuda_hanging_nodes_internal.h.

◆ active_cell_iterator

template<int dim>
using CUDAWrappers::internal::HangingNodes< dim >::active_cell_iterator = typename DoFHandler<dim>::active_cell_iterator
private

Definition at line 95 of file cuda_hanging_nodes_internal.h.

Constructor & Destructor Documentation

◆ HangingNodes()

template<int dim>
CUDAWrappers::internal::HangingNodes< dim >::HangingNodes ( unsigned int  fe_degree,
const DoFHandler< dim > &  dof_handler,
const std::vector< unsigned int > &  lexicographic_mapping 
)
inline

Constructor.

Definition at line 170 of file cuda_hanging_nodes_internal.h.

Member Function Documentation

◆ setup_constraints()

template<int dim>
template<typename CellIterator >
void CUDAWrappers::internal::HangingNodes< dim >::setup_constraints ( std::vector< types::global_dof_index > &  dof_indices,
const CellIterator &  cell,
const std::shared_ptr< const Utilities::MPI::Partitioner > &  partitioner,
unsigned int mask 
) const
inline

Compute the value of the constraint mask for a given cell.

Definition at line 271 of file cuda_hanging_nodes_internal.h.

◆ setup_line_to_cell() [1/2]

template<int dim>
void CUDAWrappers::internal::HangingNodes< dim >::setup_line_to_cell
inlineprivate

Set up line-to-cell mapping for edge constraints in 3D.

Definition at line 190 of file cuda_hanging_nodes_internal.h.

◆ rotate_subface_index()

template<int dim>
void CUDAWrappers::internal::HangingNodes< dim >::rotate_subface_index ( int  times,
unsigned int subface_index 
) const
inlineprivate

Definition at line 589 of file cuda_hanging_nodes_internal.h.

◆ rotate_face()

template<int dim>
void CUDAWrappers::internal::HangingNodes< dim >::rotate_face ( int  times,
unsigned int  n_dofs_1d,
std::vector< types::global_dof_index > &  dofs 
) const
inlineprivate

Definition at line 604 of file cuda_hanging_nodes_internal.h.

◆ line_dof_idx()

template<int dim>
unsigned int CUDAWrappers::internal::HangingNodes< dim >::line_dof_idx ( int  local_line,
unsigned int  dof,
unsigned int  n_dofs_1d 
) const
inlineprivate

Definition at line 653 of file cuda_hanging_nodes_internal.h.

◆ transpose_face()

template<int dim>
void CUDAWrappers::internal::HangingNodes< dim >::transpose_face ( std::vector< types::global_dof_index > &  dofs) const
inlineprivate

Definition at line 681 of file cuda_hanging_nodes_internal.h.

◆ transpose_subface_index()

template<int dim>
void CUDAWrappers::internal::HangingNodes< dim >::transpose_subface_index ( unsigned int subface) const
private

Definition at line 716 of file cuda_hanging_nodes_internal.h.

◆ setup_line_to_cell() [2/2]

void CUDAWrappers::internal::HangingNodes< 3 >::setup_line_to_cell ( )
inlineprivate

Definition at line 197 of file cuda_hanging_nodes_internal.h.

Member Data Documentation

◆ n_raw_lines

template<int dim>
const unsigned int CUDAWrappers::internal::HangingNodes< dim >::n_raw_lines
private

Definition at line 96 of file cuda_hanging_nodes_internal.h.

◆ line_to_cells

template<int dim>
std::vector<std::vector<std::pair<cell_iterator, unsigned int> > > CUDAWrappers::internal::HangingNodes< dim >::line_to_cells
private

Definition at line 98 of file cuda_hanging_nodes_internal.h.

◆ lexicographic_mapping

template<int dim>
const std::vector<unsigned int>& CUDAWrappers::internal::HangingNodes< dim >::lexicographic_mapping
private

Definition at line 99 of file cuda_hanging_nodes_internal.h.

◆ fe_degree

template<int dim>
const unsigned int CUDAWrappers::internal::HangingNodes< dim >::fe_degree
private

Definition at line 100 of file cuda_hanging_nodes_internal.h.

◆ dof_handler

template<int dim>
const DoFHandler<dim>& CUDAWrappers::internal::HangingNodes< dim >::dof_handler
private

Definition at line 101 of file cuda_hanging_nodes_internal.h.


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