Updated documentation, step 1.

psblas3-type-indexed
Salvatore Filippone 18 years ago
parent dcbdcf9ea2
commit 6296068177

@ -85,7 +85,7 @@
TOPFILE = userguide.tex
SECFILE = title.tex intro.tex commrout.tex datastruct.tex psbrout.tex toolsrout.tex\
methods.tex precs.tex penv.tex error.tex
methods.tex precs.tex penv.tex error.tex util.tex
FIGDIR = figures
XPDFFLAGS =

@ -33,8 +33,8 @@ Long Precision Complex & psb\_halo \\
\caption{Data types\label{tab:f90halo}}
\end{table}
\syntax{CALL psb\_halo}{x, desc\_a, info}
\syntax*{CALL psb\_halo}{x, desc\_a, info, alpha, work}
\syntax{call psb\_halo}{x, desc\_a, info}
\syntax*{call psb\_halo}{x, desc\_a, info, alpha, work}
\begin{description}
\item[\bf On Entry]
@ -104,8 +104,8 @@ Long Precision Complex & psb\_ovrl \\
\caption{Data types\label{tab:f90ovrl}}
\end{table}
\syntax{CALL psb\_ovrl}{x, desc\_a, info}
\syntax*{CALL psb\_ovrl}{x, desc\_a, info, update=update\_type, work=work}
\syntax{call psb\_ovrl}{x, desc\_a, info}
\syntax*{call psb\_ovrl}{x, desc\_a, info, update=update\_type, work=work}
\begin{description}
\item[\bf On Entry]
@ -142,10 +142,10 @@ Type: {\bf required} \\
Specified as: an array of rank one or two
containing numbers of type specified in
Table~\ref{tab:f90ovrl}.
\item[info] the local portion of result submatrix $y$.\\
\item[info] Error code.\\
Scope: {\bf local} \\
Type: {\bf required} \\
An integer value that contains an error code.
An integer value; 0 means no error has been detected.
\end{description}
@ -225,7 +225,7 @@ Specified as: a structured data of type \descdata.
the processes will have a copy of the global vector.\\
Scope: {\bf global} \\
Type: {\bf optional}\\
Specified as: an integer variable $0\le ix\le np$.
Specified as: an integer variable $-1\le ix\le np-1$, default $-1$.
\item[iglobx] Row index to define a submatrix in glob\_x into which
gather the local pieces.\\
Scope: {\bf global} \\
@ -255,10 +255,10 @@ Specified as: an integer variable.
Scope: {\bf global} \\
Type: {\bf required}\\
Specified as: a rank one or two array.
\item[info] the local portion of result submatrix $y$.\\
\item[info] Error code.\\
Scope: {\bf local} \\
Type: {\bf required} \\
An integer value that contains an error code.
An integer value; 0 means no error has been detected.
\end{description}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@ -314,7 +314,7 @@ Specified as: a structured data of type \descdata.
the processes have a copy of the global vector.\\
Scope: {\bf global} \\
Type: {\bf optional}\\
Specified as: an integer variable $0\le ix\le np$.
Specified as: an integer variable $-1\le ix\le np-1$, default $-1$.
\item[iglobx] Row index to define a submatrix in glob\_x that has to
be scattered into local pieces.\\
Scope: {\bf global} \\
@ -346,10 +346,10 @@ Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a rank one or two array containing numbers of the type
indicated in Table~\ref{tab:scatter}.
\item[info] the local portion of result submatrix $y$.\\
\item[info] Error code.\\
Scope: {\bf local} \\
Type: {\bf required} \\
An integer value that contains an error code.
An integer value; 0 means no error has been detected.
\end{description}
%%% Local Variables:

