ryujin 2.1.1 revision 075c649df0ea80b3fbb39a7a6e10bf95d4e28390
Namespaces | Functions
Finite element formulation

Namespaces

namespace  ryujin::DoFRenumbering
 
namespace  ryujin::DoFTools
 

Functions

template<typename Number >
void ryujin::transform_to_local_range (const dealii::Utilities::MPI::Partitioner &partitioner, dealii::AffineConstraints< Number > &affine_constraints)
 
template<typename VECTOR >
void ryujin::transform_to_local_range (const dealii::Utilities::MPI::Partitioner &partitioner, VECTOR &vector)
 
template<int dim>
unsigned int ryujin::DoFRenumbering::export_indices_first (dealii::DoFHandler< dim > &dof_handler, const MPI_Comm &mpi_communicator, const unsigned int n_locally_internal, const std::size_t group_size)
 
template<int dim>
unsigned int ryujin::DoFRenumbering::inconsistent_strides_last (dealii::DoFHandler< dim > &dof_handler, const dealii::DynamicSparsityPattern &sparsity, const unsigned int n_locally_internal, const std::size_t group_size)
 
template<int dim>
unsigned int ryujin::DoFRenumbering::internal_range (dealii::DoFHandler< dim > &dof_handler, const dealii::DynamicSparsityPattern &sparsity, const std::size_t group_size)
 
template<int dim, typename Number , typename SPARSITY >
void ryujin::DoFTools::make_extended_sparsity_pattern (const dealii::DoFHandler< dim > &dof_handler, SPARSITY &dsp, const dealii::AffineConstraints< Number > &affine_constraints, bool keep_constrained)
 
template<int dim, typename Number , typename SPARSITY >
void ryujin::DoFTools::make_extended_sparsity_pattern_dg (const dealii::DoFHandler< dim > &dof_handler, SPARSITY &dsp, const dealii::AffineConstraints< Number > &affine_constraints, bool keep_constrained)
 

Detailed Description

Some helper functions for local index handling, dof renumbering, sparsity pattern creation and matrix assembly.

Function Documentation

◆ transform_to_local_range() [1/2]

template<typename Number >
void ryujin::transform_to_local_range ( const dealii::Utilities::MPI::Partitioner &  partitioner,
dealii::AffineConstraints< Number > &  affine_constraints 
)

Given a partitioner the function converts an AffineConstraints object affine_constraints from the usual global numbering used in deal.II to an MPI-rank local numbering \([0,n]\), where \(n\) is the number of locally relevant degrees of freedom.

Definition at line 27 of file local_index_handling.h.

◆ transform_to_local_range() [2/2]

template<typename VECTOR >
void ryujin::transform_to_local_range ( const dealii::Utilities::MPI::Partitioner &  partitioner,
VECTOR &  vector 
)

Given a partitioner the function translates each element of a given vector vector from the usual global numbering used in deal.II to an MPI-rank local numbering \([0,n]\), where \(n\) is the number of locally relevant degrees of freedom.

Definition at line 67 of file local_index_handling.h.

◆ export_indices_first()

template<int dim>
unsigned int ryujin::DoFRenumbering::export_indices_first ( dealii::DoFHandler< dim > &  dof_handler,
const MPI_Comm &  mpi_communicator,
const unsigned int  n_locally_internal,
const std::size_t  group_size 
)

Reorder all (strides of) locally internal indices that contain export indices to the start of the index range.

This renumbering requires MPI communication in order to determine the set of export indices.

Definition at line 101 of file local_index_handling.h.

◆ inconsistent_strides_last()

template<int dim>
unsigned int ryujin::DoFRenumbering::inconsistent_strides_last ( dealii::DoFHandler< dim > &  dof_handler,
const dealii::DynamicSparsityPattern &  sparsity,
const unsigned int  n_locally_internal,
const std::size_t  group_size 
)

Reorder all strides of inconsistent locally internal indices to the end of the locally internal index range.

Definition at line 215 of file local_index_handling.h.

◆ internal_range()

template<int dim>
unsigned int ryujin::DoFRenumbering::internal_range ( dealii::DoFHandler< dim > &  dof_handler,
const dealii::DynamicSparsityPattern &  sparsity,
const std::size_t  group_size 
)

Reorder indices:

In order to traverse over multiple rows of a (to be constructed) sparsity pattern simultaneously using SIMD instructions we reorder all locally owned degrees of freedom to ensure that a local index range \([0, \text{n_locally_internal_}) \subset [0, \text{n_locally_owned})\) is available that groups dofs with same stencil size in groups of multiples of group_size

Returns the right boundary n_internal of the internal index range.

Definition at line 314 of file local_index_handling.h.

◆ make_extended_sparsity_pattern()

template<int dim, typename Number , typename SPARSITY >
void ryujin::DoFTools::make_extended_sparsity_pattern ( const dealii::DoFHandler< dim > &  dof_handler,
SPARSITY &  dsp,
const dealii::AffineConstraints< Number > &  affine_constraints,
bool  keep_constrained 
)

Given a dof_handler, and constraints affine_constraints this function creates an extended sparsity pattern that also includes locally relevant to locally relevant couplings.

Definition at line 404 of file local_index_handling.h.

◆ make_extended_sparsity_pattern_dg()

template<int dim, typename Number , typename SPARSITY >
void ryujin::DoFTools::make_extended_sparsity_pattern_dg ( const dealii::DoFHandler< dim > &  dof_handler,
SPARSITY &  dsp,
const dealii::AffineConstraints< Number > &  affine_constraints,
bool  keep_constrained 
)

Given a dof_handler, and constraints affine_constraints this function creates an extended sparsity pattern for the discontinuous Galerkin formulation that also includes locally relevant to locally relevant couplings.

Definition at line 434 of file local_index_handling.h.