Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ iterative-solvers(3DXML) — Extended Math Library 3.4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

SPARSE-ITERATIVE-SOLVERS(3DXML)  —  Subroutines

Digital

Name

iterative-solvers − A library of sparse linear solvers (iterative)

Description

The sparse iterative solvers are a part of the Digital Extended Math Library (DXML).  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 DXML 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)

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026