@ -25,29 +25,31 @@ exchanged among processes.
It is not necessary for the user to know the internal structure of
\verb|psb_desc_type|, it is set in a transparent mode by the tools
routines of Sec.~\ref{sec:toolsrout} while creating a new sparse
matrix, and its fields may be accessed if necessary via appropriate
routines; nevertheless we include its description for the curious
routines of Sec.~\ref{sec:toolsrout}, and its fields may be accessed
if necessary via the routines of sec.~\ref{sec:dataquery};
nevertheless we include a description for the curious
reader:
\begin{description}
\item[{\bf matrix\_data}] includes general information about matrix and
process grid. More precisely:
\begin{description}
\item[matrix\_data[psb\_dec\_type\_\hbox{]}] Identifies the decomposition type
(global); the actual values are internally defined, so they should
never be accessed directly.
\item[matrix\_data[psb\_ctxt\_\hbox{]}] Communication context
associated with the processes comprised in the virtual parallel
machine (global).
\item[matrix\_data[psb\_m\_\hbox{]}] Total number of equations (global).
\item[matrix\_data[psb\_n\_\hbox{]}] Total number of variables (global).
\item[matrix\_data[psb\_n\_row\_\hbox{]}] Number of grid variables owned by the
current process (local); equivalent to the number of local rows in the
sparse coefficient matrix.
\item[matrix\_data[psb\_n\_col\_\hbox{]}] Total number of grid variables read by the
current process (local); equivalent to the number of local columns in
the sparse coefficient matrix. They include the halo.
\end{description}
process grid, such as the communication context, the size of the
global matrix, the size of the portion of matrix stored on the current
process, and so on. %% More precisely:
%% \begin{description}
%% \item[matrix\_data[psb\_dec\_type\_\hbox{]}] Identifies the decomposition type
%% (global); the actual values are internally defined, so they should
%% never be accessed directly.
%% \item[matrix\_data[psb\_ctxt\_\hbox{]}] Communication context
%% associated with the processes comprised in the virtual parallel
%% machine (global).
%% \item[matrix\_data[psb\_m\_\hbox{]}] Total number of equations (global).
%% \item[matrix\_data[psb\_n\_\hbox{]}] Total number of variables (global).
%% \item[matrix\_data[psb\_n\_row\_\hbox{]}] Number of grid variables owned by the
%% current process (local); equivalent to the number of local rows in the
%% sparse coefficient matrix.
%% \item[matrix\_data[psb\_n\_col\_\hbox{]}] Total number of grid variables read by the
%% current process (local); equivalent to the number of local columns in
%% the sparse coefficient matrix. They include the halo.
%% \end{description}
Specified as: an allocatable integer array of dimension \verb|psb_mdata_size_|.
\item[{\bf halo\_index}] A list of the halo and boundary elements for
the current process to be exchanged with other processes; for each
@ -86,10 +88,9 @@ Specified as: an allocatable integer array of rank one.
\item[{\bf loc\_to\_glob}] each element $i$ of this array contains
global identifier of the local variable $i$.\\
Specified as: an allocatable integer array of rank one.
\item[{\bf glob\_to\_loc}] if global variable $i$ is read by current
process then element $i$ contains local index correpondent to global variable $i$;
else element $i$ contains -1 (NULL) value.\\
Specified as: an allocatabled integer array of rank one.
\item[{\bf glob\_to\_loc, glb\_lc, hashv}] Contain a mapping from
global to local indices. The mapping may be stored in two different
ways depending on the size of the index space.
\end{description}
The Fortran95 definition for \verb|psb_desc_type| structures is
as follows:
@ -101,6 +102,7 @@ type psb_desc_type
integer, allocatable :: matrix_data(:), halo_index(:)
integer, allocatable :: overlap_elem(:), overlap_index(:)
integer, allocatable :: loc_to_glob(:), glob_to_loc(:)
integer, allocatable :: hashv(:), glb_lc(:,:)
end type psb_desc_type
\end{verbatim}
\end{minipage}
@ -133,18 +135,18 @@ state, which can take the following values:
\item[psb\_avg\_] Average overlapped elements
%% \item[psb\_square\_root\_] Update with the square root of the average
%% of overlapped elements;
\item[psb\_dec\_type\_] Entry holding decomposition type (in \verb|desc_a%matrix_data|)
\item[psb\_m\_] Entry holding total number of rows
\item[psb\_n\_] Entry holding total number of columns
\item[ psb\_n\_row\_] Entry holding the number of rows stored in the
current process
\item[psb\_n\_col\_] Entry holding the number of columns stored in the
current process
\item[psb\_ctxt\_] Entry holding a copy of the BLACS communication context
\item[psb\_desc\_asb\_] State of the descriptor: assembled,
i.e. suitable for computational tasks.
\item[psb\_desc\_bld\_] State of the descriptor: build, must be
assembled before computational use.
%% \item[psb\_dec\_type\_] Entry holding decomposition type (in \verb|desc_a%matrix_data|)
%% \item[psb\_m\_] Entry holding total number of rows
%% \item[psb\_n\_] Entry holding total number of columns
%% \item[ psb\_n\_row\_] Entry holding the number of rows stored in the
%% current process
%% \item[psb\_n\_col\_] Entry holding the number of columns stored in the
%% current process
%% \item[psb\_ctxt\_] Entry holding a copy of the BLACS communication context
%% \item[psb\_desc\_asb\_] State of the descriptor: assembled,
%% i.e. suitable for computational tasks.
%% \item[psb\_desc\_bld\_] State of the descriptor: build, must be
%% assembled before computational use.
\end{description}
@ -274,14 +276,9 @@ values:
\subsection{Preconditioner data structure}
\label{sec:prec}
Our library offers support for many different types of
preconditioning schemes. Besides the simple well known preconditioners
like Diagonal Scaling or Block Jacobi with either incomplete
factorization ILU(0) or complete LU factorization. We also provide an
experimental package of complex
preconditioning methods like the Additive Schwarz and Multilevel
Additive Schwarz; these last preconditioners will be described in a
separate document.
Our base library offers support for simple well known preconditioners
like Diagonal Scaling or Block Jacobi with incomplete
factorization ILU(0).
A preconditioner is held in the \hypertarget{precdata}{{\tt
psb\_prec\_type}} data structure which depends on the
@ -310,23 +307,13 @@ to be interpreted.
\begin{minipage}[tl]{0.9\textwidth}
\begin{verbatim}
type psb_dbaseprc_type
type psb_dprec_type
type(psb_dspmat_type), allocatable :: av(:)
real(kind(1.d0)), allocatable :: d(:)
type(psb_desc_type) :: desc_data , desc_ac
type(psb_desc_type) :: desc_data
integer, allocatable :: iprcparm(:)
real(kind(1.d0)), allocatable :: dprcparm(:)
integer, allocatable :: perm(:), invperm(:)
integer, allocatable :: mlia(:), nlaggr(:)
type(psb_dspmat_type), pointer :: base_a => null() !
type(psb_desc_type), pointer :: base_desc => null() !
real(kind(1.d0)), allocatable :: dorig(:)
end type psb_dbaseprc_type
type psb_dprec_type
type(psb_dbaseprc_type), allocatable :: baseprecv(:)
integer :: prec, base_prec
end type psb_dprec_type
@ -339,25 +326,168 @@ to be interpreted.
\end{center}
\caption{\label{fig:prectype}The PSBLAS defined data type that contains a preconditioner.}
\end{figure}
\subsubsection{Named Constants}
\label{sec:prec_constants}
%% \subsection{Named Constants}
%% \label{sec:prec_constants}
%% \begin{description}
%% \item[f\_ilu\_n\_] Incomplete LU factorization with $n$ levels of
%% fill-in; currently only $n=0$ is implemented;
%% \item[f\_slu\_] Sparse factorization using SuperLU;
%% \item[f\_umf\_] Sparse factorization using UMFPACK;
%% \item[add\_ml\_prec\_] Additive multilevel correction;
%% \item[mult\_ml\_prec\_] Multiplicative multilevel correction;
%% \item[pre\_smooth\_] Pre-smoothing in applying multiplicative
%% multilevel corrections;
%% \item[post\_smooth\_] Post-smoothing in applying multiplicative
%% multilevel corrections;
%% \item[smooth\_both\_] Two-sided (i.e. symmetric) smoothing in applying multiplicative
%% multilevel corrections;
%% \item[mat\_distr\_] Coarse matrix distributed among processes
%% \item[mat\_repl\_] Coarse matrix replicated among processes
%% \end{description}
\subsection{Data structure query routines}
\label{sec:dataquery}
\subsubroutine{psb\_cd\_get\_local\_rows}{Get number of local rows}
\syntax{nr = psb\_cd\_get\_local\_rows}{desc}
\begin{description}
\item[f\_ilu\_n\_] Incomplete LU factorization with $n$ levels of
fill-in; currently only $n=0$ is implemented;
\item[f\_slu\_] Sparse factorization using SuperLU;
\item[f\_umf\_] Sparse factorization using UMFPACK;
\item[add\_ml\_prec\_] Additive multilevel correction;
\item[mult\_ml\_prec\_] Multiplicative multilevel correction;
\item[pre\_smooth\_] Pre-smoothing in applying multiplicative
multilevel corrections;
\item[post\_smooth\_] Post-smoothing in applying multiplicative
multilevel corrections;
\item[smooth\_both\_] Two-sided (i.e. symmetric) smoothing in applying multiplicative
multilevel corrections;
\item[mat\_distr\_] Coarse matrix distributed among processes
\item[mat\_repl\_] Coarse matrix replicated among processes
\item[\bf On Entry]
\item[desc] the communication descriptor.\\
Scope:{\bf local}.\\
Type:{\bf required}.\\
Specified as: a structured data of type \descdata.
\end{description}
\begin{description}
\item[\bf On Return]
\item[Function value] The number of local rows, i.e. the number of
rows owned by the current process; as explained in~\ref{sec:intro},
it is equal to $|{\cal I}_i| + |{\cal B}_i|$. The returned value is
specific to the calling process.
\end{description}
\subsubroutine{psb\_cd\_get\_local\_cols}{Get number of local cols}
\syntax{nc = psb\_cd\_get\_local\_cols}{desc}
\begin{description}
\item[\bf On Entry]
\item[desc] the communication descriptor.\\
Scope:{\bf local}.\\
Type:{\bf required}.\\
Specified as: a structured data of type \descdata.
\end{description}
\begin{description}
\item[\bf On Return]
\item[Function value] The number of local cols, i.e. the number of
indices used by the current process, including both local and halo
indices; as explained in~\ref{sec:intro},
it is equal to $|{\cal I}_i| + |{\cal B}_i| +|{\cal H}_i|$. The
returned value is specific to the calling process.
\end{description}
\subsubroutine{psb\_cd\_get\_global\_rows}{Get number of global rows}
\syntax{nr = psb\_cd\_get\_global\_rows}{desc}
\begin{description}
\item[\bf On Entry]
\item[desc] the communication descriptor.\\
Scope:{\bf local}.\\
Type:{\bf required}.\\
Specified as: a structured data of type \descdata.
\end{description}
\begin{description}
\item[\bf On Return]
\item[Function value] The number of global rows in the mesh
\end{description}
\subsubroutine{psb\_cd\_get\_contex}{Get communication context}
\syntax{ictxt = psb\_cd\_get\_context}{desc}
\begin{description}
\item[\bf On Entry]
\item[desc] the communication descriptor.\\
Scope:{\bf local}.\\
Type:{\bf required}.\\
Specified as: a structured data of type \descdata.
\end{description}
\begin{description}
\item[\bf On Return]
\item[Function value] The communication context.
\end{description}
\subsubroutine{psb\_sp\_get\_nrows}{Get number of rows in a sparse matrix}
\syntax{nr = psb\_sp\_get\_nrows}{a}
\begin{description}
\item[\bf On Entry]
\item[a] the sparse matrix\\
Scope:{\bf local}\\
Type:{\bf required}\\
Specified as: a structured data of type \spdata.
\end{description}
\begin{description}
\item[\bf On Return]
\item[Function value] The number of rows of sparse matrix \verb|a|.
\end{description}
\subsubroutine{psb\_sp\_get\_ncols}{Get number of columns in a sparse matrix}
\syntax{nr = psb\_sp\_get\_ncols}{a}
\begin{description}
\item[\bf On Entry]
\item[a] the sparse matrix\\
Scope:{\bf local}\\
Type:{\bf required}\\
Specified as: a structured data of type \spdata.
\end{description}
\begin{description}
\item[\bf On Return]
\item[Function value] The number of columns of sparse matrix \verb|a|.
\end{description}
\subsubroutine{psb\_sp\_get\_nnzeros}{Get number of nonzero elements in a sparse matrix}
\syntax{nr = psb\_sp\_get\_nnzeros}{a}
\begin{description}
\item[\bf On Entry]
\item[a] the sparse matrix\\
Scope:{\bf local}\\
Type:{\bf required}\\
Specified as: a structured data of type \spdata.
\end{description}
\begin{description}
\item[\bf On Return]
\item[Function value] The number of nonzero elements stored in sparse matrix \verb|a|.
\end{description}
\subsubsection*{Notes}
\begin{enumerate}
\item The function value is specific to the storage format of matrix
\verb|a|; some storage formats employ padding, thus the returned
value for the same matrix may be different for different storage choices.
\end{enumerate}
%%% Local Variables:
%%% mode: latex

