|
|
|
\section{Iterative Methods}
|
|
|
|
\label{sec:methods}
|
|
|
|
|
|
|
|
In this chapter we provide routines for preconditioners and iterative
|
|
|
|
methods. The interfaces for Krylov subspace methods are available in
|
|
|
|
the module \verb|psb_krylov_mod|.
|
|
|
|
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
%
|
|
|
|
% Krylov Methods driver routine
|
|
|
|
%
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
|
|
|
|
\subroutine{psb\_krylov \label{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 is the normwise backward error, in the infinity
|
|
|
|
norm, i.e. the iteration is stopped when
|
|
|
|
\[ err = \frac{\|r_i\|}{(\|A\|\|x_i\|+\|b\|)} < eps \]
|
|
|
|
or the 2-norm residual reduction
|
|
|
|
\[ err = \frac{\|r_i\|}{\|b\|_2} < eps \]
|
|
|
|
according to the value passed through the istop argument (see
|
|
|
|
later). In the above formulae, $x_i$ is the tentative solution and
|
|
|
|
$r_i=b-Ax_i$ the corresponding residual at the $i$-th iteration.
|
|
|
|
|
|
|
|
|
|
|
|
\syntax{call psb\_krylov}{method,a,prec,b,x,eps,desc\_a,info,itmax,iter,err,itrace,irst,istop}
|
|
|
|
|
|
|
|
\begin{description}
|
|
|
|
\item[\bf On Entry]
|
|
|
|
\item[method] a string that defines the iterative method to be
|
|
|
|
used. Supported values are:
|
|
|
|
\begin{description}
|
|
|
|
\item[CG]: the Conjugate Gradient method;
|
|
|
|
\item[CGS]:the Conjugate Gradient Stabilized method;
|
|
|
|
|
|
|
|
\item[BICG]: the Bi-Conjugate Gradient method;
|
|
|
|
\item[BICGSTAB]: the Bi-Conjugate Gradient Stabilized method;
|
|
|
|
\item[BICGSTABL]: the Bi-Conjugate Gradient Stabilized method with restarting;
|
|
|
|
\item[RGMRES]: the Generalized Minimal Residual method with restarting.
|
|
|
|
\end{description}
|
|
|
|
\item[a] the local portion of global sparse matrix
|
|
|
|
$A$. \\
|
|
|
|
Scope: {\bf local} \\
|
|
|
|
Type: {\bf required}\\
|
|
|
|
Intent: {\bf in}.\\
|
|
|
|
Specified as: a structured data of type \spdata.
|
|
|
|
\item[prec] The data structure containing the preconditioner.\\
|
|
|
|
Scope: {\bf local} \\
|
|
|
|
Type: {\bf required}\\
|
|
|
|
Intent: {\bf in}.\\
|
|
|
|
Specified as: a structured data of type \precdata.
|
|
|
|
\item[b] The RHS vector. \\
|
|
|
|
Scope: {\bf local} \\
|
|
|
|
Type: {\bf required}\\
|
|
|
|
Intent: {\bf in}.\\
|
|
|
|
Specified as: a rank one array.
|
|
|
|
\item[x] The initial guess. \\
|
|
|
|
Scope: {\bf local} \\
|
|
|
|
Type: {\bf required}\\
|
|
|
|
Intent: {\bf inout}.\\
|
|
|
|
Specified as: a rank one array.
|
|
|
|
\item[eps] The stopping tolerance. \\
|
|
|
|
Scope: {\bf global} \\
|
|
|
|
Type: {\bf required}\\
|
|
|
|
Intent: {\bf in}.\\
|
|
|
|
Specified as: a real number.
|
|
|
|
\item[desc\_a] contains data structures for communications.\\
|
|
|
|
Scope: {\bf local} \\
|
|
|
|
Type: {\bf required}\\
|
|
|
|
Intent: {\bf in}.\\
|
|
|
|
Specified as: a structured data of type \descdata.
|
|
|
|
\item[itmax] The maximum number of iterations to perform.\\
|
|
|
|
Scope: {\bf global} \\
|
|
|
|
Type: {\bf optional}\\
|
|
|
|
Intent: {\bf in}.\\
|
|
|
|
Default: $itmax = 1000$.\\
|
|
|
|
Specified as: an integer variable $itmax \ge 1$.
|
|
|
|
\item[itrace] If $>0$ print out an informational message about
|
|
|
|
convergence every $itrace$ iterations.\\
|
|
|
|
Scope: {\bf global} \\
|
|
|
|
Type: {\bf optional}\\
|
|
|
|
Intent: {\bf in}.\\
|
|
|
|
\item[irst] An integer specifying the restart parameter.\\
|
|
|
|
Scope: {\bf global} \\
|
|
|
|
Type: {\bf optional}.\\
|
|
|
|
Intent: {\bf in}.\\
|
|
|
|
Values: $irst>0$. This is employed for the BiCGSTABL or RGMRES
|
|
|
|
methods, otherwise it is ignored.
|
|
|
|
|
|
|
|
\item[istop] An integer specifying the stopping criterion.\\
|
|
|
|
Scope: {\bf global} \\
|
|
|
|
Type: {\bf optional}.\\
|
|
|
|
Intent: {\bf in}.\\
|
|
|
|
Values: 1: use the normwise backward error, 2: use the scaled 2-norm
|
|
|
|
of the residual. Default: 1.
|
|
|
|
\item[\bf On Return]
|
|
|
|
\item[x] The computed solution. \\
|
|
|
|
Scope: {\bf local} \\
|
|
|
|
Type: {\bf required}\\
|
|
|
|
Intent: {\bf inout}.\\
|
|
|
|
Specified as: a rank one array.
|
|
|
|
\item[iter] The number of iterations performed.\\
|
|
|
|
Scope: {\bf global} \\
|
|
|
|
Type: {\bf optional}\\
|
|
|
|
Intent: {\bf out}.\\
|
|
|
|
Returned as: an integer variable.
|
|
|
|
\item[err] The convergence estimate on exit.\\
|
|
|
|
Scope: {\bf global} \\
|
|
|
|
Type: {\bf optional}\\
|
|
|
|
Intent: {\bf out}.\\
|
|
|
|
Returned as: a real number.
|
|
|
|
\item[info] Error code.\\
|
|
|
|
Scope: {\bf local} \\
|
|
|
|
Type: {\bf required} \\
|
|
|
|
Intent: {\bf out}.\\
|
|
|
|
An integer value; 0 means no error has been detected.
|
|
|
|
\end{description}
|
|
|
|
|
|
|
|
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
%% %
|
|
|
|
%% % CG
|
|
|
|
%% %
|
|
|
|
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
|
|
|
|
%% \subroutine{psb\_cg \label{cg}}{CG Iterative Method}
|
|
|
|
|
|
|
|
%% This subroutine implements the CG method with restarting. The
|
|
|
|
%% stopping criterion is the normwise backward error, in the infinity
|
|
|
|
%% norm, i.e. the iteration is stopped when
|
|
|
|
%% \[ \frac{\|r\|}{(\|A\|\|x\|+\|b\|)} < eps \]
|
|
|
|
%% or
|
|
|
|
%% \[ \frac{\|r_i\|}{\|b\|_2} < eps \]
|
|
|
|
%% according to the value passed through the istop argument (see later).
|
|
|
|
|
|
|
|
|
|
|
|
%% \syntax{call psb\_cg}{a,prec,b,x,eps,desc\_a,info,itmax,iter,err,itrace,istop}
|
|
|
|
|
|
|
|
%% \begin{description}
|
|
|
|
%% \item[\bf On Entry]
|
|
|
|
%% \item[a] the local portion of global sparse matrix
|
|
|
|
%% $A$. \\
|
|
|
|
%% Scope: {\bf local} \\
|
|
|
|
%% Type: {\bf required}\\
|
|
|
|
%% Specified as: a structured data of type \spdata.
|
|
|
|
%% \item[prec] The data structure containing the preconditioner.\\
|
|
|
|
%% Scope: {\bf local} \\
|
|
|
|
%% Type: {\bf required}\\
|
|
|
|
%% Specified as: a structured data of type \precdata.
|
|
|
|
%% \item[b] The RHS vector. \\
|
|
|
|
%% Scope: {\bf local} \\
|
|
|
|
%% Type: {\bf required}\\
|
|
|
|
%% Specified as: a rank one array.
|
|
|
|
%% \item[x] The initial guess. \\
|
|
|
|
%% Scope: {\bf local} \\
|
|
|
|
%% Type: {\bf required}\\
|
|
|
|
%% Specified as: a rank one array.
|
|
|
|
%% \item[eps] The stopping tolerance. \\
|
|
|
|
%% Scope: {\bf global} \\
|
|
|
|
%% Type: {\bf required}\\
|
|
|
|
%% Specified as: a real number.
|
|
|
|
%% \item[desc\_a] contains data structures for communications.\\
|
|
|
|
%% Scope: {\bf local} \\
|
|
|
|
%% Type: {\bf required}\\
|
|
|
|
%% Specified as: a structured data of type \descdata.
|
|
|
|
%% \item[itmax] The maximum number of iterations to perform.\\
|
|
|
|
%% Scope: {\bf global} \\
|
|
|
|
%% Type: {\bf optional}\\
|
|
|
|
%% Default: $itmax = 1000$.\\
|
|
|
|
%% Specified as: an integer variable $itmax \ge 1$.
|
|
|
|
%% \item[itrace] If $>0$ print out an informational message about
|
|
|
|
%% convergence every $itrace$ iterations.\\
|
|
|
|
%% Scope: {\bf global} \\
|
|
|
|
%% Type: {\bf optional}\\
|
|
|
|
%% \item[istop] An integer specifying the stopping criterion.\\
|
|
|
|
%% Scope: {\bf global} \\
|
|
|
|
%% Type: {\bf optional}\\
|
|
|
|
|
|
|
|
%% \item[\bf On Return]
|
|
|
|
%% \item[x] The computed solution. \\
|
|
|
|
%% Scope: {\bf local} \\
|
|
|
|
%% Type: {\bf required}\\
|
|
|
|
%% Specified as: a rank one array.
|
|
|
|
%% \item[iter] The number of iterations performed.\\
|
|
|
|
%% Scope: {\bf global} \\
|
|
|
|
%% Type: {\bf optional}\\
|
|
|
|
%% Returned as: an integer variable.
|
|
|
|
%% \item[err] The error estimate on exit.\\
|
|
|
|
%% Scope: {\bf global} \\
|
|
|
|
%% Type: {\bf optional}\\
|
|
|
|
%% Returned as: a real number.
|
|
|
|
%% \item[info] Error code.\\
|
|
|
|
%% Scope: {\bf local} \\
|
|
|
|
%% Type: {\bf required} \\
|
|
|
|
%% An integer value; 0 means no error has been detected.
|
|
|
|
%% \end{description}
|
|
|
|
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
%% %
|
|
|
|
%% % CGS
|
|
|
|
%% %
|
|
|
|
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
|
|
|
|
%% \subroutine{psb\_cgs \label{cgs}}{CGS Iterative Method}
|
|
|
|
|
|
|
|
%% This subroutine implements the CGS method with restarting. The
|
|
|
|
%% stopping criterion is the normwise backward error, in the infinity
|
|
|
|
%% norm, i.e. the iteration is stopped when
|
|
|
|
%% \[ \frac{\|r\|}{(\|A\|\|x\|+\|b\|)} < eps \]
|
|
|
|
%% or
|
|
|
|
%% \[ \frac{\|r_i\|}{\|b\|_2} < eps \]
|
|
|
|
%% according to the value passed through the istop argument (see later).
|
|
|
|
|
|
|
|
|
|
|
|
%% \syntax{call psb\_cgs}{a,prec,b,x,eps,desc\_a,info,itmax,iter,err,itrace,istop}
|
|
|
|
|
|
|
|
%% \begin{description}
|
|
|
|
%% \item[\bf On Entry]
|
|
|
|
%% \item[a] the local portion of global sparse matrix
|
|
|
|
%% $A$. \\
|
|
|
|
%% Scope: {\bf local} \\
|
|
|
|
%% Type: {\bf required}\\
|
|
|
|
%% Specified as: a structured data of type \spdata.
|
|
|
|
%% \item[prec] The data structure containing the preconditioner.\\
|
|
|
|
%% Scope: {\bf local} \\
|
|
|
|
%% Type: {\bf required}\\
|
|
|
|
%% Specified as: a structured data of type \precdata.
|
|
|
|
%% \item[b] The RHS vector. \\
|
|
|
|
%% Scope: {\bf local} \\
|
|
|
|
%% Type: {\bf required}\\
|
|
|
|
%% Specified as: a rank one array.
|
|
|
|
%% \item[x] The initial guess. \\
|
|
|
|
%% Scope: {\bf local} \\
|
|
|
|
%% Type: {\bf required}\\
|
|
|
|
%% Specified as: a rank one array.
|
|
|
|
%% \item[eps] The stopping tolerance. \\
|
|
|
|
%% Scope: {\bf global} \\
|
|
|
|
%% Type: {\bf required}\\
|
|
|
|
%% Specified as: a real number.
|
|
|
|
%% \item[desc\_a] contains data structures for communications.\\
|
|
|
|
%% Scope: {\bf local} \\
|
|
|
|
%% Type: {\bf required}\\
|
|
|
|
%% Specified as: a structured data of type \descdata.
|
|
|
|
%% \item[itmax] The maximum number of iterations to perform.\\
|
|
|
|
%% Scope: {\bf global} \\
|
|
|
|
%% Type: {\bf optional}\\
|
|
|
|
%% Default: $itmax = 1000$.\\
|
|
|
|
%% Specified as: an integer variable $itmax \ge 1$.
|
|
|
|
%% \item[itrace] If $>0$ print out an informational message about
|
|
|
|
%% convergence every $itrace$ iterations.\\
|
|
|
|
%% Scope: {\bf global} \\
|
|
|
|
%% Type: {\bf optional}\\
|
|
|
|
%% \item[istop] An integer specifying the stopping criterion.\\
|
|
|
|
%% Scope: {\bf global} \\
|
|
|
|
%% Type: {\bf optional}\\
|
|
|
|
|
|
|
|
%% \item[\bf On Return]
|
|
|
|
%% \item[x] The computed solution. \\
|
|
|
|
%% Scope: {\bf local} \\
|
|
|
|
%% Type: {\bf required}\\
|
|
|
|
%% Specified as: a rank one array.
|
|
|
|
%% \item[iter] The number of iterations performed.\\
|
|
|
|
%% Scope: {\bf global} \\
|
|
|
|
%% Type: {\bf optional}\\
|
|
|
|
%% Returned as: an integer variable.
|
|
|
|
%% \item[err] The error estimate on exit.\\
|
|
|
|
%% Scope: {\bf global} \\
|
|
|
|
%% Type: {\bf optional}\\
|
|
|
|
%% Returned as: a real number.
|
|
|
|
%% \item[info] Error code.\\
|
|
|
|
%% Scope: {\bf local} \\
|
|
|
|
%% Type: {\bf required} \\
|
|
|
|
%% An integer value; 0 means no error has been detected.
|
|
|
|
%% \end{description}
|
|
|
|
|
|
|
|
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
%% %
|
|
|
|
%% % BiCG
|
|
|
|
%% %
|
|
|
|
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
%% \subroutine{psb\_bicg \label{bicg}}{BiCG Iterative Method}
|
|
|
|
|
|
|
|
%% This subroutine implements the BiCG method with restarting. The
|
|
|
|
%% stopping criterion is the normwise backward error, in the infinity
|
|
|
|
%% norm, i.e. the iteration is stopped when
|
|
|
|
%% \[ \frac{\|r\|}{(\|A\|\|x\|+\|b\|)} < eps \]
|
|
|
|
%% or
|
|
|
|
%% \[ \frac{\|r_i\|}{\|b\|_2} < eps \]
|
|
|
|
%% according to the value passed through the istop argument (see later).
|
|
|
|
|
|
|
|
|
|
|
|
%% \syntax{call psb\_bicg}{a,prec,b,x,eps,desc\_a,info,itmax,iter,err,itrace,istop}
|
|
|
|
|
|
|
|
%% \begin{description}
|
|
|
|
%% \item[\bf On Entry]
|
|
|
|
%% \item[a] the local portion of global sparse matrix
|
|
|
|
%% $A$. \\
|
|
|
|
%% Scope: {\bf local} \\
|
|
|
|
%% Type: {\bf required}\\
|
|
|
|
%% Specified as: a structured data of type \spdata.
|
|
|
|
%% \item[prec] The data structure containing the preconditioner.\\
|
|
|
|
%% Scope: {\bf local} \\
|
|
|
|
%% Type: {\bf required}\\
|
|
|
|
%% Specified as: a structured data of type \precdata.
|
|
|
|
%% \item[b] The RHS vector. \\
|
|
|
|
%% Scope: {\bf local} \\
|
|
|
|
%% Type: {\bf required}\\
|
|
|
|
%% Specified as: a rank one array.
|
|
|
|
%% \item[x] The initial guess. \\
|
|
|
|
%% Scope: {\bf local} \\
|
|
|
|
%% Type: {\bf required}\\
|
|
|
|
%% Specified as: a rank one array.
|
|
|
|
%% \item[eps] The stopping tolerance. \\
|
|
|
|
%% Scope: {\bf global} \\
|
|
|
|
%% Type: {\bf required}\\
|
|
|
|
%% Specified as: a real number.
|
|
|
|
%% \item[desc\_a] contains data structures for communications.\\
|
|
|
|
%% Scope: {\bf local} \\
|
|
|
|
%% Type: {\bf required}\\
|
|
|
|
%% Specified as: a structured data of type \descdata.
|
|
|
|
%% \item[itmax] The maximum number of iterations to perform.\\
|
|
|
|
%% Scope: {\bf global} \\
|
|
|
|
%% Type: {\bf optional}\\
|
|
|
|
%% Default: $itmax = 1000$.\\
|
|
|
|
%% Specified as: an integer variable $itmax \ge 1$.
|
|
|
|
%% \item[itrace] If $>0$ print out an informational message about
|
|
|
|
%% convergence every $itrace$ iterations.\\
|
|
|
|
%% Scope: {\bf global} \\
|
|
|
|
%% Type: {\bf optional}\\
|
|
|
|
%% \item[istop] An integer specifying the stopping criterion.\\
|
|
|
|
%% Scope: {\bf global} \\
|
|
|
|
%% Type: {\bf optional}\\
|
|
|
|
|
|
|
|
%% \item[\bf On Return]
|
|
|
|
%% \item[x] The computed solution. \\
|
|
|
|
%% Scope: {\bf local} \\
|
|
|
|
%% Type: {\bf required}\\
|
|
|
|
%% Specified as: a rank one array.
|
|
|
|
%% \item[iter] The number of iterations performed.\\
|
|
|
|
%% Scope: {\bf global} \\
|
|
|
|
%% Type: {\bf optional}\\
|
|
|
|
%% Returned as: an integer variable.
|
|
|
|
%% \item[err] The error estimate on exit.\\
|
|
|
|
%% Scope: {\bf global} \\
|
|
|
|
%% Type: {\bf optional}\\
|
|
|
|
%% Returned as: a real number.
|
|
|
|
%% \item[info] Error code.\\
|
|
|
|
%% Scope: {\bf local} \\
|
|
|
|
%% Type: {\bf required} \\
|
|
|
|
%% An integer value; 0 means no error has been detected.
|
|
|
|
%% \end{description}
|
|
|
|
|
|
|
|
|
|
|
|
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
%% %
|
|
|
|
%% % BiCGSTAB
|
|
|
|
%% %
|
|
|
|
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
%% \subroutine{psb\_bicgstab \label{bicgstab}}{BiCGSTAB Iterative Method}
|
|
|
|
|
|
|
|
%% This subroutine implements the BiCGSTAB method with restarting. The
|
|
|
|
%% stopping criterion is the normwise backward error, in the infinity
|
|
|
|
%% norm, i.e. the iteration is stopped when
|
|
|
|
%% \[ \frac{\|r\|}{(\|A\|\|x\|+\|b\|)} < eps \]
|
|
|
|
%% or
|
|
|
|
%% \[ \frac{\|r_i\|}{\|b\|_2} < eps \]
|
|
|
|
%% according to the value passed through the istop argument (see later).
|
|
|
|
|
|
|
|
|
|
|
|
%% \syntax{call psb\_bicgstab}{a,prec,b,x,eps,desc\_a,info,itmax,iter,err,itrace,istop}
|
|
|
|
|
|
|
|
%% \begin{description}
|
|
|
|
%% \item[\bf On Entry]
|
|
|
|
%% \item[a] the local portion of global sparse matrix
|
|
|
|
%% $A$. \\
|
|
|
|
%% Scope: {\bf local} \\
|
|
|
|
%% Type: {\bf required}\\
|
|
|
|
%% Specified as: a structured data of type \spdata.
|
|
|
|
%% \item[prec] The data structure containing the preconditioner.\\
|
|
|
|
%% Scope: {\bf local} \\
|
|
|
|
%% Type: {\bf required}\\
|
|
|
|
%% Specified as: a structured data of type \precdata.
|
|
|
|
%% \item[b] The RHS vector. \\
|
|
|
|
%% Scope: {\bf local} \\
|
|
|
|
%% Type: {\bf required}\\
|
|
|
|
%% Specified as: a rank one array.
|
|
|
|
%% \item[x] The initial guess. \\
|
|
|
|
%% Scope: {\bf local} \\
|
|
|
|
%% Type: {\bf required}\\
|
|
|
|
%% Specified as: a rank one array.
|
|
|
|
%% \item[eps] The stopping tolerance. \\
|
|
|
|
%% Scope: {\bf global} \\
|
|
|
|
%% Type: {\bf required}\\
|
|
|
|
%% Specified as: a real number.
|
|
|
|
%% \item[desc\_a] contains data structures for communications.\\
|
|
|
|
%% Scope: {\bf local} \\
|
|
|
|
%% Type: {\bf required}\\
|
|
|
|
%% Specified as: a structured data of type \descdata.
|
|
|
|
%% \item[itmax] The maximum number of iterations to perform.\\
|
|
|
|
%% Scope: {\bf global} \\
|
|
|
|
%% Type: {\bf optional}\\
|
|
|
|
%% Default: $itmax = 1000$.\\
|
|
|
|
%% Specified as: an integer variable $itmax \ge 1$.
|
|
|
|
%% \item[itrace] If $>0$ print out an informational message about
|
|
|
|
%% convergence every $itrace$ iterations.\\
|
|
|
|
%% Scope: {\bf global} \\
|
|
|
|
%% Type: {\bf optional}\\
|
|
|
|
%% \item[istop] An integer specifying the stopping criterion.\\
|
|
|
|
%% Scope: {\bf global} \\
|
|
|
|
%% Type: {\bf optional}\\
|
|
|
|
|
|
|
|
%% \item[\bf On Return]
|
|
|
|
%% \item[x] The computed solution. \\
|
|
|
|
%% Scope: {\bf local} \\
|
|
|
|
%% Type: {\bf required}\\
|
|
|
|
%% Specified as: a rank one array.
|
|
|
|
%% \item[iter] The number of iterations performed.\\
|
|
|
|
%% Scope: {\bf global} \\
|
|
|
|
%% Type: {\bf optional}\\
|
|
|
|
%% Returned as: an integer variable.
|
|
|
|
%% \item[err] The error estimate on exit.\\
|
|
|
|
%% Scope: {\bf global} \\
|
|
|
|
%% Type: {\bf optional}\\
|
|
|
|
%% Returned as: a real number.
|
|
|
|
%% \item[info] Error code.\\
|
|
|
|
%% Scope: {\bf local} \\
|
|
|
|
%% Type: {\bf required} \\
|
|
|
|
%% An integer value; 0 means no error has been detected.
|
|
|
|
%% \end{description}
|
|
|
|
|
|
|
|
|
|
|
|
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
%% %
|
|
|
|
%% % BiCGSTAB(L)
|
|
|
|
%% %
|
|
|
|
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
%% \subroutine{psb\_bicgstabl \label{bicgstabl}}{BiCGSTAB-$l$ Iterative Method}
|
|
|
|
|
|
|
|
%% This subroutine implements the BiCGSTAB-$l$ method with restarting. The
|
|
|
|
%% stopping criterion is the normwise backward error, in the infinity
|
|
|
|
%% norm, i.e. the iteration is stopped when
|
|
|
|
%% \[ \frac{\|r\|}{(\|A\|\|x\|+\|b\|)} < eps \]
|
|
|
|
%% or
|
|
|
|
%% \[ \frac{\|r_i\|}{\|b\|_2} < eps \]
|
|
|
|
%% according to the value passed through the istop argument (see later).
|
|
|
|
|
|
|
|
|
|
|
|
%% \syntax{call psb\_bicgstab}{a,prec,b,x,eps,desc\_a,info,itmax,iter,err,itrace,irst,istop}
|
|
|
|
|
|
|
|
%% \begin{description}
|
|
|
|
%% \item[\bf On Entry]
|
|
|
|
%% \item[a] the local portion of global sparse matrix
|
|
|
|
%% $A$. \\
|
|
|
|
%% Scope: {\bf local} \\
|
|
|
|
%% Type: {\bf required}\\
|
|
|
|
%% Specified as: a structured data of type \spdata.
|
|
|
|
%% \item[prec] The data structure containing the preconditioner.\\
|
|
|
|
%% Scope: {\bf local} \\
|
|
|
|
%% Type: {\bf required}\\
|
|
|
|
%% Specified as: a structured data of type \precdata.
|
|
|
|
%% \item[b] The RHS vector. \\
|
|
|
|
%% Scope: {\bf local} \\
|
|
|
|
%% Type: {\bf required}\\
|
|
|
|
%% Specified as: a rank one array.
|
|
|
|
%% \item[x] The initial guess. \\
|
|
|
|
%% Scope: {\bf local} \\
|
|
|
|
%% Type: {\bf required}\\
|
|
|
|
%% Specified as: a rank one array.
|
|
|
|
%% \item[eps] The stopping tolerance. \\
|
|
|
|
%% Scope: {\bf global} \\
|
|
|
|
%% Type: {\bf required}\\
|
|
|
|
%% Specified as: a real number.
|
|
|
|
%% \item[desc\_a] contains data structures for communications.\\
|
|
|
|
%% Scope: {\bf local} \\
|
|
|
|
%% Type: {\bf required}\\
|
|
|
|
%% Specified as: a structured data of type \descdata.
|
|
|
|
%% \item[itmax] The maximum number of iterations to perform.\\
|
|
|
|
%% Scope: {\bf global} \\
|
|
|
|
%% Type: {\bf optional}\\
|
|
|
|
%% Default: $itmax = 1000$.\\
|
|
|
|
%% Specified as: an integer variable $itmax \ge 1$.
|
|
|
|
%% \item[itrace] If $>0$ print out an informational message about
|
|
|
|
%% convergence every $itrace$ iterations.\\
|
|
|
|
%% Scope: {\bf global} \\
|
|
|
|
%% Type: {\bf optional}\\
|
|
|
|
%% \item[irst] An integer specifying the restarting iteration.\\
|
|
|
|
%% Scope: {\bf global} \\
|
|
|
|
%% Type: {\bf optional}\\
|
|
|
|
%% \item[istop] An integer specifying the stopping criterion.\\
|
|
|
|
%% Scope: {\bf global} \\
|
|
|
|
%% Type: {\bf optional}\\
|
|
|
|
|
|
|
|
%% \item[\bf On Return]
|
|
|
|
%% \item[x] The computed solution. \\
|
|
|
|
%% Scope: {\bf local} \\
|
|
|
|
%% Type: {\bf required}\\
|
|
|
|
%% Specified as: a rank one array.
|
|
|
|
%% \item[iter] The number of iterations performed.\\
|
|
|
|
%% Scope: {\bf global} \\
|
|
|
|
%% Type: {\bf optional}\\
|
|
|
|
%% Returned as: an integer variable.
|
|
|
|
%% \item[err] The error estimate on exit.\\
|
|
|
|
%% Scope: {\bf global} \\
|
|
|
|
%% Type: {\bf optional}\\
|
|
|
|
%% Returned as: a real number.
|
|
|
|
%% \item[info] Error code.\\
|
|
|
|
%% Scope: {\bf local} \\
|
|
|
|
%% Type: {\bf required} \\
|
|
|
|
%% An integer value; 0 means no error has been detected.
|
|
|
|
%% \end{description}
|
|
|
|
|
|
|
|
|
|
|
|
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
%% %
|
|
|
|
%% % GMRES
|
|
|
|
%% %
|
|
|
|
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
%% \subroutine{psb\_gmres \label{gmres}}{GMRES Iterative Method}
|
|
|
|
|
|
|
|
%% This subroutine implements the GMRES method with restarting. The
|
|
|
|
%% stopping criterion is the normwise backward error, in the infinity
|
|
|
|
%% norm, i.e. the iteration is stopped when
|
|
|
|
%% \[ \frac{\|r\|}{(\|A\|\|x\|+\|b\|)} < eps \]
|
|
|
|
%% or
|
|
|
|
%% \[ \frac{\|r_i\|}{\|b\|_2} < eps \]
|
|
|
|
%% according to the value passed through the istop argument (see later).
|
|
|
|
|
|
|
|
|
|
|
|
%% \syntax{call psb\_gmres}{a,prec,b,x,eps,desc\_a,info,itmax,iter,err,itrace,irst,istop}
|
|
|
|
|
|
|
|
%% \begin{description}
|
|
|
|
%% \item[\bf On Entry]
|
|
|
|
%% \item[a] the local portion of global sparse matrix
|
|
|
|
%% $A$. \\
|
|
|
|
%% Scope: {\bf local} \\
|
|
|
|
%% Type: {\bf required}\\
|
|
|
|
%% Specified as: a structured data of type \spdata.
|
|
|
|
%% \item[prec] The data structure containing the preconditioner.\\
|
|
|
|
%% Scope: {\bf local} \\
|
|
|
|
%% Type: {\bf required}\\
|
|
|
|
%% Specified as: a structured data of type \precdata.
|
|
|
|
%% \item[b] The RHS vector. \\
|
|
|
|
%% Scope: {\bf local} \\
|
|
|
|
%% Type: {\bf required}\\
|
|
|
|
%% Specified as: a rank one array.
|
|
|
|
%% \item[x] The initial guess. \\
|
|
|
|
%% Scope: {\bf local} \\
|
|
|
|
%% Type: {\bf required}\\
|
|
|
|
%% Specified as: a rank one array.
|
|
|
|
%% \item[eps] The stopping tolerance. \\
|
|
|
|
%% Scope: {\bf global} \\
|
|
|
|
%% Type: {\bf required}\\
|
|
|
|
%% Specified as: a real number.
|
|
|
|
%% \item[desc\_a] contains data structures for communications.\\
|
|
|
|
%% Scope: {\bf local} \\
|
|
|
|
%% Type: {\bf required}\\
|
|
|
|
%% Specified as: a structured data of type \descdata.
|
|
|
|
%% \item[itmax] The maximum number of iterations to perform.\\
|
|
|
|
%% Scope: {\bf global} \\
|
|
|
|
%% Type: {\bf optional}\\
|
|
|
|
%% Default: $itmax = 1000$.\\
|
|
|
|
%% Specified as: an integer variable $itmax \ge 1$.
|
|
|
|
%% \item[itrace] If $>0$ print out an informational message about
|
|
|
|
%% convergence every $itrace$ iterations.\\
|
|
|
|
%% Scope: {\bf global} \\
|
|
|
|
%% Type: {\bf optional}\\
|
|
|
|
%% \item[irst] An integer specifying the restart iteration.\\
|
|
|
|
%% Scope: {\bf global} \\
|
|
|
|
%% Type: {\bf optional}\\
|
|
|
|
%% \item[istop] An integer specifying the stopping criterion.\\
|
|
|
|
%% Scope: {\bf global} \\
|
|
|
|
%% Type: {\bf optional}\\
|
|
|
|
|
|
|
|
%% \item[\bf On Return]
|
|
|
|
%% \item[x] The computed solution. \\
|
|
|
|
%% Scope: {\bf local} \\
|
|
|
|
%% Type: {\bf required}\\
|
|
|
|
%% Specified as: a rank one array.
|
|
|
|
%% \item[iter] The number of iterations performed.\\
|
|
|
|
%% Scope: {\bf global} \\
|
|
|
|
%% Type: {\bf optional}\\
|
|
|
|
%% Returned as: an integer variable.
|
|
|
|
%% \item[err] The error estimate on exit.\\
|
|
|
|
%% Scope: {\bf global} \\
|
|
|
|
%% Type: {\bf optional}\\
|
|
|
|
%% Returned as: a real number.
|
|
|
|
%% \item[info] Error code.\\
|
|
|
|
%% Scope: {\bf local} \\
|
|
|
|
%% Type: {\bf required} \\
|
|
|
|
%% An integer value; 0 means no error has been detected.
|
|
|
|
%% \end{description}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
%%% Local Variables:
|
|
|
|
%%% mode: latex
|
|
|
|
%%% TeX-master: "userguide"
|
|
|
|
%%% End:
|