Updated documentation, step 1.

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

@ -85,7 +85,7 @@
TOPFILE = userguide.tex TOPFILE = userguide.tex
SECFILE = title.tex intro.tex commrout.tex datastruct.tex psbrout.tex toolsrout.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 FIGDIR = figures
XPDFFLAGS = XPDFFLAGS =

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

@ -25,29 +25,31 @@ exchanged among processes.
It is not necessary for the user to know the internal structure of 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 \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 routines of Sec.~\ref{sec:toolsrout}, and its fields may be accessed
matrix, and its fields may be accessed if necessary via appropriate if necessary via the routines of sec.~\ref{sec:dataquery};
routines; nevertheless we include its description for the curious nevertheless we include a description for the curious
reader: reader:
\begin{description} \begin{description}
\item[{\bf matrix\_data}] includes general information about matrix and \item[{\bf matrix\_data}] includes general information about matrix and
process grid. More precisely: process grid, such as the communication context, the size of the
\begin{description} global matrix, the size of the portion of matrix stored on the current
\item[matrix\_data[psb\_dec\_type\_\hbox{]}] Identifies the decomposition type process, and so on. %% More precisely:
(global); the actual values are internally defined, so they should %% \begin{description}
never be accessed directly. %% \item[matrix\_data[psb\_dec\_type\_\hbox{]}] Identifies the decomposition type
\item[matrix\_data[psb\_ctxt\_\hbox{]}] Communication context %% (global); the actual values are internally defined, so they should
associated with the processes comprised in the virtual parallel %% never be accessed directly.
machine (global). %% \item[matrix\_data[psb\_ctxt\_\hbox{]}] Communication context
\item[matrix\_data[psb\_m\_\hbox{]}] Total number of equations (global). %% associated with the processes comprised in the virtual parallel
\item[matrix\_data[psb\_n\_\hbox{]}] Total number of variables (global). %% machine (global).
\item[matrix\_data[psb\_n\_row\_\hbox{]}] Number of grid variables owned by the %% \item[matrix\_data[psb\_m\_\hbox{]}] Total number of equations (global).
current process (local); equivalent to the number of local rows in the %% \item[matrix\_data[psb\_n\_\hbox{]}] Total number of variables (global).
sparse coefficient matrix. %% \item[matrix\_data[psb\_n\_row\_\hbox{]}] Number of grid variables owned by the
\item[matrix\_data[psb\_n\_col\_\hbox{]}] Total number of grid variables read by the %% current process (local); equivalent to the number of local rows in the
current process (local); equivalent to the number of local columns in %% sparse coefficient matrix.
the sparse coefficient matrix. They include the halo. %% \item[matrix\_data[psb\_n\_col\_\hbox{]}] Total number of grid variables read by the
\end{description} %% 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_|. 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 \item[{\bf halo\_index}] A list of the halo and boundary elements for
the current process to be exchanged with other processes; for each 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 \item[{\bf loc\_to\_glob}] each element $i$ of this array contains
global identifier of the local variable $i$.\\ global identifier of the local variable $i$.\\
Specified as: an allocatable integer array of rank one. Specified as: an allocatable integer array of rank one.
\item[{\bf glob\_to\_loc}] if global variable $i$ is read by current \item[{\bf glob\_to\_loc, glb\_lc, hashv}] Contain a mapping from
process then element $i$ contains local index correpondent to global variable $i$; global to local indices. The mapping may be stored in two different
else element $i$ contains -1 (NULL) value.\\ ways depending on the size of the index space.
Specified as: an allocatabled integer array of rank one.
\end{description} \end{description}
The Fortran95 definition for \verb|psb_desc_type| structures is The Fortran95 definition for \verb|psb_desc_type| structures is
as follows: as follows:
@ -101,6 +102,7 @@ type psb_desc_type
integer, allocatable :: matrix_data(:), halo_index(:) integer, allocatable :: matrix_data(:), halo_index(:)
integer, allocatable :: overlap_elem(:), overlap_index(:) integer, allocatable :: overlap_elem(:), overlap_index(:)
integer, allocatable :: loc_to_glob(:), glob_to_loc(:) integer, allocatable :: loc_to_glob(:), glob_to_loc(:)
integer, allocatable :: hashv(:), glb_lc(:,:)
end type psb_desc_type end type psb_desc_type
\end{verbatim} \end{verbatim}
\end{minipage} \end{minipage}
@ -133,18 +135,18 @@ state, which can take the following values:
\item[psb\_avg\_] Average overlapped elements \item[psb\_avg\_] Average overlapped elements
%% \item[psb\_square\_root\_] Update with the square root of the average %% \item[psb\_square\_root\_] Update with the square root of the average
%% of overlapped elements; %% of overlapped elements;
\item[psb\_dec\_type\_] Entry holding decomposition type (in \verb|desc_a%matrix_data|) %% \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\_m\_] Entry holding total number of rows
\item[psb\_n\_] Entry holding total number of columns %% \item[psb\_n\_] Entry holding total number of columns
\item[ psb\_n\_row\_] Entry holding the number of rows stored in the %% \item[ psb\_n\_row\_] Entry holding the number of rows stored in the
current process %% current process
\item[psb\_n\_col\_] Entry holding the number of columns stored in the %% \item[psb\_n\_col\_] Entry holding the number of columns stored in the
current process %% current process
\item[psb\_ctxt\_] Entry holding a copy of the BLACS communication context %% \item[psb\_ctxt\_] Entry holding a copy of the BLACS communication context
\item[psb\_desc\_asb\_] State of the descriptor: assembled, %% \item[psb\_desc\_asb\_] State of the descriptor: assembled,
i.e. suitable for computational tasks. %% i.e. suitable for computational tasks.
\item[psb\_desc\_bld\_] State of the descriptor: build, must be %% \item[psb\_desc\_bld\_] State of the descriptor: build, must be
assembled before computational use. %% assembled before computational use.
\end{description} \end{description}
@ -274,14 +276,9 @@ values:
\subsection{Preconditioner data structure} \subsection{Preconditioner data structure}
\label{sec:prec} \label{sec:prec}
Our library offers support for many different types of Our base library offers support for simple well known preconditioners
preconditioning schemes. Besides the simple well known preconditioners like Diagonal Scaling or Block Jacobi with incomplete
like Diagonal Scaling or Block Jacobi with either incomplete factorization ILU(0).
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.
A preconditioner is held in the \hypertarget{precdata}{{\tt A preconditioner is held in the \hypertarget{precdata}{{\tt
psb\_prec\_type}} data structure which depends on the psb\_prec\_type}} data structure which depends on the
@ -310,23 +307,13 @@ to be interpreted.
\begin{minipage}[tl]{0.9\textwidth} \begin{minipage}[tl]{0.9\textwidth}
\begin{verbatim} \begin{verbatim}
type psb_dbaseprc_type type psb_dprec_type
type(psb_dspmat_type), allocatable :: av(:) type(psb_dspmat_type), allocatable :: av(:)
real(kind(1.d0)), allocatable :: d(:) real(kind(1.d0)), allocatable :: d(:)
type(psb_desc_type) :: desc_data , desc_ac type(psb_desc_type) :: desc_data
integer, allocatable :: iprcparm(:) integer, allocatable :: iprcparm(:)
real(kind(1.d0)), allocatable :: dprcparm(:) real(kind(1.d0)), allocatable :: dprcparm(:)
integer, allocatable :: perm(:), invperm(:) 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 integer :: prec, base_prec
end type psb_dprec_type end type psb_dprec_type
@ -339,25 +326,168 @@ to be interpreted.
\end{center} \end{center}
\caption{\label{fig:prectype}The PSBLAS defined data type that contains a preconditioner.} \caption{\label{fig:prectype}The PSBLAS defined data type that contains a preconditioner.}
\end{figure} \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} \begin{description}
\item[f\_ilu\_n\_] Incomplete LU factorization with $n$ levels of \item[\bf On Entry]
fill-in; currently only $n=0$ is implemented; \item[desc] the communication descriptor.\\
\item[f\_slu\_] Sparse factorization using SuperLU; Scope:{\bf local}.\\
\item[f\_umf\_] Sparse factorization using UMFPACK; Type:{\bf required}.\\
\item[add\_ml\_prec\_] Additive multilevel correction; Specified as: a structured data of type \descdata.
\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} \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: %%% Local Variables:
%%% mode: latex %%% mode: latex