@ -13,8 +13,9 @@ methods.
\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-2.0. The
stopping criterion is the normwise backward error, in the infinity
the Krylov-Subspace family methods implemented in PSBLAS-2.0.
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
@ -84,487 +85,487 @@ Specified as: a rank one array.
Scope: {\bf global} \\
Type: {\bf optional}\\
Returned as: an integer variable.
\item[err] The error estimate on exit.\\
\item[err] The convergence estimate on exit.\\
Scope: {\bf global} \\
Type: {\bf optional}\\
Returned as: a real number.
\item[info] An error code.\\
Scope: {\bf global} \\
Type: {\bf optional}\\
Returned as: an integer variable.
\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. \\
\item[info] Error code.\\
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] An error code.\\
Scope: {\bf global} \\
Type: {\bf optional}\\
Returned as: an integer variable.
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] An error code.\\
Scope: {\bf global} \\
Type: {\bf optional}\\
Returned as: an integer variable.
\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] An error code.\\
Scope: {\bf global} \\
Type: {\bf optional}\\
Returned as: an integer variable.
\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] An error code.\\
Scope: {\bf global} \\
Type: {\bf optional}\\
Returned as: an integer variable.
\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] An error code.\\
Scope: {\bf global} \\
Type: {\bf optional}\\
Returned as: an integer variable.
\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] An error code.\\
Scope: {\bf global} \\
Type: {\bf optional}\\
Returned as: an integer variable.
\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}

