Solver.h File Reference

#include "SystemMatrix.h"
#include "performance.h"
#include "Functions.h"

Go to the source code of this file.

Classes

struct  Paso_Solver_Jacobi
struct  Paso_Solver_ILU
struct  Paso_Solver_GS
struct  Paso_Solver_RILU
struct  Paso_Solver_AMG
struct  Paso_Solver_Preconditioner

Defines

#define PASO_TRACE
#define SOLVER_NO_ERROR   0
#define SOLVER_MAXITER_REACHED   1
#define SOLVER_INPUT_ERROR   -1
#define SOLVER_MEMORY_ERROR   -9
#define SOLVER_BREAKDOWN   -10
#define SOLVER_NEGATIVE_NORM_ERROR   -11
#define TOLERANCE_FOR_SCALARS   (double)(0.)
#define PASO_ONE   (double)(1.0)
#define PASO_ZERO   (double)(0.0)

Typedefs

typedef struct Paso_Solver_ILU Paso_Solver_ILU
typedef struct Paso_Solver_GS Paso_Solver_GS
typedef struct Paso_Solver_RILU Paso_Solver_RILU
typedef struct Paso_Solver_AMG Paso_Solver_AMG

Functions

void Paso_Solver (Paso_SystemMatrix *, double *, double *, Paso_Options *, Paso_Performance *pp)
void Paso_Solver_free (Paso_SystemMatrix *)
err_t Paso_Solver_BiCGStab (Paso_SystemMatrix *A, double *B, double *X, dim_t *iter, double *tolerance, Paso_Performance *pp)
err_t Paso_Solver_PCG (Paso_SystemMatrix *A, double *B, double *X, dim_t *iter, double *tolerance, Paso_Performance *pp)
err_t Paso_Solver_TFQMR (Paso_SystemMatrix *A, double *B, double *X, dim_t *iter, double *tolerance, Paso_Performance *pp)
err_t Paso_Solver_MINRES (Paso_SystemMatrix *A, double *B, double *X, dim_t *iter, double *tolerance, Paso_Performance *pp)
err_t Paso_Solver_GMRES (Paso_SystemMatrix *A, double *r, double *x, dim_t *num_iter, double *tolerance, dim_t length_of_recursion, dim_t restart, Paso_Performance *pp)
void Paso_Preconditioner_free (Paso_Solver_Preconditioner *)
void Paso_Solver_setPreconditioner (Paso_SystemMatrix *A, Paso_Options *options)
void Paso_Solver_solvePreconditioner (Paso_SystemMatrix *A, double *, double *)
void Paso_Solver_applyBlockDiagonalMatrix (dim_t n_block, dim_t n, double *D, index_t *pivot, double *x, double *b)
void Paso_Solver_ILU_free (Paso_Solver_ILU *in)
Paso_Solver_ILUPaso_Solver_getILU (Paso_SparseMatrix *A_p, bool_t verbose)
void Paso_Solver_solveILU (Paso_Solver_ILU *ilu, double *x, double *b)
void Paso_Solver_GS_free (Paso_Solver_GS *in)
Paso_Solver_GSPaso_Solver_getGS (Paso_SparseMatrix *A_p, bool_t verbose)
void Paso_Solver_solveGS (Paso_Solver_GS *gs, double *x, double *b)
void Paso_Solver_RILU_free (Paso_Solver_RILU *in)
Paso_Solver_RILUPaso_Solver_getRILU (Paso_SparseMatrix *A_p, bool_t verbose)
void Paso_Solver_solveRILU (Paso_Solver_RILU *rilu, double *x, double *b)
void Paso_Solver_AMG_free (Paso_Solver_AMG *in)
Paso_Solver_AMGPaso_Solver_getAMG (Paso_SparseMatrix *A_p, dim_t level, Paso_Options *options)
void Paso_Solver_solveAMG (Paso_Solver_AMG *amg, double *x, double *b)
void Paso_Solver_updateIncompleteSchurComplement (Paso_SparseMatrix *A_CC, Paso_SparseMatrix *A_CF, double *invA_FF, index_t *A_FF_pivot, Paso_SparseMatrix *A_FC)
Paso_Solver_JacobiPaso_Solver_getJacobi (Paso_SparseMatrix *A_p)
void Paso_Solver_solveJacobi (Paso_Solver_Jacobi *prec, double *x, double *b)
void Paso_Solver_Jacobi_free (Paso_Solver_Jacobi *in)
err_t Paso_Solver_GMRES2 (Paso_Function *F, const double *f0, const double *x0, double *x, dim_t *iter, double *tolerance, Paso_Performance *pp)
err_t Paso_Solver_NewtonGMRES (Paso_Function *F, double *x, Paso_Options *options, Paso_Performance *pp)
Paso_FunctionPaso_Function_LinearSystem_alloc (Paso_SystemMatrix *A, double *b, Paso_Options *options)
err_t Paso_Function_LinearSystem_call (Paso_Function *F, double *value, const double *arg, Paso_Performance *pp)
void Paso_Function_LinearSystem_free (Paso_Function *F)
err_t Paso_Function_LinearSystem_setInitialGuess (Paso_SystemMatrix *A, double *x, Paso_Performance *pp)


