batchlas::ILUKPreconditioner< T > Struct Template Reference

Overview

template<typename T>
struct batchlas::ILUKPreconditioner< T >

Owning ILU(k) factor of a batch of CSR matrices sharing one pattern.

Holds L (unit diagonal, strict lower triangle) and U (upper triangle with its diagonal) in one CSR matrix, plus a level schedule for the two triangular solves: rows inside one level depend only on earlier levels, so iluk_apply walks l_levels / u_levels steps instead of n. One schedule serves the whole batch. Build it with iluk_factorize; view() gives the ILUKView that iluk_apply takes.

Template Parameters
Tscalar type

Definition at line 77 of file iluk.hh.

#include <batchlas/blas/functions/iluk.hh>

Constructors

◆ ILUKPreconditioner()

template<typename T>
batchlas::ILUKPreconditioner< T >::ILUKPreconditioner ( )
inline

1x1 placeholder with a single stored non-zero; iluk_factorize replaces it.

Definition at line 79 of file iluk.hh.

Functions

◆ view()

template<typename T>
ILUKView< T > batchlas::ILUKPreconditioner< T >::view ( ) const
inline

Non-owning view of this factor; valid while *this is alive and unmodified.

Definition at line 106 of file iluk.hh.

Variables

◆ lu

template<typename T>
Matrix<T, MatrixFormat::CSR> batchlas::ILUKPreconditioner< T >::lu

L (strict lower, unit diagonal implied) and U (upper, with diagonal).

Definition at line 81 of file iluk.hh.

◆ diag_positions

template<typename T>
UnifiedVector<int> batchlas::ILUKPreconditioner< T >::diag_positions

size n * batch_size

Definition at line 82 of file iluk.hh.

◆ l_rows

template<typename T>
UnifiedVector<int> batchlas::ILUKPreconditioner< T >::l_rows

row indices ordered by forward-solve level

Definition at line 84 of file iluk.hh.

◆ l_level_ptr

template<typename T>
UnifiedVector<int> batchlas::ILUKPreconditioner< T >::l_level_ptr

size l_levels + 1

Definition at line 85 of file iluk.hh.

◆ u_rows

template<typename T>
UnifiedVector<int> batchlas::ILUKPreconditioner< T >::u_rows

row indices ordered by backward-solve level

Definition at line 86 of file iluk.hh.

◆ u_level_ptr

template<typename T>
UnifiedVector<int> batchlas::ILUKPreconditioner< T >::u_level_ptr

size u_levels + 1

Definition at line 87 of file iluk.hh.

◆ l_levels

template<typename T>
int batchlas::ILUKPreconditioner< T >::l_levels = 0

number of forward-solve levels

Definition at line 88 of file iluk.hh.

◆ u_levels

template<typename T>
int batchlas::ILUKPreconditioner< T >::u_levels = 0

number of backward-solve levels

Definition at line 89 of file iluk.hh.

◆ u_diagonals_usable

template<typename T>
bool batchlas::ILUKPreconditioner< T >::u_diagonals_usable = false

Whether every U diagonal can be made non-singular with diagonal_shift.

Decided once when the factor is built, so iluk_apply never syncs with the host to check it.

Definition at line 94 of file iluk.hh.

◆ n

template<typename T>
int batchlas::ILUKPreconditioner< T >::n = 0

order of each matrix

Definition at line 96 of file iluk.hh.

◆ batch_size

template<typename T>
int batchlas::ILUKPreconditioner< T >::batch_size = 0

number of matrices

Definition at line 97 of file iluk.hh.

◆ levels_of_fill

template<typename T>
int batchlas::ILUKPreconditioner< T >::levels_of_fill = 0

the ILUKParams value it was built with

Definition at line 98 of file iluk.hh.

◆ diagonal_shift

template<typename T>
T batchlas::ILUKPreconditioner< T >::diagonal_shift = T(1e-8)

the ILUKParams value it was built with

Definition at line 99 of file iluk.hh.

◆ drop_tolerance

template<typename T>
base_type<T>::type batchlas::ILUKPreconditioner< T >::drop_tolerance = typename base_type<T>::type(1e-4)

the ILUKParams value it was built with

Definition at line 100 of file iluk.hh.

◆ fill_factor

template<typename T>
base_type<T>::type batchlas::ILUKPreconditioner< T >::fill_factor = typename base_type<T>::type(10)

the ILUKParams value it was built with

Definition at line 101 of file iluk.hh.

◆ diag_pivot_threshold

template<typename T>
base_type<T>::type batchlas::ILUKPreconditioner< T >::diag_pivot_threshold = typename base_type<T>::type(0.1)

the ILUKParams value it was built with

Definition at line 102 of file iluk.hh.

◆ modified_ilu

template<typename T>
bool batchlas::ILUKPreconditioner< T >::modified_ilu = true

the ILUKParams value it was built with

Definition at line 103 of file iluk.hh.