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
12typedef
13struct prec_t
14{
15 // lower triangular factor
17 // diagonal factor
19 // upper triangular factor
21 // number of off-diagonal ilu0 updates
23 // triplets uniquely identifying off-diagonal ilu0 updates
24 int(*offsets)[3];
25}
27
34
41
48void prec_init(prec_t *P, bsr_matrix const *A);
49
58int prec_analyze(bsr_matrix *M, int (*offsets)[3]);
59
67
75
84void prec_mapply3c(prec_t *P, double *x);
85
94void prec_dapply3c(prec_t *P, double *x);
95
102
109
110#ifdef __cplusplus
111}
112#endif
void prec_ilu0_factorize(prec_t *P, bsr_matrix *A)
ILU0 factorization.
void prec_mapply3c(prec_t *P, double *x)
Preconditioner application in mixed-precision.
void prec_free(prec_t *P)
Delete preconditioner object.
void prec_dilu_factorize(prec_t *P, bsr_matrix *A)
DILU factorization.
struct prec_t prec_t
Preconditioner struct.
void prec_downcast(prec_t *P)
Make single-precision copy of double-precision values.
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_init(prec_t *P, bsr_matrix const *A)
Initialize preconditioner object.
Mixed-precision bsr matrix.
Definition: bsr.h:12
Preconditioner struct.
Definition: prec.h:14
int(* offsets)[3]
Definition: prec.h:24
int noffsets
Definition: prec.h:22
bsr_matrix * U
Definition: prec.h:20
bsr_matrix * L
Definition: prec.h:16
bsr_matrix * D
Definition: prec.h:18