11 Iterative Methods

In this chapter we provide routines for preconditioners and iterative methods. The interfaces for Krylov subspace methods are available in the module psb_krylov_mod.

11.1 psb_krylov — Krylov Methods Driver Routine

This subroutine is a driver that provides a general interface for all the Krylov-Subspace family methods implemented in PSBLAS version 2.

The stopping criterion can take the following values:

1

normwise backward error in the infinity norm; the iteration is stopped when

      -----∥ri∥------
err = (∥A∥∥xi∥+ ∥b∥) < eps

2

Relative residual in the 2-norm; the iteration is stopped when

      ∥ri∥-
err = ∥b∥2 < eps

3

Relative residual reduction in the 2-norm; the iteration is stopped when

      ∥ri∥
err = ∥r0∥2 < eps

The behaviour is controlled by the istop argument (see later). In the above formulae, xi is the tentative solution and ri = b - Axi the corresponding residual at the i-th iteration.

call psb_krylov(method,a,prec,b,x,eps,desc_a,info,& 
    & itmax,iter,err,itrace,irst,istop,cond)

Type:

Synchronous.

On Entry

method

a string that defines the iterative method to be used. Supported values are:

CG:

the Conjugate Gradient method;

CGS:

the Conjugate Gradient Stabilized method;

GCR:

the Generalized Conjugate Residual method;

FCG:

the Flexible Conjugate Gradient method5 ;

BICG:

the Bi-Conjugate Gradient method;

BICGSTAB:

the Bi-Conjugate Gradient Stabilized method;

BICGSTABL:

the Bi-Conjugate Gradient Stabilized method with restarting;

RGMRES:

the Generalized Minimal Residual method with restarting.

a

the local portion of global sparse matrix A.
Scope: local
Type: required
Intent: in.
Specified as: a structured data of type psb_Tspmat_type.

prec

The data structure containing the preconditioner.
Scope: local
Type: required
Intent: in.
Specified as: a structured data of type psb_prec_type.

b

The RHS vector.
Scope: local
Type: required
Intent: in.
Specified as: a rank one array or an object of type psb_T_vect_type.

x

The initial guess.
Scope: local
Type: required
Intent: inout.
Specified as: a rank one array or an object of type psb_T_vect_type.

eps

The stopping tolerance.
Scope: global
Type: required
Intent: in.
Specified as: a real number.

desc_a

contains data structures for communications.
Scope: local
Type: required
Intent: in.
Specified as: a structured data of type psb_desc_type.

itmax

The maximum number of iterations to perform.
Scope: global
Type: optional
Intent: in.
Default: itmax = 1000.
Specified as: an integer variable itmax 1.

itrace

If > 0 print out an informational message about convergence every itrace iterations. If = 0 print a message in case of convergence failure.
Scope: global
Type: optional
Intent: in.
Default: itrace = -1.

irst

An integer specifying the restart parameter.
Scope: global
Type: optional.
Intent: in.
Values: irst > 0. This is employed for the BiCGSTABL or RGMRES methods, otherwise it is ignored.

istop

An integer specifying the stopping criterion.
Scope: global
Type: optional.
Intent: in.
Values: 1: use the normwise backward error, 2: use the scaled 2-norm of the residual, 3: use the residual reduction in the 2-norm. Default: 2.

On Return

x

The computed solution.
Scope: local
Type: required
Intent: inout.
Specified as: a rank one array or an object of type psb_T_vect_type.

iter

The number of iterations performed.
Scope: global
Type: optional
Intent: out.
Returned as: an integer variable.

err

The convergence estimate on exit.
Scope: global
Type: optional
Intent: out.
Returned as: a real number.

cond

An estimate of the condition number of matrix A; only available with the CG method on real data.
Scope: global
Type: optional
Intent: out.
Returned as: a real number. A correct result will be greater than or equal to one; if specified for non-real data, or an error occurred, zero is returned.

info

Error code.
Scope: local
Type: required
Intent: out.
An integer value; 0 means no error has been detected.