17 #ifndef __PASO_PRECONDITIONER_H__
18 #define __PASO_PRECONDITIONER_H__
23 #define PRECONDITIONER_NO_ERROR 0
24 #define PRECONDITIONER_MAXITER_REACHED 1
25 #define PRECONDITIONER_INPUT_ERROR -1
26 #define PRECONDITIONER_MEMORY_ERROR -9
27 #define PRECONDITIONER_BREAKDOWN -10
28 #define PRECONDITIONER_NEGATIVE_NORM_ERROR -11
29 #define PRECONDITIONER_DIVERGENCE -12
91 dim_t sweeps,
bool x_is_initial);
95 dim_t sweeps,
bool x_is_initial);
99 double atol,
dim_t* sweeps,
bool x_is_initial);
286 #endif // __PASO_PRECONDITIONER_H__
Solver_RILU * RILU_of_Schur
Definition: Preconditioner.h:269
bool is_local
Definition: Preconditioner.h:232
Solver_RILU * Solver_getRILU(SparseMatrix_ptr A, bool verbose)
Definition: RILU.cpp:71
void Preconditioner_Smoother_free(Preconditioner_Smoother *in)
Definition: Smoother.cpp:34
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:111
dim_t type
Definition: Preconditioner.h:46
Preconditioner_AMG * AMG_C
Definition: Preconditioner.h:152
Preconditioner_BoomerAMG * boomeramg
Definition: Preconditioner.h:235
SystemMatrix_ptr Preconditioner_AMG_getRestriction(SystemMatrix_ptr P)
Definition: AMG_Restriction.cpp:47
double * inv_A_FF
Definition: Preconditioner.h:257
SparseMatrix_ptr P
Definition: Preconditioner.h:192
void Preconditioner_LocalSmoother_free(Preconditioner_LocalSmoother *in)
Definition: Smoother.cpp:42
index_t Preconditioner_AMG_getMaxLevel(const Preconditioner_AMG *in)
Definition: AMG.cpp:53
AMGBlockSelect
Definition: Preconditioner.h:115
boost::shared_ptr< const SparseMatrix > const_SparseMatrix_ptr
Definition: SparseMatrix.h:37
void Preconditioner_LocalAMG_solve(SparseMatrix_ptr A, Preconditioner_LocalAMG *amg, double *x, double *b)
Definition: LocalAMG.cpp:304
double Preconditioner_LocalAMG_getCoarseLevelSparsity(const Preconditioner_LocalAMG *in)
Definition: LocalAMG.cpp:60
Definition: Preconditioner.h:117
SystemMatrix_ptr A_C
coarse level matrix
Definition: Preconditioner.h:127
index_t * rows_in_C
Definition: Preconditioner.h:262
Preconditioner_Smoother * amgsubstitute
Definition: Preconditioner.h:237
double * b_C
Definition: Preconditioner.h:202
err_t 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:137
Definition: Preconditioner.h:230
SparseMatrix_ptr Preconditioner_AMG_mergeSystemMatrix(SystemMatrix_ptr A)
double * x_C
Definition: Preconditioner.h:267
void Preconditioner_LocalAMG_setStrongConnections(SparseMatrix_ptr A, dim_t *degree_S, index_t *S, const double theta, const double tau)
Definition: LocalAMG.cpp:366
void Preconditioner_AMG_solve(SystemMatrix_ptr A, Preconditioner_AMG *amg, double *x, double *b)
Definition: AMG.cpp:306
void Preconditioner_LocalSmoother_Sweep_colored(SparseMatrix_ptr A, Preconditioner_LocalSmoother *gs, double *x)
Definition: Smoother.cpp:340
dim_t pre_sweeps
Definition: Preconditioner.h:197
double * x_C
solution of coarse level system
Definition: Preconditioner.h:147
index_t Preconditioner_LocalAMG_getMaxLevel(const Preconditioner_LocalAMG *in)
Definition: LocalAMG.cpp:53
Definition: BOOMERAMG.h:44
Preconditioner_LocalAMG * localamg
Definition: Preconditioner.h:234
void Solver_ILU_free(Solver_ILU *in)
Definition: ILU.cpp:35
Preconditioner * Preconditioner_alloc(SystemMatrix_ptr A, Options *options)
Definition: Preconditioner.cpp:47
dim_t Preconditioner_AMG_getNumCoarseUnknowns(const Preconditioner_AMG *in)
Definition: AMG.cpp:73
index_t * pivot
Definition: Preconditioner.h:71
void Preconditioner_AMG_Root_solve(SystemMatrix_ptr A, Preconditioner_AMG_Root *prec, double *x, double *b)
Definition: AMG_Root.cpp:118
double * x_C
Definition: Preconditioner.h:201
dim_t post_sweeps
Definition: Preconditioner.h:134
Preconditioner_Smoother * jacobi
Jacobi preconditioner.
Definition: Preconditioner.h:49
void Preconditioner_LocalAMG_setClassicProlongation(SparseMatrix_ptr P_p, SparseMatrix_ptr A_p, const index_t *offset_S, const dim_t *degree_S, const index_t *S, const index_t *counter_C)
Definition: LocalAMG_Prolongation.cpp:369
void Preconditioner_AMG_Root_free(Preconditioner_AMG_Root *in)
Definition: AMG_Root.cpp:34
Preconditioner_AMG_Root * amg
AMG preconditioner.
Definition: Preconditioner.h:53
void Preconditioner_LocalAMG_setStrongConnections_Block(SparseMatrix_ptr A, dim_t *degree_S, index_t *S, double theta, double tau)
Definition: LocalAMG.cpp:414
double * b_F
Definition: Preconditioner.h:266
void Preconditioner_AMG_setStrongConnections_Block(SystemMatrix_ptr A, dim_t *degree_S, index_t *offset_S, index_t *S, double theta, double tau)
Definition: AMG.cpp:476
void Preconditioner_LocalSmoother_Sweep(SparseMatrix_ptr A, Preconditioner_LocalSmoother *gs, double *x)
Definition: Smoother.cpp:210
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:39
bool is_local
Definition: Preconditioner.h:77
void Preconditioner_AMG_CIJPCoarsening(dim_t n, dim_t my_n, AMGBlockSelect *split_marker, const dim_t *degree_S, const index_t *offset_S, const index_t *S, const dim_t *degree_ST, const index_t *offset_ST, const index_t *ST, Connector_ptr col_connector, const_Distribution_ptr col_dist)
Definition: AMG.cpp:659
double * r
buffer for residual
Definition: Preconditioner.h:145
Definition: Preconditioner.h:119
Preconditioner_LocalSmoother * Preconditioner_LocalSmoother_alloc(SparseMatrix_ptr A, bool jacobi, bool verbose)
Definition: Smoother.cpp:69
void Preconditioner_LocalAMG_enforceFFConnectivity(dim_t n, const index_t *offset_S, const dim_t *degree_S, const index_t *S, AMGBlockSelect *split_marker)
ensures that two F nodes are connected via a C node
Definition: LocalAMG.cpp:695
dim_t pre_sweeps
Definition: Preconditioner.h:135
dim_t level
Definition: Preconditioner.h:190
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:170
boost::shared_ptr< SparseMatrix > SparseMatrix_ptr
Definition: SparseMatrix.h:35
void Preconditioner_LocalAMG_setDirectProlongation_Block(SparseMatrix_ptr P_p, const_SparseMatrix_ptr A_p, const index_t *counter_C)
Definition: LocalAMG_Prolongation.cpp:241
boost::shared_ptr< Preconditioner > Preconditioner_ptr
Definition: Preconditioner.h:34
struct Preconditioner_LocalAMG * AMG_C
Definition: Preconditioner.h:203
index_t * mask_F
Definition: Preconditioner.h:263
void Solver_solveRILU(Solver_RILU *rilu, double *x, double *b)
Definition: RILU.cpp:306
Solver_RILU * rilu
RILU preconditioner.
Definition: Preconditioner.h:57
void Preconditioner_LocalSmoother_Sweep_sequential(SparseMatrix_ptr A, Preconditioner_LocalSmoother *gs, double *x)
inplace Gauss-Seidel sweep in sequential mode
Definition: Smoother.cpp:226
SparseMatrix_ptr R
Definition: Preconditioner.h:193
boost::shared_ptr< SystemMatrix > SystemMatrix_ptr
Definition: SystemMatrix.h:38
index_t reordering
Definition: Preconditioner.h:198
Solver_ILU * Solver_getILU(SparseMatrix_ptr A, bool verbose)
constructs the incomplete block factorization
Definition: ILU.cpp:44
double Preconditioner_AMG_getCoarseLevelSparsity(const Preconditioner_AMG *in)
Definition: AMG.cpp:62
Preconditioner_Smoother * gs
Gauss-Seidel preconditioner.
Definition: Preconditioner.h:51
Preconditioner_AMG_Root * Preconditioner_AMG_Root_alloc(SystemMatrix_ptr A, Options *options)
Definition: AMG_Root.cpp:45
dim_t Preconditioner_LocalAMG_getNumCoarseUnknowns(const Preconditioner_LocalAMG *in)
Definition: LocalAMG.cpp:72
void Preconditioner_LocalAMG_setClassicProlongation_Block(SparseMatrix_ptr P_p, SparseMatrix_ptr A_p, const index_t *offset_S, const dim_t *degree_S, const index_t *S, const index_t *counter_C)
Definition: LocalAMG_Prolongation.cpp:465
dim_t n_block
Definition: Preconditioner.h:254
Preconditioner_Smoother * Preconditioner_Smoother_alloc(SystemMatrix_ptr A, bool jacobi, bool is_local, bool verbose)
constructs the symmetric Gauss-Seidel preconditioner
Definition: Smoother.cpp:54
void Preconditioner_LocalSmoother_Sweep_tiled(SparseMatrix_ptr A, Preconditioner_LocalSmoother *gs, double *x)
SparseMatrix_ptr A_CF
Definition: Preconditioner.h:260
Local AMG preconditioner.
Definition: Preconditioner.h:188
dim_t refinements
Definition: Preconditioner.h:199
ILU preconditioner.
Definition: Preconditioner.h:245
dim_t refinements
number of refinements in direct solver (typically =0)
Definition: Preconditioner.h:143
double * buffer
Definition: Preconditioner.h:70
Preconditioner_LocalSmoother * localSmoother
Definition: Preconditioner.h:76
Preconditioner_Smoother * Smoother
Definition: Preconditioner.h:133
void Preconditioner_free(Preconditioner *in)
Definition: Preconditioner.cpp:35
Definition: Preconditioner.h:118
void Preconditioner_AMG_mergeSolve(Preconditioner_AMG *amg)
Definition: Preconditioner.h:44
SystemMatrix_ptr R
restriction n_C x n
Definition: Preconditioner.h:131
void Solver_solveILU(SparseMatrix_ptr A, Solver_ILU *ilu, double *x, const double *b)
Definition: ILU.cpp:321
void Solver_RILU_free(Solver_RILU *in)
Definition: RILU.cpp:35
void Preconditioner_AMG_setClassicProlongation(SystemMatrix_ptr P, SystemMatrix_ptr A, const index_t *offset_S, const dim_t *degree_S, const index_t *S, const index_t *counter_C)
Definition: AMG_Prolongation.cpp:699
void Preconditioner_AMG_setDirectProlongation_Block(SystemMatrix_ptr P, SystemMatrix_ptr A, const index_t *offset_S, const dim_t *degree_S, const index_t *S, const index_t *counter_C)
Definition: AMG_Prolongation.cpp:504
int err_t
Definition: types.h:27
Preconditioner_LocalSmoother * Smoother
Definition: Preconditioner.h:195
RILU preconditioner.
Definition: Preconditioner.h:251
index_t * A_FF_pivot
Definition: Preconditioner.h:258
Definition: Preconditioner.h:74
dim_t level
Definition: Preconditioner.h:125
dim_t n
Definition: Preconditioner.h:253
dim_t post_sweeps
Definition: Preconditioner.h:196
void Preconditioner_AMG_setClassicProlongation_Block(SystemMatrix_ptr P, SystemMatrix_ptr A, const index_t *offset_S, const dim_t *degree_S, const index_t *S, const index_t *counter_C)
Definition: AMG_Prolongation.cpp:929
Preconditioner_LocalAMG * Preconditioner_LocalAMG_alloc(SparseMatrix_ptr A_p, dim_t level, Options *options)
Definition: LocalAMG.cpp:89
SystemMatrix_ptr P
prolongation n x n_C
Definition: Preconditioner.h:129
Definition: MergedSolver.h:35
index_t reordering
applied reordering in direct solver
Definition: Preconditioner.h:141
int index_t
Definition: types.h:25
Local preconditioner.
Definition: Preconditioner.h:123
void Preconditioner_AMG_setStrongConnections(SystemMatrix_ptr A, dim_t *degree_S, index_t *offset_S, index_t *S, double theta, double tau)
Definition: AMG.cpp:360
bool verbose
used in direct solver
Definition: Preconditioner.h:139
MergedSolver * merged_solver
used on the coarsest level
Definition: Preconditioner.h:151
index_t * rows_in_F
Definition: Preconditioner.h:261
void Preconditioner_LocalAMG_free(Preconditioner_LocalAMG *in)
Definition: LocalAMG.cpp:41
void Preconditioner_solve(Preconditioner *prec, SystemMatrix_ptr A, double *x, double *b)
Definition: Preconditioner.cpp:127
double * b_C
right hand side of coarse level system
Definition: Preconditioner.h:149
boost::shared_ptr< const Distribution > const_Distribution_ptr
Definition: Distribution.h:38
SparseMatrix_ptr A_FC
Definition: Preconditioner.h:259
boost::shared_ptr< Connector > Connector_ptr
Definition: Coupler.h:35
void Preconditioner_AMG_setDirectProlongation(SystemMatrix_ptr P, SystemMatrix_ptr A, const index_t *offset_S, const dim_t *degree_S, const index_t *S, const index_t *counter_C)
Definition: AMG_Prolongation.cpp:367
boost::shared_ptr< const Preconditioner > const_Preconditioner_ptr
Definition: Preconditioner.h:36
SparseMatrix_ptr A_C
Definition: Preconditioner.h:191
dim_t sweeps
Definition: Preconditioner.h:47
double * b_C
Definition: Preconditioner.h:268
double * x_F
Definition: Preconditioner.h:265
SystemMatrix_ptr Preconditioner_AMG_getProlongation(SystemMatrix_ptr A_p, const index_t *offset_S, const dim_t *degree_S, const index_t *S, const dim_t n_C, index_t *counter_C, const index_t interpolation_method)
Definition: AMG_Prolongation.cpp:56
void Preconditioner_LocalAMG_setDirectProlongation(SparseMatrix_ptr P_p, const_SparseMatrix_ptr A_p, const index_t *counter_C)
Definition: LocalAMG_Prolongation.cpp:160
SystemMatrix_ptr Preconditioner_AMG_buildInterpolationOperatorBlock(SystemMatrix_ptr A, SystemMatrix_ptr P, SystemMatrix_ptr R)
Definition: AMG_Interpolation.cpp:1987
dim_t n_C
Definition: Preconditioner.h:256
dim_t options_smoother
used in direct solver
Definition: Preconditioner.h:137
Definition: Preconditioner.h:66
SystemMatrix_ptr Preconditioner_AMG_buildInterpolationOperator(SystemMatrix_ptr A, SystemMatrix_ptr P, SystemMatrix_ptr R)
Definition: AMG_Interpolation.cpp:568
void Preconditioner_AMG_transposeStrongConnections(dim_t n, const dim_t *degree_S, const index_t *offset_S, const index_t *S, const dim_t nT, dim_t *degree_ST, index_t *offset_ST, index_t *ST)
Definition: AMG.cpp:632
int dim_t
Definition: types.h:24
SparseMatrix_ptr Preconditioner_LocalAMG_getProlongation(SparseMatrix_ptr A_p, const index_t *offset_S, const dim_t *degree_S, const index_t *S, dim_t n_C, const index_t *counter_C, index_t interpolation_method)
Definition: LocalAMG_Prolongation.cpp:54
#define S(_J_, _I_)
Definition: ShapeFunctions.cpp:121
index_t * mask_C
Definition: Preconditioner.h:264
dim_t sweeps
Definition: Preconditioner.h:236
dim_t n_F
Definition: Preconditioner.h:255
double * diag
Definition: Preconditioner.h:69
Preconditioner_AMG * Preconditioner_AMG_alloc(SystemMatrix_ptr A, dim_t level, Options *options)
Definition: AMG.cpp:90
double * factors
Definition: Preconditioner.h:247
double * r
Definition: Preconditioner.h:200
void Preconditioner_LocalAMG_RungeStuebenSearch(dim_t n, const index_t *offset_S, const dim_t *degree_S, const index_t *S, AMGBlockSelect *split_marker, bool usePanel)
Definition: LocalAMG.cpp:480
Preconditioner_AMG * amg
Definition: Preconditioner.h:233
void Preconditioner_AMG_free(Preconditioner_AMG *in)
Definition: AMG.cpp:40
Solver_ILU * ilu
ILU preconditioner.
Definition: Preconditioner.h:55
bool Jacobi
Definition: Preconditioner.h:68