Reference documentation for deal.II version Git 73c87d96ef 2021-11-30 22:54:44 +0100
\(\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 Member Functions | Private Attributes | List of all members
internal::MatrixFreeFunctions::HangingNodes< dim > Class Template Reference

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

Public Member Functions

 HangingNodes (const Triangulation< dim > &triangualtion)
 
template<typename CellIterator >
bool setup_constraints (const CellIterator &cell, const std::shared_ptr< const Utilities::MPI::Partitioner > &partitioner, const std::vector< std::vector< unsigned int >> &lexicographic_mapping, std::vector< types::global_dof_index > &dof_indices, const ArrayView< ConstraintKinds > &mask) const
 
std::vector< std::vector< bool > > compute_supported_components (const ::hp::FECollection< dim > &fe) const
 
template<typename CellIterator >
ConstraintKinds compute_refinement_configuration (const CellIterator &cell) const
 
template<typename CellIterator >
void update_dof_indices (const CellIterator &cell, const std::shared_ptr< const Utilities::MPI::Partitioner > &partitioner, const std::vector< std::vector< unsigned int >> &lexicographic_mapping, const std::vector< std::vector< bool >> &component_mask, const ConstraintKinds &refinement_configuration, std::vector< types::global_dof_index > &dof_indices) const
 

Private Member Functions

void setup_line_to_cell (const Triangulation< dim > &triangulation)
 
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 (const unsigned int fe_degree, std::vector< types::global_dof_index > &dofs) const
 
void transpose_subface_index (unsigned int &subface) const
 
template<>
void setup_line_to_cell (const Triangulation< 3 > &triangulation)
 

Private Attributes

std::vector< std::vector< std::pair< typename Triangulation< dim >::cell_iterator, unsigned int > > > line_to_cells
 
const ::ndarray< unsigned int, 3, 2, 2 > local_lines
 

Detailed Description

template<int dim>
class internal::MatrixFreeFunctions::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 [89] and in Section 3.4 of [85].

Definition at line 196 of file hanging_nodes_internal.h.

Constructor & Destructor Documentation

◆ HangingNodes()

template<int dim>
internal::MatrixFreeFunctions::HangingNodes< dim >::HangingNodes ( const Triangulation< dim > &  triangualtion)
inline

Constructor.

Definition at line 285 of file hanging_nodes_internal.h.

Member Function Documentation

◆ setup_constraints()

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

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

Definition at line 744 of file hanging_nodes_internal.h.

◆ compute_supported_components()

template<int dim>
std::vector< std::vector< bool > > internal::MatrixFreeFunctions::HangingNodes< dim >::compute_supported_components ( const ::hp::FECollection< dim > &  fe) const
inline

Compute the supported components of all entries of the given hp::FECollection object.

Definition at line 385 of file hanging_nodes_internal.h.

◆ compute_refinement_configuration()

template<int dim>
template<typename CellIterator >
ConstraintKinds internal::MatrixFreeFunctions::HangingNodes< dim >::compute_refinement_configuration ( const CellIterator &  cell) const
inline

Determine the refinement configuration of the given cell.

Definition at line 416 of file hanging_nodes_internal.h.

◆ update_dof_indices()

template<int dim>
template<typename CellIterator >
void internal::MatrixFreeFunctions::HangingNodes< dim >::update_dof_indices ( const CellIterator &  cell,
const std::shared_ptr< const Utilities::MPI::Partitioner > &  partitioner,
const std::vector< std::vector< unsigned int >> &  lexicographic_mapping,
const std::vector< std::vector< bool >> &  component_mask,
const ConstraintKinds refinement_configuration,
std::vector< types::global_dof_index > &  dof_indices 
) const
inline

Update the DoF indices of a given cell for the given refinement configuration and for the given components.

Definition at line 501 of file hanging_nodes_internal.h.

◆ setup_line_to_cell() [1/2]

template<int dim>
void internal::MatrixFreeFunctions::HangingNodes< dim >::setup_line_to_cell ( const Triangulation< dim > &  triangulation)
inlineprivate

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

Definition at line 298 of file hanging_nodes_internal.h.

◆ rotate_subface_index()

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

Definition at line 791 of file hanging_nodes_internal.h.

◆ rotate_face()

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

Definition at line 806 of file hanging_nodes_internal.h.

◆ line_dof_idx()

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

Definition at line 855 of file hanging_nodes_internal.h.

◆ transpose_face()

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

Definition at line 887 of file hanging_nodes_internal.h.

◆ transpose_subface_index()

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

Definition at line 923 of file hanging_nodes_internal.h.

◆ setup_line_to_cell() [2/2]

template<>
void internal::MatrixFreeFunctions::HangingNodes< 3 >::setup_line_to_cell ( const Triangulation< 3 > &  triangulation)
inlineprivate

Definition at line 308 of file hanging_nodes_internal.h.

Member Data Documentation

◆ line_to_cells

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

Definition at line 274 of file hanging_nodes_internal.h.

◆ local_lines

template<int dim>
const ::ndarray<unsigned int, 3, 2, 2> internal::MatrixFreeFunctions::HangingNodes< dim >::local_lines
private
Initial value:
= {
{{{{{7, 3}}, {{6, 2}}}},
{{{{5, 1}}, {{4, 0}}}},
{{{{11, 9}}, {{10, 8}}}}}}

Definition at line 276 of file hanging_nodes_internal.h.


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