Define Documentation

#define PASO_ONE   (double)(1.0)

#define PASO_TRACE

#define PASO_ZERO   (double)(0.0)

#define SOLVER_BREAKDOWN   -10

#define SOLVER_INPUT_ERROR   -1

#define SOLVER_MAXITER_REACHED   1

#define SOLVER_MEMORY_ERROR   -9

#define SOLVER_NEGATIVE_NORM_ERROR   -11

Referenced by Paso_Solver_MINRES().

#define SOLVER_NO_ERROR   0

#define TOLERANCE_FOR_SCALARS   (double)(0.)


Typedef Documentation


Function Documentation

Paso_Function* Paso_Function_LinearSystem_alloc ( Paso_SystemMatrix A,
double *  b,
Paso_Options options 
)

err_t Paso_Function_LinearSystem_call ( Paso_Function F,
double *  value,
const double *  arg,
Paso_Performance pp 
)

void Paso_Function_LinearSystem_free ( Paso_Function F  ) 

err_t Paso_Function_LinearSystem_setInitialGuess ( Paso_SystemMatrix A,
double *  x,
Paso_Performance pp 
)

void Paso_Preconditioner_free ( Paso_Solver_Preconditioner  ) 

void Paso_Solver ( Paso_SystemMatrix ,
double *  ,
double *  ,
Paso_Options ,
Paso_Performance pp 
)

