deal.II version GIT relicensing-6834-g5b78e6bcdf 2026-10-01 11:20: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 Member Functions | Private Attributes | List of all members
Portable::DeviceBlockVector< Number > Class Template Reference

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

Detailed Description

template<typename Number>
class Portable::DeviceBlockVector< Number >

A block vector used for source and destination vectors in device functions like MatrixFree::cell_loop().

The maximum number of block is limited by the constant n_max_dof_handlers.

Definition at line 95 of file portable_matrix_free.h.

Public Member Functions

 DeviceBlockVector ()
 
 DeviceBlockVector (const DeviceBlockVector &other)=default
 
 DeviceBlockVector (const DeviceVector< Number > &src)
 
template<typename MemorySpace >
 DeviceBlockVector (const LinearAlgebra::distributed::BlockVector< Number, MemorySpace > &src)
 
DeviceVector< Number > & block (unsigned int index)
 
const DeviceVector< Number > & block (unsigned int index) const
 

Private Attributes

unsigned int n_blocks
 
Kokkos::Array< DeviceVector< Number >, n_max_dof_handlers > blocks
 

Constructor & Destructor Documentation

◆ DeviceBlockVector() [1/4]

template<typename Number >
Portable::DeviceBlockVector< Number >::DeviceBlockVector ( )
inline

Constructor.

Definition at line 101 of file portable_matrix_free.h.

◆ DeviceBlockVector() [2/4]

template<typename Number >
Portable::DeviceBlockVector< Number >::DeviceBlockVector ( const DeviceBlockVector< Number > &  other)
default

Constructor.

◆ DeviceBlockVector() [3/4]

template<typename Number >
Portable::DeviceBlockVector< Number >::DeviceBlockVector ( const DeviceVector< Number > &  src)
inlineexplicit

Constructor from a DeviceVector. Creates a DeviceBlockVector with a single block.

Definition at line 114 of file portable_matrix_free.h.

◆ DeviceBlockVector() [4/4]

template<typename Number >
template<typename MemorySpace >
Portable::DeviceBlockVector< Number >::DeviceBlockVector ( const LinearAlgebra::distributed::BlockVector< Number, MemorySpace > &  src)
inline

Constructor from a LinearAlgebra::distributed::BlockVector. Creates a DeviceVector from each block and stores it.

Definition at line 124 of file portable_matrix_free.h.

Member Function Documentation

◆ block() [1/2]

template<typename Number >
DeviceVector< Number > & Portable::DeviceBlockVector< Number >::block ( unsigned int  index)
inline

Access block index.

Definition at line 144 of file portable_matrix_free.h.

◆ block() [2/2]

template<typename Number >
const DeviceVector< Number > & Portable::DeviceBlockVector< Number >::block ( unsigned int  index) const
inline

Access block index.

Definition at line 154 of file portable_matrix_free.h.

Member Data Documentation

◆ n_blocks

template<typename Number >
unsigned int Portable::DeviceBlockVector< Number >::n_blocks
private

The number of components / blocks

Definition at line 164 of file portable_matrix_free.h.

◆ blocks

template<typename Number >
Kokkos::Array<DeviceVector<Number>, n_max_dof_handlers> Portable::DeviceBlockVector< Number >::blocks
private

Storage for the blocks

Definition at line 169 of file portable_matrix_free.h.


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