|
|
|
@ -5,16 +5,15 @@
|
|
|
|
|
%
|
|
|
|
|
%% psb_cdall %%
|
|
|
|
|
%
|
|
|
|
|
\subsection*{psb\_cdall --- Allocates a communication descriptor}
|
|
|
|
|
\addcontentsline{toc}{subsection}{psb\_cdall}
|
|
|
|
|
\subroutine{psb\_cdall}{Allocates a communication descriptor}
|
|
|
|
|
|
|
|
|
|
\begin{verbatim}
|
|
|
|
|
\begin{lstlisting}
|
|
|
|
|
call psb_cdall(icontxt, desc_a, info,mg=mg,parts=parts)
|
|
|
|
|
call psb_cdall(icontxt, desc_a, info,vg=vg,[mg=mg,flag=flag])
|
|
|
|
|
call psb_cdall(icontxt, desc_a, info,vl=vl,[nl=nl,globalcheck=.true.,lidx=lidx])
|
|
|
|
|
call psb_cdall(icontxt, desc_a, info,nl=nl)
|
|
|
|
|
call psb_cdall(icontxt, desc_a, info,mg=mg,repl=.true.)
|
|
|
|
|
\end{verbatim}
|
|
|
|
|
\end{lstlisting}
|
|
|
|
|
|
|
|
|
|
This subroutine initializes the communication descriptor associated
|
|
|
|
|
with an index space. One of the optional arguments
|
|
|
|
@ -109,14 +108,14 @@ An integer value; 0 means no error has been detected.
|
|
|
|
|
optional argument is specified, then it is mandatory to
|
|
|
|
|
specify the argument \verb|mg| as well.
|
|
|
|
|
The subroutine must conform to the following interface:
|
|
|
|
|
\begin{verbatim}
|
|
|
|
|
\begin{lstlisting}
|
|
|
|
|
interface
|
|
|
|
|
subroutine psb_parts(glob_index,mg,np,pv,nv)
|
|
|
|
|
integer, intent (in) :: glob_index,np,mg
|
|
|
|
|
integer, intent (out) :: nv, pv(*)
|
|
|
|
|
end subroutine psb_parts
|
|
|
|
|
end interface
|
|
|
|
|
\end{verbatim}
|
|
|
|
|
\end{lstlisting}
|
|
|
|
|
The input arguments are:
|
|
|
|
|
\begin{description}
|
|
|
|
|
\item[glob\_index] The global index to be mapped;
|
|
|
|
@ -196,13 +195,12 @@ An integer value; 0 means no error has been detected.
|
|
|
|
|
%
|
|
|
|
|
%% psb_cdins %%
|
|
|
|
|
%
|
|
|
|
|
\clearpage\subsection*{psb\_cdins --- Communication descriptor insert routine}
|
|
|
|
|
\addcontentsline{toc}{subsection}{psb\_cdins}
|
|
|
|
|
\clearpage\subroutine{psb\_cdins}{Communication descriptor insert routine}
|
|
|
|
|
|
|
|
|
|
\begin{verbatim}
|
|
|
|
|
\begin{lstlisting}
|
|
|
|
|
call psb_cdins(nz, ia, ja, desc_a, info [,ila,jla])
|
|
|
|
|
call psb_cdins(nz,ja,desc,info[,jla,mask,lidx])
|
|
|
|
|
\end{verbatim}
|
|
|
|
|
\end{lstlisting}
|
|
|
|
|
|
|
|
|
|
This subroutine examines the edges of the graph associated with the
|
|
|
|
|
discretization mesh (and isomorphic to the sparsity pattern of a
|
|
|
|
@ -291,12 +289,11 @@ nor the end vertex belong to the current process.
|
|
|
|
|
%
|
|
|
|
|
%% psb_cdasb %%
|
|
|
|
|
%
|
|
|
|
|
\clearpage\subsection*{psb\_cdasb --- Communication descriptor assembly routine}
|
|
|
|
|
\addcontentsline{toc}{subsection}{psb\_cdasb}
|
|
|
|
|
\clearpage\subroutine{psb\_cdasb}{Communication descriptor assembly routine}
|
|
|
|
|
|
|
|
|
|
\begin{verbatim}
|
|
|
|
|
\begin{lstlisting}
|
|
|
|
|
call psb_cdasb(desc_a, info)
|
|
|
|
|
\end{verbatim}
|
|
|
|
|
\end{lstlisting}
|
|
|
|
|
|
|
|
|
|
\begin{description}
|
|
|
|
|
\item[Type:] Synchronous.
|
|
|
|
@ -333,12 +330,11 @@ An integer value; 0 means no error has been detected.
|
|
|
|
|
%
|
|
|
|
|
%% psb_cdcpy %%
|
|
|
|
|
%
|
|
|
|
|
\clearpage\subsection*{psb\_cdcpy --- Copies a communication descriptor}
|
|
|
|
|
\addcontentsline{toc}{subsection}{psb\_cdcpy}
|
|
|
|
|
\clearpage\subroutine{psb\_cdcpy}{Copies a communication descriptor}
|
|
|
|
|
|
|
|
|
|
\begin{verbatim}
|
|
|
|
|
\begin{lstlisting}
|
|
|
|
|
call psb_cdcpy(desc_in, desc_out, info)
|
|
|
|
|
\end{verbatim}
|
|
|
|
|
\end{lstlisting}
|
|
|
|
|
|
|
|
|
|
\begin{description}
|
|
|
|
|
\item[Type:] Asynchronous.
|
|
|
|
@ -369,12 +365,11 @@ An integer value; 0 means no error has been detected.
|
|
|
|
|
%
|
|
|
|
|
%% psb_cdfree %%
|
|
|
|
|
%
|
|
|
|
|
\clearpage\subsection*{psb\_cdfree --- Frees a communication descriptor}
|
|
|
|
|
\addcontentsline{toc}{subsection}{psb\_cdfree}
|
|
|
|
|
\clearpage\subroutine{psb\_cdfree}{Frees a communication descriptor}
|
|
|
|
|
|
|
|
|
|
\begin{verbatim}
|
|
|
|
|
\begin{lstlisting}
|
|
|
|
|
call psb_cdfree(desc_a, info)
|
|
|
|
|
\end{verbatim}
|
|
|
|
|
\end{lstlisting}
|
|
|
|
|
|
|
|
|
|
\begin{description}
|
|
|
|
|
\item[Type:] Synchronous.
|
|
|
|
@ -400,13 +395,12 @@ An integer value; 0 means no error has been detected.
|
|
|
|
|
%
|
|
|
|
|
%% psb_cdcpy %%
|
|
|
|
|
%
|
|
|
|
|
\clearpage\subsection*{psb\_cdbldext --- Build an extended communication
|
|
|
|
|
\clearpage\subroutine{psb\_cdbldext}{Build an extended communication
|
|
|
|
|
descriptor}
|
|
|
|
|
\addcontentsline{toc}{subsection}{psb\_cdbldext}
|
|
|
|
|
|
|
|
|
|
\begin{verbatim}
|
|
|
|
|
\begin{lstlisting}
|
|
|
|
|
call psb_cdbldext(a,desc_a,nl,desc_out, info, extype)
|
|
|
|
|
\end{verbatim}
|
|
|
|
|
\end{lstlisting}
|
|
|
|
|
|
|
|
|
|
This subroutine builds an extended communication descriptor, based on
|
|
|
|
|
the input descriptor \verb|desc_a| and on the stencil specified
|
|
|
|
@ -470,9 +464,8 @@ An integer value; 0 means no error has been detected.
|
|
|
|
|
%% %
|
|
|
|
|
%% %% psb_cdren %%
|
|
|
|
|
%% %
|
|
|
|
|
%% \subsection*{psb\_cdren --- Applies a renumeration to a
|
|
|
|
|
%% \subroutine{psb\_cdren}{Applies a renumeration to a
|
|
|
|
|
%% communication descriptor}
|
|
|
|
|
%% \addcontentsline{toc}{subsection}{psb\_cdren}
|
|
|
|
|
|
|
|
|
|
%% \syntax{call psb\_cdren}{trans, iperm, desc\_a, info}
|
|
|
|
|
|
|
|
|
@ -507,8 +500,7 @@ An integer value; 0 means no error has been detected.
|
|
|
|
|
%
|
|
|
|
|
%% psb_descprt %%
|
|
|
|
|
%
|
|
|
|
|
%% \subsection*{psb\_cdprt --- Prints a descriptor}
|
|
|
|
|
%%\addcontentsline{toc}{subsection}{psb\_cdprt}
|
|
|
|
|
%% \subroutine{psb\_cdprt}{Prints a descriptor}
|
|
|
|
|
|
|
|
|
|
%% \syntax{call psb\_cdprt}{iout, desc\_a, glob, short}
|
|
|
|
|
|
|
|
|
@ -537,12 +529,11 @@ An integer value; 0 means no error has been detected.
|
|
|
|
|
%
|
|
|
|
|
%% psb_spalloc %%
|
|
|
|
|
%
|
|
|
|
|
\clearpage\subsection*{psb\_spall --- Allocates a sparse matrix}
|
|
|
|
|
\addcontentsline{toc}{subsection}{psb\_spall}
|
|
|
|
|
\clearpage\subroutine{psb\_spall}{Allocates a sparse matrix}
|
|
|
|
|
|
|
|
|
|
\begin{verbatim}
|
|
|
|
|
\begin{lstlisting}
|
|
|
|
|
call psb_spall(a, desc_a, info, nnz)
|
|
|
|
|
\end{verbatim}
|
|
|
|
|
\end{lstlisting}
|
|
|
|
|
|
|
|
|
|
\begin{description}
|
|
|
|
|
\item[Type:] Synchronous.
|
|
|
|
@ -589,13 +580,12 @@ An integer value; 0 means no error has been detected.
|
|
|
|
|
%
|
|
|
|
|
%% psb_spins %%
|
|
|
|
|
%
|
|
|
|
|
\clearpage\subsection*{psb\_spins --- Insert a cloud of elements into a sparse
|
|
|
|
|
\clearpage\subroutine{psb\_spins}{Insert a cloud of elements into a sparse
|
|
|
|
|
matrix}
|
|
|
|
|
\addcontentsline{toc}{subsection}{psb\_spins}
|
|
|
|
|
|
|
|
|
|
\begin{verbatim}
|
|
|
|
|
\begin{lstlisting}
|
|
|
|
|
call psb_spins(nz, ia, ja, val, a, desc_a, info [,local])
|
|
|
|
|
\end{verbatim}
|
|
|
|
|
\end{lstlisting}
|
|
|
|
|
|
|
|
|
|
\begin{description}
|
|
|
|
|
\item[Type:] Asynchronous.
|
|
|
|
@ -695,12 +685,11 @@ An integer value; 0 means no error has been detected.
|
|
|
|
|
%
|
|
|
|
|
%% psb_spasb %%
|
|
|
|
|
%
|
|
|
|
|
\clearpage\subsection*{psb\_spasb --- Sparse matrix assembly routine}
|
|
|
|
|
\addcontentsline{toc}{subsection}{psb\_spasb}
|
|
|
|
|
\clearpage\subroutine{psb\_spasb}{Sparse matrix assembly routine}
|
|
|
|
|
|
|
|
|
|
\begin{verbatim}
|
|
|
|
|
\begin{lstlisting}
|
|
|
|
|
call psb_spasb(a, desc_a, info, afmt, upd, dupl, mold)
|
|
|
|
|
\end{verbatim}
|
|
|
|
|
\end{lstlisting}
|
|
|
|
|
|
|
|
|
|
\begin{description}
|
|
|
|
|
\item[Type:] Synchronous.
|
|
|
|
@ -770,9 +759,8 @@ An integer value; 0 means no error has been detected.
|
|
|
|
|
%% %
|
|
|
|
|
%% %% psb_spcnv %%
|
|
|
|
|
%% %
|
|
|
|
|
%% \subsection*{psb\_spcnv --- Converts a sparse matrix storage
|
|
|
|
|
%% \subroutine{psb\_spcnv}{Converts a sparse matrix storage
|
|
|
|
|
%% format}
|
|
|
|
|
%%\addcontentsline{toc}{subsection}{psb\_spcnv}
|
|
|
|
|
|
|
|
|
|
%% \syntax{call psb\_spcnv}{a, b, desc\_a, info}
|
|
|
|
|
|
|
|
|
@ -805,12 +793,11 @@ An integer value; 0 means no error has been detected.
|
|
|
|
|
%
|
|
|
|
|
%% psb_spfree %%
|
|
|
|
|
%
|
|
|
|
|
\clearpage\subsection*{psb\_spfree --- Frees a sparse matrix}
|
|
|
|
|
\addcontentsline{toc}{subsection}{psb\_spfree}
|
|
|
|
|
\clearpage\subroutine{psb\_spfree}{Frees a sparse matrix}
|
|
|
|
|
|
|
|
|
|
\begin{verbatim}
|
|
|
|
|
\begin{lstlisting}
|
|
|
|
|
call psb_spfree(a, desc_a, info)
|
|
|
|
|
\end{verbatim}
|
|
|
|
|
\end{lstlisting}
|
|
|
|
|
|
|
|
|
|
\begin{description}
|
|
|
|
|
\item[Type:] Synchronous.
|
|
|
|
@ -842,13 +829,12 @@ An integer value; 0 means no error has been detected.
|
|
|
|
|
%
|
|
|
|
|
%% psb_sprn %%
|
|
|
|
|
%
|
|
|
|
|
\clearpage\subsection*{psb\_sprn --- Reinit sparse matrix structure for psblas
|
|
|
|
|
\clearpage\subroutine{psb\_sprn}{Reinit sparse matrix structure for psblas
|
|
|
|
|
routines.}
|
|
|
|
|
\addcontentsline{toc}{subsection}{psb\_sprn}
|
|
|
|
|
|
|
|
|
|
\begin{verbatim}
|
|
|
|
|
\begin{lstlisting}
|
|
|
|
|
call psb_sprn(a, decsc_a, info, clear)
|
|
|
|
|
\end{verbatim}
|
|
|
|
|
\end{lstlisting}
|
|
|
|
|
|
|
|
|
|
\begin{description}
|
|
|
|
|
\item[Type:] Synchronous.
|
|
|
|
@ -886,8 +872,7 @@ An integer value; 0 means no error has been detected.
|
|
|
|
|
%
|
|
|
|
|
%% psb_spupdate %%
|
|
|
|
|
%
|
|
|
|
|
%% \subsection*{psb\_spupdate --- Updates a sparse matrix.}
|
|
|
|
|
%%\addcontentsline{toc}{subsection}{psb\_spupdate}
|
|
|
|
|
%% \subroutine{psb\_spupdate}{Updates a sparse matrix.}
|
|
|
|
|
|
|
|
|
|
%% \syntax{call psb\_spupdate}{a, ia, ja, blck, desc\_a, info, ix, jx, updflag}
|
|
|
|
|
|
|
|
|
@ -901,9 +886,8 @@ An integer value; 0 means no error has been detected.
|
|
|
|
|
%% %
|
|
|
|
|
%% %% psb_csrp %%
|
|
|
|
|
%% %
|
|
|
|
|
%% \subsection*{psb\_csrp --- Applies a right permutation to a sparse
|
|
|
|
|
%% \subroutine{psb\_csrp}{Applies a right permutation to a sparse
|
|
|
|
|
%% matrix}
|
|
|
|
|
%%\addcontentsline{toc}{subsection}{psb\_csrp}
|
|
|
|
|
|
|
|
|
|
%% \syntax{call psb\_csrp}{trans, iperm, a, info}
|
|
|
|
|
|
|
|
|
@ -933,12 +917,11 @@ An integer value; 0 means no error has been detected.
|
|
|
|
|
%
|
|
|
|
|
%% psb_alloc %%
|
|
|
|
|
%
|
|
|
|
|
\clearpage\subsection*{psb\_geall --- Allocates a dense matrix}
|
|
|
|
|
\addcontentsline{toc}{subsection}{psb\_geall}
|
|
|
|
|
\clearpage\subroutine{psb\_geall}{Allocates a dense matrix}
|
|
|
|
|
|
|
|
|
|
\begin{verbatim}
|
|
|
|
|
\begin{lstlisting}
|
|
|
|
|
call psb_geall(x, desc_a, info, n, lb)
|
|
|
|
|
\end{verbatim}
|
|
|
|
|
\end{lstlisting}
|
|
|
|
|
|
|
|
|
|
\begin{description}
|
|
|
|
|
\item[Type:] Synchronous.
|
|
|
|
@ -981,12 +964,11 @@ An integer value; 0 means no error has been detected.
|
|
|
|
|
%
|
|
|
|
|
%% psb_ins %%
|
|
|
|
|
%
|
|
|
|
|
\clearpage\subsection*{psb\_geins --- Dense matrix insertion routine}
|
|
|
|
|
\addcontentsline{toc}{subsection}{psb\_geins}
|
|
|
|
|
\clearpage\subroutine{psb\_geins}{Dense matrix insertion routine}
|
|
|
|
|
|
|
|
|
|
\begin{verbatim}
|
|
|
|
|
\begin{lstlisting}
|
|
|
|
|
call psb_geins(m, irw, val, x, desc_a, info [,dupl,local])
|
|
|
|
|
\end{verbatim}
|
|
|
|
|
\end{lstlisting}
|
|
|
|
|
|
|
|
|
|
\begin{description}
|
|
|
|
|
\item[Type:] Asynchronous.
|
|
|
|
@ -1054,12 +1036,11 @@ An integer value; 0 means no error has been detected.
|
|
|
|
|
%
|
|
|
|
|
%% psb_asb %%
|
|
|
|
|
%
|
|
|
|
|
\clearpage\subsection*{psb\_geasb --- Assembly a dense matrix}
|
|
|
|
|
\addcontentsline{toc}{subsection}{psb\_geasb}
|
|
|
|
|
\clearpage\subroutine{psb\_geasb}{Assembly a dense matrix}
|
|
|
|
|
|
|
|
|
|
\begin{verbatim}
|
|
|
|
|
\begin{lstlisting}
|
|
|
|
|
call psb_geasb(x, desc_a, info, mold)
|
|
|
|
|
\end{verbatim}
|
|
|
|
|
\end{lstlisting}
|
|
|
|
|
|
|
|
|
|
\begin{description}
|
|
|
|
|
\item[Type:] Synchronous.
|
|
|
|
@ -1094,12 +1075,11 @@ An integer value; 0 means no error has been detected.
|
|
|
|
|
%
|
|
|
|
|
%% psb_free %%
|
|
|
|
|
%
|
|
|
|
|
\clearpage\subsection*{psb\_gefree --- Frees a dense matrix}
|
|
|
|
|
\addcontentsline{toc}{subsection}{psb\_gefree}
|
|
|
|
|
\clearpage\subroutine{psb\_gefree}{Frees a dense matrix}
|
|
|
|
|
|
|
|
|
|
\begin{verbatim}
|
|
|
|
|
\begin{lstlisting}
|
|
|
|
|
call psb_gefree(x, desc_a, info)
|
|
|
|
|
\end{verbatim}
|
|
|
|
|
\end{lstlisting}
|
|
|
|
|
|
|
|
|
|
\begin{description}
|
|
|
|
|
\item[Type:] Synchronous.
|
|
|
|
@ -1132,13 +1112,12 @@ An integer value; 0 means no error has been detected.
|
|
|
|
|
%
|
|
|
|
|
%% psb_gelp %%
|
|
|
|
|
%
|
|
|
|
|
\clearpage\subsection*{psb\_gelp --- Applies a left permutation to a dense
|
|
|
|
|
\clearpage\subroutine{psb\_gelp}{Applies a left permutation to a dense
|
|
|
|
|
matrix}
|
|
|
|
|
\addcontentsline{toc}{subsection}{psb\_gelp}
|
|
|
|
|
|
|
|
|
|
\begin{verbatim}
|
|
|
|
|
\begin{lstlisting}
|
|
|
|
|
call psb_gelp(trans, iperm, x, info)
|
|
|
|
|
\end{verbatim}
|
|
|
|
|
\end{lstlisting}
|
|
|
|
|
|
|
|
|
|
\begin{description}
|
|
|
|
|
\item[Type:] Asynchronous.
|
|
|
|
@ -1173,14 +1152,13 @@ An integer value; 0 means no error has been detected.
|
|
|
|
|
%
|
|
|
|
|
%% psb_glob_to_loc %%
|
|
|
|
|
%
|
|
|
|
|
\clearpage\subsection*{psb\_glob\_to\_loc --- Global to local indices
|
|
|
|
|
\clearpage\subroutine{psb\_glob\_to\_loc}{Global to local indices
|
|
|
|
|
convertion}
|
|
|
|
|
\addcontentsline{toc}{subsection}{psb\_glob\_to\_loc}
|
|
|
|
|
|
|
|
|
|
\begin{verbatim}
|
|
|
|
|
\begin{lstlisting}
|
|
|
|
|
call psb_glob_to_loc(x, y, desc_a, info, iact,owned)
|
|
|
|
|
call psb_glob_to_loc(x, desc_a, info, iact,owned)
|
|
|
|
|
\end{verbatim}
|
|
|
|
|
\end{lstlisting}
|
|
|
|
|
|
|
|
|
|
\begin{description}
|
|
|
|
|
\item[Type:] Asynchronous.
|
|
|
|
@ -1241,14 +1219,13 @@ An integer value; 0 means no error has been detected.
|
|
|
|
|
\end{enumerate}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\clearpage\subsection*{psb\_loc\_to\_glob --- Local to global indices
|
|
|
|
|
\clearpage\subroutine{psb\_loc\_to\_glob}{Local to global indices
|
|
|
|
|
conversion}
|
|
|
|
|
\addcontentsline{toc}{subsection}{psb\_loc\_to\_glob}
|
|
|
|
|
|
|
|
|
|
\begin{verbatim}
|
|
|
|
|
\begin{lstlisting}
|
|
|
|
|
call psb_loc_to_glob(x, y, desc_a, info, iact)
|
|
|
|
|
call psb_loc_to_glob(x, desc_a, info, iact)
|
|
|
|
|
\end{verbatim}
|
|
|
|
|
\end{lstlisting}
|
|
|
|
|
|
|
|
|
|
\begin{description}
|
|
|
|
|
\item[Type:] Asynchronous.
|
|
|
|
@ -1298,12 +1275,11 @@ An integer value; 0 means no error has been detected.
|
|
|
|
|
%
|
|
|
|
|
%% psb_loc_to_glob %%
|
|
|
|
|
%
|
|
|
|
|
\clearpage\subsection*{psb\_is\_owned }
|
|
|
|
|
\addcontentsline{toc}{subsection}{psb\_is\_owned}
|
|
|
|
|
\clearpage\subroutine{psb\_is\_owned }{}
|
|
|
|
|
|
|
|
|
|
\begin{verbatim}
|
|
|
|
|
\begin{lstlisting}
|
|
|
|
|
call psb_is_owned(x, desc_a)
|
|
|
|
|
\end{verbatim}
|
|
|
|
|
\end{lstlisting}
|
|
|
|
|
|
|
|
|
|
\begin{description}
|
|
|
|
|
\item[Type:] Asynchronous.
|
|
|
|
@ -1338,12 +1314,11 @@ Intent: {\bf out}.\\
|
|
|
|
|
\end{enumerate}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\clearpage\subsection*{psb\_owned\_index }
|
|
|
|
|
\addcontentsline{toc}{subsection}{psb\_owned\_index}
|
|
|
|
|
\clearpage\subroutine{psb\_owned\_index }{}
|
|
|
|
|
|
|
|
|
|
\begin{verbatim}
|
|
|
|
|
\begin{lstlisting}
|
|
|
|
|
call psb_owned_index(y, x, desc_a, info)
|
|
|
|
|
\end{verbatim}
|
|
|
|
|
\end{lstlisting}
|
|
|
|
|
|
|
|
|
|
\begin{description}
|
|
|
|
|
\item[Type:] Asynchronous.
|
|
|
|
@ -1390,12 +1365,11 @@ An integer value; 0 means no error has been detected.
|
|
|
|
|
\end{enumerate}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\clearpage\subsection*{psb\_is\_local }
|
|
|
|
|
\addcontentsline{toc}{subsection}{psb\_is\_local}
|
|
|
|
|
\clearpage\subroutine{psb\_is\_local }{}
|
|
|
|
|
|
|
|
|
|
\begin{verbatim}
|
|
|
|
|
\begin{lstlisting}
|
|
|
|
|
call psb_is_local(x, desc_a)
|
|
|
|
|
\end{verbatim}
|
|
|
|
|
\end{lstlisting}
|
|
|
|
|
|
|
|
|
|
\begin{description}
|
|
|
|
|
\item[Type:] Asynchronous.
|
|
|
|
@ -1429,12 +1403,11 @@ Intent: {\bf out}.\\
|
|
|
|
|
indices
|
|
|
|
|
\end{enumerate}
|
|
|
|
|
|
|
|
|
|
\clearpage\subsection*{psb\_local\_index }
|
|
|
|
|
\addcontentsline{toc}{subsection}{psb\_local\_index}
|
|
|
|
|
\clearpage\subroutine{psb\_local\_index }{}
|
|
|
|
|
|
|
|
|
|
\begin{verbatim}
|
|
|
|
|
\begin{lstlisting}
|
|
|
|
|
call psb_local_index(y, x, desc_a, info)
|
|
|
|
|
\end{verbatim}
|
|
|
|
|
\end{lstlisting}
|
|
|
|
|
|
|
|
|
|
\begin{description}
|
|
|
|
|
\item[Type:] Asynchronous.
|
|
|
|
@ -1485,12 +1458,11 @@ An integer value; 0 means no error has been detected.
|
|
|
|
|
%
|
|
|
|
|
%% psb_ins %%
|
|
|
|
|
%
|
|
|
|
|
\clearpage\subsection*{psb\_get\_boundary --- Extract list of boundary elements}
|
|
|
|
|
\addcontentsline{toc}{subsection}{psb\_get\_boundary}
|
|
|
|
|
\clearpage\subroutine{psb\_get\_boundary}{Extract list of boundary elements}
|
|
|
|
|
|
|
|
|
|
\begin{verbatim}
|
|
|
|
|
\begin{lstlisting}
|
|
|
|
|
call psb_get_boundary(bndel, desc, info)
|
|
|
|
|
\end{verbatim}
|
|
|
|
|
\end{lstlisting}
|
|
|
|
|
|
|
|
|
|
\begin{description}
|
|
|
|
|
\item[Type:] Asynchronous.
|
|
|
|
@ -1527,12 +1499,11 @@ An integer value; 0 means no error has been detected.
|
|
|
|
|
number of boundary elements.
|
|
|
|
|
\end{enumerate}
|
|
|
|
|
|
|
|
|
|
\clearpage\subsection*{psb\_get\_overlap --- Extract list of overlap elements}
|
|
|
|
|
\addcontentsline{toc}{subsection}{psb\_get\_overlap}
|
|
|
|
|
\clearpage\subroutine{psb\_get\_overlap}{Extract list of overlap elements}
|
|
|
|
|
|
|
|
|
|
\begin{verbatim}
|
|
|
|
|
\begin{lstlisting}
|
|
|
|
|
call psb_get_overlap(ovrel, desc, info)
|
|
|
|
|
\end{verbatim}
|
|
|
|
|
\end{lstlisting}
|
|
|
|
|
|
|
|
|
|
\begin{description}
|
|
|
|
|
\item[Type:] Asynchronous.
|
|
|
|
@ -1570,13 +1541,12 @@ An integer value; 0 means no error has been detected.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\clearpage\subsection*{psb\_sp\_getrow --- Extract row(s) from a sparse matrix}
|
|
|
|
|
\addcontentsline{toc}{subsection}{psb\_sp\_getrow}
|
|
|
|
|
\clearpage\subroutine{psb\_sp\_getrow}{Extract row(s) from a sparse matrix}
|
|
|
|
|
|
|
|
|
|
\begin{verbatim}
|
|
|
|
|
\begin{lstlisting}
|
|
|
|
|
call psb_sp_getrow(row, a, nz, ia, ja, val, info, &
|
|
|
|
|
& append, nzin, lrw)
|
|
|
|
|
\end{verbatim}
|
|
|
|
|
\end{lstlisting}
|
|
|
|
|
|
|
|
|
|
\begin{description}
|
|
|
|
|
\item[Type:] Asynchronous.
|
|
|
|
@ -1663,17 +1633,16 @@ An integer value; 0 means no error has been detected.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\clearpage\subsection*{psb\_sizeof --- Memory occupation}
|
|
|
|
|
\addcontentsline{toc}{subsection}{psb\_sizeof}
|
|
|
|
|
\clearpage\subroutine{psb\_sizeof}{Memory occupation}
|
|
|
|
|
|
|
|
|
|
This function computes the memory occupation of a PSBLAS object.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\begin{verbatim}
|
|
|
|
|
\begin{lstlisting}
|
|
|
|
|
isz = psb_sizeof(a)
|
|
|
|
|
isz = psb_sizeof(desc_a)
|
|
|
|
|
isz = psb_sizeof(prec)
|
|
|
|
|
\end{verbatim}
|
|
|
|
|
\end{lstlisting}
|
|
|
|
|
|
|
|
|
|
\begin{description}
|
|
|
|
|
\item[Type:] Asynchronous.
|
|
|
|
@ -1702,8 +1671,7 @@ Returned as: an \verb|integer(psb_long_int_k_)| number.
|
|
|
|
|
\end{description}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\clearpage\subsection*{Sorting utilities}
|
|
|
|
|
\addcontentsline{toc}{subsection}{Sorting utilities}
|
|
|
|
|
\clearpage\subroutine{Sorting utilities}{}
|
|
|
|
|
|
|
|
|
|
{\par\noindent\large\bfseries psb\_msort --- Sorting by the Merge-sort
|
|
|
|
|
algorithm}
|
|
|
|
@ -1712,11 +1680,11 @@ Returned as: an \verb|integer(psb_long_int_k_)| number.
|
|
|
|
|
algorithm}
|
|
|
|
|
|
|
|
|
|
{\par\noindent\large\bfseries psb\_hsort --- Sorting by the Heapsort algorithm}
|
|
|
|
|
\begin{verbatim}
|
|
|
|
|
\begin{lstlisting}
|
|
|
|
|
call psb_msort(x,ix,dir,flag)
|
|
|
|
|
call psb_qsort(x,ix,dir,flag)
|
|
|
|
|
call psb_hsort(x,ix,dir,flag)
|
|
|
|
|
\end{verbatim}
|
|
|
|
|
\end{lstlisting}
|
|
|
|
|
|
|
|
|
|
These serial routines sort a sequence $X$ into ascending or
|
|
|
|
|
descending order. The argument meaning is identical for the three
|
|
|
|
|