@ -53,7 +53,7 @@ Scope: {\bf global} \\
Type: {\bf required}\\
Error code: if no error, 0 is returned.
\end{description}
\section*{Usage Notes}
\subsection*{Usage Notes}
%% The PSBLAS 2.0 contains a number of preconditioners, ranging from a
%% simple diagonal scaling to 2-level domain decomposition. These
%% preconditioners may use the SuperLU or the UMFPACK software, if
@ -169,10 +169,10 @@ Specified as: a character.
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a precondtioner data structure \precdata\\
\item[info] the return error code.\\
Scope: {\bf global} \\
\item[info] Error code.\\
Scope: {\bf local} \\
Type: {\bf required} \\
Specified as: an integer, upon successful completion $info=0$ \\
An integer value; 0 means no error has been detected.
\end{description}
@ -212,10 +212,10 @@ Specified as: a double precision array.
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a double precision array.
\item[info] the return error code.\\
\item[info] Error code.\\
Scope: {\bf local} \\
Type: {\bf required} \\
Specified as: an integer, upon successful completion $info=0$ .\\
An integer value; 0 means no error has been detected.
\end{description}

@ -88,10 +88,10 @@ Scope: {\bf local} \\
Type: {\bf required} \\
Specified as: a rank one or two array containing numbers of the type
indicated in Table~\ref{tab:f90axpby}.
\item[info] the local portion of result submatrix $y$.\\
\item[info] Error code.\\
Scope: {\bf local} \\
Type: {\bf required} \\
An integer value that contains an error code.
An integer value; 0 means no error has been detected.
\end{description}
@ -172,10 +172,10 @@ Specified as: a structured data of type \descdata.
\item[Function value] is the dot product of subvectors $x$ and $y$.\\
Scope: {\bf global} \\
Specified as: a number of the data type indicated in Table~\ref{tab:f90dot}.
\item[info] the local portion of result submatrix $y$.\\
\item[info] Error code.\\
Scope: {\bf local} \\
Type: {\bf required} \\
An integer value that contains an error code.
An integer value; 0 means no error has been detected.
\end{description}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
@ -183,7 +183,7 @@ An integer value that contains an error code.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subroutine{psb\_gedot}{Generalized Dot Product}
\subroutine{psb\_gedots}{Generalized Dot Product}
This subroutine computes a series of dot products among the columns of
two dense matrices $x$ and $y$:
@ -193,15 +193,15 @@ usual convention applies, i.e. the conjugate transpose of $x$ is
used. If $x$ and $y$ are of rank one, then $res$ is a scalar, else it
is a rank one array.
\syntax{psb\_gedot}{res, x, y, desc\_a, info}
\syntax{call psb\_gedots}{res, x, y, desc\_a, info}
\begin{table}[h]
\begin{center}
\begin{tabular}{ll}
\hline
$res$, $x$, $y$ & {\bf Subroutine}\\
\hline
Long Precision Real & psb\_gedot \\
Long Precision Complex & psb\_gedot \\
Long Precision Real & psb\_gedots \\
Long Precision Complex & psb\_gedots \\
\hline
\end{tabular}
\end{center}
@ -233,10 +233,10 @@ Specified as: a structured data of type \descdata.
Scope: {\bf global} \\
Specified as: a number or a rank-one array of the data type indicated
in Table~\ref{tab:f90dot}.
\item[info]
\item[info] Error code.\\
Scope: {\bf local} \\
Type: {\bf required} \\
An integer value that contains an error code.
An integer value; 0 means no error has been detected.
\end{description}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@ -304,10 +304,10 @@ Specified as: a structured data of type \descdata.
\item[Function value] is the infinity norm of subvector $x$.\\
Scope: {\bf global} \\
Specified as: a long precision real number.
\item[info]
Scope: {\bf global} \\
\item[info] Error code.\\
Scope: {\bf local} \\
Type: {\bf required} \\
An integer value that contains an error code.
An integer value; 0 means no error has been detected.
\end{description}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
@ -315,21 +315,21 @@ An integer value that contains an error code.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subroutine{psb\_geamax}{Generalized Infinity Norm}
\subroutine{psb\_geamaxs}{Generalized Infinity Norm}
This subroutine computes a series of infinity norms on the columns of
a dense matrix $x$:
\[ res(i) \leftarrow \max_k |x(k,i)| \]
\syntax{psb\_geamax}{res, x, desc\_a, info}
\syntax{call psb\_geamaxs}{res, x, desc\_a, info}
\begin{table}[h]
\begin{center}
\begin{tabular}{lll}
\hline
$res$& $x$& {\bf Subroutine}\\
\hline
Long Precision Real &Long Precision Real & psb\_geamax\\
Long Precision Real &Long Precision Complex & psb\_geamax\\
Long Precision Real &Long Precision Real & psb\_geamaxs\\
Long Precision Real &Long Precision Complex & psb\_geamaxs\\
\hline
\end{tabular}
\end{center}
@ -353,10 +353,10 @@ Specified as: a structured data of type \descdata.
\item[res] is the infinity norm of the columns of $x$.\\
Scope: {\bf global} \\
Specified as: a number or a rank-one array of long precision real numbers.
\item[info]
\item[info] Error code.\\
Scope: {\bf local} \\
Type: {\bf required} \\
An integer value that contains an error code.
An integer value; 0 means no error has been detected.
\end{description}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@ -372,7 +372,7 @@ This function computes the 1-norm of a vector $x$.\\
If $x$ is a double precision real vector
computes 1-norm as:
\[ asum \leftarrow \|x_i\|\]
else if $x$ ic double precision complex vector then computes 1-norm as:
else if $x$ is double precision complex vector then computes 1-norm as:
\[ asum \leftarrow \|re(x)\|_1 + \|im(x)\|_1\]
@ -412,10 +412,66 @@ Specified as: a structured data of type \descdata.
\item[Function value] is the 1-norm of vector $x$.\\
Scope: {\bf global} \\
Specified as: a long precision real number.
\item[info]
\item[info] Error code.\\
Scope: {\bf local} \\
Type: {\bf required} \\
An integer value; 0 means no error has been detected.
\end{description}
\subroutine{psb\_geasums}{Generalized 1-Norm of Vector}
This subroutine computes a series of 1-norms on the columns of
a dense matrix $x$:
\[ res(i) \leftarrow \max_k |x(k,i)| \]
This function computes the 1-norm of a vector $x$.\\
If $x$ is a double precision real vector
computes 1-norm as:
\[ res(i) \leftarrow \|x_i\|\]
else if $x$ is double precision complex vector then computes 1-norm as:
\[ res(i) \leftarrow \|re(x)\|_1 + \|im(x)\|_1\]
\syntax{call psb\_geasums}{res, x, desc\_a, info}
\begin{table}[h]
\begin{center}
\begin{tabular}{lll}
\hline
$res$ & $x$ & {\bf Subroutine}\\
\hline
Long Precision Real&Long Precision Real & psb\_geasums \\
Long Precision Real&Long Precision Complex & psb\_geasums \\
\hline
\end{tabular}
\end{center}
\caption{Data types\label{tab:f90asums}}
\end{table}
\begin{description}
\item[\bf On Entry]
\item[x] the local portion of global dense matrix
$x$. %% This function computes the location of the first element of
%% local subarray used, based on the field $matrix\_data$ of $desc\_a$ .
\\
Scope: {\bf local} \\
Type: {\bf required} \\
Specified as: a rank one or two array
containing numbers of type specified in
Table~\ref{tab:f90asums}.
\item[desc\_a] contains data structures for communications.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a structured data of type \descdata.
\item[\bf On Return]
\item[res] contains the 1-norm of (the columns of) $x$.\\
Scope: {\bf global} \\
Specified as: a long precision real number.
\item[info] Error code.\\
Scope: {\bf local} \\
Type: {\bf required} \\
An integer value that contains an error code.
An integer value; 0 means no error has been detected.
\end{description}
@ -482,12 +538,72 @@ Specified as: a structured data of type \descdata.
Scope: {\bf global} \\
Type: {\bf required} \\
Specified as: a long precision real number.
\item[info]
\item[info] Error code.\\
Scope: {\bf local} \\
Type: {\bf required} \\
An integer value; 0 means no error has been detected.
\end{description}
\subroutine{psb\_genrm2s}{Generalized 1-Norm of Vector}
This subroutine computes a series of 1-norms on the columns of
a dense matrix $x$:
\[ res(i) \leftarrow \max_k |x(k,i)| \]
This function computes the 1-norm of a vector $x$.\\
If $x$ is a double precision real vector
computes 1-norm as:
\[ res(i) \leftarrow \sqrt{x^T x}\]
else if $x$ is double precision complex vector then computes 1-norm as:
\[ res(i) \leftarrow \sqrt{x^H x}\]
\syntax{call psb\_genrm2s}{res, x, desc\_a, info}
\begin{table}[h]
\begin{center}
\begin{tabular}{lll}
\hline
$res$ & $x$ & {\bf Subroutine}\\
\hline
Long Precision Real&Long Precision Real & psb\_genrm2s \\
Long Precision Real&Long Precision Complex & psb\_genrm2s \\
\hline
\end{tabular}
\end{center}
\caption{Data types\label{tab:f90nrm2s}}
\end{table}
\begin{description}
\item[\bf On Entry]
\item[x] the local portion of global dense matrix
$x$. %% This function computes the location of the first element of
%% local subarray used, based on the field $matrix\_data$ of $desc\_a$ .
\\
Scope: {\bf local} \\
Type: {\bf required} \\
Specified as: a rank one or two array
containing numbers of type specified in
Table~\ref{tab:f90nrm2s}.
\item[desc\_a] contains data structures for communications.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a structured data of type \descdata.
\item[\bf On Return]
\item[res] contains the 1-norm of (the columns of) $x$.\\
Scope: {\bf global} \\
Specified as: a long precision real number.
\item[info] Error code.\\
Scope: {\bf local} \\
Type: {\bf required} \\
An integer value that contains an error code.
An integer value; 0 means no error has been detected.
\end{description}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% INFINITY-NORM OF A MATRIX
@ -536,10 +652,10 @@ Specified as: a structured data of type \descdata.
\item[Function value] is the infinity-norm of sparse submatrix $A$.\\
Scope: {\bf global} \\
Specified as: a long precision real number.
\item[info]
\item[info] Error code.\\
Scope: {\bf local} \\
Type: {\bf required} \\
An integer value that contains an error code.
An integer value; 0 means no error has been detected.
\end{description}
@ -589,8 +705,8 @@ Long Precision Complex & psb\_spmm \\
\caption{Data types\label{tab:f90spmm}}
\end{table}
\syntax{CALL psb\_spmm}{alpha, a, x, beta, y, desc\_a, info}
\syntax*{CALL psb\_spmm}{alpha, a, x, beta, y,desc\_a, info,
\syntax{call psb\_spmm}{alpha, a, x, beta, y, desc\_a, info}
\syntax*{call psb\_spmm}{alpha, a, x, beta, y,desc\_a, info,
trans, work}
\begin{description}
@ -674,10 +790,10 @@ Type: {\bf required} \\
Specified as: an array of rank one or two
containing numbers of type specified in
Table~\ref{tab:f90spmm}.
\item[info]
\item[info] Error code.\\
Scope: {\bf local} \\
Type: {\bf required} \\
An integer value that contains an error code.
An integer value; 0 means no error has been detected.
\end{description}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@ -713,8 +829,8 @@ where:
\item[$P_r, P_c$] are the permutation matrices.
\end{description}
\syntax{CALL psb\_spsm}{alpha, t, x, beta, y, desc\_a, info}
\syntax*{CALL psb\_spsm}{alpha, t, x, beta, y, desc\_a, info,
\syntax{call psb\_spsm}{alpha, t, x, beta, y, desc\_a, info}
\syntax*{call psb\_spsm}{alpha, t, x, beta, y, desc\_a, info,
trans, unit, choice, diag, work}
\begin{table}[h]
@ -826,10 +942,10 @@ Type: {\bf required} \\
Specified as: an array of rank one or two
containing numbers of type specified in
Table~\ref{tab:f90spsm}.
\item[info]
\item[info] Error code.\\
Scope: {\bf local} \\
Type: {\bf required} \\
An integer value that contains an error code.
An integer value; 0 means no error has been detected.
\end{description}

@ -53,10 +53,10 @@ Specified as: an integer array.
Scope:{\bf local}.\\
Type:{\bf required}.\\
Specified as: a structured data of type \descdata.
\item[info] Error code.
\item[info] Error code.\\
Scope: {\bf local} \\
Type: {\bf required} \\
Specified as: an integer variable.\\
An integer value; 0 means no error has been detected.
\end{description}
\section*{Notes}
@ -124,10 +124,10 @@ Specified as: an integer array of length $nz$.
Scope:{\bf local}.\\
Type:{\bf required}.\\
Specified as: a structured data of type \descdata.
\item[info] Error code.
\item[info] Error code.\\
Scope: {\bf local} \\
Type: {\bf required} \\
Specified as: an integer variable.
An integer value; 0 means no error has been detected.
\end{description}
\section*{Notes}
\begin{enumerate}
@ -154,10 +154,10 @@ Specified as: a structured data of type \descdata.
\begin{description}
\item[\bf On Return]
\item[info] Error code.
\item[info] Error code.\\
Scope: {\bf local} \\
Type: {\bf required} \\
Specified as: an integer variable.
An integer value; 0 means no error has been detected.
%\item[arg]
\end{description}
\section*{Notes}
@ -190,10 +190,10 @@ Specified as: a structured data of type \descdata.
Scope:{\bf local}.\\
Type:{\bf required}.\\
Specified as: a structured data of type \descdata.
\item[info] Error code.
\item[info] Error code.\\
Scope: {\bf local} \\
Type: {\bf required} \\
Specified as: an integer variable.\\
An integer value; 0 means no error has been detected.
\end{description}
@ -214,10 +214,10 @@ Specified as: a structured data of type \descdata.
\begin{description}
\item[\bf On Return]
\item[info] Error code.
\item[info] Error code.\\
Scope: {\bf local} \\
Type: {\bf required} \\
Specified as: an integer variable.
An integer value; 0 means no error has been detected.
\end{description}
@ -309,10 +309,10 @@ Specified as: an integer value.
Scope:{\bf local}\\
Type:{\bf required}\\
Specified as: a structured data of type \spdata.
\item[info] Error code.
\item[info] Error code.\\
Scope: {\bf local} \\
Type: {\bf required} \\
Specified as: an integer variable.
An integer value; 0 means no error has been detected.
\end{description}
\section*{Notes}
\begin{enumerate}
@ -379,6 +379,7 @@ Specified as: a variable of type \descdata.\\
\item[info] Error code.\\
Scope: {\bf local} \\
Type: {\bf required} \\
An integer value; 0 means no error has been detected.
\end{description}
\section*{Notes}
@ -388,7 +389,7 @@ Type: {\bf required}\\
\item On entry to this routine the sparse matrix may be in either the
build or update state.
\item If the descriptor is in the build state, then the sparse matrix
ought also be in the build state; the action of the routine is to
must also be in the build state; the action of the routine is to
(implicitly) call \verb|psb_cdins| to add entries to the sparsity
pattern;
\item If the descriptor is in the assembled state, then any entries in
@ -432,10 +433,10 @@ Specified as: integer, possible values: \verb|psb_dupl_ovwrt_|,
Scope:{\bf local}\\
Type:{\bf required}\\
Specified as: a structured data of type \spdata.
\item[info] Error code.
\item[info] Error code.\\
Scope: {\bf local} \\
Type: {\bf required} \\
Specified as: an integer variable.
An integer value; 0 means no error has been detected.
\end{description}
\section*{Notes}
@ -510,10 +511,10 @@ Specified as: a structured data of type \descdata.
\begin{description}
\item[\bf On Return]
\item[info] Error code.
\item[info] Error code.\\
Scope: {\bf local} \\
Type: {\bf required} \\
Specified as: an integer variable.
An integer value; 0 means no error has been detected.
\end{description}
@ -544,10 +545,10 @@ Default: true.
\begin{description}
\item[\bf On Return]
\item[info] Error code.
\item[info] Error code.\\
Scope: {\bf local} \\
Type: {\bf required} \\
Specified as: an integer variable.
An integer value; 0 means no error has been detected.
\end{description}
\section*{Notes}
\begin{enumerate}
@ -631,10 +632,10 @@ Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a rank one or two array with the ALLOCATABLE
attribute, of type real, complex or integer.\\
\item[info] Error code.
\item[info] Error code.\\
Scope: {\bf local} \\
Type: {\bf required} \\
Specified as: Integer scalar.
An integer value; 0 means no error has been detected.
\end{description}
@ -680,10 +681,10 @@ Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a rank one or two array with the ALLOCATABLE
attribute, of type real, complex or integer.\\
\item[info] Error code.
\item[info] Error code.\\
Scope: {\bf local} \\
Type: {\bf required} \\
Specified as: an integer variable.
An integer value; 0 means no error has been detected.
\end{description}
\section*{Notes}
@ -719,7 +720,7 @@ attribute, of type real, complex or integer.\\
\item[info] Error code.\\
Scope: {\bf local} \\
Type: {\bf required} \\
Specified as: Integer scalar.\\
An integer value; 0 means no error has been detected.
\end{description}
%
%% psb_free %%
@ -748,7 +749,7 @@ Specified as: a variable of type \descdata.\\
\item[info] Error code.\\
Scope: {\bf local} \\
Type: {\bf required} \\
Specified as: Integer scalar.\\
An integer value; 0 means no error has been detected.
\end{description}
@ -784,7 +785,7 @@ Specified as: a variable of type \descdata.\\
\item[info] Error code.\\
Scope: {\bf local} \\
Type: {\bf required} \\
Specified as: Integer scalar.\\
An integer value; 0 means no error has been detected.
\end{description}
@ -832,10 +833,10 @@ Specified as: a rank one integer array.
Scope: {\bf global} \\
Type: {\bf optional}\\
Specified as: a rank one integer array.
\item[info] Error code.
\item[info] Error code.\\
Scope: {\bf local} \\
Type: {\bf required} \\
Specified as: an integer variable.
An integer value; 0 means no error has been detected.
\end{description}
\section*{Notes}
@ -884,41 +885,10 @@ Specified as: a rank one integer array.
Scope: {\bf global} \\
Type: {\bf optional}\\
Specified as: a rank one integer array.
\item[info] Error code.
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: an integer variable.
\end{description}
\subroutine{psb\_geall}{Allocates a dense matrix}
\syntax{call psb\_geall}{x, desc\_a, info, n}
\begin{description}
\item[\bf On Entry]
\item[desc\_a] The communication descriptor.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a variable of type \descdata.\\
\item[n] The number of columns of the dense matrix to be allocated.\\
Scope: {\bf local} \\
Type: {\bf optional}\\
Specified as: Integer scalar, default $1$. It is ignored if $x$ is a
rank-1 array.
\end{description}
\begin{description}
\item[\bf On Return]
\item[x] The dense matrix to be allocated.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a rank one or two array with the ALLOCATABLE
attribute, of type real, complex or integer.\\
\item[info] Error code.
\item[info] Error code.\\
Scope: {\bf local} \\
Type: {\bf required} \\
Specified as: Integer scalar.
An integer value; 0 means no error has been detected.
\end{description}
@ -945,17 +915,17 @@ Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a rank one array with the ALLOCATABLE
attribute, of type integer.\\
\item[info] Error code.
\item[info] Error code.\\
Scope: {\bf local} \\
Type: {\bf required} \\
Specified as: an integer variable.
An integer value; 0 means no error has been detected.
\end{description}
\section*{Notes}
\begin{enumerate}
\item If there are no boundary elements (i.e., if the local part of
the connectivity graph is self-contained) the output vector is set
to \verb|NULL()|
to the ``not allocated'' state.
\item Otherwise the size of \verb|bndel| will be exactly equal to the
number of boundary elements.
\end{enumerate}
@ -980,159 +950,21 @@ Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a rank one array with the ALLOCATABLE
attribute, of type integer.\\
\item[info] Error code.
\item[info] Error code.\\
Scope: {\bf local} \\
Type: {\bf required} \\
Specified as: an integer variable.
An integer value; 0 means no error has been detected.
\end{description}
\section*{Notes}
\begin{enumerate}
\item If there are no overlap elements the output vector is set
to \verb|NULL()|
to the ``not allocated'' state.
\item Otherwise the size of \verb|ovrel| will be exactly equal to the
number of overlap elements.
\end{enumerate}
\subroutine{psb\_cd\_get\_local\_rows}{Get number of local rows}
\syntax{nr = psb\_cd\_get\_local\_rows}{desc}
\begin{description}
\item[\bf On Entry]
\item[desc] the communication descriptor.\\
Scope:{\bf local}.\\
Type:{\bf required}.\\
Specified as: a structured data of type \descdata.
\end{description}
\begin{description}
\item[\bf On Return]
\item[Function value] The number of local rows, i.e. the number of
rows owned by the current process; as explained in~\ref{sec:intro},
it is equal to $|{\cal I}_i| + |{\cal B}_i|$. The returned value is
specific to the calling process.
\end{description}
\subroutine{psb\_cd\_get\_local\_cols}{Get number of local cols}
\syntax{nc = psb\_cd\_get\_local\_cols}{desc}
\begin{description}
\item[\bf On Entry]
\item[desc] the communication descriptor.\\
Scope:{\bf local}.\\
Type:{\bf required}.\\
Specified as: a structured data of type \descdata.
\end{description}
\begin{description}
\item[\bf On Return]
\item[Function value] The number of local cols, i.e. the number of
indices used by the current process, including both local and halo
indices; as explained in~\ref{sec:intro},
it is equal to $|{\cal I}_i| + |{\cal B}_i| +|{\cal H}_i|$. The
returned value is specific to the calling process.
\end{description}
\subroutine{psb\_cd\_get\_global\_rows}{Get number of global rows}
\syntax{nr = psb\_cd\_get\_global\_rows}{desc}
\begin{description}
\item[\bf On Entry]
\item[desc] the communication descriptor.\\
Scope:{\bf local}.\\
Type:{\bf required}.\\
Specified as: a structured data of type \descdata.
\end{description}
\begin{description}
\item[\bf On Return]
\item[Function value] The number of global rows in the mesh
\end{description}
\subroutine{psb\_cd\_get\_contex}{Get communication context}
\syntax{ictxt = psb\_cd\_get\_context}{desc}
\begin{description}
\item[\bf On Entry]
\item[desc] the communication descriptor.\\
Scope:{\bf local}.\\
Type:{\bf required}.\\
Specified as: a structured data of type \descdata.
\end{description}
\begin{description}
\item[\bf On Return]
\item[Function value] The communication context.
\end{description}
\subroutine{psb\_sp\_get\_nrows}{Get number of rows in a sparse matrix}
\syntax{nr = psb\_sp\_get\_nrows}{a}
\begin{description}
\item[\bf On Entry]
\item[a] the sparse matrix\\
Scope:{\bf local}\\
Type:{\bf required}\\
Specified as: a structured data of type \spdata.
\end{description}
\begin{description}
\item[\bf On Return]
\item[Function value] The number of rows of sparse matrix \verb|a|.
\end{description}
\subroutine{psb\_sp\_get\_ncols}{Get number of columns in a sparse matrix}
\syntax{nr = psb\_sp\_get\_ncols}{a}
\begin{description}
\item[\bf On Entry]
\item[a] the sparse matrix\\
Scope:{\bf local}\\
Type:{\bf required}\\
Specified as: a structured data of type \spdata.
\end{description}
\begin{description}
\item[\bf On Return]
\item[Function value] The number of columns of sparse matrix \verb|a|.
\end{description}
\subroutine{psb\_sp\_get\_nnzeros}{Get number of nonzero elements in a sparse matrix}
\syntax{nr = psb\_sp\_get\_nnzeros}{a}
\begin{description}
\item[\bf On Entry]
\item[a] the sparse matrix\\
Scope:{\bf local}\\
Type:{\bf required}\\
Specified as: a structured data of type \spdata.
\end{description}
\begin{description}
\item[\bf On Return]
\item[Function value] The number of nonzero elements stored in sparse matrix \verb|a|.
\end{description}
\section*{Notes}
\begin{enumerate}
\item The function value is specific to the storage format of matrix
\verb|a|; some storage formats employ padding, thus the returned
value for the same matrix may be different for different storage choices.
\end{enumerate}
%%% Local Variables:

@ -41,6 +41,11 @@
\section*{\flushleft #1---#2 \endflushleft}%
\addcontentsline{toc}{subsection}{#1}%
\markright{#1}}%
\newcommand{\subsubroutine}[2]{%
\stepcounter{subroutine}%
\subsection*{\flushleft #1---#2 \endflushleft}%
\addcontentsline{toc}{subsubsection}{#1}%
\markright{#1}}%
\newcommand{\examplename}{Example}
\newcommand{\syntaxname}{Syntax}
\makeatletter

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save