ryujin 2.1.1 revision ee5cbcbf2346c1299c942d0e1f13b46449973c18
Loading...
Searching...
No Matches
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 warp_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 warp_size)
 
template<int dim>
unsigned int ryujin::DoFRenumbering::internal_range (dealii::DoFHandler< dim > &dof_handler, const dealii::DynamicSparsityPattern &sparsity, const std::size_t warp_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 29 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 69 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  warp_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 103 of file local_index_handling.h.

References ryujin::warp_size.

◆ 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  warp_size 
)

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

Definition at line 216 of file local_index_handling.h.

References ryujin::warp_size.

◆ internal_range()

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

Reorder indices:

In order to traverse over multiple rows of a (to be constructed) sparsity pattern simultaneously (using SIMD instructions, or a warp of threads on the device) 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 "warps" of warp_size consecutive indices.

Returns the right boundary n_internal of the internal index range.

Definition at line 316 of file local_index_handling.h.

References ryujin::warp_size.

◆ 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 406 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 438 of file local_index_handling.h.