References ABS, Paso_SystemMatrix::block_size, blocktimer_increment(), blocktimer_time(), Paso_SystemMatrix::col_block_size, Paso_MPIInfo::comm, Paso_Options::converged, DBLE, DIVERGED, EPSILON, FALSE, Paso_Options::iter_max, MATRIX_FORMAT_CSC, MATRIX_FORMAT_OFFSET1, MATRIX_FORMAT_SYM, MAX, MEMFREE, Paso_Options::method, MIN, MPI_DOUBLE, Paso_SystemMatrix::mpi_info, Paso_Options::net_time, NO_ERROR, Paso_Options::num_inner_iter, Paso_Options::num_iter, Paso_Options::num_level, PASO_AMG, PASO_BICGSTAB, Paso_checkPtr(), Paso_Function_LinearSystem_alloc(), Paso_Function_LinearSystem_free(), PASO_GMRES, PASO_MINRES, Paso_noError(), PASO_NONLINEAR_GMRES, Paso_Options_getSolver(), PASO_PASO, PASO_PCG, PASO_PRES20, Paso_resetError(), Paso_setError(), Paso_Solver_BiCGStab(), Paso_Solver_GMRES(), Paso_Solver_MINRES(), Paso_Solver_NewtonGMRES(), Paso_Solver_PCG(), Paso_Solver_setPreconditioner(), Paso_Solver_solvePreconditioner(), Paso_Solver_TFQMR(), Paso_SystemMatrix_borrowNormalization(), Paso_SystemMatrix_getGlobalNumCols(), Paso_SystemMatrix_getGlobalNumRows(), Paso_SystemMatrix_getTotalNumCols(), Paso_SystemMatrix_getTotalNumRows(), Paso_SystemMatrix_MatrixVector_CSR_OFFSET0(), PASO_TFQMR, Paso_timer(), PERFORMANCE_ALL, PERFORMANCE_PRECONDITIONER_INIT, Performance_startMonitor(), Performance_stopMonitor(), Paso_Options::preconditioner, Paso_Options::residual_norm, Paso_Options::restart, Paso_SystemMatrix::row_block_size, Paso_Options::set_up_time, SOLVER_BREAKDOWN, SOLVER_INPUT_ERROR, SOLVER_MAXITER_REACHED, Paso_Options::symmetric, SYSTEM_ERROR, Paso_Options::time, TMPMEMALLOC, Paso_Options::tolerance, TRUE, Paso_Options::truncation, Paso_SystemMatrix::type, TYPE_ERROR, VALUE_ERROR, Paso_Options::verbose, and ZERO_DIVISION_ERROR.

Referenced by Paso_solve().

void Paso_Solver_AMG_free ( Paso_Solver_AMG in  ) 

void Paso_Solver_applyBlockDiagonalMatrix ( dim_t  n_block,
dim_t  n,
double *  D,
index_t pivot,
double *  x,
double *  b 
)

err_t Paso_Solver_BiCGStab ( Paso_SystemMatrix A,
double *  B,
double *  X,
dim_t iter,
double *  tolerance,
Paso_Performance pp 
)

void Paso_Solver_free ( Paso_SystemMatrix  ) 

Paso_Solver_AMG* Paso_Solver_getAMG ( Paso_SparseMatrix A_p,
dim_t  level,
Paso_Options options 
)

References Paso_Solver_AMG::A, Paso_Solver_AMG::A_CF, Paso_Solver_AMG::A_FC, Paso_Solver_AMG::A_FF_pivot, Paso_Solver_AMG::AMG_of_Schur, Paso_Solver_AMG::b_C, Paso_Solver_AMG::b_F, Paso_Options::coarsening_method, Paso_Options::coarsening_threshold, Paso_Solver_AMG::coarsest_level, Paso_SparseMatrix::col_block_size, FALSE, Paso_Solver_AMG::GS, Paso_Pattern::index, Paso_Solver_AMG::inv_A_FF, Paso_Solver_AMG::level, Paso_Solver_AMG::mask_C, Paso_Solver_AMG::mask_F, MEMALLOC, Paso_Solver_AMG::n, Paso_Solver_AMG::n_block, Paso_Solver_AMG::n_C, Paso_Solver_AMG::n_F, Paso_SparseMatrix::numRows, PASO_AGGREGATION_COARSENING, Paso_checkPtr(), Paso_comparIndex(), Paso_noError(), Paso_Pattern_Aggregiation(), Paso_Pattern_binop(), Paso_Pattern_coup(), Paso_Pattern_free(), Paso_Pattern_multiply(), Paso_Pattern_RS(), PASO_RUGE_STUEBEN_COARSENING, Paso_setError(), Paso_Solver_AMG_free(), Paso_Solver_getAMG(), Paso_Solver_getJacobi(), Paso_Solver_updateIncompleteSchurComplement(), Paso_SparseMatrix_alloc(), Paso_SparseMatrix_free(), Paso_SparseMatrix_getReference(), Paso_SparseMatrix_getSubmatrix(), Paso_SparseMatrix_saveMM(), Paso_Util_cumsum(), PASO_YAIR_SHAPIRA_COARSENING, Paso_SparseMatrix::pattern, PATTERN_FORMAT_DEFAULT, Paso_Pattern::ptr, Paso_SparseMatrix::row_block_size, Paso_Solver_AMG::rows_in_C, Paso_Solver_AMG::rows_in_F, S, Paso_Solver_AMG::solver, TMPMEMALLOC, TMPMEMFREE, TRUE, Paso_SparseMatrix::type, TYPE_ERROR, Paso_SparseMatrix::val, Paso_Options::verbose, Paso_Solver_AMG::x_C, and Paso_Solver_AMG::x_F.