@ -13,8 +13,9 @@ methods.
\subroutine{psb\_krylov \label{krylov}}{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 This subroutine is a driver that provides a general interface for all
the Krylov-Subspace family methods implemented in PSBLAS-2.0. The the Krylov-Subspace family methods implemented in PSBLAS-2.0.
stopping criterion is the normwise backward error, in the infinity
The stopping criterion is the normwise backward error, in the infinity
norm, i.e. the iteration is stopped when norm, i.e. the iteration is stopped when
\[ \frac{\|r\|}{(\|A\|\|x\|+\|b\|)} < eps \] \[ \frac{\|r\|}{(\|A\|\|x\|+\|b\|)} < eps \]
or or
@ -84,487 +85,487 @@ Specified as: a rank one array.
Scope: {\bf global} \\ Scope: {\bf global} \\
Type: {\bf optional}\\ Type: {\bf optional}\\
Returned as: an integer variable. Returned as: an integer variable.
\item[err] The error estimate on exit.\\ \item[err] The convergence estimate on exit.\\
Scope: {\bf global} \\ Scope: {\bf global} \\
Type: {\bf optional}\\ Type: {\bf optional}\\
Returned as: a real number. Returned as: a real number.
\item[info] An error code.\\ \item[info] 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} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Specified as: a rank one array. An integer value; 0 means no error has been detected.
\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} \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} %% % CG
\item[\bf On Entry] %% %
\item[a] the local portion of global sparse matrix %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
$A$. \\
Scope: {\bf local} \\ %% \subroutine{psb\_cg \label{cg}}{CG Iterative Method}
Type: {\bf required}\\
Specified as: a structured data of type \spdata. %% This subroutine implements the CG method with restarting. The
\item[prec] The data structure containing the preconditioner.\\ %% stopping criterion is the normwise backward error, in the infinity
Scope: {\bf local} \\ %% norm, i.e. the iteration is stopped when
Type: {\bf required}\\ %% \[ \frac{\|r\|}{(\|A\|\|x\|+\|b\|)} < eps \]
Specified as: a structured data of type \precdata. %% or
\item[b] The RHS vector. \\ %% \[ \frac{\|r_i\|}{\|b\|_2} < eps \]
Scope: {\bf local} \\ %% according to the value passed through the istop argument (see later).
Type: {\bf required}\\
Specified as: a rank one array.
\item[x] The initial guess. \\ %% \syntax{call psb\_cg}{a,prec,b,x,eps,desc\_a,info,itmax,iter,err,itrace,istop}
Scope: {\bf local} \\
Type: {\bf required}\\ %% \begin{description}
Specified as: a rank one array. %% \item[\bf On Entry]
\item[eps] The stopping tolerance. \\ %% \item[a] the local portion of global sparse matrix
Scope: {\bf global} \\ %% $A$. \\
Type: {\bf required}\\ %% Scope: {\bf local} \\
Specified as: a real number. %% Type: {\bf required}\\
\item[desc\_a] contains data structures for communications.\\ %% Specified as: a structured data of type \spdata.
Scope: {\bf local} \\ %% \item[prec] The data structure containing the preconditioner.\\
Type: {\bf required}\\ %% Scope: {\bf local} \\
Specified as: a structured data of type \descdata. %% Type: {\bf required}\\
\item[itmax] The maximum number of iterations to perform.\\ %% Specified as: a structured data of type \precdata.
Scope: {\bf global} \\ %% \item[b] The RHS vector. \\
Type: {\bf optional}\\ %% Scope: {\bf local} \\
Default: $itmax = 1000$.\\ %% Type: {\bf required}\\
Specified as: an integer variable $itmax \ge 1$. %% Specified as: a rank one array.
\item[itrace] If $>0$ print out an informational message about %% \item[x] The initial guess. \\
convergence every $itrace$ iterations.\\ %% Scope: {\bf local} \\
Scope: {\bf global} \\ %% Type: {\bf required}\\
Type: {\bf optional}\\ %% Specified as: a rank one array.
\item[istop] An integer specifying the stopping criterion.\\ %% \item[eps] The stopping tolerance. \\
Scope: {\bf global} \\ %% Scope: {\bf global} \\
Type: {\bf optional}\\ %% Type: {\bf required}\\
%% Specified as: a real number.
\item[\bf On Return] %% \item[desc\_a] contains data structures for communications.\\
\item[x] The computed solution. \\ %% Scope: {\bf local} \\
Scope: {\bf local} \\ %% Type: {\bf required}\\
Type: {\bf required}\\ %% Specified as: a structured data of type \descdata.
Specified as: a rank one array. %% \item[itmax] The maximum number of iterations to perform.\\
\item[iter] The number of iterations performed.\\ %% Scope: {\bf global} \\
Scope: {\bf global} \\ %% Type: {\bf optional}\\
Type: {\bf optional}\\ %% Default: $itmax = 1000$.\\
Returned as: an integer variable. %% Specified as: an integer variable $itmax \ge 1$.
\item[err] The error estimate on exit.\\ %% \item[itrace] If $>0$ print out an informational message about
Scope: {\bf global} \\ %% convergence every $itrace$ iterations.\\
Type: {\bf optional}\\ %% Scope: {\bf global} \\
Returned as: a real number. %% Type: {\bf optional}\\
\item[info] An error code.\\ %% \item[istop] An integer specifying the stopping criterion.\\
Scope: {\bf global} \\ %% Scope: {\bf global} \\
Type: {\bf optional}\\ %% Type: {\bf optional}\\
Returned as: an integer variable.
\end{description} %% \item[\bf On Return]
%% \item[x] The computed solution. \\
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Scope: {\bf local} \\
% %% Type: {\bf required}\\
% BiCG %% Specified as: a rank one array.
% %% \item[iter] The number of iterations performed.\\
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Scope: {\bf global} \\
\subroutine{psb\_bicg \label{bicg}}{BiCG Iterative Method} %% Type: {\bf optional}\\
%% Returned as: an integer variable.
This subroutine implements the BiCG method with restarting. The %% \item[err] The error estimate on exit.\\
stopping criterion is the normwise backward error, in the infinity %% Scope: {\bf global} \\
norm, i.e. the iteration is stopped when %% Type: {\bf optional}\\
\[ \frac{\|r\|}{(\|A\|\|x\|+\|b\|)} < eps \] %% Returned as: a real number.
or %% \item[info] Error code.\\
\[ \frac{\|r_i\|}{\|b\|_2} < eps \] %% Scope: {\bf local} \\
according to the value passed through the istop argument (see later). %% Type: {\bf required} \\
%% An integer value; 0 means no error has been detected.
%% \end{description}
\syntax{call psb\_bicg}{a,prec,b,x,eps,desc\_a,info,itmax,iter,err,itrace,istop} %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% %
\begin{description} %% % CGS
\item[\bf On Entry] %% %
\item[a] the local portion of global sparse matrix %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
$A$. \\
Scope: {\bf local} \\ %% \subroutine{psb\_cgs \label{cgs}}{CGS Iterative Method}
Type: {\bf required}\\
Specified as: a structured data of type \spdata. %% This subroutine implements the CGS method with restarting. The
\item[prec] The data structure containing the preconditioner.\\ %% stopping criterion is the normwise backward error, in the infinity
Scope: {\bf local} \\ %% norm, i.e. the iteration is stopped when
Type: {\bf required}\\ %% \[ \frac{\|r\|}{(\|A\|\|x\|+\|b\|)} < eps \]
Specified as: a structured data of type \precdata. %% or
\item[b] The RHS vector. \\ %% \[ \frac{\|r_i\|}{\|b\|_2} < eps \]
Scope: {\bf local} \\ %% according to the value passed through the istop argument (see later).
Type: {\bf required}\\
Specified as: a rank one array.
\item[x] The initial guess. \\ %% \syntax{call psb\_cgs}{a,prec,b,x,eps,desc\_a,info,itmax,iter,err,itrace,istop}
Scope: {\bf local} \\
Type: {\bf required}\\ %% \begin{description}
Specified as: a rank one array. %% \item[\bf On Entry]
\item[eps] The stopping tolerance. \\ %% \item[a] the local portion of global sparse matrix
Scope: {\bf global} \\ %% $A$. \\
Type: {\bf required}\\ %% Scope: {\bf local} \\
Specified as: a real number. %% Type: {\bf required}\\
\item[desc\_a] contains data structures for communications.\\ %% Specified as: a structured data of type \spdata.
Scope: {\bf local} \\ %% \item[prec] The data structure containing the preconditioner.\\
Type: {\bf required}\\ %% Scope: {\bf local} \\
Specified as: a structured data of type \descdata. %% Type: {\bf required}\\
\item[itmax] The maximum number of iterations to perform.\\ %% Specified as: a structured data of type \precdata.
Scope: {\bf global} \\ %% \item[b] The RHS vector. \\
Type: {\bf optional}\\ %% Scope: {\bf local} \\
Default: $itmax = 1000$.\\ %% Type: {\bf required}\\
Specified as: an integer variable $itmax \ge 1$. %% Specified as: a rank one array.
\item[itrace] If $>0$ print out an informational message about %% \item[x] The initial guess. \\
convergence every $itrace$ iterations.\\ %% Scope: {\bf local} \\
Scope: {\bf global} \\ %% Type: {\bf required}\\
Type: {\bf optional}\\ %% Specified as: a rank one array.
\item[istop] An integer specifying the stopping criterion.\\ %% \item[eps] The stopping tolerance. \\
Scope: {\bf global} \\ %% Scope: {\bf global} \\
Type: {\bf optional}\\ %% Type: {\bf required}\\
%% Specified as: a real number.
\item[\bf On Return] %% \item[desc\_a] contains data structures for communications.\\
\item[x] The computed solution. \\ %% Scope: {\bf local} \\
Scope: {\bf local} \\ %% Type: {\bf required}\\
Type: {\bf required}\\ %% Specified as: a structured data of type \descdata.
Specified as: a rank one array. %% \item[itmax] The maximum number of iterations to perform.\\
\item[iter] The number of iterations performed.\\ %% Scope: {\bf global} \\
Scope: {\bf global} \\ %% Type: {\bf optional}\\
Type: {\bf optional}\\ %% Default: $itmax = 1000$.\\
Returned as: an integer variable. %% Specified as: an integer variable $itmax \ge 1$.
\item[err] The error estimate on exit.\\ %% \item[itrace] If $>0$ print out an informational message about
Scope: {\bf global} \\ %% convergence every $itrace$ iterations.\\
Type: {\bf optional}\\ %% Scope: {\bf global} \\
Returned as: a real number. %% Type: {\bf optional}\\
\item[info] An error code.\\ %% \item[istop] An integer specifying the stopping criterion.\\
Scope: {\bf global} \\ %% Scope: {\bf global} \\
Type: {\bf optional}\\ %% Type: {\bf optional}\\
Returned as: an integer variable.
\end{description} %% \item[\bf On Return]
%% \item[x] The computed solution. \\
%% Scope: {\bf local} \\
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Type: {\bf required}\\
% %% Specified as: a rank one array.
% BiCGSTAB %% \item[iter] The number of iterations performed.\\
% %% Scope: {\bf global} \\
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Type: {\bf optional}\\
\subroutine{psb\_bicgstab \label{bicgstab}}{BiCGSTAB Iterative Method} %% Returned as: an integer variable.
%% \item[err] The error estimate on exit.\\
This subroutine implements the BiCGSTAB method with restarting. The %% Scope: {\bf global} \\
stopping criterion is the normwise backward error, in the infinity %% Type: {\bf optional}\\
norm, i.e. the iteration is stopped when %% Returned as: a real number.
\[ \frac{\|r\|}{(\|A\|\|x\|+\|b\|)} < eps \] %% \item[info] Error code.\\
or %% Scope: {\bf local} \\
\[ \frac{\|r_i\|}{\|b\|_2} < eps \] %% Type: {\bf required} \\
according to the value passed through the istop argument (see later). %% An integer value; 0 means no error has been detected.
%% \end{description}
\syntax{call psb\_bicgstab}{a,prec,b,x,eps,desc\_a,info,itmax,iter,err,itrace,istop} %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% %
\begin{description} %% % BiCG
\item[\bf On Entry] %% %
\item[a] the local portion of global sparse matrix %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
$A$. \\ %% \subroutine{psb\_bicg \label{bicg}}{BiCG Iterative Method}
Scope: {\bf local} \\
Type: {\bf required}\\ %% This subroutine implements the BiCG method with restarting. The
Specified as: a structured data of type \spdata. %% stopping criterion is the normwise backward error, in the infinity
\item[prec] The data structure containing the preconditioner.\\ %% norm, i.e. the iteration is stopped when
Scope: {\bf local} \\ %% \[ \frac{\|r\|}{(\|A\|\|x\|+\|b\|)} < eps \]
Type: {\bf required}\\ %% or
Specified as: a structured data of type \precdata. %% \[ \frac{\|r_i\|}{\|b\|_2} < eps \]
\item[b] The RHS vector. \\ %% according to the value passed through the istop argument (see later).
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a rank one array. %% \syntax{call psb\_bicg}{a,prec,b,x,eps,desc\_a,info,itmax,iter,err,itrace,istop}
\item[x] The initial guess. \\
Scope: {\bf local} \\ %% \begin{description}
Type: {\bf required}\\ %% \item[\bf On Entry]
Specified as: a rank one array. %% \item[a] the local portion of global sparse matrix
\item[eps] The stopping tolerance. \\ %% $A$. \\
Scope: {\bf global} \\ %% Scope: {\bf local} \\
Type: {\bf required}\\ %% Type: {\bf required}\\
Specified as: a real number. %% Specified as: a structured data of type \spdata.
\item[desc\_a] contains data structures for communications.\\ %% \item[prec] The data structure containing the preconditioner.\\
Scope: {\bf local} \\ %% Scope: {\bf local} \\
Type: {\bf required}\\ %% Type: {\bf required}\\
Specified as: a structured data of type \descdata. %% Specified as: a structured data of type \precdata.
\item[itmax] The maximum number of iterations to perform.\\ %% \item[b] The RHS vector. \\
Scope: {\bf global} \\ %% Scope: {\bf local} \\
Type: {\bf optional}\\ %% Type: {\bf required}\\
Default: $itmax = 1000$.\\ %% Specified as: a rank one array.
Specified as: an integer variable $itmax \ge 1$. %% \item[x] The initial guess. \\
\item[itrace] If $>0$ print out an informational message about %% Scope: {\bf local} \\
convergence every $itrace$ iterations.\\ %% Type: {\bf required}\\
Scope: {\bf global} \\ %% Specified as: a rank one array.
Type: {\bf optional}\\ %% \item[eps] The stopping tolerance. \\
\item[istop] An integer specifying the stopping criterion.\\ %% Scope: {\bf global} \\
Scope: {\bf global} \\ %% Type: {\bf required}\\
Type: {\bf optional}\\ %% Specified as: a real number.
%% \item[desc\_a] contains data structures for communications.\\
\item[\bf On Return] %% Scope: {\bf local} \\
\item[x] The computed solution. \\ %% Type: {\bf required}\\
Scope: {\bf local} \\ %% Specified as: a structured data of type \descdata.
Type: {\bf required}\\ %% \item[itmax] The maximum number of iterations to perform.\\
Specified as: a rank one array. %% Scope: {\bf global} \\
\item[iter] The number of iterations performed.\\ %% Type: {\bf optional}\\
Scope: {\bf global} \\ %% Default: $itmax = 1000$.\\
Type: {\bf optional}\\ %% Specified as: an integer variable $itmax \ge 1$.
Returned as: an integer variable. %% \item[itrace] If $>0$ print out an informational message about
\item[err] The error estimate on exit.\\ %% convergence every $itrace$ iterations.\\
Scope: {\bf global} \\ %% Scope: {\bf global} \\
Type: {\bf optional}\\ %% Type: {\bf optional}\\
Returned as: a real number. %% \item[istop] An integer specifying the stopping criterion.\\
\item[info] An error code.\\ %% Scope: {\bf global} \\
Scope: {\bf global} \\ %% Type: {\bf optional}\\
Type: {\bf optional}\\
Returned as: an integer variable. %% \item[\bf On Return]
\end{description} %% \item[x] The computed solution. \\
%% Scope: {\bf local} \\
%% Type: {\bf required}\\
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Specified as: a rank one array.
% %% \item[iter] The number of iterations performed.\\
% BiCGSTAB(L) %% Scope: {\bf global} \\
% %% Type: {\bf optional}\\
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Returned as: an integer variable.
\subroutine{psb\_bicgstabl \label{bicgstabl}}{BiCGSTAB-$l$ Iterative Method} %% \item[err] The error estimate on exit.\\
%% Scope: {\bf global} \\
This subroutine implements the BiCGSTAB-$l$ method with restarting. The %% Type: {\bf optional}\\
stopping criterion is the normwise backward error, in the infinity %% Returned as: a real number.
norm, i.e. the iteration is stopped when %% \item[info] Error code.\\
\[ \frac{\|r\|}{(\|A\|\|x\|+\|b\|)} < eps \] %% Scope: {\bf local} \\
or %% Type: {\bf required} \\
\[ \frac{\|r_i\|}{\|b\|_2} < eps \] %% An integer value; 0 means no error has been detected.
according to the value passed through the istop argument (see later). %% \end{description}
\syntax{call psb\_bicgstab}{a,prec,b,x,eps,desc\_a,info,itmax,iter,err,itrace,irst,istop} %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% %
\begin{description} %% % BiCGSTAB
\item[\bf On Entry] %% %
\item[a] the local portion of global sparse matrix %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
$A$. \\ %% \subroutine{psb\_bicgstab \label{bicgstab}}{BiCGSTAB Iterative Method}
Scope: {\bf local} \\
Type: {\bf required}\\ %% This subroutine implements the BiCGSTAB method with restarting. The
Specified as: a structured data of type \spdata. %% stopping criterion is the normwise backward error, in the infinity
\item[prec] The data structure containing the preconditioner.\\ %% norm, i.e. the iteration is stopped when
Scope: {\bf local} \\ %% \[ \frac{\|r\|}{(\|A\|\|x\|+\|b\|)} < eps \]
Type: {\bf required}\\ %% or
Specified as: a structured data of type \precdata. %% \[ \frac{\|r_i\|}{\|b\|_2} < eps \]
\item[b] The RHS vector. \\ %% according to the value passed through the istop argument (see later).
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a rank one array. %% \syntax{call psb\_bicgstab}{a,prec,b,x,eps,desc\_a,info,itmax,iter,err,itrace,istop}
\item[x] The initial guess. \\
Scope: {\bf local} \\ %% \begin{description}
Type: {\bf required}\\ %% \item[\bf On Entry]
Specified as: a rank one array. %% \item[a] the local portion of global sparse matrix
\item[eps] The stopping tolerance. \\ %% $A$. \\
Scope: {\bf global} \\ %% Scope: {\bf local} \\
Type: {\bf required}\\ %% Type: {\bf required}\\
Specified as: a real number. %% Specified as: a structured data of type \spdata.
\item[desc\_a] contains data structures for communications.\\ %% \item[prec] The data structure containing the preconditioner.\\
Scope: {\bf local} \\ %% Scope: {\bf local} \\
Type: {\bf required}\\ %% Type: {\bf required}\\
Specified as: a structured data of type \descdata. %% Specified as: a structured data of type \precdata.
\item[itmax] The maximum number of iterations to perform.\\ %% \item[b] The RHS vector. \\
Scope: {\bf global} \\ %% Scope: {\bf local} \\
Type: {\bf optional}\\ %% Type: {\bf required}\\
Default: $itmax = 1000$.\\ %% Specified as: a rank one array.
Specified as: an integer variable $itmax \ge 1$. %% \item[x] The initial guess. \\
\item[itrace] If $>0$ print out an informational message about %% Scope: {\bf local} \\
convergence every $itrace$ iterations.\\ %% Type: {\bf required}\\
Scope: {\bf global} \\ %% Specified as: a rank one array.
Type: {\bf optional}\\ %% \item[eps] The stopping tolerance. \\
\item[irst] An integer specifying the restarting iteration.\\ %% Scope: {\bf global} \\
Scope: {\bf global} \\ %% Type: {\bf required}\\
Type: {\bf optional}\\ %% Specified as: a real number.
\item[istop] An integer specifying the stopping criterion.\\ %% \item[desc\_a] contains data structures for communications.\\
Scope: {\bf global} \\ %% Scope: {\bf local} \\
Type: {\bf optional}\\ %% Type: {\bf required}\\
%% Specified as: a structured data of type \descdata.
\item[\bf On Return] %% \item[itmax] The maximum number of iterations to perform.\\
\item[x] The computed solution. \\ %% Scope: {\bf global} \\
Scope: {\bf local} \\ %% Type: {\bf optional}\\
Type: {\bf required}\\ %% Default: $itmax = 1000$.\\
Specified as: a rank one array. %% Specified as: an integer variable $itmax \ge 1$.
\item[iter] The number of iterations performed.\\ %% \item[itrace] If $>0$ print out an informational message about
Scope: {\bf global} \\ %% convergence every $itrace$ iterations.\\
Type: {\bf optional}\\ %% Scope: {\bf global} \\
Returned as: an integer variable. %% Type: {\bf optional}\\
\item[err] The error estimate on exit.\\ %% \item[istop] An integer specifying the stopping criterion.\\
Scope: {\bf global} \\ %% Scope: {\bf global} \\
Type: {\bf optional}\\ %% Type: {\bf optional}\\
Returned as: a real number.
\item[info] An error code.\\ %% \item[\bf On Return]
Scope: {\bf global} \\ %% \item[x] The computed solution. \\
Type: {\bf optional}\\ %% Scope: {\bf local} \\
Returned as: an integer variable. %% Type: {\bf required}\\
\end{description} %% Specified as: a rank one array.
%% \item[iter] The number of iterations performed.\\
%% Scope: {\bf global} \\
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Type: {\bf optional}\\
% %% Returned as: an integer variable.
% GMRES %% \item[err] The error estimate on exit.\\
% %% Scope: {\bf global} \\
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Type: {\bf optional}\\
\subroutine{psb\_gmres \label{gmres}}{GMRES Iterative Method} %% Returned as: a real number.
%% \item[info] Error code.\\
This subroutine implements the GMRES method with restarting. The %% Scope: {\bf local} \\
stopping criterion is the normwise backward error, in the infinity %% Type: {\bf required} \\
norm, i.e. the iteration is stopped when %% An integer value; 0 means no error has been detected.
\[ \frac{\|r\|}{(\|A\|\|x\|+\|b\|)} < eps \] %% \end{description}
or
\[ \frac{\|r_i\|}{\|b\|_2} < eps \]
according to the value passed through the istop argument (see later). %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% %
%% % BiCGSTAB(L)
\syntax{call psb\_gmres}{a,prec,b,x,eps,desc\_a,info,itmax,iter,err,itrace,irst,istop} %% %
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{description} %% \subroutine{psb\_bicgstabl \label{bicgstabl}}{BiCGSTAB-$l$ Iterative Method}
\item[\bf On Entry]
\item[a] the local portion of global sparse matrix %% This subroutine implements the BiCGSTAB-$l$ method with restarting. The
$A$. \\ %% stopping criterion is the normwise backward error, in the infinity
Scope: {\bf local} \\ %% norm, i.e. the iteration is stopped when
Type: {\bf required}\\ %% \[ \frac{\|r\|}{(\|A\|\|x\|+\|b\|)} < eps \]
Specified as: a structured data of type \spdata. %% or
\item[prec] The data structure containing the preconditioner.\\ %% \[ \frac{\|r_i\|}{\|b\|_2} < eps \]
Scope: {\bf local} \\ %% according to the value passed through the istop argument (see later).
Type: {\bf required}\\
Specified as: a structured data of type \precdata.
\item[b] The RHS vector. \\ %% \syntax{call psb\_bicgstab}{a,prec,b,x,eps,desc\_a,info,itmax,iter,err,itrace,irst,istop}
Scope: {\bf local} \\
Type: {\bf required}\\ %% \begin{description}
Specified as: a rank one array. %% \item[\bf On Entry]
\item[x] The initial guess. \\ %% \item[a] the local portion of global sparse matrix
Scope: {\bf local} \\ %% $A$. \\
Type: {\bf required}\\ %% Scope: {\bf local} \\
Specified as: a rank one array. %% Type: {\bf required}\\
\item[eps] The stopping tolerance. \\ %% Specified as: a structured data of type \spdata.
Scope: {\bf global} \\ %% \item[prec] The data structure containing the preconditioner.\\
Type: {\bf required}\\ %% Scope: {\bf local} \\
Specified as: a real number. %% Type: {\bf required}\\
\item[desc\_a] contains data structures for communications.\\ %% Specified as: a structured data of type \precdata.
Scope: {\bf local} \\ %% \item[b] The RHS vector. \\
Type: {\bf required}\\ %% Scope: {\bf local} \\
Specified as: a structured data of type \descdata. %% Type: {\bf required}\\
\item[itmax] The maximum number of iterations to perform.\\ %% Specified as: a rank one array.
Scope: {\bf global} \\ %% \item[x] The initial guess. \\
Type: {\bf optional}\\ %% Scope: {\bf local} \\
Default: $itmax = 1000$.\\ %% Type: {\bf required}\\
Specified as: an integer variable $itmax \ge 1$. %% Specified as: a rank one array.
\item[itrace] If $>0$ print out an informational message about %% \item[eps] The stopping tolerance. \\
convergence every $itrace$ iterations.\\ %% Scope: {\bf global} \\
Scope: {\bf global} \\ %% Type: {\bf required}\\
Type: {\bf optional}\\ %% Specified as: a real number.
\item[irst] An integer specifying the restart iteration.\\ %% \item[desc\_a] contains data structures for communications.\\
Scope: {\bf global} \\ %% Scope: {\bf local} \\
Type: {\bf optional}\\ %% Type: {\bf required}\\
\item[istop] An integer specifying the stopping criterion.\\ %% Specified as: a structured data of type \descdata.
Scope: {\bf global} \\ %% \item[itmax] The maximum number of iterations to perform.\\
Type: {\bf optional}\\ %% Scope: {\bf global} \\
%% Type: {\bf optional}\\
\item[\bf On Return] %% Default: $itmax = 1000$.\\
\item[x] The computed solution. \\ %% Specified as: an integer variable $itmax \ge 1$.
Scope: {\bf local} \\ %% \item[itrace] If $>0$ print out an informational message about
Type: {\bf required}\\ %% convergence every $itrace$ iterations.\\
Specified as: a rank one array. %% Scope: {\bf global} \\
\item[iter] The number of iterations performed.\\ %% Type: {\bf optional}\\
Scope: {\bf global} \\ %% \item[irst] An integer specifying the restarting iteration.\\
Type: {\bf optional}\\ %% Scope: {\bf global} \\
Returned as: an integer variable. %% Type: {\bf optional}\\
\item[err] The error estimate on exit.\\ %% \item[istop] An integer specifying the stopping criterion.\\
Scope: {\bf global} \\ %% Scope: {\bf global} \\
Type: {\bf optional}\\ %% Type: {\bf optional}\\
Returned as: a real number.
\item[info] An error code.\\ %% \item[\bf On Return]
Scope: {\bf global} \\ %% \item[x] The computed solution. \\
Type: {\bf optional}\\ %% Scope: {\bf local} \\
Returned as: an integer variable. %% Type: {\bf required}\\
\end{description} %% 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}\\ Type: {\bf required}\\
Error code: if no error, 0 is returned. Error code: if no error, 0 is returned.
\end{description} \end{description}
\section*{Usage Notes} \subsection*{Usage Notes}
%% The PSBLAS 2.0 contains a number of preconditioners, ranging from a %% The PSBLAS 2.0 contains a number of preconditioners, ranging from a
%% simple diagonal scaling to 2-level domain decomposition. These %% simple diagonal scaling to 2-level domain decomposition. These
%% preconditioners may use the SuperLU or the UMFPACK software, if %% preconditioners may use the SuperLU or the UMFPACK software, if
@ -169,10 +169,10 @@ Specified as: a character.
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Specified as: a precondtioner data structure \precdata\\ Specified as: a precondtioner data structure \precdata\\
\item[info] the return error code.\\ \item[info] Error code.\\
Scope: {\bf global} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Specified as: an integer, upon successful completion $info=0$ \\ An integer value; 0 means no error has been detected.
\end{description} \end{description}
@ -212,10 +212,10 @@ Specified as: a double precision array.
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Specified as: a double precision array. Specified as: a double precision array.
\item[info] the return error code.\\ \item[info] Error code.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Specified as: an integer, upon successful completion $info=0$ .\\ An integer value; 0 means no error has been detected.
\end{description} \end{description}

