prec.h
Go to the documentation of this file.
1#pragma once
2
3#ifdef __cplusplus
4extern "C" {
5#endif
6
7#include "bsr.h"
8#include <stdbool.h>
9
13typedef
14struct prec_t
15{
16 // lower triangular factor
18 // diagonal factor
20 // upper triangular factor
22 // number of off-diagonal ilu0 updates
24 // triplets uniquely identifying off-diagonal ilu0 updates
25 int(*offsets)[3];
26}
28
35
42
49void prec_init(prec_t *P, bsr_matrix const *A);
50
59int prec_analyze(bsr_matrix *M, int (*offsets)[3]);
60
67void prec_ilu0_factorize2(prec_t *P, bsr_matrix *A, bool use_dilu);
68void prec_ilu0_factorize3(prec_t *P, bsr_matrix *A, bool use_dilu);
69void prec_ilu0_factorize4(prec_t *P, bsr_matrix *A, bool use_dilu);
70
79void prec_mapply2c(prec_t *P, double *x);
80void prec_mapply3c(prec_t *P, double *x);
81void prec_mapply4c(prec_t *P, double *x);
82
91void prec_dapply3c(prec_t *P, double *x);
92
99
106
107#ifdef __cplusplus
108}
109#endif
void prec_ilu0_factorize4(prec_t *P, bsr_matrix *A, bool use_dilu)
void prec_mapply3c(prec_t *P, double *x)
void prec_free(prec_t *P)
Delete preconditioner object.
void prec_mapply4c(prec_t *P, double *x)
struct prec_t prec_t
Preconditioner struct.
void prec_downcast(prec_t *P)
Make single-precision copy of double-precision values.
void prec_ilu0_factorize3(prec_t *P, bsr_matrix *A, bool use_dilu)
void prec_dapply3c(prec_t *P, double *x)
Preconditioner applicationin double-precision.
void prec_info(prec_t *P)
Display preconditioner statistics.
int prec_analyze(bsr_matrix *M, int(*offsets)[3])
Identify off-diagonal ILU0 targets.
prec_t * prec_alloc()
Create empty preconditioner object.
void prec_ilu0_factorize2(prec_t *P, bsr_matrix *A, bool use_dilu)
ILU0/DILU factorization.
void prec_init(prec_t *P, bsr_matrix const *A)
Initialize preconditioner object.
void prec_mapply2c(prec_t *P, double *x)
Preconditioner application in mixed-precision.
Mixed-precision bsr matrix.
Definition: bsr.h:12
Preconditioner struct.
Definition: prec.h:15
int(* offsets)[3]
Definition: prec.h:25
int noffsets
Definition: prec.h:23
bsr_matrix * U
Definition: prec.h:21
bsr_matrix * L
Definition: prec.h:17
bsr_matrix * D
Definition: prec.h:19