CXML
iterative-solvers
A library of sparse linear solvers (iterative)
Description
The sparse iterative solvers are a part of the Compaq Extended Math
Library (CXML). This package includes a set of routines for the iterative
solution of sparse linear systems of equations via preconditioned
conjugate-gradient-like methods. A flexible user interface, based on a
matrix-free formulation of the solver, allows a choice among various
solvers, preconditioners and storage schemes. A driver routine provides a
simple interface to the iterative solvers when standard preconditioners and
storage schemes are used.
Six different iterative methods support various applications of the
preconditioner (given in parenthesis below):
• Preconditioned conjugate gradient method (none, SPD split)
• Preconditioned least squares conjugate gradient method (none, left,
right, split)
• Preconditioned bi-conjugate gradient method (none, left, right, split)
• Preconditioned conjugate gradient squared method (none, left, right,
split)
• Preconditioned generalized minimum residual method (none, left, right,
split)
• Preconditioned transpose-free quasi-minimal residual method (none,
left, right, split)
The matrix can be stored in one of three storage schemes:
• Symmetric diagonal
• Unsymmetric diagonal
• General storage by rows
Three preconditioners are provided for each storage scheme:
• Diagonal
• Polynomial (Neumann)
• Incomplete LU with zero diagonals added
Four stopping criteria are provided for controlling the convergence of the
iterative process.
The interface to the solver allows the option of using a user-defined
storage scheme, preconditioner or stopping criterion. Input parameters
allow a choice of the maximum number of iterations, level of output
provided, degree of polynomial preconditioning, stopping criterion,
tolerance for convergence etc.
The iterative solvers are available in real, double precision only.
Parallel routines
Starting with CXML 3.2, parallel versions of the following iterative solver
routines are included in the parallel library. These routines have the same
name and calling sequence as the serial routines. The performance
improvement obtained on SMP configurations is dependent on the problem size
and sparsity, as well as the system characteristics.
DITSOL_DRIVER
DITSOL_PBCG
DITSOL_PCG
DITSOL_PCGS
DITSOL_PGMRES
DITSOL_PLSCG
DITSOL_PTFQMR
DMATVEC_GENR
DMATVEC_SDIA
DMATVEC_UDIA
DCREATE_DIAG_GENR
DCREATE_DIAG_SDIA
DCREATE_DIAG_UDIA
DAPPLY_DIAG_ALL
DCREATE_POLY_GENR
DCREATE_POLY_SDIA
DCREATE_POLY_UDIA
DAPPLY_POLY_GENR
DAPPLY_POLY_SDIA
DAPPLY_POLY_UDIA
The following routines are provided for the linear system solvers. The
Subprogram Name is the name of the manual page containing documentation on
the subprogram.
Routine Operation
ditsol_defaults
Set the default values in the arrays IPARAM and
RPARAM
ditsol_driver
Driver routine for the iterative solvers
ditsol_pcg
Apply the preconditioned conjugate gradient method
ditsol_plscg
Apply the preconditioned least squares conjugate
gradient method
ditsol_pbcg
Apply the preconditioned bi-conjugate gradient
method
ditsol_pcgs
Apply the preconditioned conjugate gradient
squared method
ditsol_pgmres
Apply the preconditioned generalized minimum
residual method
ditsol_ptfqmr
Apply the preconditioned transpose-free quasi-
minimal residual method
The following routines are provided for the matrix vector product for the
three storage schemes. The Subprogram Name is the name of the manual page
containing documentation on the subprogram.
Routine Operation
dmatvec_sdia
Matrix vector product for the symmetric diagonal
storage scheme
dmatvec_udia
Matrix vector product for the unsymmetric diagonal
storage scheme
dmatvec_genr
Matrix vector product for the general storage by
rows scheme
The following routines are provided for the creation of the three
preconditioners for the three storage schemes. The Subprogram Name is the
name of the manual page containing documentation on the subprogram.
Routine Operation
dcreate_diag_sdia
Create the diagonal preconditioner for the
symmetric diagonal storage scheme
dcreate_diag_udia
Create the diagonal preconditioner for the
unsymmetric diagonal storage scheme
dcreate_diag_genr
Create the diagonal preconditioner for the general
storage by rows scheme
dcreate_poly_sdia
Create the polynomial preconditioner for the
symmetric diagonal storage scheme
dcreate_poly_udia
Create the polynomial preconditioner for the
unsymmetric diagonal storage scheme
dcreate_poly_genr
Create the polynomial preconditioner for the
general storage by rows scheme
dcreate_ilu_sdia
Create the incomplete LU preconditioner for the
symmetric diagonal storage scheme
dcreate_ilu_udia
Create the incomplete LU preconditioner for the
unsymmetric diagonal storage scheme
dcreate_ilu_genr
Create the incomplete LU preconditioner for the
general storage by rows scheme
The following routines are provided for the application of the three
preconditioners for the three storage schemes. The Subprogram Name is the
name of the manual page containing documentation on the subprogram.
Routine Operation
dapply_diag_all
Apply the diagonal preconditioner for all storage
schemes
dapply_poly_sdia
Apply the polynomial preconditioner for the
symmetric diagonal storage scheme
dapply_poly_udia
Apply the polynomial preconditioner for the
unsymmetric diagonal storage scheme
dapply_poly_genr
Apply the polynomial preconditioner for the
general storage by rows scheme
dapply_ilu_sdia
Apply the incomplete LU preconditioner for the
symmetric diagonal storage scheme
dapply_ilu_udia_L
Apply the incomplete LU preconditioner for the
unsymmetric diagonal storage scheme (operates on
the L part)
dapply_ilu_udia_u
Apply the incomplete LU preconditioner for the
unsymmetric diagonal storage scheme (operates on
the U part)
dapply_ilu_genr_l
Apply the incomplete LU preconditioner for the
general storage by rows scheme (operates on the L
part)
dapply_ilu_genr_u
Apply the incomplete LU preconditioner for the
general storage by rows scheme (operates on the U
part)
CXML Home Page Index of CXML Routines