17 #ifndef __PASO_PRECONDITIONER_H__ 18 #define __PASO_PRECONDITIONER_H__ 154 double* x,
double* b);
158 double theta,
double tau);
162 double theta,
double tau);
340 #endif // __PASO_PRECONDITIONER_H__ Solver_RILU * RILU_of_Schur
Definition: Preconditioner.h:323
bool is_local
Definition: Preconditioner.h:284
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:100
dim_t type
Definition: Preconditioner.h:39
Preconditioner_AMG * AMG_C
Definition: Preconditioner.h:145
Preconditioner_BoomerAMG * boomeramg
Definition: Preconditioner.h:287
SystemMatrix_ptr Preconditioner_AMG_getRestriction(SystemMatrix_ptr P)
Definition: AMG_Restriction.cpp:47
double * inv_A_FF
Definition: Preconditioner.h:311
SparseMatrix_ptr P
Definition: Preconditioner.h:223
void Preconditioner_LocalSmoother_free(Preconditioner_LocalSmoother *in)
Definition: Smoother.cpp:42
AMGBlockSelect
Definition: Preconditioner.h:108
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:308
double Preconditioner_LocalAMG_getCoarseLevelSparsity(const Preconditioner_LocalAMG *in)
Definition: LocalAMG.cpp:63
int post_sweeps
Definition: Preconditioner.h:227
Definition: Preconditioner.h:110
SystemMatrix_ptr A_C
coarse level matrix
Definition: Preconditioner.h:120
index_t * rows_in_C
Definition: Preconditioner.h:316
Preconditioner_Smoother * amgsubstitute
Definition: Preconditioner.h:289
double * b_C
Definition: Preconditioner.h:233
Definition: Preconditioner.h:282
SparseMatrix_ptr Preconditioner_AMG_mergeSystemMatrix(SystemMatrix_ptr A)
double * x_C
Definition: Preconditioner.h:321
void Preconditioner_LocalAMG_setStrongConnections(SparseMatrix_ptr A, dim_t *degree_S, index_t *S, const double theta, const double tau)
Definition: LocalAMG.cpp:375
void Preconditioner_AMG_solve(SystemMatrix_ptr A, Preconditioner_AMG *amg, double *x, double *b)
Definition: AMG.cpp:321
void Preconditioner_LocalSmoother_Sweep_colored(SparseMatrix_ptr A, Preconditioner_LocalSmoother *gs, double *x)
Definition: Smoother.cpp:338
double * x_C
solution of coarse level system
Definition: Preconditioner.h:140
Definition: BOOMERAMG.h:44
Preconditioner_LocalAMG * localamg
Definition: Preconditioner.h:286
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:99
index_t * pivot
Definition: Preconditioner.h:64
void Preconditioner_AMG_Root_solve(SystemMatrix_ptr A, Preconditioner_AMG_Root *prec, double *x, double *b)
Definition: AMG_Root.cpp:119
double * x_C
Definition: Preconditioner.h:232
Preconditioner_Smoother * jacobi
Jacobi preconditioner.
Definition: Preconditioner.h:42
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:355
void Preconditioner_AMG_Root_free(Preconditioner_AMG_Root *in)
Definition: AMG_Root.cpp:37
Preconditioner_AMG_Root * amg
AMG preconditioner.
Definition: Preconditioner.h:46
void Preconditioner_LocalAMG_setStrongConnections_Block(SparseMatrix_ptr A, dim_t *degree_S, index_t *S, double theta, double tau)
Definition: LocalAMG.cpp:423
double * b_F
Definition: Preconditioner.h:320
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:494
void Preconditioner_LocalSmoother_Sweep(SparseMatrix_ptr A, Preconditioner_LocalSmoother *gs, double *x)
Definition: Smoother.cpp:201
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:28
bool is_local
Definition: Preconditioner.h:70
int refinements
Definition: Preconditioner.h:230
Preconditioner_LocalAMG * Preconditioner_LocalAMG_alloc(SparseMatrix_ptr A_p, int level, Options *options)
Definition: LocalAMG.cpp:92
double * r
buffer for residual
Definition: Preconditioner.h:138
Definition: Preconditioner.h:112
Preconditioner_LocalSmoother * Preconditioner_LocalSmoother_alloc(SparseMatrix_ptr A, bool jacobi, bool verbose)
Definition: Smoother.cpp:64
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:702
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:127
int pre_sweeps
Definition: Preconditioner.h:228
int post_sweeps
Definition: Preconditioner.h:127
dim_t level
Definition: Preconditioner.h:221
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:161
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:227
boost::shared_ptr< Preconditioner > Preconditioner_ptr
Definition: Preconditioner.h:27
struct Preconditioner_LocalAMG * AMG_C
Definition: Preconditioner.h:234
index_t * mask_F
Definition: Preconditioner.h:317
void Solver_solveRILU(Solver_RILU *rilu, double *x, double *b)
Definition: RILU.cpp:289
Solver_RILU * rilu
RILU preconditioner.
Definition: Preconditioner.h:50
void Preconditioner_LocalSmoother_Sweep_sequential(SparseMatrix_ptr A, Preconditioner_LocalSmoother *gs, double *x)
inplace Gauss-Seidel sweep in sequential mode
Definition: Smoother.cpp:221
SparseMatrix_ptr R
Definition: Preconditioner.h:224
boost::shared_ptr< SystemMatrix > SystemMatrix_ptr
Definition: SystemMatrix.h:40
index_t reordering
Definition: Preconditioner.h:229
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:87
Preconditioner_Smoother * gs
Gauss-Seidel preconditioner.
Definition: Preconditioner.h:44
Preconditioner_AMG_Root * Preconditioner_AMG_Root_alloc(SystemMatrix_ptr A, Options *options)
Definition: AMG_Root.cpp:48
dim_t Preconditioner_LocalAMG_getNumCoarseUnknowns(const Preconditioner_LocalAMG *in)
Definition: LocalAMG.cpp:75
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:451
dim_t n_block
Definition: Preconditioner.h:308
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)
int index_t
type for array/matrix indices used both globally and on each rank
Definition: DataTypes.h:59
SparseMatrix_ptr A_CF
Definition: Preconditioner.h:314
Local AMG preconditioner.
Definition: Preconditioner.h:219
ILU preconditioner.
Definition: Preconditioner.h:299
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, const_Connector_ptr col_connector, escript::const_Distribution_ptr col_dist)
Definition: AMG.cpp:677
double * buffer
Definition: Preconditioner.h:63
Preconditioner_LocalSmoother * localSmoother
Definition: Preconditioner.h:69
Preconditioner_Smoother * Smoother
Definition: Preconditioner.h:126
int refinements
number of refinements in direct solver (typically =0)
Definition: Preconditioner.h:136
void Preconditioner_free(Preconditioner *in)
Definition: Preconditioner.cpp:35
Definition: Preconditioner.h:111
void Preconditioner_AMG_mergeSolve(Preconditioner_AMG *amg)
Preconditioner_AMG * Preconditioner_AMG_alloc(SystemMatrix_ptr A, int level, Options *options)
Definition: AMG.cpp:116
Definition: Preconditioner.h:37
int Preconditioner_LocalAMG_getMaxLevel(const Preconditioner_LocalAMG *in)
Definition: LocalAMG.cpp:55
SystemMatrix_ptr R
restriction n_C x n
Definition: Preconditioner.h:124
int pre_sweeps
Definition: Preconditioner.h:128
void Solver_solveILU(SparseMatrix_ptr A, Solver_ILU *ilu, double *x, const double *b)
Definition: ILU.cpp:316
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:664
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:469
Preconditioner_LocalSmoother * Smoother
Definition: Preconditioner.h:226
RILU preconditioner.
Definition: Preconditioner.h:305
index_t * A_FF_pivot
Definition: Preconditioner.h:312
Definition: Preconditioner.h:67
int level
Definition: Preconditioner.h:118
boost::shared_ptr< const Distribution > const_Distribution_ptr
Definition: Distribution.h:26
dim_t n
Definition: Preconditioner.h:307
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:894
int Preconditioner_AMG_getMaxLevel(const Preconditioner_AMG *in)
Definition: AMG.cpp:78
SystemMatrix_ptr P
prolongation n x n_C
Definition: Preconditioner.h:122
Definition: MergedSolver.h:36
index_t reordering
applied reordering in direct solver
Definition: Preconditioner.h:134
Local preconditioner.
Definition: Preconditioner.h:116
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:378
bool verbose
used in direct solver
Definition: Preconditioner.h:132
MergedSolver * merged_solver
used on the coarsest level
Definition: Preconditioner.h:144
index_t * rows_in_F
Definition: Preconditioner.h:315
int sweeps
Definition: Preconditioner.h:288
void Preconditioner_LocalAMG_free(Preconditioner_LocalAMG *in)
Definition: LocalAMG.cpp:43
void Preconditioner_solve(Preconditioner *prec, SystemMatrix_ptr A, double *x, double *b)
Definition: Preconditioner.cpp:120
double * b_C
right hand side of coarse level system
Definition: Preconditioner.h:142
SparseMatrix_ptr A_FC
Definition: Preconditioner.h:313
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:332
boost::shared_ptr< const Preconditioner > const_Preconditioner_ptr
Definition: Preconditioner.h:29
SparseMatrix_ptr A_C
Definition: Preconditioner.h:222
dim_t sweeps
Definition: Preconditioner.h:40
double * b_C
Definition: Preconditioner.h:322
double * x_F
Definition: Preconditioner.h:319
boost::shared_ptr< const Connector > const_Connector_ptr
Definition: Coupler.h:39
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:57
void Preconditioner_LocalAMG_setDirectProlongation(SparseMatrix_ptr P_p, const_SparseMatrix_ptr A_p, const index_t *counter_C)
Definition: LocalAMG_Prolongation.cpp:146
SystemMatrix_ptr Preconditioner_AMG_buildInterpolationOperatorBlock(SystemMatrix_ptr A, SystemMatrix_ptr P, SystemMatrix_ptr R)
Definition: AMG_Interpolation.cpp:1950
dim_t n_C
Definition: Preconditioner.h:310
dim_t options_smoother
used in direct solver
Definition: Preconditioner.h:130
SolverResult
Definition: Paso.h:42
Definition: Preconditioner.h:59
SystemMatrix_ptr Preconditioner_AMG_buildInterpolationOperator(SystemMatrix_ptr A, SystemMatrix_ptr P, SystemMatrix_ptr R)
Definition: AMG_Interpolation.cpp:556
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:650
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:55
#define S(_J_, _I_)
Definition: ShapeFunctions.cpp:121
index_t * mask_C
Definition: Preconditioner.h:318
dim_t n_F
Definition: Preconditioner.h:309
double * diag
Definition: Preconditioner.h:62
index_t dim_t
Definition: DataTypes.h:64
double * factors
Definition: Preconditioner.h:301
double * r
Definition: Preconditioner.h:231
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:489
Preconditioner_AMG * amg
Definition: Preconditioner.h:285
void Preconditioner_AMG_free(Preconditioner_AMG *in)
Definition: AMG.cpp:65
Solver_ILU * ilu
ILU preconditioner.
Definition: Preconditioner.h:48
bool Jacobi
Definition: Preconditioner.h:61