Referenced by Paso_Solver_getAMG(), and Paso_Solver_setPreconditioner().

Paso_Solver_GS* Paso_Solver_getGS ( Paso_SparseMatrix A_p,
bool_t  verbose 
)

Paso_Solver_ILU* Paso_Solver_getILU ( Paso_SparseMatrix A_p,
bool_t  verbose 
)

Paso_Solver_Jacobi* Paso_Solver_getJacobi ( Paso_SparseMatrix A_p  ) 

Paso_Solver_RILU* Paso_Solver_getRILU ( Paso_SparseMatrix A_p,
bool_t  verbose 
)

err_t Paso_Solver_GMRES ( Paso_SystemMatrix A,
double *  r,
double *  x,
dim_t num_iter,
double *  tolerance,
dim_t  length_of_recursion,
dim_t  restart,
Paso_Performance pp 
)

err_t Paso_Solver_GMRES2 ( Paso_Function F,
const double *  f0,
const double *  x0,
double *  x,
dim_t iter,
double *  tolerance,
Paso_Performance pp 
)

void Paso_Solver_GS_free ( Paso_Solver_GS in  ) 

void Paso_Solver_ILU_free ( Paso_Solver_ILU in  ) 

void Paso_Solver_Jacobi_free ( Paso_Solver_Jacobi in  ) 

err_t Paso_Solver_MINRES ( Paso_SystemMatrix A,
double *  B,
double *  X,
dim_t iter,
double *  tolerance,
Paso_Performance pp 
)

err_t Paso_Solver_NewtonGMRES ( Paso_Function F,
double *  x,
Paso_Options options,
Paso_Performance pp 
)

err_t Paso_Solver_PCG ( Paso_SystemMatrix A,
double *  B,
double *  X,
dim_t iter,
double *  tolerance,
Paso_Performance pp 
)

void Paso_Solver_RILU_free ( Paso_Solver_RILU in  ) 

void Paso_Solver_setPreconditioner ( Paso_SystemMatrix A,
Paso_Options options 
)

void Paso_Solver_solveAMG ( Paso_Solver_AMG amg,
double *  x,
double *  b 
)

void Paso_Solver_solveGS ( Paso_Solver_GS gs,
double *  x,
double *  b 
)

void Paso_Solver_solveILU ( Paso_Solver_ILU ilu,
double *  x,
double *  b 
)

void Paso_Solver_solveJacobi ( Paso_Solver_Jacobi prec,
double *  x,
double *  b 
)

void Paso_Solver_solvePreconditioner ( Paso_SystemMatrix A,
double *  ,
double *   
)

void Paso_Solver_solveRILU ( Paso_Solver_RILU rilu,
double *  x,
double *  b 
)

err_t Paso_Solver_TFQMR ( Paso_SystemMatrix A,
double *  B,
double *  X,
dim_t iter,
double *  tolerance,
Paso_Performance pp 
)

void Paso_Solver_updateIncompleteSchurComplement ( Paso_SparseMatrix A_CC,
Paso_SparseMatrix A_CF,
double *  invA_FF,
index_t A_FF_pivot,
Paso_SparseMatrix A_FC 
)


Generated on Mon Aug 10 10:04:44 2009 for ESYS13 by  doxygen 1.5.6