Discontinuous Galerkin Library
#include "dg/algorithm.h"
dg::InverseKroneckerTriDiagonal2d< Container > Struct Template Reference

Fast inverse tridiagonal sparse matrix in 2d \( T_y^{-1}\otimes T_x^{-1}\). More...

Public Types

using value_type = dg::get_value_type< Container >
 

Public Member Functions

 InverseKroneckerTriDiagonal2d ()=default
 
 InverseKroneckerTriDiagonal2d (const KroneckerTriDiagonal2d< Container > &tri)
 
template<class Container2 >
 InverseKroneckerTriDiagonal2d (const InverseKroneckerTriDiagonal2d< Container2 > &inv_tri)
 
const KroneckerTriDiagonal2d< Container > & tri () const
 
template<class ContainerType0 , class ContainerType1 >
void operator() (const ContainerType0 &y, ContainerType1 &x)
 

Detailed Description

template<class Container>
struct dg::InverseKroneckerTriDiagonal2d< Container >

Fast inverse tridiagonal sparse matrix in 2d \( T_y^{-1}\otimes T_x^{-1}\).

When applied to a vector, uses Thomas algorithm to compute \( T^{-1} v\) first row-wise in x and then column-wise in y

Attention
Only for shared memory vectors (works for GPUs but is not fast)

Member Typedef Documentation

◆ value_type

template<class Container >
using dg::InverseKroneckerTriDiagonal2d< Container >::value_type = dg::get_value_type<Container>

Constructor & Destructor Documentation

◆ InverseKroneckerTriDiagonal2d() [1/3]

template<class Container >
dg::InverseKroneckerTriDiagonal2d< Container >::InverseKroneckerTriDiagonal2d ( )
default

◆ InverseKroneckerTriDiagonal2d() [2/3]

template<class Container >
dg::InverseKroneckerTriDiagonal2d< Container >::InverseKroneckerTriDiagonal2d ( const KroneckerTriDiagonal2d< Container > &  tri)
inline

◆ InverseKroneckerTriDiagonal2d() [3/3]

template<class Container >
template<class Container2 >
dg::InverseKroneckerTriDiagonal2d< Container >::InverseKroneckerTriDiagonal2d ( const InverseKroneckerTriDiagonal2d< Container2 > &  inv_tri)
inline

Member Function Documentation

◆ operator()()

template<class Container >
template<class ContainerType0 , class ContainerType1 >
void dg::InverseKroneckerTriDiagonal2d< Container >::operator() ( const ContainerType0 &  y,
ContainerType1 &  x 
)
inline

◆ tri()

template<class Container >
const KroneckerTriDiagonal2d< Container > & dg::InverseKroneckerTriDiagonal2d< Container >::tri ( ) const
inline

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