@ -88,10 +88,10 @@ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Specified as: a rank one or two array containing numbers of the type Specified as: a rank one or two array containing numbers of the type
indicated in Table~\ref{tab:f90axpby}. indicated in Table~\ref{tab:f90axpby}.
\item[info] the local portion of result submatrix $y$.\\ \item[info] Error code.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
An integer value that contains an error code. An integer value; 0 means no error has been detected.
\end{description} \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$.\\ \item[Function value] is the dot product of subvectors $x$ and $y$.\\
Scope: {\bf global} \\ Scope: {\bf global} \\
Specified as: a number of the data type indicated in Table~\ref{tab:f90dot}. 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} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
An integer value that contains an error code. An integer value; 0 means no error has been detected.
\end{description} \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 This subroutine computes a series of dot products among the columns of
two dense matrices $x$ and $y$: 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 used. If $x$ and $y$ are of rank one, then $res$ is a scalar, else it
is a rank one array. 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{table}[h]
\begin{center} \begin{center}
\begin{tabular}{ll} \begin{tabular}{ll}
\hline \hline
$res$, $x$, $y$ & {\bf Subroutine}\\ $res$, $x$, $y$ & {\bf Subroutine}\\
\hline \hline
Long Precision Real & psb\_gedot \\ Long Precision Real & psb\_gedots \\
Long Precision Complex & psb\_gedot \\ Long Precision Complex & psb\_gedots \\
\hline \hline
\end{tabular} \end{tabular}
\end{center} \end{center}
@ -233,10 +233,10 @@ Specified as: a structured data of type \descdata.
Scope: {\bf global} \\ Scope: {\bf global} \\
Specified as: a number or a rank-one array of the data type indicated Specified as: a number or a rank-one array of the data type indicated
in Table~\ref{tab:f90dot}. in Table~\ref{tab:f90dot}.
\item[info] \item[info] Error code.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
An integer value that contains an error code. An integer value; 0 means no error has been detected.
\end{description} \end{description}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@ -304,10 +304,10 @@ Specified as: a structured data of type \descdata.
\item[Function value] is the infinity norm of subvector $x$.\\ \item[Function value] is the infinity norm of subvector $x$.\\
Scope: {\bf global} \\ Scope: {\bf global} \\
Specified as: a long precision real number. Specified as: a long precision real number.
\item[info] \item[info] Error code.\\
Scope: {\bf global} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
An integer value that contains an error code. An integer value; 0 means no error has been detected.
\end{description} \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 This subroutine computes a series of infinity norms on the columns of
a dense matrix $x$: a dense matrix $x$:
\[ res(i) \leftarrow \max_k |x(k,i)| \] \[ 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{table}[h]
\begin{center} \begin{center}
\begin{tabular}{lll} \begin{tabular}{lll}
\hline \hline
$res$& $x$& {\bf Subroutine}\\ $res$& $x$& {\bf Subroutine}\\
\hline \hline
Long Precision Real &Long Precision Real & psb\_geamax\\ Long Precision Real &Long Precision Real & psb\_geamaxs\\
Long Precision Real &Long Precision Complex & psb\_geamax\\ Long Precision Real &Long Precision Complex & psb\_geamaxs\\
\hline \hline
\end{tabular} \end{tabular}
\end{center} \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$.\\ \item[res] is the infinity norm of the columns of $x$.\\
Scope: {\bf global} \\ Scope: {\bf global} \\
Specified as: a number or a rank-one array of long precision real numbers. Specified as: a number or a rank-one array of long precision real numbers.
\item[info] \item[info] Error code.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
An integer value that contains an error code. An integer value; 0 means no error has been detected.
\end{description} \end{description}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@ -372,7 +372,7 @@ This function computes the 1-norm of a vector $x$.\\
If $x$ is a double precision real vector If $x$ is a double precision real vector
computes 1-norm as: computes 1-norm as:
\[ asum \leftarrow \|x_i\|\] \[ 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\] \[ 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$.\\ \item[Function value] is the 1-norm of vector $x$.\\
Scope: {\bf global} \\ Scope: {\bf global} \\
Specified as: a long precision real number. 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} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
An integer value that contains an error code. An integer value; 0 means no error has been detected.
\end{description} \end{description}
@ -482,12 +538,72 @@ Specified as: a structured data of type \descdata.
Scope: {\bf global} \\ Scope: {\bf global} \\
Type: {\bf required} \\ Type: {\bf required} \\
Specified as: a long precision real number. 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} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
An integer value that contains an error code. An integer value; 0 means no error has been detected.
\end{description} \end{description}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% INFINITY-NORM OF A MATRIX % 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$.\\ \item[Function value] is the infinity-norm of sparse submatrix $A$.\\
Scope: {\bf global} \\ Scope: {\bf global} \\
Specified as: a long precision real number. Specified as: a long precision real number.
\item[info] \item[info] Error code.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
An integer value that contains an error code. An integer value; 0 means no error has been detected.
\end{description} \end{description}
@ -589,8 +705,8 @@ Long Precision Complex & psb\_spmm \\
\caption{Data types\label{tab:f90spmm}} \caption{Data types\label{tab:f90spmm}}
\end{table} \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} trans, work}
\begin{description} \begin{description}
@ -674,10 +790,10 @@ Type: {\bf required} \\
Specified as: an array of rank one or two Specified as: an array of rank one or two
containing numbers of type specified in containing numbers of type specified in
Table~\ref{tab:f90spmm}. Table~\ref{tab:f90spmm}.
\item[info] \item[info] Error code.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
An integer value that contains an error code. An integer value; 0 means no error has been detected.
\end{description} \end{description}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@ -713,8 +829,8 @@ where:
\item[$P_r, P_c$] are the permutation matrices. \item[$P_r, P_c$] are the permutation matrices.
\end{description} \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} trans, unit, choice, diag, work}
\begin{table}[h] \begin{table}[h]
@ -826,10 +942,10 @@ Type: {\bf required} \\
Specified as: an array of rank one or two Specified as: an array of rank one or two
containing numbers of type specified in containing numbers of type specified in
Table~\ref{tab:f90spsm}. Table~\ref{tab:f90spsm}.
\item[info] \item[info] Error code.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
An integer value that contains an error code. An integer value; 0 means no error has been detected.
\end{description} \end{description}

