bslv.h
Go to the documentation of this file.
1#pragma once
2
3#ifdef __cplusplus
4extern "C" {
5#endif
6
7
8#include "bsr.h"
9#include "prec.h"
10
11#include <stdbool.h>
12
16typedef
17struct bslv_memory
18{
19 // perform dilu (ilu0) of true (False)
21
22 // tolerance
23 double tol;
24 // maximum number of iterations
26 // convergencey history
27 double *e;
28
29 // size of linear system
30 int n;
31 // pointer to temporary arrays
32 double **dtmp;
33
34 // pointer to preconditioner
36}
38
45
52
59void bslv_info(bslv_memory *mem, int count);
60
70void bslv_init(bslv_memory *mem, double tol, int max_iter, bsr_matrix const *A, bool use_dilu);
71
84int bslv_pbicgstab3m(bslv_memory *mem, bsr_matrix *A, const double *b, double *x);
85
98int bslv_pbicgstab3d(bslv_memory *mem, bsr_matrix *A, const double *b, double *x);
99
100#ifdef __cplusplus
101}
102#endif
void bslv_info(bslv_memory *mem, int count)
Display convergence information.
void bslv_init(bslv_memory *mem, double tol, int max_iter, bsr_matrix const *A, bool use_dilu)
Initialize solver memory object.
int bslv_pbicgstab3m(bslv_memory *mem, bsr_matrix *A, const double *b, double *x)
Preconditioned bicgstab in mixed-precision.
void bslv_free(bslv_memory *mem)
Delete solver memroy object.
struct bslv_memory bslv_memory
Linear solver memory.
bslv_memory * bslv_alloc()
Create empty solver memory object.
int bslv_pbicgstab3d(bslv_memory *mem, bsr_matrix *A, const double *b, double *x)
Preconditioned bicgstab in double-precision.
Linear solver memory.
Definition: bslv.h:18
int n
Definition: bslv.h:30
int max_iter
Definition: bslv.h:25
double tol
Definition: bslv.h:23
prec_t * P
Definition: bslv.h:35
double * e
Definition: bslv.h:27
bool use_dilu
Definition: bslv.h:20
double ** dtmp
Definition: bslv.h:32
Mixed-precision bsr matrix.
Definition: bsr.h:12
Preconditioner struct.
Definition: prec.h:14