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.  Printing routines provide formatting and
  printing capabilities.  Parallel versions of some routines are also provided.

  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

  Parallel versions of the following iterative solver routines are 
  included in the CXML 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

Serial Routines

  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)



  The following routines are provided for the user to format and print messages.
  The Subprogram Name is the name of the manual page containing documentation 
  on the subprogram.

       Routine              Operation

       cxml_itsol_set_print_routine

                            Passes the address of a user-supplied print routine.

       user_print_routine

                            User-supplied print routine called by iterative
                            solvers to print messages.

       cxml_format_string

                            Formats null-terminated strings returned by
                            iterative solvers.

CXML Home Page

Index of CXML Routines