@ -53,10 +53,10 @@ Specified as: an integer array.
Scope:{\bf local}.\\ Scope:{\bf local}.\\
Type:{\bf required}.\\ Type:{\bf required}.\\
Specified as: a structured data of type \descdata. Specified as: a structured data of type \descdata.
\item[info] Error code. \item[info] Error code.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Specified as: an integer variable.\\ An integer value; 0 means no error has been detected.
\end{description} \end{description}
\section*{Notes} \section*{Notes}
@ -124,10 +124,10 @@ Specified as: an integer array of length $nz$.
Scope:{\bf local}.\\ Scope:{\bf local}.\\
Type:{\bf required}.\\ Type:{\bf required}.\\
Specified as: a structured data of type \descdata. Specified as: a structured data of type \descdata.
\item[info] Error code. \item[info] Error code.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Specified as: an integer variable. An integer value; 0 means no error has been detected.
\end{description} \end{description}
\section*{Notes} \section*{Notes}
\begin{enumerate} \begin{enumerate}
@ -154,10 +154,10 @@ Specified as: a structured data of type \descdata.
\begin{description} \begin{description}
\item[\bf On Return] \item[\bf On Return]
\item[info] Error code. \item[info] Error code.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Specified as: an integer variable. An integer value; 0 means no error has been detected.
%\item[arg] %\item[arg]
\end{description} \end{description}
\section*{Notes} \section*{Notes}
@ -190,10 +190,10 @@ Specified as: a structured data of type \descdata.
Scope:{\bf local}.\\ Scope:{\bf local}.\\
Type:{\bf required}.\\ Type:{\bf required}.\\
Specified as: a structured data of type \descdata. Specified as: a structured data of type \descdata.
\item[info] Error code. \item[info] Error code.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Specified as: an integer variable.\\ An integer value; 0 means no error has been detected.
\end{description} \end{description}
@ -214,10 +214,10 @@ Specified as: a structured data of type \descdata.
\begin{description} \begin{description}
\item[\bf On Return] \item[\bf On Return]
\item[info] Error code. \item[info] Error code.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Specified as: an integer variable. An integer value; 0 means no error has been detected.
\end{description} \end{description}
@ -309,10 +309,10 @@ Specified as: an integer value.
Scope:{\bf local}\\ Scope:{\bf local}\\
Type:{\bf required}\\ Type:{\bf required}\\
Specified as: a structured data of type \spdata. Specified as: a structured data of type \spdata.
\item[info] Error code. \item[info] Error code.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Specified as: an integer variable. An integer value; 0 means no error has been detected.
\end{description} \end{description}
\section*{Notes} \section*{Notes}
\begin{enumerate} \begin{enumerate}
@ -379,6 +379,7 @@ Specified as: a variable of type \descdata.\\
\item[info] Error code.\\ \item[info] Error code.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
An integer value; 0 means no error has been detected.
\end{description} \end{description}
\section*{Notes} \section*{Notes}
@ -388,7 +389,7 @@ Type: {\bf required}\\
\item On entry to this routine the sparse matrix may be in either the \item On entry to this routine the sparse matrix may be in either the
build or update state. build or update state.
\item If the descriptor is in the build state, then the sparse matrix \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 (implicitly) call \verb|psb_cdins| to add entries to the sparsity
pattern; pattern;
\item If the descriptor is in the assembled state, then any entries in \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}\\ Scope:{\bf local}\\
Type:{\bf required}\\ Type:{\bf required}\\
Specified as: a structured data of type \spdata. Specified as: a structured data of type \spdata.
\item[info] Error code. \item[info] Error code.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Specified as: an integer variable. An integer value; 0 means no error has been detected.
\end{description} \end{description}
\section*{Notes} \section*{Notes}
@ -510,10 +511,10 @@ Specified as: a structured data of type \descdata.
\begin{description} \begin{description}
\item[\bf On Return] \item[\bf On Return]
\item[info] Error code. \item[info] Error code.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Specified as: an integer variable. An integer value; 0 means no error has been detected.
\end{description} \end{description}
@ -544,10 +545,10 @@ Default: true.
\begin{description} \begin{description}
\item[\bf On Return] \item[\bf On Return]
\item[info] Error code. \item[info] Error code.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Specified as: an integer variable. An integer value; 0 means no error has been detected.
\end{description} \end{description}
\section*{Notes} \section*{Notes}
\begin{enumerate} \begin{enumerate}
@ -631,10 +632,10 @@ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Specified as: a rank one or two array with the ALLOCATABLE Specified as: a rank one or two array with the ALLOCATABLE
attribute, of type real, complex or integer.\\ attribute, of type real, complex or integer.\\
\item[info] Error code. \item[info] Error code.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Specified as: Integer scalar. An integer value; 0 means no error has been detected.
\end{description} \end{description}
@ -680,10 +681,10 @@ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Specified as: a rank one or two array with the ALLOCATABLE Specified as: a rank one or two array with the ALLOCATABLE
attribute, of type real, complex or integer.\\ attribute, of type real, complex or integer.\\
\item[info] Error code. \item[info] Error code.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Specified as: an integer variable. An integer value; 0 means no error has been detected.
\end{description} \end{description}
\section*{Notes} \section*{Notes}
@ -719,7 +720,7 @@ attribute, of type real, complex or integer.\\
\item[info] Error code.\\ \item[info] Error code.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Specified as: Integer scalar.\\ An integer value; 0 means no error has been detected.
\end{description} \end{description}
% %
%% psb_free %% %% psb_free %%
@ -748,7 +749,7 @@ Specified as: a variable of type \descdata.\\
\item[info] Error code.\\ \item[info] Error code.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Specified as: Integer scalar.\\ An integer value; 0 means no error has been detected.
\end{description} \end{description}
@ -784,7 +785,7 @@ Specified as: a variable of type \descdata.\\
\item[info] Error code.\\ \item[info] Error code.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Specified as: Integer scalar.\\ An integer value; 0 means no error has been detected.
\end{description} \end{description}
@ -832,10 +833,10 @@ Specified as: a rank one integer array.
Scope: {\bf global} \\ Scope: {\bf global} \\
Type: {\bf optional}\\ Type: {\bf optional}\\
Specified as: a rank one integer array. Specified as: a rank one integer array.
\item[info] Error code. \item[info] Error code.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Specified as: an integer variable. An integer value; 0 means no error has been detected.
\end{description} \end{description}
\section*{Notes} \section*{Notes}
@ -884,41 +885,10 @@ Specified as: a rank one integer array.
Scope: {\bf global} \\ Scope: {\bf global} \\
Type: {\bf optional}\\ Type: {\bf optional}\\
Specified as: a rank one integer array. 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.
\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.
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Specified as: Integer scalar. An integer value; 0 means no error has been detected.
\end{description} \end{description}
@ -945,17 +915,17 @@ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Specified as: a rank one array with the ALLOCATABLE Specified as: a rank one array with the ALLOCATABLE
attribute, of type integer.\\ attribute, of type integer.\\
\item[info] Error code. \item[info] Error code.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Specified as: an integer variable. An integer value; 0 means no error has been detected.
\end{description} \end{description}
\section*{Notes} \section*{Notes}
\begin{enumerate} \begin{enumerate}
\item If there are no boundary elements (i.e., if the local part of \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 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 \item Otherwise the size of \verb|bndel| will be exactly equal to the
number of boundary elements. number of boundary elements.
\end{enumerate} \end{enumerate}
@ -980,159 +950,21 @@ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Specified as: a rank one array with the ALLOCATABLE Specified as: a rank one array with the ALLOCATABLE
attribute, of type integer.\\ attribute, of type integer.\\
\item[info] Error code. \item[info] Error code.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Specified as: an integer variable. An integer value; 0 means no error has been detected.
\end{description} \end{description}
\section*{Notes} \section*{Notes}
\begin{enumerate} \begin{enumerate}
\item If there are no overlap elements the output vector is set \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 \item Otherwise the size of \verb|ovrel| will be exactly equal to the
number of overlap elements. number of overlap elements.
\end{enumerate} \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: %%% Local Variables:

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

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