CXML

iterative-solvers 


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