Loading [MathJax]/extensions/TeX/AMSsymbols.js
 deal.II version GIT relicensing-3051-g152b37a7b0 2025-04-08 10:50:00+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\}}\)
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
Public Member Functions | Private Attributes | List of all members
Portable::DeviceBlockVector< Number > Class Template Reference

#include <deal.II/matrix_free/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_handlersblocks
 

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 96 of file portable_matrix_free.h.

Constructor & Destructor Documentation

◆ DeviceBlockVector() [1/4]

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

Constructor.

Definition at line 102 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 115 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 125 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 145 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 155 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 165 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 170 of file portable_matrix_free.h.


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