opm-simulators
bslv.h
1 #pragma once
2 
3 #ifdef __cplusplus
4 extern "C" {
5 #endif
6 
7 
8 #include "bsr.h"
9 #include "prec.h"
10 
11 #include <stdbool.h>
12 
16 typedef
17 struct bslv_memory
18 {
19  // perform dilu (ilu0) of true (False)
20  bool use_dilu;
21 
22  // tolerance
23  double tol;
24  // maximum number of iterations
25  int max_iter;
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
35  prec_t *P;
36 }
38 
44 bslv_memory *bslv_alloc();
45 
51 void bslv_free(bslv_memory *mem);
52 
59 void bslv_info(bslv_memory *mem, int count);
60 
70 void bslv_init(bslv_memory *mem, double tol, int max_iter, bsr_matrix const *A, bool use_dilu);
71 
84 int bslv_pbicgstab3m(bslv_memory *mem, bsr_matrix *A, const double *b, double *x);
85 
98 int bslv_pbicgstab3d(bslv_memory *mem, bsr_matrix *A, const double *b, double *x);
99 
100 #ifdef __cplusplus
101 }
102 #endif
Mixed-precision bsr matrix.
Definition: bsr.h:10
Preconditioner struct.
Definition: prec.h:12
Linear solver memory.
Definition: bslv.h:16