Go to the documentation of this file.
18 #ifndef __PASO_PRECONDITIONER_H__
19 #define __PASO_PRECONDITIONER_H__
27 struct Preconditioner;
31 struct Preconditioner_Smoother;
81 dim_t sweeps,
bool x_is_initial);
85 dim_t sweeps,
bool x_is_initial);
89 double atol,
dim_t* sweeps,
bool x_is_initial);
146 #endif // __PASO_PRECONDITIONER_H__
index_t * mask_C
Definition: Preconditioner.h:138
dim_t n_block
Definition: Preconditioner.h:128
dim_t n
Definition: Preconditioner.h:127
dim_t n_C
Definition: Preconditioner.h:130
Solver_ILU * Solver_getILU(SparseMatrix_ptr A, bool verbose)
constructs the incomplete block factorization
Definition: ILU.cpp:59
Preconditioner_LocalSmoother * Preconditioner_LocalSmoother_alloc(SparseMatrix_ptr A, bool jacobi, bool verbose)
Definition: Smoother.cpp:79
void Preconditioner_Smoother_free(Preconditioner_Smoother *in)
Definition: Smoother.cpp:49
bool Jacobi
Definition: Preconditioner.h:72
dim_t type
Definition: Preconditioner.h:52
void Preconditioner_LocalSmoother_Sweep_tiled(SparseMatrix_ptr A, Preconditioner_LocalSmoother *gs, double *x)
#define PASO_RILU
Definition: Options.h:64
double * b_F
Definition: Preconditioner.h:140
boost::shared_ptr< const Preconditioner > const_Preconditioner_ptr
Definition: Preconditioner.h:43
#define PASO_ILU0
Definition: Options.h:45
double * b_C
Definition: Preconditioner.h:142
boost::shared_ptr< SystemMatrix > SystemMatrix_ptr
Definition: SystemMatrix.h:55
ILU preconditioner.
Definition: Preconditioner.h:119
Solver_RILU * rilu
RILU preconditioner.
Definition: Preconditioner.h:61
Preconditioner_Smoother * jacobi
Jacobi preconditioner.
Definition: Preconditioner.h:55
Preconditioner_Smoother * gs
Gauss-Seidel preconditioner.
Definition: Preconditioner.h:57
#define PASO_NO_PRECONDITIONER
Definition: Options.h:66
void Solver_RILU_free(Solver_RILU *in)
Definition: RILU.cpp:50
double * diag
Definition: Preconditioner.h:73
Preconditioner_LocalSmoother * localSmoother
Definition: Preconditioner.h:80
dim_t n_F
Definition: Preconditioner.h:129
void Solver_updateIncompleteSchurComplement(SparseMatrix_ptr A_CC, SparseMatrix_ptr A_CF, double *invA_FF, index_t *A_FF_pivot, SparseMatrix_ptr A_FC)
Definition: SchurComplement.cpp:43
void Preconditioner_LocalSmoother_Sweep_colored(SparseMatrix_ptr A, Preconditioner_LocalSmoother *gs, double *x)
Definition: Smoother.cpp:353
void copy(dim_t N, double *out, const double *in)
out = in
Definition: PasoUtil.h:116
void Preconditioner_LocalSmoother_free(Preconditioner_LocalSmoother *in)
Definition: Smoother.cpp:57
void Preconditioner_Smoother_solve(SystemMatrix_ptr A, Preconditioner_Smoother *gs, double *x, const double *b, dim_t sweeps, bool x_is_initial)
Definition: Smoother.cpp:115
SparseMatrix_ptr A_FC
Definition: Preconditioner.h:133
SparseMatrix_ptr A_CF
Definition: Preconditioner.h:134
index_t dim_t
Definition: DataTypes.h:93
Solver_RILU * RILU_of_Schur
Definition: Preconditioner.h:143
RILU preconditioner.
Definition: Preconditioner.h:125
index_t * rows_in_C
Definition: Preconditioner.h:136
Definition: Preconditioner.h:78
SolverResult
Definition: Paso.h:57
index_t * mask_F
Definition: Preconditioner.h:137
#define PASO_GS
Definition: Options.h:63
bool is_local
Definition: Preconditioner.h:81
void Solver_solveRILU(Solver_RILU *rilu, double *x, double *b)
Definition: RILU.cpp:304
boost::shared_ptr< SparseMatrix > SparseMatrix_ptr
Definition: SparseMatrix.h:50
void Solver_ILU_free(Solver_ILU *in)
Definition: ILU.cpp:50
double * inv_A_FF
Definition: Preconditioner.h:131
Definition: Preconditioner.h:50
dim_t sweeps
Definition: Preconditioner.h:53
#define PASO_JACOBI
Definition: Options.h:47
int index_t
type for array/matrix indices used both globally and on each rank
Definition: DataTypes.h:88
double * x_C
Definition: Preconditioner.h:141
Preconditioner_Smoother * Preconditioner_Smoother_alloc(SystemMatrix_ptr A, bool jacobi, bool is_local, bool verbose)
constructs the symmetric Gauss-Seidel preconditioner
Definition: Smoother.cpp:69
double * buffer
Definition: Preconditioner.h:74
SolverResult Preconditioner_Smoother_solve_byTolerance(SystemMatrix_ptr A, Preconditioner_Smoother *gs, double *x, const double *b, double atol, dim_t *sweeps, bool x_is_initial)
Definition: Smoother.cpp:142
void Preconditioner_LocalSmoother_Sweep_sequential(SparseMatrix_ptr A, Preconditioner_LocalSmoother *gs, double *x)
inplace Gauss-Seidel sweep in sequential mode
Definition: Smoother.cpp:236
index_t * pivot
Definition: Preconditioner.h:75
double * x_F
Definition: Preconditioner.h:139
Preconditioner * Preconditioner_alloc(SystemMatrix_ptr A, Options *options)
Definition: Preconditioner.cpp:65
index_t * A_FF_pivot
Definition: Preconditioner.h:132
void Preconditioner_LocalSmoother_solve(SparseMatrix_ptr A, Preconditioner_LocalSmoother *gs, double *x, const double *b, dim_t sweeps, bool x_is_initial)
Definition: Smoother.cpp:176
double * factors
Definition: Preconditioner.h:121
Solver_RILU * Solver_getRILU(SparseMatrix_ptr A, bool verbose)
Definition: RILU.cpp:86
Solver_ILU * ilu
ILU preconditioner.
Definition: Preconditioner.h:59
Definition: BiCGStab.cpp:26
void Preconditioner_free(Preconditioner *in)
Definition: Preconditioner.cpp:54
void Preconditioner_solve(Preconditioner *prec, SystemMatrix_ptr A, double *x, double *b)
Definition: Preconditioner.cpp:130
void Solver_solveILU(SparseMatrix_ptr A, Solver_ILU *ilu, double *x, const double *b)
Definition: ILU.cpp:331
index_t * rows_in_F
Definition: Preconditioner.h:135
Definition: Preconditioner.h:70
void Preconditioner_LocalSmoother_Sweep(SparseMatrix_ptr A, Preconditioner_LocalSmoother *gs, double *x)
Definition: Smoother.cpp:216
boost::shared_ptr< Preconditioner > Preconditioner_ptr
Definition: Preconditioner.h:41