TDLS 0.4.0
Tiny Device-callable Linear Solvers
Loading...
Searching...
No Matches
tdls::detail::ArrowheadStreamedBlock< T, S, B, col, diag > Struct Template Reference

Block k of a streamed solve of ArrowheadLUppSolverStatic (ArrowheadLUppSolverStatic::StreamedBlock): the working arrays of the solver themselves, which the caller fills through the accessors when the solver asks for the block; the factorization and the solve then run in place. Only a save is copied (D_k, and [A_kb | y_k] when the column-major check reads the forward stage), to store a refused block as given. Entries in logical order whatever the layout and the storage. The arrays come uninitialized, or holding another block: the caller writes every entry, zeros included, by assignment. More...

#include <solver_static.hpp>

Inheritance diagram for tdls::detail::ArrowheadStreamedBlock< T, S, B, col, diag >:
[legend]

Public Member Functions

TDLS_HOST_DEVICE TDLS_FORCE_INLINE_ALL constexpr T & d (const int i, const int j) noexcept
 
TDLS_HOST_DEVICE TDLS_FORCE_INLINE_ALL constexpr T & akb (const int i, const int c) noexcept
 
TDLS_HOST_DEVICE TDLS_FORCE_INLINE_ALL constexpr T & y (const int i) noexcept
 
TDLS_HOST_DEVICE TDLS_FORCE_INLINE_ALL constexpr T & coupling (const int i) noexcept
 
TDLS_HOST_DEVICE TDLS_FORCE_INLINE_ALL constexpr T & abk (const int r, const int i) noexcept
 

Public Attributes

T Dl [S *S]
 D_k in the layout of the factorization.
 
T W [(B+1) *S]
 [A_kb | y_k], column c at c * S
 
T Abk [diag ? S :B *S]
 

Detailed Description

template<typename T, int S, int B, bool col, bool diag>
struct tdls::detail::ArrowheadStreamedBlock< T, S, B, col, diag >

Block k of a streamed solve of ArrowheadLUppSolverStatic (ArrowheadLUppSolverStatic::StreamedBlock): the working arrays of the solver themselves, which the caller fills through the accessors when the solver asks for the block; the factorization and the solve then run in place. Only a save is copied (D_k, and [A_kb | y_k] when the column-major check reads the forward stage), to store a refused block as given. Entries in logical order whatever the layout and the storage. The arrays come uninitialized, or holding another block: the caller writes every entry, zeros included, by assignment.

Template Parameters
Tscalar type
Sunknowns of a block
Bborder unknowns
colcolumn-major layout
diagdiagonal coupling

Member Function Documentation

◆ abk()

template<typename T , int S, int B, bool col, bool diag>
TDLS_HOST_DEVICE TDLS_FORCE_INLINE_ALL constexpr T & tdls::detail::ArrowheadStreamedBlock< T, S, B, col, diag >::abk ( const int r,
const int i )
inlineconstexprnoexcept
Parameters
[in]rborder row
[in]icolumn of the block
Returns
entry (r, i) of A_bk (dense coupling)

◆ akb()

template<typename T , int S, int B, bool col, bool diag>
TDLS_HOST_DEVICE TDLS_FORCE_INLINE_ALL constexpr T & tdls::detail::ArrowheadStreamedBlock< T, S, B, col, diag >::akb ( const int i,
const int c )
inlineconstexprnoexcept
Parameters
[in]irow of the block
[in]cborder column
Returns
entry (i, c) of A_kb

◆ coupling()

template<typename T , int S, int B, bool col, bool diag>
TDLS_HOST_DEVICE TDLS_FORCE_INLINE_ALL constexpr T & tdls::detail::ArrowheadStreamedBlock< T, S, B, col, diag >::coupling ( const int i)
inlineconstexprnoexcept
Parameters
[in]irow and column of the block
Returns
the coupling A_bk(coupling_row + i, i) (diagonal coupling)

◆ d()

template<typename T , int S, int B, bool col, bool diag>
TDLS_HOST_DEVICE TDLS_FORCE_INLINE_ALL constexpr T & tdls::detail::ArrowheadStreamedBlock< T, S, B, col, diag >::d ( const int i,
const int j )
inlineconstexprnoexcept
Parameters
[in]irow of the block
[in]jcolumn of the block
Returns
entry (i, j) of D_k

◆ y()

template<typename T , int S, int B, bool col, bool diag>
TDLS_HOST_DEVICE TDLS_FORCE_INLINE_ALL constexpr T & tdls::detail::ArrowheadStreamedBlock< T, S, B, col, diag >::y ( const int i)
inlineconstexprnoexcept
Parameters
[in]irow of the block
Returns
entry i of y_k, the right-hand side on the rows of the block

Member Data Documentation

◆ Abk

template<typename T , int S, int B, bool col, bool diag>
T tdls::detail::ArrowheadStreamedBlock< T, S, B, col, diag >::Abk[diag ? S :B *S]

A_bk: coupled rows (diagonal) or B x S (dense)


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