CXML
ditsol_ptfqmr
Preconditioned transpose-free quasi-minimal method (Serial
and Parallel Versions)
FORMAT
DITSOL_PTFQMR (matvec, pcondl, pcondr, mstop, a, ia, x, b, n,
ql, iql , qr, iqr, iparam, rparam, iwork, rwork, ierror)
Arguments
DITSOL_PTFQMR has the standard parameter list for an iterative
solver.
Description
The quasi-minimal residual (QMR) method [Freund and Nachtigal 1991] is one
of the algorithms proposed as a remedy for the irregular convergence
behavior of the bi-conjugate gradient and the conjugate graient squared
algorithms. Since these algorithms are not characterized by a minimization
property, the residual norm often oscillates wildly. The QMR algorithm, by
generating iterates that are defined by a quasi-minimization of the
residual norm, results in smooth convergence curves.
CXML includes TFQMR, the transpose-free variant of the QMR method,
implemented without look-ahead [Freund 1993]. The implementation of the
transpose-free quasi-minimal residual method requires the routine MATVEC to
provide operations for job= 0. The routines MATVEC, PCONDL (if used),
PCONDR (if used) and MSTOP (if used) should be declared external in your
calling (sub)program.
An upper bound for the two norm of the residual of the system being solved,
is obtained during the implementation of the TFQMR method at no extra cost.
This is the residual of the system to which the method is applied, which in
the left and split preconditioned case is the preconditioned residual,
inverse(QL) * r.
To obtain the true residual, a non-negligible amount of extra
computation would be required. Hence, for this method, only stopping
criteria 3 and 4 are allowed. In the unpreconditioned case, the
stopping criteria default to 1 and 2, respectively. Thus only istop =
3 and istop = 4 are permitted for both the preconditioned and
unpreconditioned case. Additionally, a user-defined MSTOP is allowed,
but the vectors r and z, corresponding the the real and preconditioned
residuals, respectively, and passed as input parameters to the routine
MSTOP, are undefined.
CXML provides the following four forms of the method:
• Unpreconditioned transpose-free quasi-minimal residual method:
This is the transpose-free quasi-minimal residual method applied to
A * x = b
where A is a general matrix. As no preconditioning is used, both PCONDL
and PCONDR are dummy input parameters.
For the unpreconditioned transpose-free quasi-minimal residual method,
the length of the real work space array, defined by the variable nrwk
(IPARAM(4)), should be at least 7*n, where n is the order of the matrix
A.
The vectors r and z, passed as input arguments to the routine MSTOP, are
not defined.
• Transpose-free quasi-minimal residual method with left preconditioning:
This is the transpose-free quasi-minimal residual method applied to
(inverse(QL) * A )* x = (inverse(QL) * b)
The routine PCONDL, with job= 0 should evaluate
v = inverse(QL) * u
The routine PCONDR is not used and is therefore a dummy input parameter.
For the transpose-free quasi-minimal residual method, with left
preconditioning, the length of the real work space array, defined by
the variable nrwk (IPARAM(4)), should be at least 8*n, where n is the
order of the matrix A. This does not include the memory requirements of
the preconditioner.
The vectors r and z, passed as input arguments to the routine MSTOP, are
not defined.
• Transpose-free quasi-minimal residual method with right preconditioning:
This is the transpose-free quasi-minimal residual method applied to
( A * inverse(QR)) * y = b
where
y = QR * x
The routine PCONDR, with job= 0 should evaluate
v = inverse(QR) * u
The routine PCONDL is not used and is therefore a dummy input parameter.
For the transpose-free quasi-minimal residual method, with right
preconditioning, the length of the real work space array, defined by
the variable nrwk (IPARAM(4)), should be at least 8*n, where n is the
order of the matrix A. This does not include the memory requirements
of the preconditioner.
The vectors r and z, passed as input arguments to the routine MSTOP,
are not defined.
• Transpose-free quasi-minimal residual method with split preconditioning:
This is the transpose-free quasi-minimal residual method applied to
(inverse(QL) * A * inverse(QR)) * y = (inverse(QL) * b)
where
y = QR * x
The routine PCONDL, with job= 0 should evaluate
v = inverse(QL) * u
and the routine PCONDR, with job= 0 should evaluate
v = inverse(QR) * u
For the transpose-free quasi-minimal residual method, with split
preconditioning, the length of the real work space array, defined by
the variable nrwk (IPARAM(4)), should be at least 9*n, where n is the
order of the matrix A. This does not include the memory requirements of
the preconditioner.
The vectors r and z, passed as input arguments to the routine MSTOP,
are not defined.
This routine is available in both serial and parallel versions. The routine
names and parameter list are identical for both versions. For information
about linking to the serial or to the parallel library, refer to the CXML
Reference Manual.
CXML Home Page Index of CXML Routines