Fixed documentation of INTENT of arguments.

psblas3-type-indexed
Salvatore Filippone 18 years ago
parent 5982dde3de
commit 5422fda30d

@ -130,104 +130,104 @@ module psb_comm_mod
interface psb_dscatter interface psb_dscatter
subroutine psb_dscatterm(globx, locx, desc_a, info, iroot) subroutine psb_dscatterm(globx, locx, desc_a, info, root)
use psb_descriptor_type use psb_descriptor_type
real(kind(1.d0)), intent(out) :: locx(:,:) real(kind(1.d0)), intent(out) :: locx(:,:)
real(kind(1.d0)), intent(in) :: globx(:,:) real(kind(1.d0)), intent(in) :: globx(:,:)
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
integer, intent(out) :: info integer, intent(out) :: info
integer, intent(in), optional :: iroot integer, intent(in), optional :: root
end subroutine psb_dscatterm end subroutine psb_dscatterm
subroutine psb_dscatterv(globx, locx, desc_a, info, iroot) subroutine psb_dscatterv(globx, locx, desc_a, info, root)
use psb_descriptor_type use psb_descriptor_type
real(kind(1.d0)), intent(out) :: locx(:) real(kind(1.d0)), intent(out) :: locx(:)
real(kind(1.d0)), intent(in) :: globx(:) real(kind(1.d0)), intent(in) :: globx(:)
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
integer, intent(out) :: info integer, intent(out) :: info
integer, intent(in), optional :: iroot integer, intent(in), optional :: root
end subroutine psb_dscatterv end subroutine psb_dscatterv
subroutine psb_zscatterm(globx, locx, desc_a, info, iroot) subroutine psb_zscatterm(globx, locx, desc_a, info, root)
use psb_descriptor_type use psb_descriptor_type
complex(kind(1.d0)), intent(out) :: locx(:,:) complex(kind(1.d0)), intent(out) :: locx(:,:)
complex(kind(1.d0)), intent(in) :: globx(:,:) complex(kind(1.d0)), intent(in) :: globx(:,:)
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
integer, intent(out) :: info integer, intent(out) :: info
integer, intent(in), optional :: iroot integer, intent(in), optional :: root
end subroutine psb_zscatterm end subroutine psb_zscatterm
subroutine psb_zscatterv(globx, locx, desc_a, info, iroot) subroutine psb_zscatterv(globx, locx, desc_a, info, root)
use psb_descriptor_type use psb_descriptor_type
complex(kind(1.d0)), intent(out) :: locx(:) complex(kind(1.d0)), intent(out) :: locx(:)
complex(kind(1.d0)), intent(in) :: globx(:) complex(kind(1.d0)), intent(in) :: globx(:)
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
integer, intent(out) :: info integer, intent(out) :: info
integer, intent(in), optional :: iroot integer, intent(in), optional :: root
end subroutine psb_zscatterv end subroutine psb_zscatterv
subroutine psb_iscatterm(globx, locx, desc_a, info, iroot) subroutine psb_iscatterm(globx, locx, desc_a, info, root)
use psb_descriptor_type use psb_descriptor_type
integer, intent(out) :: locx(:,:) integer, intent(out) :: locx(:,:)
integer, intent(in) :: globx(:,:) integer, intent(in) :: globx(:,:)
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
integer, intent(out) :: info integer, intent(out) :: info
integer, intent(in), optional :: iroot integer, intent(in), optional :: root
end subroutine psb_iscatterm end subroutine psb_iscatterm
subroutine psb_iscatterv(globx, locx, desc_a, info, iroot) subroutine psb_iscatterv(globx, locx, desc_a, info, root)
use psb_descriptor_type use psb_descriptor_type
integer, intent(out) :: locx(:) integer, intent(out) :: locx(:)
integer, intent(in) :: globx(:) integer, intent(in) :: globx(:)
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
integer, intent(out) :: info integer, intent(out) :: info
integer, intent(in), optional :: iroot integer, intent(in), optional :: root
end subroutine psb_iscatterv end subroutine psb_iscatterv
end interface end interface
interface psb_gather interface psb_gather
subroutine psb_igatherm(globx, locx, desc_a, info, iroot) subroutine psb_igatherm(globx, locx, desc_a, info, root)
use psb_descriptor_type use psb_descriptor_type
integer, intent(in) :: locx(:,:) integer, intent(in) :: locx(:,:)
integer, intent(out) :: globx(:,:) integer, intent(out) :: globx(:,:)
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
integer, intent(out) :: info integer, intent(out) :: info
integer, intent(in), optional :: iroot integer, intent(in), optional :: root
end subroutine psb_igatherm end subroutine psb_igatherm
subroutine psb_igatherv(globx, locx, desc_a, info, iroot) subroutine psb_igatherv(globx, locx, desc_a, info, root)
use psb_descriptor_type use psb_descriptor_type
integer, intent(in) :: locx(:) integer, intent(in) :: locx(:)
integer, intent(out) :: globx(:) integer, intent(out) :: globx(:)
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
integer, intent(out) :: info integer, intent(out) :: info
integer, intent(in), optional :: iroot integer, intent(in), optional :: root
end subroutine psb_igatherv end subroutine psb_igatherv
subroutine psb_dgatherm(globx, locx, desc_a, info, iroot) subroutine psb_dgatherm(globx, locx, desc_a, info, root)
use psb_descriptor_type use psb_descriptor_type
real(kind(1.d0)), intent(in) :: locx(:,:) real(kind(1.d0)), intent(in) :: locx(:,:)
real(kind(1.d0)), intent(out) :: globx(:,:) real(kind(1.d0)), intent(out) :: globx(:,:)
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
integer, intent(out) :: info integer, intent(out) :: info
integer, intent(in), optional :: iroot integer, intent(in), optional :: root
end subroutine psb_dgatherm end subroutine psb_dgatherm
subroutine psb_dgatherv(globx, locx, desc_a, info, iroot) subroutine psb_dgatherv(globx, locx, desc_a, info, root)
use psb_descriptor_type use psb_descriptor_type
real(kind(1.d0)), intent(in) :: locx(:) real(kind(1.d0)), intent(in) :: locx(:)
real(kind(1.d0)), intent(out) :: globx(:) real(kind(1.d0)), intent(out) :: globx(:)
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
integer, intent(out) :: info integer, intent(out) :: info
integer, intent(in), optional :: iroot integer, intent(in), optional :: root
end subroutine psb_dgatherv end subroutine psb_dgatherv
subroutine psb_zgatherm(globx, locx, desc_a, info, iroot) subroutine psb_zgatherm(globx, locx, desc_a, info, root)
use psb_descriptor_type use psb_descriptor_type
complex(kind(1.d0)), intent(in) :: locx(:,:) complex(kind(1.d0)), intent(in) :: locx(:,:)
complex(kind(1.d0)), intent(out) :: globx(:,:) complex(kind(1.d0)), intent(out) :: globx(:,:)
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
integer, intent(out) :: info integer, intent(out) :: info
integer, intent(in), optional :: iroot integer, intent(in), optional :: root
end subroutine psb_zgatherm end subroutine psb_zgatherm
subroutine psb_zgatherv(globx, locx, desc_a, info, iroot) subroutine psb_zgatherv(globx, locx, desc_a, info, root)
use psb_descriptor_type use psb_descriptor_type
complex(kind(1.d0)), intent(in) :: locx(:) complex(kind(1.d0)), intent(in) :: locx(:)
complex(kind(1.d0)), intent(out) :: globx(:) complex(kind(1.d0)), intent(out) :: globx(:)
type(psb_desc_type), intent(in) :: desc_a type(psb_desc_type), intent(in) :: desc_a
integer, intent(out) :: info integer, intent(out) :: info
integer, intent(in), optional :: iroot integer, intent(in), optional :: root
end subroutine psb_zgatherv end subroutine psb_zgatherv
end interface end interface

@ -590,7 +590,7 @@ Module psb_tools_mod
subroutine psb_get_ovrlap(ovrel,desc,info) subroutine psb_get_ovrlap(ovrel,desc,info)
use psb_descriptor_type use psb_descriptor_type
implicit none implicit none
integer, allocatable :: ovrel(:) integer, allocatable, intent(out) :: ovrel(:)
type(psb_desc_type), intent(in) :: desc type(psb_desc_type), intent(in) :: desc
integer, intent(out) :: info integer, intent(out) :: info
end subroutine psb_get_ovrlap end subroutine psb_get_ovrlap
@ -604,7 +604,7 @@ contains
use psb_descriptor_type use psb_descriptor_type
use psi_mod use psi_mod
implicit none implicit none
integer, allocatable :: bndel(:) integer, allocatable, intent(out) :: bndel(:)
type(psb_desc_type), intent(in) :: desc type(psb_desc_type), intent(in) :: desc
integer, intent(out) :: info integer, intent(out) :: info

@ -449,12 +449,12 @@ contains
implicit none implicit none
integer, intent(in) :: nz, imin,imax,jmin,jmax,nzl,maxsz integer, intent(in) :: nz, imin,imax,jmin,jmax,nzl,maxsz
integer, intent(in) :: ia(*),ja(*) integer, intent(in) :: ia(:),ja(:)
integer, intent(inout) :: nza integer, intent(inout) :: nza
real(kind(1.d0)), intent(in) :: val(*) real(kind(1.d0)), intent(in) :: val(:)
real(kind(1.d0)), intent(inout) :: aspk(*) real(kind(1.d0)), intent(inout) :: aspk(:)
integer, intent(out) :: info integer, intent(out) :: info
integer, intent(in), optional :: ng,gtl(*) integer, intent(in), optional :: ng,gtl(:)
integer :: i,ir,ic integer :: i,ir,ic
if (present(gtl)) then if (present(gtl)) then
@ -522,12 +522,12 @@ contains
implicit none implicit none
integer, intent(in) :: nz, imin,imax,jmin,jmax,maxsz integer, intent(in) :: nz, imin,imax,jmin,jmax,maxsz
integer, intent(in) :: ia(*),ja(*) integer, intent(in) :: ia(:),ja(:)
integer, intent(inout) :: nza,ia1(*),ia2(*) integer, intent(inout) :: nza,ia1(:),ia2(:)
real(kind(1.d0)), intent(in) :: val(*) real(kind(1.d0)), intent(in) :: val(:)
real(kind(1.d0)), intent(inout) :: aspk(*) real(kind(1.d0)), intent(inout) :: aspk(:)
integer, intent(out) :: info integer, intent(out) :: info
integer, intent(in), optional :: ng,gtl(*) integer, intent(in), optional :: ng,gtl(:)
integer :: i,ir,ic integer :: i,ir,ic
info = 0 info = 0

@ -449,12 +449,12 @@ contains
implicit none implicit none
integer, intent(in) :: nz, imin,imax,jmin,jmax,nzl,maxsz integer, intent(in) :: nz, imin,imax,jmin,jmax,nzl,maxsz
integer, intent(in) :: ia(*),ja(*) integer, intent(in) :: ia(:),ja(:)
integer, intent(inout) :: nza integer, intent(inout) :: nza
complex(kind(1.d0)), intent(in) :: val(*) complex(kind(1.d0)), intent(in) :: val(:)
complex(kind(1.d0)), intent(inout) :: aspk(*) complex(kind(1.d0)), intent(inout) :: aspk(:)
integer, intent(out) :: info integer, intent(out) :: info
integer, intent(in), optional :: ng,gtl(*) integer, intent(in), optional :: ng,gtl(:)
integer :: i,ir,ic integer :: i,ir,ic
if (present(gtl)) then if (present(gtl)) then
@ -522,12 +522,12 @@ contains
implicit none implicit none
integer, intent(in) :: nz, imin,imax,jmin,jmax,maxsz integer, intent(in) :: nz, imin,imax,jmin,jmax,maxsz
integer, intent(in) :: ia(*),ja(*) integer, intent(in) :: ia(:),ja(:)
integer, intent(inout) :: nza,ia1(*),ia2(*) integer, intent(inout) :: nza,ia1(:),ia2(:)
complex(kind(1.d0)), intent(in) :: val(*) complex(kind(1.d0)), intent(in) :: val(:)
complex(kind(1.d0)), intent(inout) :: aspk(*) complex(kind(1.d0)), intent(inout) :: aspk(:)
integer, intent(out) :: info integer, intent(out) :: info
integer, intent(in), optional :: ng,gtl(*) integer, intent(in), optional :: ng,gtl(:)
integer :: i,ir,ic integer :: i,ir,ic
info = 0 info = 0

@ -3,7 +3,7 @@ subroutine psb_get_ovrlap(ovrel,desc,info)
use psb_realloc_mod use psb_realloc_mod
use psb_error_mod use psb_error_mod
implicit none implicit none
integer, allocatable :: ovrel(:) integer, allocatable, intent(out) :: ovrel(:)
type(psb_desc_type), intent(in) :: desc type(psb_desc_type), intent(in) :: desc
integer, intent(out) :: info integer, intent(out) :: info

@ -41,21 +41,25 @@ Long Precision Complex & psb\_halo \\
\item[x] global dense matrix $x$.\\ \item[x] global dense matrix $x$.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf inout}.\\
Specified as: a rank one or two array with the TARGET attribute Specified as: a rank one or two array with the TARGET attribute
containing numbers of type specified in containing numbers of type specified in
Table~\ref{tab:f90halo}. Table~\ref{tab:f90halo}.
\item[desc\_a] contains data structures for communications.\\ \item[desc\_a] contains data structures for communications.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: a structured data of type \descdata. Specified as: a structured data of type \descdata.
\item[alpha] the scalar $\alpha$.\\ \item[alpha] the scalar $\alpha$.\\
Scope: {\bf global} \\ Scope: {\bf global} \\
Type: {\bf optional} \\ Type: {\bf optional} \\
Intent: {\bf in}.\\
Default: $alpha = 1 $\\ Default: $alpha = 1 $\\
Specified as: a number of the data type indicated in Table~\ref{tab:f90halo}. Specified as: a number of the data type indicated in Table~\ref{tab:f90halo}.
\item[work] the work array. \\ \item[work] the work array. \\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf optional}\\ Type: {\bf optional}\\
Intent: {\bf inout}.\\
Specified as: a rank one array of the same type of $x$ with the Specified as: a rank one array of the same type of $x$ with the
POINTER attribute. POINTER attribute.
\item[data] index list selector.\\ \item[data] index list selector.\\
@ -70,12 +74,14 @@ index list on which to base the data exchange.
\item[x] global dense result matrix $x$.\\ \item[x] global dense result matrix $x$.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf inout}.\\
Returned as: a rank one or two array Returned as: a rank one or two array
containing numbers of type specified in containing numbers of type specified in
Table~\ref{tab:f90halo}. Table~\ref{tab:f90halo}.
\item[info] the local portion of result submatrix $y$.\\ \item[info] the local portion of result submatrix $y$.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf out}.\\
An integer value that contains an error code. An integer value that contains an error code.
\end{description} \end{description}
\begin{figure}[h] \begin{center} \begin{figure}[h] \begin{center}
@ -183,12 +189,14 @@ Long Precision Complex & psb\_ovrl \\
\item[x] global dense matrix $x$.\\ \item[x] global dense matrix $x$.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf inout}.\\
Specified as: a rank one or two array Specified as: a rank one or two array
containing numbers of type specified in containing numbers of type specified in
Table~\ref{tab:f90ovrl}. Table~\ref{tab:f90ovrl}.
\item[desc\_a] contains data structures for communications.\\ \item[desc\_a] contains data structures for communications.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: a structured data of type \descdata. Specified as: a structured data of type \descdata.
\item[update] Update operator. \\ \item[update] Update operator. \\
\begin{description} \begin{description}
@ -198,24 +206,28 @@ Specified as: a structured data of type \descdata.
%% \item[update = psb\_square\_root\_] square root update $\sqrt{P_a}$; %% \item[update = psb\_square\_root\_] square root update $\sqrt{P_a}$;
\end{description} \end{description}
Scope: {\bf global} \\ Scope: {\bf global} \\
Intent: {\bf in}.\\
Default: $update\_type = psb\_avg\_ $\\ Default: $update\_type = psb\_avg\_ $\\
Scope: {\bf global} \\ Scope: {\bf global} \\
Specified as: a integer variable. Specified as: a integer variable.
\item[work] the work array. \\ \item[work] the work array. \\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf optional}\\ Type: {\bf optional}\\
Intent: {\bf inout}.\\
Specified as: a one dimensional array of the same type of $x$. Specified as: a one dimensional array of the same type of $x$.
\item[\bf On Return] \item[\bf On Return]
\item[x] global dense result matrix $x$.\\ \item[x] global dense result matrix $x$.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf inout}.\\
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] Error code.\\ \item[info] Error code.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf out}.\\
An integer value; 0 means no error has been detected. An integer value; 0 means no error has been detected.
\end{description} \end{description}
@ -333,7 +345,7 @@ process.
\[ glob\_x \leftarrow collect(loc\_x_i) \] \[ glob\_x \leftarrow collect(loc\_x_i) \]
where: where:
\begin{description} \begin{description}
\item[$glob\_x$] is the global submatrix $glob\_x_{iy:iy+m-1,jy:jy+n-1}$ \item[$glob\_x$] is the global submatrix $glob\_x_{1:m,1:n}$
\item[$loc\_x_i$] is the local portion of global dense matrix on \item[$loc\_x_i$] is the local portion of global dense matrix on
process $i$. process $i$.
\item[$collect$] is the collect function. \item[$collect$] is the collect function.
@ -353,10 +365,8 @@ Long Precision Complex & psb\_gather \\
\caption{Data types\label{tab:gather}} \caption{Data types\label{tab:gather}}
\end{table} \end{table}
\syntax{call psb\_gather}{glob\_x, loc\_x, desc\_a, info, \syntax{call psb\_gather}{glob\_x, loc\_x, desc\_a, info, root}
root, iglobx, jglobx, ilocx, jlocx, k} \syntax{call psb\_gather}{glob\_x, loc\_x, desc\_a, info, root}
\syntax{call psb\_gather}{glob\_x, loc\_x, desc\_a, info,
root, iglobx, ilocx}
\begin{description} \begin{description}
\item[\bf On Entry] \item[\bf On Entry]
@ -364,49 +374,54 @@ Long Precision Complex & psb\_gather \\
$glob\_x$. \\ $glob\_x$. \\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
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:gather}. indicated in Table~\ref{tab:gather}.
\item[desc\_a] contains data structures for communications.\\ \item[desc\_a] contains data structures for communications.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: a structured data of type \descdata. Specified as: a structured data of type \descdata.
\item[root] The process that holds the global copy. If $root=-1$ all \item[root] The process that holds the global copy. If $root=-1$ all
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 $-1\le ix\le np-1$, default $-1$. Intent: {\bf in}.\\
\item[iglobx] Row index to define a submatrix in glob\_x into which Specified as: an integer variable $-1\le root\le np-1$, default $-1$.
gather the local pieces.\\ %% \item[iglobx] Row index to define a submatrix in glob\_x into which
Scope: {\bf global} \\ %% gather the local pieces.\\
Type: {\bf optional}\\ %% Scope: {\bf global} \\
Specified as: an integer variable $1\le ix\le matrix\_data(psb\_m\_)$. %% Type: {\bf optional}\\
\item[jglobx] Column index to define a submatrix in glob\_x into which %% Specified as: an integer variable $1\le ix\le matrix\_data(psb\_m\_)$.
gather the local pieces.\\ %% \item[jglobx] Column index to define a submatrix in glob\_x into which
Scope: {\bf global} \\ %% gather the local pieces.\\
Type: {\bf optional}\\ %% Scope: {\bf global} \\
Specified as: an integer variable. %% Type: {\bf optional}\\
\item[ilocx] Row index to define a submatrix in loc\_x that has to %% Specified as: an integer variable.
be gathered into glob\_x.\\ %% \item[ilocx] Row index to define a submatrix in loc\_x that has to
Scope: {\bf local} \\ %% be gathered into glob\_x.\\
Type: {\bf optional}\\ %% Scope: {\bf local} \\
Specified as: an integer variable. %% Type: {\bf optional}\\
\item[jlocx] Columns index to define a submatrix in loc\_x that has %% Specified as: an integer variable.
to be gathered into glob\_x.\\ %% \item[jlocx] Columns index to define a submatrix in loc\_x that has
Scope: {\bf global} \\ %% to be gathered into glob\_x.\\
Type: {\bf optional}\\ %% Scope: {\bf global} \\
Specified as: an integer variable. %% Type: {\bf optional}\\
\item[k] The number of columns to gather.\\ %% Specified as: an integer variable.
Scope: {\bf global} \\ %% \item[k] The number of columns to gather.\\
Type: {\bf optional}\\ %% Scope: {\bf global} \\
Specified as: an integer variable. %% Type: {\bf optional}\\
%% Specified as: an integer variable.
\item[\bf On Return] \item[\bf On Return]
\item[glob\_x] The array where the local parts must be gathered.\\ \item[glob\_x] The array where the local parts must be gathered.\\
Scope: {\bf global} \\ Scope: {\bf global} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf out}.\\
Specified as: a rank one or two array. Specified as: a rank one or two array.
\item[info] Error code.\\ \item[info] Error code.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf out}.\\
An integer value; 0 means no error has been detected. An integer value; 0 means no error has been detected.
\end{description} \end{description}
@ -421,10 +436,10 @@ An integer value; 0 means no error has been detected.
These subroutines scatters the portions of global dense matrix owned These subroutines scatters the portions of global dense matrix owned
by a process to all the processes in the processes grid. by a process to all the processes in the processes grid.
\[ loc\_x_i \leftarrow scatter(glob\_x_i) \] \[ loc\_x_i \leftarrow scatter(glob\_x) \]
where: where:
\begin{description} \begin{description}
\item[$glob\_x$] is the global submatrix $glob\_x_{iy:iy+m-1,jy:jy+n-1}$ \item[$glob\_x$] is the global matrix $glob\_x_{1:m,1:n}$
\item[$loc\_x_i$] is the local portion of global dense matrix on \item[$loc\_x_i$] is the local portion of global dense matrix on
process $i$. process $i$.
\item[$scatter$] is the scatter function. \item[$scatter$] is the scatter function.
@ -444,60 +459,63 @@ Long Precision Complex & psb\_scatter \\
\caption{Data types\label{tab:scatter}} \caption{Data types\label{tab:scatter}}
\end{table} \end{table}
\syntax{call psb\_scatter}{glob\_x, loc\_x, desc\_a, info, \syntax{call psb\_scatter}{glob\_x, loc\_x, desc\_a, info, root}
root, iglobx, jglobx, ilocx, jlocx, k} \syntax{call psb\_scatter}{glob\_x, loc\_x, desc\_a, info, root}
\syntax{call psb\_scatter}{glob\_x, loc\_x, desc\_a, info,
root, iglobx, ilocx}
\begin{description} \begin{description}
\item[\bf On Entry] \item[\bf On Entry]
\item[glob\_x] The array that must be scattered into local pieces.\\ \item[glob\_x] The array that must be scattered into local pieces.\\
Scope: {\bf global} \\ Scope: {\bf global} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: a rank one or two array. Specified as: a rank one or two array.
\item[desc\_a] contains data structures for communications.\\ \item[desc\_a] contains data structures for communications.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: a structured data of type \descdata. Specified as: a structured data of type \descdata.
\item[root] The process that holds the global copy. If $root=-1$ all \item[root] The process that holds the global copy. If $root=-1$ all
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 $-1\le ix\le np-1$, default $-1$. Intent: {\bf in}.\\
\item[iglobx] Row index to define a submatrix in glob\_x that has to Specified as: an integer variable $-1\le root\le np-1$, default $-1$.
be scattered into local pieces.\\ %% \item[iglobx] Row index to define a submatrix in glob\_x that has to
Scope: {\bf global} \\ %% be scattered into local pieces.\\
Type: {\bf optional}\\ %% Scope: {\bf global} \\
Specified as: an integer variable $1\le ix\le matrix\_data(psb\_m\_)$. %% Type: {\bf optional}\\
\item[jglobx] Column index to define a submatrix in glob\_x that has to %% Specified as: an integer variable $1\le ix\le matrix\_data(psb\_m\_)$.
be scattered into local pieces.\\ %% \item[jglobx] Column index to define a submatrix in glob\_x that has to
Scope: {\bf global} \\ %% be scattered into local pieces.\\
Type: {\bf optional}\\ %% Scope: {\bf global} \\
Specified as: an integer variable. %% Type: {\bf optional}\\
\item[ilocx] Row index to define a submatrix in loc\_x into which %% Specified as: an integer variable.
scatter the local piece of glob\_x.\\ %% \item[ilocx] Row index to define a submatrix in loc\_x into which
Scope: {\bf local} \\ %% scatter the local piece of glob\_x.\\
Type: {\bf optional}\\ %% Scope: {\bf local} \\
Specified as: an integer variable. %% Type: {\bf optional}\\
\item[jlocx] Columns index to define a submatrix in loc\_x into which %% Specified as: an integer variable.
scatter the local piece of glob\_x.\\ %% \item[jlocx] Columns index to define a submatrix in loc\_x into which
Scope: {\bf global} \\ %% scatter the local piece of glob\_x.\\
Type: {\bf optional}\\ %% Scope: {\bf global} \\
Specified as: an integer variable. %% Type: {\bf optional}\\
\item[k] The number of columns to scatter.\\ %% Specified as: an integer variable.
Scope: {\bf global} \\ %% \item[k] The number of columns to scatter.\\
Type: {\bf optional}\\ %% Scope: {\bf global} \\
Specified as: an integer variable. %% Type: {\bf optional}\\
%% Specified as: an integer variable.
\item[\bf On Return] \item[\bf On Return]
\item[loc\_x] the local portion of global dense matrix \item[loc\_x] the local portion of global dense matrix
$glob\_x$. \\ $glob\_x$. \\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf out}.\\
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] Error code.\\ \item[info] Error code.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf out}.\\
An integer value; 0 means no error has been detected. An integer value; 0 means no error has been detected.
\end{description} \end{description}

@ -362,8 +362,9 @@ research.
\begin{description} \begin{description}
\item[\bf On Entry] \item[\bf On Entry]
\item[desc] the communication descriptor.\\ \item[desc] the communication descriptor.\\
Scope:{\bf local}.\\ Scope: {\bf local}.\\
Type:{\bf required}.\\ Type: {\bf required}.\\
Intent: {\bf in}.\\
Specified as: a structured data of type \descdata. Specified as: a structured data of type \descdata.
\end{description} \end{description}
@ -383,8 +384,9 @@ Specified as: a structured data of type \descdata.
\begin{description} \begin{description}
\item[\bf On Entry] \item[\bf On Entry]
\item[desc] the communication descriptor.\\ \item[desc] the communication descriptor.\\
Scope:{\bf local}.\\ Scope: {\bf local}.\\
Type:{\bf required}.\\ Type: {\bf required}.\\
Intent: {\bf in}.\\
Specified as: a structured data of type \descdata. Specified as: a structured data of type \descdata.
\end{description} \end{description}
@ -405,8 +407,9 @@ Specified as: a structured data of type \descdata.
\begin{description} \begin{description}
\item[\bf On Entry] \item[\bf On Entry]
\item[desc] the communication descriptor.\\ \item[desc] the communication descriptor.\\
Scope:{\bf local}.\\ Scope: {\bf local}.\\
Type:{\bf required}.\\ Type: {\bf required}.\\
Intent: {\bf in}.\\
Specified as: a structured data of type \descdata. Specified as: a structured data of type \descdata.
\end{description} \end{description}
@ -422,8 +425,9 @@ Specified as: a structured data of type \descdata.
\begin{description} \begin{description}
\item[\bf On Entry] \item[\bf On Entry]
\item[desc] the communication descriptor.\\ \item[desc] the communication descriptor.\\
Scope:{\bf local}.\\ Scope: {\bf local}.\\
Type:{\bf required}.\\ Type: {\bf required}.\\
Intent: {\bf in}.\\
Specified as: a structured data of type \descdata. Specified as: a structured data of type \descdata.
\end{description} \end{description}
@ -439,8 +443,9 @@ Specified as: a structured data of type \descdata.
\begin{description} \begin{description}
\item[\bf On Entry] \item[\bf On Entry]
\item[desc] the communication descriptor.\\ \item[desc] the communication descriptor.\\
Scope:{\bf local}.\\ Scope: {\bf local}.\\
Type:{\bf required}.\\ Type: {\bf required}.\\
Intent: {\bf in}.\\
Specified as: a structured data of type \descdata. Specified as: a structured data of type \descdata.
\end{description} \end{description}
@ -458,8 +463,9 @@ Specified as: a structured data of type \descdata.
\begin{description} \begin{description}
\item[\bf On Entry] \item[\bf On Entry]
\item[a] the sparse matrix\\ \item[a] the sparse matrix\\
Scope:{\bf local}\\ Scope: {\bf local}\\
Type:{\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: a structured data of type \spdata. Specified as: a structured data of type \spdata.
\end{description} \end{description}
@ -476,8 +482,9 @@ Specified as: a structured data of type \spdata.
\begin{description} \begin{description}
\item[\bf On Entry] \item[\bf On Entry]
\item[a] the sparse matrix\\ \item[a] the sparse matrix\\
Scope:{\bf local}\\ Scope: {\bf local}\\
Type:{\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: a structured data of type \spdata. Specified as: a structured data of type \spdata.
\end{description} \end{description}
@ -494,8 +501,9 @@ Specified as: a structured data of type \spdata.
\begin{description} \begin{description}
\item[\bf On Entry] \item[\bf On Entry]
\item[a] the sparse matrix\\ \item[a] the sparse matrix\\
Scope:{\bf local}\\ Scope: {\bf local}\\
Type:{\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: a structured data of type \spdata. Specified as: a structured data of type \spdata.
\end{description} \end{description}

@ -125,10 +125,12 @@ Aborting...
\item[err\_c] the error code\\ \item[err\_c] the error code\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: an integer. Specified as: an integer.
\item[r\_name] the soutine where the error has been caught.\\ \item[r\_name] the soutine where the error has been caught.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: a string.\\ Specified as: a string.\\
\item[i\_err] addional info for error code\\ \item[i\_err] addional info for error code\\
Scope: {\bf local} \\ Scope: {\bf local} \\
@ -149,6 +151,7 @@ Specified as: a string.\\
\item[icontxt] the communication context.\\ \item[icontxt] the communication context.\\
Scope: {\bf global} \\ Scope: {\bf global} \\
Type: {\bf optional}\\ Type: {\bf optional}\\
Intent: {\bf in}.\\
Specified as: an integer. Specified as: an integer.
\end{description} \end{description}
@ -163,6 +166,7 @@ Specified as: an integer.
\item[v] the verbosity level\\ \item[v] the verbosity level\\
Scope: {\bf global}\\ Scope: {\bf global}\\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: an integer. Specified as: an integer.
\end{description} \end{description}
@ -176,6 +180,7 @@ Specified as: an integer.
\item[err\_act] the type of action.\\ \item[err\_act] the type of action.\\
Scope: {\bf global} \\ Scope: {\bf global} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: an integer. Specified as: an integer.
\end{description} \end{description}
@ -190,10 +195,12 @@ Specified as: an integer.
\item[icontxt] the communication context.\\ \item[icontxt] the communication context.\\
Scope: {\bf global} \\ Scope: {\bf global} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: an integer. Specified as: an integer.
\item[err] the error code to be communicated\\ \item[err] the error code to be communicated\\
Scope: {\bf global} \\ Scope: {\bf global} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf inout}.\\
Specified as: an integer.\\ Specified as: an integer.\\
\end{description} \end{description}

@ -45,63 +45,77 @@ $r_i=b-Ax_i$ the corresponding residual at the $i$-th iteration.
$A$. \\ $A$. \\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: a structured data of type \spdata. Specified as: a structured data of type \spdata.
\item[prec] The data structure containing the preconditioner.\\ \item[prec] The data structure containing the preconditioner.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: a structured data of type \precdata. Specified as: a structured data of type \precdata.
\item[b] The RHS vector. \\ \item[b] The RHS vector. \\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: a rank one array. Specified as: a rank one array.
\item[x] The initial guess. \\ \item[x] The initial guess. \\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf inout}.\\
Specified as: a rank one array. Specified as: a rank one array.
\item[eps] The stopping tolerance. \\ \item[eps] The stopping tolerance. \\
Scope: {\bf global} \\ Scope: {\bf global} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: a real number. Specified as: a real number.
\item[desc\_a] contains data structures for communications.\\ \item[desc\_a] contains data structures for communications.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: a structured data of type \descdata. Specified as: a structured data of type \descdata.
\item[itmax] The maximum number of iterations to perform.\\ \item[itmax] The maximum number of iterations to perform.\\
Scope: {\bf global} \\ Scope: {\bf global} \\
Type: {\bf optional}\\ Type: {\bf optional}\\
Intent: {\bf in}.\\
Default: $itmax = 1000$.\\ Default: $itmax = 1000$.\\
Specified as: an integer variable $itmax \ge 1$. Specified as: an integer variable $itmax \ge 1$.
\item[itrace] If $>0$ print out an informational message about \item[itrace] If $>0$ print out an informational message about
convergence every $itrace$ iterations.\\ convergence every $itrace$ iterations.\\
Scope: {\bf global} \\ Scope: {\bf global} \\
Type: {\bf optional}\\ Type: {\bf optional}\\
Intent: {\bf in}.\\
\item[irst] An integer specifying the restart parameter.\\ \item[irst] An integer specifying the restart parameter.\\
Scope: {\bf global} \\ Scope: {\bf global} \\
Type: {\bf optional}.\\ Type: {\bf optional}.\\
Intent: {\bf in}.\\
Values: $irst>0$. This is employed for the BiCGSTABL or RGMRES Values: $irst>0$. This is employed for the BiCGSTABL or RGMRES
methods, otherwise it is ignored. methods, otherwise it is ignored.
\item[istop] An integer specifying the stopping criterion.\\ \item[istop] An integer specifying the stopping criterion.\\
Scope: {\bf global} \\ Scope: {\bf global} \\
Type: {\bf optional}.\\ Type: {\bf optional}.\\
Intent: {\bf in}.\\
Values: 1: use the normwise backward error, 2: use the scaled 2-norm Values: 1: use the normwise backward error, 2: use the scaled 2-norm
of the residual. Default: 1. of the residual. Default: 1.
\item[\bf On Return] \item[\bf On Return]
\item[x] The computed solution. \\ \item[x] The computed solution. \\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf inout}.\\
Specified as: a rank one array. Specified as: a rank one array.
\item[iter] The number of iterations performed.\\ \item[iter] The number of iterations performed.\\
Scope: {\bf global} \\ Scope: {\bf global} \\
Type: {\bf optional}\\ Type: {\bf optional}\\
Intent: {\bf out}.\\
Returned as: an integer variable. Returned as: an integer variable.
\item[err] The convergence estimate on exit.\\ \item[err] The convergence estimate on exit.\\
Scope: {\bf global} \\ Scope: {\bf global} \\
Type: {\bf optional}\\ Type: {\bf optional}\\
Intent: {\bf out}.\\
Returned as: a real number. Returned as: a real number.
\item[info] Error code.\\ \item[info] Error code.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf out}.\\
An integer value; 0 means no error has been detected. An integer value; 0 means no error has been detected.
\end{description} \end{description}

@ -11,8 +11,9 @@ a virtual parallel machine.
\begin{description} \begin{description}
\item[\bf On Entry ] \item[\bf On Entry ]
\item[np] Number of processes in the PSBLAS virtual parallel machine.\\ \item[np] Number of processes in the PSBLAS virtual parallel machine.\\
Scope:{\bf global}.\\ Scope: {\bf global}.\\
Type:{\bf optional}.\\ Type: {\bf optional}.\\
Intent: {\bf in}.\\
Specified as: an integer value. \ Specified as: an integer value. \
Default: use all available processes provided by the underlying Default: use all available processes provided by the underlying
parallel environment. parallel environment.
@ -22,8 +23,9 @@ parallel environment.
\item[\bf On Return] \item[\bf On Return]
\item[icontxt] the communication context identifying the virtual \item[icontxt] the communication context identifying the virtual
parallel machine.\\ parallel machine.\\
Scope:{\bf global}.\\ Scope: {\bf global}.\\
Type:{\bf required}.\\ Type: {\bf required}.\\
Intent: {\bf out}.\\
Specified as: an integer variable. Specified as: an integer variable.
\end{description} \end{description}
@ -47,20 +49,23 @@ a virtual parallel machine.
\item[\bf On Entry ] \item[\bf On Entry ]
\item[icontxt] the communication context identifying the virtual \item[icontxt] the communication context identifying the virtual
parallel machine.\\ parallel machine.\\
Scope:{\bf global}.\\ Scope: {\bf global}.\\
Type:{\bf required}.\\ Type: {\bf required}.\\
Intent: {\bf in}.\\
Specified as: an integer variable. Specified as: an integer variable.
\end{description} \end{description}
\begin{description} \begin{description}
\item[\bf On Return] \item[\bf On Return]
\item[iam] Identifier of current process in the PSBLAS virtual parallel machine.\\ \item[iam] Identifier of current process in the PSBLAS virtual parallel machine.\\
Scope:{\bf local}.\\ Scope: {\bf local}.\\
Type:{\bf required}.\\ Type: {\bf required}.\\
Intent: {\bf out}.\\
Specified as: an integer value. $-1 \le iam \le np-1$\ Specified as: an integer value. $-1 \le iam \le np-1$\
\item[np] Number of processes in the PSBLAS virtual parallel machine.\\ \item[np] Number of processes in the PSBLAS virtual parallel machine.\\
Scope:{\bf global}.\\ Scope: {\bf global}.\\
Type:{\bf required}.\\ Type: {\bf required}.\\
Intent: {\bf out}.\\
Specified as: an integer variable. \ Specified as: an integer variable. \
\end{description} \end{description}
@ -87,13 +92,15 @@ This subroutine exits from the PSBLAS parallel virtual machine.
\item[\bf On Entry ] \item[\bf On Entry ]
\item[icontxt] the communication context identifying the virtual \item[icontxt] the communication context identifying the virtual
parallel machine.\\ parallel machine.\\
Scope:{\bf global}.\\ Scope: {\bf global}.\\
Type:{\bf required}.\\ Type: {\bf required}.\\
Intent: {\bf in}.\\
Specified as: an integer variable. Specified as: an integer variable.
\item[close] Whether to close all data structures related to the \item[close] Whether to close all data structures related to the
virtual parallel machine, besides those associated with icontxt.\\ virtual parallel machine, besides those associated with icontxt.\\
Scope:{\bf global}.\\ Scope: {\bf global}.\\
Type:{\bf optional}.\\ Type: {\bf optional}.\\
Intent: {\bf in}.\\
Specified as: a logical variable, default value: true. Specified as: a logical variable, default value: true.
\end{description} \end{description}
@ -120,16 +127,18 @@ This subroutine returns the MPI communicator associated with a PSBLAS context
\item[\bf On Entry ] \item[\bf On Entry ]
\item[icontxt] the communication context identifying the virtual \item[icontxt] the communication context identifying the virtual
parallel machine.\\ parallel machine.\\
Scope:{\bf global}.\\ Scope: {\bf global}.\\
Type:{\bf required}.\\ Type: {\bf required}.\\
Intent: {\bf in}.\\
Specified as: an integer variable. Specified as: an integer variable.
\end{description} \end{description}
\begin{description} \begin{description}
\item[\bf On Return] \item[\bf On Return]
\item[icomm] The MPI communicator associated with the PSBLAS virtual parallel machine.\\ \item[icomm] The MPI communicator associated with the PSBLAS virtual parallel machine.\\
Scope:{\bf global}.\\ Scope: {\bf global}.\\
Type:{\bf required}.\\ Type: {\bf required}.\\
Intent: {\bf out}.\\
\end{description} \end{description}
@ -142,20 +151,23 @@ This subroutine returns the MPI rank of the PSBLAS process $id$
\item[\bf On Entry ] \item[\bf On Entry ]
\item[icontxt] the communication context identifying the virtual \item[icontxt] the communication context identifying the virtual
parallel machine.\\ parallel machine.\\
Scope:{\bf global}.\\ Scope: {\bf global}.\\
Type:{\bf required}.\\ Type: {\bf required}.\\
Intent: {\bf in}.\\
Specified as: an integer variable. Specified as: an integer variable.
\item[id] Identifier of a process in the PSBLAS virtual parallel machine.\\ \item[id] Identifier of a process in the PSBLAS virtual parallel machine.\\
Scope:{\bf local}.\\ Scope: {\bf local}.\\
Type:{\bf required}.\\ Type: {\bf required}.\\
Intent: {\bf in}.\\
Specified as: an integer value. $0 \le id \le np-1$\ Specified as: an integer value. $0 \le id \le np-1$\
\end{description} \end{description}
\begin{description} \begin{description}
\item[\bf On Return] \item[\bf On Return]
\item[rank] The MPI rank associated with the PSBLAS process $id$.\\ \item[rank] The MPI rank associated with the PSBLAS process $id$.\\
Scope:{\bf local}.\\ Scope: {\bf local}.\\
Type:{\bf required}.\\ Type: {\bf required}.\\
Intent: {\bf out}.\\
\end{description} \end{description}
@ -185,8 +197,9 @@ participating processes.
\item[\bf On Entry ] \item[\bf On Entry ]
\item[icontxt] the communication context identifying the virtual \item[icontxt] the communication context identifying the virtual
parallel machine.\\ parallel machine.\\
Scope:{\bf global}.\\ Scope: {\bf global}.\\
Type:{\bf required}.\\ Type: {\bf required}.\\
Intent: {\bf in}.\\
Specified as: an integer variable. Specified as: an integer variable.
\end{description} \end{description}
@ -200,8 +213,9 @@ This subroutine aborts computation on the parallel virtual machine.
\item[\bf On Entry ] \item[\bf On Entry ]
\item[icontxt] the communication context identifying the virtual \item[icontxt] the communication context identifying the virtual
parallel machine.\\ parallel machine.\\
Scope:{\bf global}.\\ Scope: {\bf global}.\\
Type:{\bf required}.\\ Type: {\bf required}.\\
Intent: {\bf in}.\\
Specified as: an integer variable. Specified as: an integer variable.
\end{description} \end{description}
@ -219,18 +233,21 @@ underlying communication library.
\item[\bf On Entry ] \item[\bf On Entry ]
\item[icontxt] the communication context identifying the virtual \item[icontxt] the communication context identifying the virtual
parallel machine.\\ parallel machine.\\
Scope:{\bf global}.\\ Scope: {\bf global}.\\
Type:{\bf required}.\\ Type: {\bf required}.\\
Intent: {\bf in}.\\
Specified as: an integer variable. Specified as: an integer variable.
\item[dat] On the root process, the data to be broadcast.\\ \item[dat] On the root process, the data to be broadcast.\\
Scope:{\bf global}.\\ Scope: {\bf global}.\\
Type:{\bf required}.\\ Type: {\bf required}.\\
Intent: {\bf inout}.\\
Specified as: an integer, real or complex variable, which may be a Specified as: an integer, real or complex variable, which may be a
scalar, or a rank 1 or 2 array, or a character or logical scalar. \ scalar, or a rank 1 or 2 array, or a character or logical scalar. \
Type, rank and size must agree on all processes. Type, rank and size must agree on all processes.
\item[root] Root process holding data to be broadcast.\\ \item[root] Root process holding data to be broadcast.\\
Scope:{\bf global}.\\ Scope: {\bf global}.\\
Type:{\bf optional}.\\ Type: {\bf optional}.\\
Intent: {\bf in}.\\
Specified as: an integer value $0<= root <= np-1$, default 0 \ Specified as: an integer value $0<= root <= np-1$, default 0 \
\end{description} \end{description}
@ -238,8 +255,9 @@ Specified as: an integer value $0<= root <= np-1$, default 0 \
\begin{description} \begin{description}
\item[\bf On Return] \item[\bf On Return]
\item[dat] On processes other than root, the data to be broadcast.\\ \item[dat] On processes other than root, the data to be broadcast.\\
Scope:{\bf global}.\\ Scope: {\bf global}.\\
Type:{\bf required}.\\ Type: {\bf required}.\\
Intent: {\bf inout}.\\
Specified as: an integer, real or complex variable, which may be a Specified as: an integer, real or complex variable, which may be a
scalar, or a rank 1 or 2 array, or a character or logical scalar. \ scalar, or a rank 1 or 2 array, or a character or logical scalar. \
Type, rank and size must agree on all processes. Type, rank and size must agree on all processes.
@ -256,19 +274,22 @@ underlying communication library.
\item[\bf On Entry ] \item[\bf On Entry ]
\item[icontxt] the communication context identifying the virtual \item[icontxt] the communication context identifying the virtual
parallel machine.\\ parallel machine.\\
Scope:{\bf global}.\\ Scope: {\bf global}.\\
Type:{\bf required}.\\ Type: {\bf required}.\\
Intent: {\bf in}.\\
Specified as: an integer variable. Specified as: an integer variable.
\item[dat] The local contribution to the global sum.\\ \item[dat] The local contribution to the global sum.\\
Scope:{\bf global}.\\ Scope: {\bf global}.\\
Type:{\bf required}.\\ Type: {\bf required}.\\
Intent: {\bf inout}.\\
Specified as: an integer, real or complex variable, which may be a Specified as: an integer, real or complex variable, which may be a
scalar, or a rank 1 or 2 array. \ scalar, or a rank 1 or 2 array. \
Type, rank and size must agree on all processes. Type, rank and size must agree on all processes.
\item[root] Process to hold the final sum, or $-1$ to make it available \item[root] Process to hold the final sum, or $-1$ to make it available
on all processes.\\ on all processes.\\
Scope:{\bf global}.\\ Scope: {\bf global}.\\
Type:{\bf optional}.\\ Type: {\bf optional}.\\
Intent: {\bf in}.\\
Specified as: an integer value $-1<= root <= np-1$, default -1. \ Specified as: an integer value $-1<= root <= np-1$, default -1. \
\end{description} \end{description}
@ -276,8 +297,9 @@ Specified as: an integer value $-1<= root <= np-1$, default -1. \
\begin{description} \begin{description}
\item[\bf On Return] \item[\bf On Return]
\item[dat] On destination process(es), the result of the sum operation.\\ \item[dat] On destination process(es), the result of the sum operation.\\
Scope:{\bf global}.\\ Scope: {\bf global}.\\
Type:{\bf required}.\\ Type: {\bf required}.\\
Intent: {\bf inout}.\\
Specified as: an integer, real or complex variable, which may be a Specified as: an integer, real or complex variable, which may be a
scalar, or a rank 1 or 2 array. \\ scalar, or a rank 1 or 2 array. \\
Type, rank and size must agree on all processes. Type, rank and size must agree on all processes.
@ -302,19 +324,22 @@ operation based on the underlying communication library.
\item[\bf On Entry ] \item[\bf On Entry ]
\item[icontxt] the communication context identifying the virtual \item[icontxt] the communication context identifying the virtual
parallel machine.\\ parallel machine.\\
Scope:{\bf global}.\\ Scope: {\bf global}.\\
Type:{\bf required}.\\ Type: {\bf required}.\\
Intent: {\bf in}.\\
Specified as: an integer variable. Specified as: an integer variable.
\item[dat] The local contribution to the global maximum.\\ \item[dat] The local contribution to the global maximum.\\
Scope:{\bf local}.\\ Scope: {\bf local}.\\
Type:{\bf required}.\\ Type: {\bf required}.\\
Intent: {\bf inout}.\\
Specified as: an integer or real variable, which may be a Specified as: an integer or real variable, which may be a
scalar, or a rank 1 or 2 array. \ scalar, or a rank 1 or 2 array. \
Type, rank and size must agree on all processes. Type, rank and size must agree on all processes.
\item[root] Process to hold the final maximum, or $-1$ to make it available \item[root] Process to hold the final maximum, or $-1$ to make it available
on all processes.\\ on all processes.\\
Scope:{\bf global}.\\ Scope: {\bf global}.\\
Type:{\bf optional}.\\ Type: {\bf optional}.\\
Intent: {\bf in}.\\
Specified as: an integer value $-1<= root <= np-1$, default -1. \\ Specified as: an integer value $-1<= root <= np-1$, default -1. \\
\end{description} \end{description}
@ -322,8 +347,9 @@ Specified as: an integer value $-1<= root <= np-1$, default -1. \\
\begin{description} \begin{description}
\item[\bf On Return] \item[\bf On Return]
\item[dat] On destination process(es), the result of the maximum operation.\\ \item[dat] On destination process(es), the result of the maximum operation.\\
Scope:{\bf global}.\\ Scope: {\bf global}.\\
Type:{\bf required}.\\ Type: {\bf required}.\\
Intent: {\bf in}.\\
Specified as: an integer or real variable, which may be a Specified as: an integer or real variable, which may be a
scalar, or a rank 1 or 2 array. \ scalar, or a rank 1 or 2 array. \
Type, rank and size must agree on all processes. Type, rank and size must agree on all processes.
@ -347,19 +373,22 @@ operation based on the underlying communication library.
\item[\bf On Entry ] \item[\bf On Entry ]
\item[icontxt] the communication context identifying the virtual \item[icontxt] the communication context identifying the virtual
parallel machine.\\ parallel machine.\\
Scope:{\bf global}.\\ Scope: {\bf global}.\\
Type:{\bf required}.\\ Type: {\bf required}.\\
Intent: {\bf in}.\\
Specified as: an integer variable. Specified as: an integer variable.
\item[dat] The local contribution to the global minimum.\\ \item[dat] The local contribution to the global minimum.\\
Scope:{\bf local}.\\ Scope: {\bf local}.\\
Type:{\bf required}.\\ Type: {\bf required}.\\
Intent: {\bf inout}.\\
Specified as: an integer or real variable, which may be a Specified as: an integer or real variable, which may be a
scalar, or a rank 1 or 2 array. \ scalar, or a rank 1 or 2 array. \
Type, rank and size must agree on all processes. Type, rank and size must agree on all processes.
\item[root] Process to hold the final value, or $-1$ to make it available \item[root] Process to hold the final value, or $-1$ to make it available
on all processes.\\ on all processes.\\
Scope:{\bf global}.\\ Scope: {\bf global}.\\
Type:{\bf optional}.\\ Type: {\bf optional}.\\
Intent: {\bf in}.\\
Specified as: an integer value $-1<= root <= np-1$, default -1. \\ Specified as: an integer value $-1<= root <= np-1$, default -1. \\
\end{description} \end{description}
@ -367,8 +396,9 @@ Specified as: an integer value $-1<= root <= np-1$, default -1. \\
\begin{description} \begin{description}
\item[\bf On Return] \item[\bf On Return]
\item[dat] On destination process(es), the result of the minimum operation.\\ \item[dat] On destination process(es), the result of the minimum operation.\\
Scope:{\bf global}.\\ Scope: {\bf global}.\\
Type:{\bf required}.\\ Type: {\bf required}.\\
Intent: {\bf inout}.\\
Specified as: an integer or real variable, which may be a Specified as: an integer or real variable, which may be a
scalar, or a rank 1 or 2 array. \\ scalar, or a rank 1 or 2 array. \\
Type, rank and size must agree on all processes. Type, rank and size must agree on all processes.
@ -392,19 +422,22 @@ operation based on the underlying communication library.
\item[\bf On Entry ] \item[\bf On Entry ]
\item[icontxt] the communication context identifying the virtual \item[icontxt] the communication context identifying the virtual
parallel machine.\\ parallel machine.\\
Scope:{\bf global}.\\ Scope: {\bf global}.\\
Type:{\bf required}.\\ Type: {\bf required}.\\
Intent: {\bf in}.\\
Specified as: an integer variable. Specified as: an integer variable.
\item[dat] The local contribution to the global maximum.\\ \item[dat] The local contribution to the global maximum.\\
Scope:{\bf local}.\\ Scope: {\bf local}.\\
Type:{\bf required}.\\ Type: {\bf required}.\\
Intent: {\bf inout}.\\
Specified as: an integer, real or complex variable, which may be a Specified as: an integer, real or complex variable, which may be a
scalar, or a rank 1 or 2 array. \ scalar, or a rank 1 or 2 array. \
Type, rank and size must agree on all processes. Type, rank and size must agree on all processes.
\item[root] Process to hold the final value, or $-1$ to make it available \item[root] Process to hold the final value, or $-1$ to make it available
on all processes.\\ on all processes.\\
Scope:{\bf global}.\\ Scope: {\bf global}.\\
Type:{\bf optional}.\\ Type: {\bf optional}.\\
Intent: {\bf in}.\\
Specified as: an integer value $-1<= root <= np-1$, default -1. \\ Specified as: an integer value $-1<= root <= np-1$, default -1. \\
\end{description} \end{description}
@ -412,8 +445,9 @@ Specified as: an integer value $-1<= root <= np-1$, default -1. \\
\begin{description} \begin{description}
\item[\bf On Return] \item[\bf On Return]
\item[dat] On destination process(es), the result of the maximum operation.\\ \item[dat] On destination process(es), the result of the maximum operation.\\
Scope:{\bf global}.\\ Scope: {\bf global}.\\
Type:{\bf required}.\\ Type: {\bf required}.\\
Intent: {\bf inout}.\\
Specified as: an integer, real or complex variable, which may be a Specified as: an integer, real or complex variable, which may be a
scalar, or a rank 1 or 2 array. \ scalar, or a rank 1 or 2 array. \
Type, rank and size must agree on all processes. Type, rank and size must agree on all processes.
@ -437,19 +471,22 @@ operation based on the underlying communication library.
\item[\bf On Entry ] \item[\bf On Entry ]
\item[icontxt] the communication context identifying the virtual \item[icontxt] the communication context identifying the virtual
parallel machine.\\ parallel machine.\\
Scope:{\bf global}.\\ Scope: {\bf global}.\\
Type:{\bf required}.\\ Type: {\bf required}.\\
Intent: {\bf in}.\\
Specified as: an integer variable. Specified as: an integer variable.
\item[dat] The local contribution to the global minimum.\\ \item[dat] The local contribution to the global minimum.\\
Scope:{\bf local}.\\ Scope: {\bf local}.\\
Type:{\bf required}.\\ Type: {\bf required}.\\
Intent: {\bf inout}.\\
Specified as: an integer, real or complex variable, which may be a Specified as: an integer, real or complex variable, which may be a
scalar, or a rank 1 or 2 array. \ scalar, or a rank 1 or 2 array. \
Type, rank and size must agree on all processes. Type, rank and size must agree on all processes.
\item[root] Process to hold the final value, or $-1$ to make it available \item[root] Process to hold the final value, or $-1$ to make it available
on all processes.\\ on all processes.\\
Scope:{\bf global}.\\ Scope: {\bf global}.\\
Type:{\bf optional}.\\ Type: {\bf optional}.\\
Intent: {\bf in}.\\
Specified as: an integer value $-1<= root <= np-1$, default -1. \\ Specified as: an integer value $-1<= root <= np-1$, default -1. \\
\end{description} \end{description}
@ -457,8 +494,9 @@ Specified as: an integer value $-1<= root <= np-1$, default -1. \\
\begin{description} \begin{description}
\item[\bf On Return] \item[\bf On Return]
\item[dat] On destination process(es), the result of the minimum operation.\\ \item[dat] On destination process(es), the result of the minimum operation.\\
Scope:{\bf global}.\\ Scope: {\bf global}.\\
Type:{\bf required}.\\ Type: {\bf required}.\\
Intent: {\bf inout}.\\
Specified as: an integer, real or complex variable, which may be a Specified as: an integer, real or complex variable, which may be a
scalar, or a rank 1 or 2 array. \\ scalar, or a rank 1 or 2 array. \\
Type, rank and size must agree on all processes. Type, rank and size must agree on all processes.
@ -482,23 +520,27 @@ This subroutine sends a packet of data to a destination.
\item[\bf On Entry ] \item[\bf On Entry ]
\item[icontxt] the communication context identifying the virtual \item[icontxt] the communication context identifying the virtual
parallel machine.\\ parallel machine.\\
Scope:{\bf global}.\\ Scope: {\bf global}.\\
Type:{\bf required}.\\ Type: {\bf required}.\\
Intent: {\bf in}.\\
Specified as: an integer variable. Specified as: an integer variable.
\item[dat] The data to be sent.\\ \item[dat] The data to be sent.\\
Scope:{\bf local}.\\ Scope: {\bf local}.\\
Type:{\bf required}.\\ Type: {\bf required}.\\
Intent: {\bf in}.\\
Specified as: an integer, real or complex variable, which may be a Specified as: an integer, real or complex variable, which may be a
scalar, or a rank 1 or 2 array, or a character or logical scalar. \ scalar, or a rank 1 or 2 array, or a character or logical scalar. \
Type and rank must agree on sender and receiver process; if $m$ is Type and rank must agree on sender and receiver process; if $m$ is
not specified, size must agree as well. not specified, size must agree as well.
\item[dst] Destination process.\\ \item[dst] Destination process.\\
Scope:{\bf global}.\\ Scope: {\bf global}.\\
Type:{\bf required}.\\ Type: {\bf required}.\\
Intent: {\bf in}.\\
Specified as: an integer value $0<= dst <= np-1$. \\ Specified as: an integer value $0<= dst <= np-1$. \\
\item[m] Number of rows.\\ \item[m] Number of rows.\\
Scope:{\bf global}.\\ Scope: {\bf global}.\\
Type:{\bf Optional}.\\ Type: {\bf Optional}.\\
Intent: {\bf in}.\\
Specified as: an integer value $0<= m <= size(dat,1)$. \\ Specified as: an integer value $0<= m <= size(dat,1)$. \\
When $dat$ is a rank 2 array, specifies the number of rows to be sent When $dat$ is a rank 2 array, specifies the number of rows to be sent
independently of the leading dimension $size(dat,1)$; must have the independently of the leading dimension $size(dat,1)$; must have the
@ -519,16 +561,19 @@ This subroutine receives a packet of data to a destination.
\item[\bf On Entry ] \item[\bf On Entry ]
\item[icontxt] the communication context identifying the virtual \item[icontxt] the communication context identifying the virtual
parallel machine.\\ parallel machine.\\
Scope:{\bf global}.\\ Scope: {\bf global}.\\
Type:{\bf required}.\\ Type: {\bf required}.\\
Intent: {\bf in}.\\
Specified as: an integer variable. Specified as: an integer variable.
\item[src] Source process.\\ \item[src] Source process.\\
Scope:{\bf global}.\\ Scope: {\bf global}.\\
Type:{\bf required}.\\ Type: {\bf required}.\\
Intent: {\bf in}.\\
Specified as: an integer value $0<= src <= np-1$. \\ Specified as: an integer value $0<= src <= np-1$. \\
\item[m] Number of rows.\\ \item[m] Number of rows.\\
Scope:{\bf global}.\\ Scope: {\bf global}.\\
Type:{\bf Optional}.\\ Type: {\bf Optional}.\\
Intent: {\bf in}.\\
Specified as: an integer value $0<= m <= size(dat,1)$. \\ Specified as: an integer value $0<= m <= size(dat,1)$. \\
When $dat$ is a rank 2 array, specifies the number of rows to be sent When $dat$ is a rank 2 array, specifies the number of rows to be sent
independently of the leading dimension $size(dat,1)$; must have the independently of the leading dimension $size(dat,1)$; must have the
@ -539,8 +584,9 @@ same value on sending and receiving processes.
\begin{description} \begin{description}
\item[\bf On Return] \item[\bf On Return]
\item[dat] The data to be received.\\ \item[dat] The data to be received.\\
Scope:{\bf local}.\\ Scope: {\bf local}.\\
Type:{\bf required}.\\ Type: {\bf required}.\\
Intent: {\bf inout}.\\
Specified as: an integer, real or complex variable, which may be a Specified as: an integer, real or complex variable, which may be a
scalar, or a rank 1 or 2 array, or a character or logical scalar. \ scalar, or a rank 1 or 2 array, or a character or logical scalar. \
Type and rank must agree on sender and receiver process; if $m$ is Type and rank must agree on sender and receiver process; if $m$ is

@ -30,13 +30,10 @@ module \verb|psb_prec_mod|.
\begin{description} \begin{description}
\item[\bf On Entry] \item[\bf On Entry]
\item[prec]
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a preconditioner data structure \precdata.
\item[ptype] the type of preconditioner. \item[ptype] the type of preconditioner.
Scope: {\bf global} \\ Scope: {\bf global} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: a character string, see usage notes. Specified as: a character string, see usage notes.
%% \item[iv] integer parameters for the precondtioner. %% \item[iv] integer parameters for the precondtioner.
%% Scope: {\bf global} \\ %% Scope: {\bf global} \\
@ -48,9 +45,15 @@ Specified as: a character string, see usage notes.
%% Specified as: a long precision real number. %% Specified as: a long precision real number.
\item[\bf On Exit] \item[\bf On Exit]
\item[prec]
Scope: {\bf local} \\
Type: {\bf required}\\
Intent: {\bf inout}.\\
Specified as: a preconditioner data structure \precdata.
\item[info] \item[info]
Scope: {\bf global} \\ Scope: {\bf global} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf out}.\\
Error code: if no error, 0 is returned. Error code: if no error, 0 is returned.
\end{description} \end{description}
\subsection*{Usage Notes} \subsection*{Usage Notes}
@ -153,14 +156,22 @@ $ptype$ string as follows\footnote{The string is case-insensitive}:
\item[a] the system sparse matrix. \item[a] the system sparse matrix.
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}, target.\\
Specified as: a sparse matrix data structure \spdata. Specified as: a sparse matrix data structure \spdata.
\item[prec] the preconditioner.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Intent: {\bf inout}.\\
Specified as: an already initialized precondtioner data structure \precdata\\
\item[desc\_a] the problem communication descriptor. \item[desc\_a] the problem communication descriptor.
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}, target.\\
Specified as: a communication descriptor data structure \descdata. Specified as: a communication descriptor data structure \descdata.
\item[upd] \item[upd]
Scope: {\bf global} \\ Scope: {\bf global} \\
Type: {\bf optional}\\ Type: {\bf optional}\\
Intent: {\bf in}.\\
Specified as: a character. Specified as: a character.
\end{description} \end{description}
@ -169,10 +180,12 @@ Specified as: a character.
\item[prec] the preconditioner.\\ \item[prec] the preconditioner.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf inout}.\\
Specified as: a precondtioner data structure \precdata\\ Specified as: a precondtioner data structure \precdata\\
\item[info] Error code.\\ \item[info] Error code.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf out}.\\
An integer value; 0 means no error has been detected. An integer value; 0 means no error has been detected.
\end{description} \end{description}
@ -188,22 +201,27 @@ An integer value; 0 means no error has been detected.
\item[prec] the preconditioner. \item[prec] the preconditioner.
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: a preconditioner data structure \precdata. Specified as: a preconditioner data structure \precdata.
\item[x] the source vector. \item[x] the source vector.
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf require}\\ Type: {\bf required}\\
Intent: {\bf inout}.\\
Specified as: a double precision array. Specified as: a double precision array.
\item[desc\_a] the problem communication descriptor. \item[desc\_a] the problem communication descriptor.
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: a communication data structure \descdata. Specified as: a communication data structure \descdata.
\item[trans] \item[trans]
Scope: {\bf } \\ Scope: {\bf } \\
Type: {\bf optional}\\ Type: {\bf optional}\\
Intent: {\bf in}.\\
Specified as: a character. Specified as: a character.
\item[work] an optional work space \item[work] an optional work space
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf optional}\\ Type: {\bf optional}\\
Intent: {\bf inout}.\\
Specified as: a double precision array. Specified as: a double precision array.
\end{description} \end{description}
@ -212,10 +230,12 @@ Specified as: a double precision array.
\item[y] the destination vector. \item[y] the destination vector.
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf inout}.\\
Specified as: a double precision array. Specified as: a double precision array.
\item[info] Error code.\\ \item[info] Error code.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf out}.\\
An integer value; 0 means no error has been detected. An integer value; 0 means no error has been detected.
\end{description} \end{description}
@ -230,6 +250,7 @@ An integer value; 0 means no error has been detected.
\item[prec] the preconditioner. \item[prec] the preconditioner.
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: a preconditioner data structure \precdata. Specified as: a preconditioner data structure \precdata.
\end{description} \end{description}

@ -39,27 +39,32 @@ Long Precision Complex & psb\_geaxpby \\
\item[alpha] the scalar $\alpha$.\\ \item[alpha] the scalar $\alpha$.\\
Scope: {\bf global} \\ Scope: {\bf global} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf in}.\\
Specified as: a number of the data type indicated in Table~\ref{tab:f90axpby}. Specified as: a number of the data type indicated in Table~\ref{tab:f90axpby}.
\item[x] the local portion of global dense matrix \item[x] the local portion of global dense matrix
$x$.\\ $x$.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf in}.\\
Specified as: a rank one or two array Specified as: a rank one or two array
containing numbers of type containing numbers of type
specified in Table~\ref{tab:f90axpby}. The rank of $x$ must be the same of $y$. specified in Table~\ref{tab:f90axpby}. The rank of $x$ must be the same of $y$.
\item[beta] the scalar $\beta$.\\ \item[beta] the scalar $\beta$.\\
Scope: {\bf global} \\ Scope: {\bf global} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf in}.\\
Specified as: a number of the data type indicated in Table~\ref{tab:f90axpby}. Specified as: a number of the data type indicated in Table~\ref{tab:f90axpby}.
\item[y] the local portion of the global dense matrix \item[y] the local portion of the global dense matrix
$y$. \\ $y$. \\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf inout}.\\
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}. The rank of $y$ must be the same of $x$. indicated in Table~\ref{tab:f90axpby}. The rank of $y$ must be the same of $x$.
\item[desc\_a] contains data structures for communications.\\ \item[desc\_a] contains data structures for communications.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: a structured data of type \descdata. Specified as: a structured data of type \descdata.
%% \item[n] number of columns in dense submatrices $x$ and $y$.\\ %% \item[n] number of columns in dense submatrices $x$ and $y$.\\
%% Scope: {\bf global} \\ %% Scope: {\bf global} \\
@ -86,11 +91,13 @@ Specified as: a structured data of type \descdata.
\item[y] the local portion of result submatrix $y$.\\ \item[y] the local portion of result submatrix $y$.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf inout}.\\
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] Error code.\\ \item[info] Error code.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf out}.\\
An integer value; 0 means no error has been detected. An integer value; 0 means no error has been detected.
\end{description} \end{description}
@ -140,6 +147,7 @@ $x$.\\
%% local subarray used, based on $jx$ and the field $matrix\_data$ of $desc\_a$ . \\ %% local subarray used, based on $jx$ and the field $matrix\_data$ of $desc\_a$ . \\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf in}.\\
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:f90dot}. The rank of $x$ must be the same of $y$. Table~\ref{tab:f90dot}. The rank of $x$ must be the same of $y$.
@ -149,12 +157,14 @@ $y$. \\
%% local subarray used, based on $iy, jy$ and the field $matrix\_data$ of $desc\_a$ . \\ %% local subarray used, based on $iy, jy$ and the field $matrix\_data$ of $desc\_a$ . \\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf in}.\\
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:f90dot}. The rank of $y$ must be the same of $x$. Table~\ref{tab:f90dot}. The rank of $y$ must be the same of $x$.
\item[desc\_a] contains data structures for communications.\\ \item[desc\_a] contains data structures for communications.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: a structured data of type \descdata. Specified as: a structured data of type \descdata.
%% \item[jx] the column index of global dense matrix $x$, %% \item[jx] the column index of global dense matrix $x$,
%% identifying the column of subvector $x$.\\ %% identifying the column of subvector $x$.\\
@ -175,6 +185,7 @@ Specified as: a number of the data type indicated in Table~\ref{tab:f90dot}.
\item[info] Error code.\\ \item[info] Error code.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf out}.\\
An integer value; 0 means no error has been detected. An integer value; 0 means no error has been detected.
\end{description} \end{description}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@ -214,6 +225,7 @@ Long Precision Complex & psb\_gedots \\
$x$. \\ $x$. \\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf in}.\\
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:f90mdot}. The rank of $x$ must be the same of $y$. Table~\ref{tab:f90mdot}. The rank of $x$ must be the same of $y$.
@ -221,21 +233,25 @@ Table~\ref{tab:f90mdot}. The rank of $x$ must be the same of $y$.
$y$. \\ $y$. \\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf in}.\\
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:f90mdot}. The rank of $y$ must be the same of $x$. Table~\ref{tab:f90mdot}. The rank of $y$ must be the same of $x$.
\item[desc\_a] contains data structures for communications.\\ \item[desc\_a] contains data structures for communications.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: a structured data of type \descdata. Specified as: a structured data of type \descdata.
\item[\bf On Return] \item[\bf On Return]
\item[res] is the dot product of subvectors $x$ and $y$.\\ \item[res] is the dot product of subvectors $x$ and $y$.\\
Scope: {\bf global} \\ Scope: {\bf global} \\
Intent: {\bf out}.\\
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] Error code.\\ \item[info] Error code.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf out}.\\
An integer value; 0 means no error has been detected. An integer value; 0 means no error has been detected.
\end{description} \end{description}
@ -286,12 +302,14 @@ $x$. %% This function computes the location of the first element of
\\ \\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf in}.\\
Specified as: a rank one or two array Specified as: a rank one or two array
containing numbers of type specified in containing numbers of type specified in
Table~\ref{tab:f90amax}. Table~\ref{tab:f90amax}.
\item[desc\_a] contains data structures for communications.\\ \item[desc\_a] contains data structures for communications.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: a structured data of type \descdata. Specified as: a structured data of type \descdata.
%% \item[jx] the column index of global dense matrix $x$, %% \item[jx] the column index of global dense matrix $x$,
%% identifying the column of subvector $x$.\\ %% identifying the column of subvector $x$.\\
@ -307,6 +325,7 @@ Specified as: a long precision real number.
\item[info] Error code.\\ \item[info] Error code.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf out}.\\
An integer value; 0 means no error has been detected. An integer value; 0 means no error has been detected.
\end{description} \end{description}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@ -342,20 +361,24 @@ Long Precision Real &Long Precision Complex & psb\_geamaxs\\
$x$. \\ $x$. \\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf in}.\\
Specified as: a rank one or two array Specified as: a rank one or two array
containing numbers of type specified in containing numbers of type specified in
Table~\ref{tab:f90mamax}. Table~\ref{tab:f90mamax}.
\item[desc\_a] contains data structures for communications.\\ \item[desc\_a] contains data structures for communications.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: a structured data of type \descdata. Specified as: a structured data of type \descdata.
\item[\bf On Return] \item[\bf On Return]
\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} \\
Intent: {\bf out}.\\
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] Error code.\\ \item[info] Error code.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf out}.\\
An integer value; 0 means no error has been detected. An integer value; 0 means no error has been detected.
\end{description} \end{description}
@ -400,12 +423,14 @@ $x$. %% This function computes the location of the first element of
\\ \\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf in}.\\
Specified as: a rank one or two array Specified as: a rank one or two array
containing numbers of type specified in containing numbers of type specified in
Table~\ref{tab:f90asum}. Table~\ref{tab:f90asum}.
\item[desc\_a] contains data structures for communications.\\ \item[desc\_a] contains data structures for communications.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: a structured data of type \descdata. Specified as: a structured data of type \descdata.
\item[\bf On Return] \item[\bf On Return]
@ -415,6 +440,7 @@ Specified as: a long precision real number.
\item[info] Error code.\\ \item[info] Error code.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf out}.\\
An integer value; 0 means no error has been detected. An integer value; 0 means no error has been detected.
\end{description} \end{description}
@ -456,21 +482,25 @@ $x$. %% This function computes the location of the first element of
\\ \\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf in}.\\
Specified as: a rank one or two array Specified as: a rank one or two array
containing numbers of type specified in containing numbers of type specified in
Table~\ref{tab:f90asums}. Table~\ref{tab:f90asums}.
\item[desc\_a] contains data structures for communications.\\ \item[desc\_a] contains data structures for communications.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: a structured data of type \descdata. Specified as: a structured data of type \descdata.
\item[\bf On Return] \item[\bf On Return]
\item[res] contains the 1-norm of (the columns of) $x$.\\ \item[res] contains the 1-norm of (the columns of) $x$.\\
Scope: {\bf global} \\ Scope: {\bf global} \\
Intent: {\bf out}.\\
Specified as: a long precision real number. Specified as: a long precision real number.
\item[info] Error code.\\ \item[info] Error code.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf out}.\\
An integer value; 0 means no error has been detected. An integer value; 0 means no error has been detected.
\end{description} \end{description}
@ -519,12 +549,14 @@ $x$.%% This function computes the location of the first element of
\\ \\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf in}.\\
Specified as: a rank one or two array Specified as: a rank one or two array
containing numbers of type specified in containing numbers of type specified in
Table~\ref{tab:f90nrm2}. Table~\ref{tab:f90nrm2}.
\item[desc\_a] contains data structures for communications.\\ \item[desc\_a] contains data structures for communications.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: a structured data of type \descdata. Specified as: a structured data of type \descdata.
%% \item[jx] the column index of global dense matrix $x$, %% \item[jx] the column index of global dense matrix $x$,
%% identifying the column of subvector $x$.\\ %% identifying the column of subvector $x$.\\
@ -541,6 +573,7 @@ Specified as: a long precision real number.
\item[info] Error code.\\ \item[info] Error code.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf out}.\\
An integer value; 0 means no error has been detected. An integer value; 0 means no error has been detected.
\end{description} \end{description}
@ -584,21 +617,25 @@ $x$. %% This function computes the location of the first element of
\\ \\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf in}.\\
Specified as: a rank one or two array Specified as: a rank one or two array
containing numbers of type specified in containing numbers of type specified in
Table~\ref{tab:f90nrm2s}. Table~\ref{tab:f90nrm2s}.
\item[desc\_a] contains data structures for communications.\\ \item[desc\_a] contains data structures for communications.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: a structured data of type \descdata. Specified as: a structured data of type \descdata.
\item[\bf On Return] \item[\bf On Return]
\item[res] contains the 1-norm of (the columns of) $x$.\\ \item[res] contains the 1-norm of (the columns of) $x$.\\
Scope: {\bf global} \\ Scope: {\bf global} \\
Intent: {\bf out}.\\
Specified as: a long precision real number. Specified as: a long precision real number.
\item[info] Error code.\\ \item[info] Error code.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf out}.\\
An integer value; 0 means no error has been detected. An integer value; 0 means no error has been detected.
\end{description} \end{description}
@ -643,10 +680,12 @@ Long Precision Complex & psb\_spnrmi \\
$A$. \\ $A$. \\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: a structured data of type \spdata. Specified as: a structured data of type \spdata.
\item[desc\_a] contains data structures for communications.\\ \item[desc\_a] contains data structures for communications.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: a structured data of type \descdata. Specified as: a structured data of type \descdata.
\item[\bf On Return] \item[\bf On Return]
\item[Function value] is the infinity-norm of sparse submatrix $A$.\\ \item[Function value] is the infinity-norm of sparse submatrix $A$.\\
@ -655,6 +694,7 @@ Specified as: a long precision real number.
\item[info] Error code.\\ \item[info] Error code.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf out}.\\
An integer value; 0 means no error has been detected. An integer value; 0 means no error has been detected.
\end{description} \end{description}
@ -714,12 +754,14 @@ trans, work}
\item[alpha] the scalar $\alpha$.\\ \item[alpha] the scalar $\alpha$.\\
Scope: {\bf global} \\ Scope: {\bf global} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: a number of the data type indicated in Specified as: a number of the data type indicated in
Table~\ref{tab:f90spmm}. Table~\ref{tab:f90spmm}.
\item[a] the local portion of the sparse matrix \item[a] the local portion of the sparse matrix
$A$. \\ $A$. \\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: a structured data of type \spdata. Specified as: a structured data of type \spdata.
\item[x] the local portion of global dense matrix \item[x] the local portion of global dense matrix
$x$. %% This subroutine computes the location of the first element of $x$. %% This subroutine computes the location of the first element of
@ -727,12 +769,14 @@ $x$. %% This subroutine computes the location of the first element of
\\ \\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf in}.\\
Specified as: a rank one or two array Specified as: a rank one or two array
containing numbers of type specified in containing numbers of type specified in
Table~\ref{tab:f90spmm}. The rank of $x$ must be the same of $y$. Table~\ref{tab:f90spmm}. The rank of $x$ must be the same of $y$.
\item[beta] the scalar $\beta$.\\ \item[beta] the scalar $\beta$.\\
Scope: {\bf global} \\ Scope: {\bf global} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf in}.\\
Specified as: a number of the data type indicated in Table~\ref{tab:f90spmm}. Specified as: a number of the data type indicated in Table~\ref{tab:f90spmm}.
\item[y] the local portion of global dense matrix \item[y] the local portion of global dense matrix
$y$. %% This subroutine computes the location of the first element of $y$. %% This subroutine computes the location of the first element of
@ -740,12 +784,14 @@ $y$. %% This subroutine computes the location of the first element of
\\ \\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf inout}.\\
Specified as: a rank one or two array Specified as: a rank one or two array
containing numbers of type specified in containing numbers of type specified in
Table~\ref{tab:f90spmm}. The rank of $y$ must be the same of $x$. Table~\ref{tab:f90spmm}. The rank of $y$ must be the same of $x$.
\item[desc\_a] contains data structures for communications.\\ \item[desc\_a] contains data structures for communications.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: a structured data of type \descdata. Specified as: a structured data of type \descdata.
\item[trans] indicate what kind of operation to perform. \item[trans] indicate what kind of operation to perform.
\begin{description} \begin{description}
@ -757,6 +803,7 @@ Specified as: a structured data of type \descdata.
\end{description} \end{description}
Scope: {\bf global} \\ Scope: {\bf global} \\
Type: {\bf optional}\\ Type: {\bf optional}\\
Intent: {\bf in}.\\
Default: $trans = N$\\ Default: $trans = N$\\
Specified as: a character variable. Specified as: a character variable.
%% \item[k] number of columns in dense submatrices $x$ and $y$. \\ %% \item[k] number of columns in dense submatrices $x$ and $y$. \\
@ -780,6 +827,7 @@ Specified as: a character variable.
\item[work] work array.\\ \item[work] work array.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf optional}\\ Type: {\bf optional}\\
Intent: {\bf inout}.\\
Specified as: a rank one array of the same type of $x$ and $y$ with Specified as: a rank one array of the same type of $x$ and $y$ with
the TARGET attribute. the TARGET attribute.
@ -787,12 +835,14 @@ the TARGET attribute.
\item[y] the local portion of result submatrix $y$.\\ \item[y] the local portion of result submatrix $y$.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf inout}.\\
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] Error code.\\ \item[info] Error code.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf out}.\\
An integer value; 0 means no error has been detected. An integer value; 0 means no error has been detected.
\end{description} \end{description}
@ -854,12 +904,14 @@ Long Precision Complex & psb\_spsm \\
\item[alpha] the scalar $\alpha$.\\ \item[alpha] the scalar $\alpha$.\\
Scope: {\bf global} \\ Scope: {\bf global} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: a number of the data type indicated in Specified as: a number of the data type indicated in
Table~\ref{tab:f90spsm}. Table~\ref{tab:f90spsm}.
\item[t] the global portion of the sparse matrix \item[t] the global portion of the sparse matrix
$T$. \\ $T$. \\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: a structured data type specified in Specified as: a structured data type specified in
\S~\ref{sec:datastruct}. \S~\ref{sec:datastruct}.
\item[x] the local portion of global dense matrix \item[x] the local portion of global dense matrix
@ -868,12 +920,14 @@ $x$. %% This subroutine computes the location of the first element of
\\ \\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf in}.\\
Specified as: a rank one or two array Specified as: a rank one or two array
containing numbers of type specified in containing numbers of type specified in
Table~\ref{tab:f90spsm}. The rank of $x$ must be the same of $y$. Table~\ref{tab:f90spsm}. The rank of $x$ must be the same of $y$.
\item[beta] the scalar $\beta$.\\ \item[beta] the scalar $\beta$.\\
Scope: {\bf global} \\ Scope: {\bf global} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf in}.\\
Specified as: a number of the data type indicated in Table~\ref{tab:f90spsm}. Specified as: a number of the data type indicated in Table~\ref{tab:f90spsm}.
\item[y] the local portion of global dense matrix \item[y] the local portion of global dense matrix
$y$. %% This subroutine computes the location of the first element of $y$. %% This subroutine computes the location of the first element of
@ -881,12 +935,14 @@ $y$. %% This subroutine computes the location of the first element of
\\ \\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf inout}.\\
Specified as: a rank one or two array Specified as: a rank one or two array
containing numbers of type specified in containing numbers of type specified in
Table~\ref{tab:f90spsm}. The rank of $y$ must be the same of $x$. Table~\ref{tab:f90spsm}. The rank of $y$ must be the same of $x$.
\item[desc\_a] contains data structures for communications.\\ \item[desc\_a] contains data structures for communications.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: a structured data of type \descdata. Specified as: a structured data of type \descdata.
\item[trans] specify with {\em unitd} the operation to perform. \item[trans] specify with {\em unitd} the operation to perform.
\begin{description} \begin{description}
@ -896,6 +952,7 @@ Specified as: a structured data of type \descdata.
\end{description} \end{description}
Scope: {\bf global} \\ Scope: {\bf global} \\
Type: {\bf optional}\\ Type: {\bf optional}\\
Intent: {\bf in}.\\
Default: $trans = N$\\ Default: $trans = N$\\
Specified as: a character variable. Specified as: a character variable.
\item[unitd] specify with {\em trans} the operation to perform. \item[unitd] specify with {\em trans} the operation to perform.
@ -906,6 +963,7 @@ Specified as: a character variable.
\end{description} \end{description}
Scope: {\bf global} \\ Scope: {\bf global} \\
Type: {\bf optional}\\ Type: {\bf optional}\\
Intent: {\bf in}.\\
Default: $unitd = U$\\ Default: $unitd = U$\\
Specified as: a character variable. Specified as: a character variable.
\item[choice] specifies the update of overlap elements to be performed \item[choice] specifies the update of overlap elements to be performed
@ -918,17 +976,20 @@ Specified as: a character variable.
\end{description} \end{description}
Scope: {\bf global} \\ Scope: {\bf global} \\
Type: {\bf optional}\\ Type: {\bf optional}\\
Intent: {\bf in}.\\
Default: \verb|psb_avg_|\\ Default: \verb|psb_avg_|\\
Specified as: an integer variable. Specified as: an integer variable.
\item[diag] the diagonal scaling matrix.\\ \item[diag] the diagonal scaling matrix.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf optional}\\ Type: {\bf optional}\\
Intent: {\bf in}.\\
Default: $diag(1) = 1 (no scaling)$\\ Default: $diag(1) = 1 (no scaling)$\\
Specified as: a rank one array containing numbers of the type Specified as: a rank one array containing numbers of the type
indicated in Table~\ref{tab:f90spsm}. indicated in Table~\ref{tab:f90spsm}.
\item[work] a work array. \\ \item[work] a work array. \\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf optional}\\ Type: {\bf optional}\\
Intent: {\bf inout}.\\
Specified as: a rank one array of the same type of $x$ with the Specified as: a rank one array of the same type of $x$ with the
TARGET attribute. TARGET attribute.
@ -939,12 +1000,14 @@ $y$. %% This subroutine computes the location of the first element of
\\ \\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf inout}.\\
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] Error code.\\ \item[info] Error code.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf out}.\\
An integer value; 0 means no error has been detected. An integer value; 0 means no error has been detected.
\end{description} \end{description}

@ -22,20 +22,24 @@ the specific initialization strategy:
\item[icontxt] the communication context.\\ \item[icontxt] the communication context.\\
Scope:{\bf global}.\\ Scope:{\bf global}.\\
Type:{\bf required}.\\ Type:{\bf required}.\\
Intent: {\bf in}.\\
Specified as: an integer value. Specified as: an integer value.
\item[vg] Data allocation: each index $i\in \{1\dots mg\}$ is allocated \item[vg] Data allocation: each index $i\in \{1\dots mg\}$ is allocated
to process $vg(i)$. to process $vg(i)$.
Scope:{\bf global}.\\ Scope:{\bf global}.\\
Type:{\bf optional}.\\ Type:{\bf optional}.\\
Intent: {\bf in}.\\
Specified as: an integer array. Specified as: an integer array.
\item[flag] Specifies whether entries in $vg$ are zero- or one-based. \item[flag] Specifies whether entries in $vg$ are zero- or one-based.
Scope:{\bf global}.\\ Scope:{\bf global}.\\
Type:{\bf optional}.\\ Type:{\bf optional}.\\
Intent: {\bf in}.\\
Specified as: an integer value $0,1$, default $0$. Specified as: an integer value $0,1$, default $0$.
\item[mg] the (global) number of rows of the problem.\\ \item[mg] the (global) number of rows of the problem.\\
Scope:{\bf global}.\\ Scope:{\bf global}.\\
Type:{\bf optional}.\\ Type:{\bf optional}.\\
Intent: {\bf in}.\\
Specified as: an integer value. It is required if \verb|parts| is Specified as: an integer value. It is required if \verb|parts| is
specified. specified.
\item[parts] the subroutine that defines the partitioning scheme.\\ \item[parts] the subroutine that defines the partitioning scheme.\\
@ -46,11 +50,13 @@ Specified as: a subroutine.
calling process. calling process.
Scope:{\bf local}.\\ Scope:{\bf local}.\\
Type:{\bf optional}.\\ Type:{\bf optional}.\\
Intent: {\bf in}.\\
Specified as: an integer array. Specified as: an integer array.
\item[nl] Data allocation: in a generalized block-row distribution the \item[nl] Data allocation: in a generalized block-row distribution the
number of indices belonging to the current process. number of indices belonging to the current process.
Scope:{\bf local}.\\ Scope:{\bf local}.\\
Type:{\bf optional}.\\ Type:{\bf optional}.\\
Intent: {\bf in}.\\
Specified as: an integer value. Specified as: an integer value.
\end{description} \end{description}
@ -59,10 +65,12 @@ Specified as: an integer value.
\item[desc\_a] the communication descriptor.\\ \item[desc\_a] the communication descriptor.\\
Scope:{\bf local}.\\ Scope:{\bf local}.\\
Type:{\bf required}.\\ Type:{\bf required}.\\
Intent: {\bf out}.\\
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} \\
Intent: {\bf out}.\\
An integer value; 0 means no error has been detected. An integer value; 0 means no error has been detected.
\end{description} \end{description}
@ -135,14 +143,17 @@ communication descriptor.
\item[nz] the number of points being inserted.\\ \item[nz] the number of points being inserted.\\
Scope: {\bf local}.\\ Scope: {\bf local}.\\
Type: {\bf required}.\\ Type: {\bf required}.\\
Intent: {\bf in}.\\
Specified as: an integer value. Specified as: an integer value.
\item[ia] the indices of the starting vertex of the edges being inserted.\\ \item[ia] the indices of the starting vertex of the edges being inserted.\\
Scope: {\bf local}.\\ Scope: {\bf local}.\\
Type: {\bf required}.\\ Type: {\bf required}.\\
Intent: {\bf in}.\\
Specified as: an integer array of length $nz$. Specified as: an integer array of length $nz$.
\item[ja] the indices of the end vertex of the edges being inserted.\\ \item[ja] the indices of the end vertex of the edges being inserted.\\
Scope: {\bf local}.\\ Scope: {\bf local}.\\
Type: {\bf required}.\\ Type: {\bf required}.\\
Intent: {\bf in}.\\
Specified as: an integer array of length $nz$. Specified as: an integer array of length $nz$.
%% \item[is] the row offset.\\ %% \item[is] the row offset.\\
%% Scope:{\bf local}.\\ %% Scope:{\bf local}.\\
@ -159,10 +170,12 @@ Specified as: an integer array of length $nz$.
\item[desc\_a] the updated communication descriptor.\\ \item[desc\_a] the updated communication descriptor.\\
Scope:{\bf local}.\\ Scope:{\bf local}.\\
Type:{\bf required}.\\ Type:{\bf required}.\\
Intent: {\bf inout}.\\
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} \\
Intent: {\bf out}.\\
An integer value; 0 means no error has been detected. An integer value; 0 means no error has been detected.
\end{description} \end{description}
\section*{Notes} \section*{Notes}
@ -188,14 +201,21 @@ nor the end vertex belong to the current process.
\item[desc\_a] the communication descriptor.\\ \item[desc\_a] the communication descriptor.\\
Scope:{\bf local}.\\ Scope:{\bf local}.\\
Type:{\bf required}.\\ Type:{\bf required}.\\
Intent: {\bf inout}.\\
Specified as: a structured data of type \descdata. Specified as: a structured data of type \descdata.
\end{description} \end{description}
\begin{description} \begin{description}
\item[\bf On Return] \item[\bf On Return]
\item[desc\_a] the communication descriptor.\\
Scope:{\bf local}.\\
Type:{\bf required}.\\
Intent: {\bf inout}.\\
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} \\
Intent: {\bf out}.\\
An integer value; 0 means no error has been detected. An integer value; 0 means no error has been detected.
%\item[arg] %\item[arg]
\end{description} \end{description}
@ -212,13 +232,14 @@ An integer value; 0 means no error has been detected.
% %
\subroutine{psb\_cdcpy}{Copies a communication descriptor} \subroutine{psb\_cdcpy}{Copies a communication descriptor}
\syntax{call psb\_cdcpy}{desc\_out, desc\_a, info} \syntax{call psb\_cdcpy}{desc\_in, desc\_out, info}
\begin{description} \begin{description}
\item[\bf On Entry] \item[\bf On Entry]
\item[desc\_a] the communication descriptor.\\ \item[desc\_in] the communication descriptor.\\
Scope:{\bf local}.\\ Scope:{\bf local}.\\
Type:{\bf required}.\\ Type:{\bf required}.\\
Intent: {\bf in}.\\
Specified as: a structured data of type \descdata. Specified as: a structured data of type \descdata.
\end{description} \end{description}
@ -228,10 +249,12 @@ Specified as: a structured data of type \descdata.
\item[desc\_out] the communication descriptor copy.\\ \item[desc\_out] the communication descriptor copy.\\
Scope:{\bf local}.\\ Scope:{\bf local}.\\
Type:{\bf required}.\\ Type:{\bf required}.\\
Intent: {\bf out}.\\
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} \\
Intent: {\bf out}.\\
An integer value; 0 means no error has been detected. An integer value; 0 means no error has been detected.
\end{description} \end{description}
@ -248,6 +271,7 @@ An integer value; 0 means no error has been detected.
\item[desc\_a] the communication descriptor to be freed.\\ \item[desc\_a] the communication descriptor to be freed.\\
Scope:{\bf local}.\\ Scope:{\bf local}.\\
Type:{\bf required}.\\ Type:{\bf required}.\\
Intent: {\bf inout}.\\
Specified as: a structured data of type \descdata. Specified as: a structured data of type \descdata.
\end{description} \end{description}
@ -256,6 +280,7 @@ 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} \\
Intent: {\bf out}.\\
An integer value; 0 means no error has been detected. An integer value; 0 means no error has been detected.
\end{description} \end{description}
@ -276,18 +301,22 @@ through the input sparse matrix \verb|a|.
\item[a] A sparse matrix \item[a] A sparse matrix
Scope:{\bf local}.\\ Scope:{\bf local}.\\
Type:{\bf required}.\\ Type:{\bf required}.\\
Intent: {\bf in}.\\
Specified as: a structured data type. Specified as: a structured data type.
\item[desc\_a] the communication descriptor.\\ \item[desc\_a] the communication descriptor.\\
Scope:{\bf local}.\\ Scope:{\bf local}.\\
Type:{\bf required}.\\ Type:{\bf required}.\\
Intent: {\bf in}.\\
Specified as: a structured data of type \spdata. Specified as: a structured data of type \spdata.
\item[nl] the number of additional layers desired.\\ \item[nl] the number of additional layers desired.\\
Scope:{\bf global}.\\ Scope:{\bf global}.\\
Type:{\bf required}.\\ Type:{\bf required}.\\
Intent: {\bf in}.\\
Specified as: an integer value $nl\ge 0$. Specified as: an integer value $nl\ge 0$.
\item[extype] the kind of estension required.\\ \item[extype] the kind of estension required.\\
Scope:{\bf global}.\\ Scope:{\bf global}.\\
Type:{\bf optional }.\\ Type:{\bf optional }.\\
Intent: {\bf in}.\\
Specified as: an integer value Specified as: an integer value
\verb|psb_ovt_xhal_|, \verb|psb_ovt_asov_|, default: \verb|psb_ovt_xhal_| \verb|psb_ovt_xhal_|, \verb|psb_ovt_asov_|, default: \verb|psb_ovt_xhal_|
@ -298,10 +327,12 @@ Specified as: an integer value
\item[desc\_out] the extended communication descriptor.\\ \item[desc\_out] the extended communication descriptor.\\
Scope:{\bf local}.\\ Scope:{\bf local}.\\
Type:{\bf required}.\\ Type:{\bf required}.\\
Intent: {\bf inout}.\\
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} \\
Intent: {\bf out}.\\
An integer value; 0 means no error has been detected. An integer value; 0 means no error has been detected.
\end{description} \end{description}
@ -394,11 +425,13 @@ An integer value; 0 means no error has been detected.
\item[desc\_a] the communication descriptor.\\ \item[desc\_a] the communication descriptor.\\
Scope:{\bf local}.\\ Scope:{\bf local}.\\
Type:{\bf required}.\\ Type:{\bf required}.\\
Intent: {\bf in}.\\
Specified as: a structured data of type \descdata. Specified as: a structured data of type \descdata.
\item[nnz] An estimate of the number of nonzeroes in the local \item[nnz] An estimate of the number of nonzeroes in the local
part of the assembled matrix.\\ part of the assembled matrix.\\
Scope: {\bf global}.\\ Scope: {\bf global}.\\
Type: {\bf optional}.\\ Type: {\bf optional}.\\
Intent: {\bf in}.\\
Specified as: an integer value. Specified as: an integer value.
\end{description} \end{description}
@ -407,10 +440,12 @@ Specified as: an integer value.
\item[a] the matrix to be allocated.\\ \item[a] the matrix to be allocated.\\
Scope:{\bf local}\\ Scope:{\bf local}\\
Type:{\bf required}\\ Type:{\bf required}\\
Intent: {\bf out}.\\
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} \\
Intent: {\bf out}.\\
An integer value; 0 means no error has been detected. An integer value; 0 means no error has been detected.
\end{description} \end{description}
\section*{Notes} \section*{Notes}
@ -438,22 +473,27 @@ An integer value; 0 means no error has been detected.
\item[nz] the number of elements to be inserted.\\ \item[nz] the number of elements to be inserted.\\
Scope:{\bf local}.\\ Scope:{\bf local}.\\
Type:{\bf required}.\\ Type:{\bf required}.\\
Intent: {\bf in}.\\
Specified as: an integer scalar. Specified as: an integer scalar.
\item[ia] the row indices of the elements to be inserted.\\ \item[ia] the row indices of the elements to be inserted.\\
Scope:{\bf local}.\\ Scope:{\bf local}.\\
Type:{\bf required}.\\ Type:{\bf required}.\\
Intent: {\bf in}.\\
Specified as: an integer array of size $nz$. Specified as: an integer array of size $nz$.
\item[ja] the column indices of the elements to be inserted.\\ \item[ja] the column indices of the elements to be inserted.\\
Scope:{\bf local}.\\ Scope:{\bf local}.\\
Type:{\bf required}.\\ Type:{\bf required}.\\
Intent: {\bf in}.\\
Specified as: an integer array of size $nz$. Specified as: an integer array of size $nz$.
\item[val] the elements to be inserted.\\ \item[val] the elements to be inserted.\\
Scope:{\bf local}.\\ Scope:{\bf local}.\\
Type:{\bf required}.\\ Type:{\bf required}.\\
Intent: {\bf in}.\\
Specified as: an array of size $nz$. Specified as: an array of size $nz$.
\item[desc\_a] The communication descriptor.\\ \item[desc\_a] The communication descriptor.\\
Scope: {\bf local}. \\ Scope: {\bf local}. \\
Type: {\bf required}.\\ Type: {\bf required}.\\
Intent: {\bf inout}.\\
Specified as: a variable of type \descdata.\\ Specified as: a variable of type \descdata.\\
%% \item[is] the starting row on matrix $a$.\\ %% \item[is] the starting row on matrix $a$.\\
%% Scope:{\bf local}.\\ %% Scope:{\bf local}.\\
@ -470,14 +510,17 @@ Specified as: a variable of type \descdata.\\
\item[a] the matrix into which elements will be inserted.\\ \item[a] the matrix into which elements will be inserted.\\
Scope:{\bf local}\\ Scope:{\bf local}\\
Type:{\bf required}\\ Type:{\bf required}\\
Intent: {\bf inout}.\\
Specified as: a structured data of type \spdata. Specified as: a structured data of type \spdata.
\item[desc\_a] The communication descriptor.\\ \item[desc\_a] The communication descriptor.\\
Scope: {\bf local}. \\ Scope: {\bf local}. \\
Type: {\bf required}.\\ Type: {\bf required}.\\
Intent: {\bf inout}.\\
Specified as: a variable of type \descdata.\\ 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} \\
Intent: {\bf out}.\\
An integer value; 0 means no error has been detected. An integer value; 0 means no error has been detected.
\end{description} \end{description}
@ -512,18 +555,22 @@ An integer value; 0 means no error has been detected.
\item[desc\_a] the communication descriptor.\\ \item[desc\_a] the communication descriptor.\\
Scope:{\bf local}.\\ Scope:{\bf local}.\\
Type:{\bf required}.\\ Type:{\bf required}.\\
Intent: {\bf in}.\\
Specified as: a structured data of type \descdata. Specified as: a structured data of type \descdata.
\item[afmt] the storage format for the sparse matrix.\\ \item[afmt] the storage format for the sparse matrix.\\
Scope: {\bf global}.\\ Scope: {\bf global}.\\
Type: {\bf optional}.\\ Type: {\bf optional}.\\
Intent: {\bf in}.\\
Specified as: an array of characters. Defalt: 'CSR'. Specified as: an array of characters. Defalt: 'CSR'.
\item[upd] Provide for updates to the matrix coefficients.\\ \item[upd] Provide for updates to the matrix coefficients.\\
Scope: {\bf global}.\\ Scope: {\bf global}.\\
Type: {\bf optional}.\\ Type: {\bf optional}.\\
Intent: {\bf in}.\\
Specified as: integer, possible values: \verb|psb_upd_srch_|, \verb|psb_upd_perm_| Specified as: integer, possible values: \verb|psb_upd_srch_|, \verb|psb_upd_perm_|
\item[dupl] How to handle duplicate coefficients.\\ \item[dupl] How to handle duplicate coefficients.\\
Scope: {\bf global}.\\ Scope: {\bf global}.\\
Type: {\bf optional}.\\ Type: {\bf optional}.\\
Intent: {\bf in}.\\
Specified as: integer, possible values: \verb|psb_dupl_ovwrt_|, Specified as: integer, possible values: \verb|psb_dupl_ovwrt_|,
\verb|psb_dupl_add_|, \verb|psb_dupl_err_|. \verb|psb_dupl_add_|, \verb|psb_dupl_err_|.
\end{description} \end{description}
@ -533,10 +580,12 @@ Specified as: integer, possible values: \verb|psb_dupl_ovwrt_|,
\item[a] the matrix to be assembled.\\ \item[a] the matrix to be assembled.\\
Scope:{\bf local}\\ Scope:{\bf local}\\
Type:{\bf required}\\ Type:{\bf required}\\
Intent: {\bf inout}.\\
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} \\
Intent: {\bf out}.\\
An integer value; 0 means no error has been detected. An integer value; 0 means no error has been detected.
\end{description} \end{description}
@ -603,10 +652,12 @@ An integer value; 0 means no error has been detected.
\item[a] the matrix to be freed.\\ \item[a] the matrix to be freed.\\
Scope:{\bf local}\\ Scope:{\bf local}\\
Type:{\bf required}\\ Type:{\bf required}\\
Intent: {\bf inout}.\\
Specified as: a structured data of type \spdata. Specified as: a structured data of type \spdata.
\item[desc\_a] the communication descriptor.\\ \item[desc\_a] the communication descriptor.\\
Scope:{\bf local}.\\ Scope:{\bf local}.\\
Type:{\bf required}.\\ Type:{\bf required}.\\
Intent: {\bf in}.\\
Specified as: a structured data of type \descdata. Specified as: a structured data of type \descdata.
\end{description} \end{description}
@ -615,6 +666,7 @@ 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} \\
Intent: {\bf out}.\\
An integer value; 0 means no error has been detected. An integer value; 0 means no error has been detected.
\end{description} \end{description}
@ -633,14 +685,17 @@ An integer value; 0 means no error has been detected.
\item[a] the matrix to be reinitialized.\\ \item[a] the matrix to be reinitialized.\\
Scope:{\bf local}\\ Scope:{\bf local}\\
Type:{\bf required}\\ Type:{\bf required}\\
Intent: {\bf inout}.\\
Specified as: a structured data of type \spdata. Specified as: a structured data of type \spdata.
\item[desc\_a] the communication descriptor.\\ \item[desc\_a] the communication descriptor.\\
Scope:{\bf local}.\\ Scope:{\bf local}.\\
Type:{\bf required}.\\ Type:{\bf required}.\\
Intent: {\bf in}.\\
Specified as: a structured data of type \descdata. Specified as: a structured data of type \descdata.
\item[clear] Choose whether to zero out matrix coefficients\\ \item[clear] Choose whether to zero out matrix coefficients\\
Scope:{\bf local}.\\ Scope:{\bf local}.\\
Type:{\bf optional}.\\ Type:{\bf optional}.\\
Intent: {\bf in}.\\
Default: true. Default: true.
\end{description} \end{description}
@ -649,6 +704,7 @@ Default: true.
\item[info] Error code.\\ \item[info] Error code.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf out}.\\
An integer value; 0 means no error has been detected. An integer value; 0 means no error has been detected.
\end{description} \end{description}
\section*{Notes} \section*{Notes}
@ -718,10 +774,12 @@ An integer value; 0 means no error has been detected.
\item[desc\_a] The communication descriptor.\\ \item[desc\_a] The communication descriptor.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: a variable of type \descdata.\\ Specified as: a variable of type \descdata.\\
\item[n] The number of columns of the dense matrix to be allocated.\\ \item[n] The number of columns of the dense matrix to be allocated.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf optional}\\ Type: {\bf optional}\\
Intent: {\bf in}.\\
Specified as: Integer scalar, default $1$. It is ignored if $x$ is a Specified as: Integer scalar, default $1$. It is ignored if $x$ is a
rank-1 array. rank-1 array.
\end{description} \end{description}
@ -731,11 +789,13 @@ rank-1 array.
\item[x] The dense matrix to be allocated.\\ \item[x] The dense matrix to be allocated.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf out}.\\
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} \\
Intent: {\bf out}.\\
An integer value; 0 means no error has been detected. An integer value; 0 means no error has been detected.
\end{description} \end{description}
@ -752,25 +812,30 @@ An integer value; 0 means no error has been detected.
\item[m] Number of rows in $val$ to be inserted.\\ \item[m] Number of rows in $val$ to be inserted.\\
Scope:{\bf local}.\\ Scope:{\bf local}.\\
Type:{\bf required}.\\ Type:{\bf required}.\\
Intent: {\bf in}.\\
Specified as: an integer value. Specified as: an integer value.
\item[irw] Indices of the rows to be inserted. Specifically, row $i$ \item[irw] Indices of the rows to be inserted. Specifically, row $i$
of $val$ will be inserted into the local row corresponding to the of $val$ will be inserted into the local row corresponding to the
global row index $irw(i)$. global row index $irw(i)$.
Scope:{\bf local}.\\ Scope:{\bf local}.\\
Type:{\bf required}.\\ Type:{\bf required}.\\
Intent: {\bf in}.\\
Specified as: an integer array. Specified as: an integer array.
\item[val] the dense submatrix to be inserted.\\ \item[val] the dense submatrix to be inserted.\\
Scope:{\bf local}.\\ Scope:{\bf local}.\\
Type:{\bf required}.\\ Type:{\bf required}.\\
Intent: {\bf in}.\\
Specified as: a rank 1 or 2 array. Specified as: a rank 1 or 2 array.
Specified as: an integer value. Specified as: an integer value.
\item[desc\_a] the communication descriptor.\\ \item[desc\_a] the communication descriptor.\\
Scope:{\bf local}.\\ Scope:{\bf local}.\\
Type:{\bf required}.\\ Type:{\bf required}.\\
Intent: {\bf in}.\\
Specified as: a structured data of type \descdata. Specified as: a structured data of type \descdata.
\item[dupl] How to handle duplicate coefficients.\\ \item[dupl] How to handle duplicate coefficients.\\
Scope: {\bf global}.\\ Scope: {\bf global}.\\
Type: {\bf optional}.\\ Type: {\bf optional}.\\
Intent: {\bf in}.\\
Specified as: integer, possible values: \verb|psb_dupl_ovwrt_|, Specified as: integer, possible values: \verb|psb_dupl_ovwrt_|,
\verb|psb_dupl_add_|. \verb|psb_dupl_add_|.
\end{description} \end{description}
@ -780,11 +845,13 @@ Specified as: integer, possible values: \verb|psb_dupl_ovwrt_|,
\item[x] the output dense matrix.\\ \item[x] the output dense matrix.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf inout}.\\
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} \\
Intent: {\bf out}.\\
An integer value; 0 means no error has been detected. An integer value; 0 means no error has been detected.
\end{description} \end{description}
@ -808,6 +875,7 @@ An integer value; 0 means no error has been detected.
\item[desc\_a] The communication descriptor.\\ \item[desc\_a] The communication descriptor.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: a variable of type \descdata.\\ Specified as: a variable of type \descdata.\\
\end{description} \end{description}
@ -816,11 +884,13 @@ Specified as: a variable of type \descdata.\\
\item[x] The dense matrix to be assembled.\\ \item[x] The dense matrix to be assembled.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf inout}.\\
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} \\
Intent: {\bf out}.\\
An integer value; 0 means no error has been detected. An integer value; 0 means no error has been detected.
\end{description} \end{description}
% %
@ -836,12 +906,14 @@ An integer value; 0 means no error has been detected.
be freed.\\ be freed.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf inout}.\\
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[desc\_a] The communication descriptor.\\ \item[desc\_a] The communication descriptor.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: a variable of type \descdata.\\ Specified as: a variable of type \descdata.\\
\end{description} \end{description}
@ -850,6 +922,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} \\
Intent: {\bf out}.\\
An integer value; 0 means no error has been detected. An integer value; 0 means no error has been detected.
\end{description} \end{description}
@ -866,18 +939,22 @@ An integer value; 0 means no error has been detected.
\item[trans] A character that specifies whether to permute $A$ or $A^T$.\\ \item[trans] A character that specifies whether to permute $A$ or $A^T$.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: a single character with value 'N' for $A$ or 'T' for $A^T$.\\ Specified as: a single character with value 'N' for $A$ or 'T' for $A^T$.\\
\item[iperm] An integer array containing permutation information.\\ \item[iperm] An integer array containing permutation information.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: an integer one-dimensional array.\\ Specified as: an integer one-dimensional array.\\
\item[x] The dense matrix to be permuted.\\ \item[x] The dense matrix to be permuted.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf inout}.\\
Specified as: a one or two dimensional array.\\ Specified as: a one or two dimensional array.\\
\item[desc\_a] The communication descriptor.\\ \item[desc\_a] The communication descriptor.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: a variable of type \descdata.\\ Specified as: a variable of type \descdata.\\
\end{description} \end{description}
@ -886,6 +963,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} \\
Intent: {\bf out}.\\
An integer value; 0 means no error has been detected. An integer value; 0 means no error has been detected.
\end{description} \end{description}
@ -903,19 +981,23 @@ An integer value; 0 means no error has been detected.
\item[x] An integer vector of indices to be converted.\\ \item[x] An integer vector of indices to be converted.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in, inout}.\\
Specified as: a rank one integer array.\\ Specified as: a rank one integer array.\\
\item[desc\_a] the communication descriptor.\\ \item[desc\_a] the communication descriptor.\\
Scope:{\bf local}.\\ Scope:{\bf local}.\\
Type:{\bf required}.\\ Type:{\bf required}.\\
Intent: {\bf in}.\\
Specified as: a structured data of type \descdata. Specified as: a structured data of type \descdata.
\item[iact] specifies action to be taken in case of range errors. \item[iact] specifies action to be taken in case of range errors.
Scope: {\bf global} \\ Scope: {\bf global} \\
Type: {\bf optional}\\ Type: {\bf optional}\\
Intent: {\bf in}.\\
Specified as: a character variable \verb|I|gnore, \verb|W|arning or Specified as: a character variable \verb|I|gnore, \verb|W|arning or
\verb|A|bort, default \verb|I|gnore. \verb|A|bort, default \verb|I|gnore.
\item[owned] Specfies valid range of input \item[owned] Specfies valid range of input
Scope: {\bf global} \\ Scope: {\bf global} \\
Type: {\bf optional}\\ Type: {\bf optional}\\
Intent: {\bf in}.\\
If true, then only indices strictly owned by the current process are If true, then only indices strictly owned by the current process are
considered valid, if false then halo indices are also considered valid, if false then halo indices are also
accepted. Default: false. accepted. Default: false.
@ -927,16 +1009,19 @@ accepted. Default: false.
then $x$ is overwritten with the translated integer indices. then $x$ is overwritten with the translated integer indices.
Scope: {\bf global} \\ Scope: {\bf global} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf inout}.\\
Specified as: a rank one integer array. Specified as: a rank one integer array.
\item[y] If $y$ is present, \item[y] If $y$ is present,
then $y$ is overwritten with the translated integer indices, and $x$ then $y$ is overwritten with the translated integer indices, and $x$
is left unchanged. is left unchanged.
Scope: {\bf global} \\ Scope: {\bf global} \\
Type: {\bf optional}\\ Type: {\bf optional}\\
Intent: {\bf out}.\\
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} \\
Intent: {\bf out}.\\
An integer value; 0 means no error has been detected. An integer value; 0 means no error has been detected.
\end{description} \end{description}
@ -962,14 +1047,17 @@ An integer value; 0 means no error has been detected.
\item[x] An integer vector of indices to be converted.\\ \item[x] An integer vector of indices to be converted.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in, inout}.\\
Specified as: a rank one integer array.\\ Specified as: a rank one integer array.\\
\item[desc\_a] the communication descriptor.\\ \item[desc\_a] the communication descriptor.\\
Scope:{\bf local}.\\ Scope:{\bf local}.\\
Type:{\bf required}.\\ Type:{\bf required}.\\
Intent: {\bf in}.\\
Specified as: a structured data of type \descdata. Specified as: a structured data of type \descdata.
\item[iact] specifies action to be taken in case of range errors. \item[iact] specifies action to be taken in case of range errors.
Scope: {\bf global} \\ Scope: {\bf global} \\
Type: {\bf optional}\\ Type: {\bf optional}\\
Intent: {\bf in}.\\
Specified as: a character variable \verb|I|gnore, \verb|W|arning or Specified as: a character variable \verb|I|gnore, \verb|W|arning or
\verb|A|bort, default \verb|I|gnore. \verb|A|bort, default \verb|I|gnore.
\end{description} \end{description}
@ -980,16 +1068,19 @@ Specified as: a character variable \verb|I|gnore, \verb|W|arning or
then $x$ is overwritten with the translated integer indices. then $x$ is overwritten with the translated integer indices.
Scope: {\bf global} \\ Scope: {\bf global} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf inout}.\\
Specified as: a rank one integer array. Specified as: a rank one integer array.
\item[y] If $y$ is not present, \item[y] If $y$ is not present,
then $y$ is overwritten with the translated integer indices, and $x$ then $y$ is overwritten with the translated integer indices, and $x$
is left unchanged. is left unchanged.
Scope: {\bf global} \\ Scope: {\bf global} \\
Type: {\bf optional}\\ Type: {\bf optional}\\
Intent: {\bf out}.\\
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} \\
Intent: {\bf out}.\\
An integer value; 0 means no error has been detected. An integer value; 0 means no error has been detected.
\end{description} \end{description}
@ -1008,6 +1099,7 @@ An integer value; 0 means no error has been detected.
\item[desc] the communication descriptor.\\ \item[desc] the communication descriptor.\\
Scope:{\bf local}.\\ Scope:{\bf local}.\\
Type:{\bf required}.\\ Type:{\bf required}.\\
Intent: {\bf in}.\\
Specified as: a structured data of type \descdata. Specified as: a structured data of type \descdata.
\end{description} \end{description}
@ -1017,11 +1109,13 @@ Specified as: a structured data of type \descdata.
local numbering.\\ local numbering.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf out}.\\
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} \\
Intent: {\bf out}.\\
An integer value; 0 means no error has been detected. An integer value; 0 means no error has been detected.
\end{description} \end{description}
@ -1043,6 +1137,7 @@ An integer value; 0 means no error has been detected.
\item[desc] the communication descriptor.\\ \item[desc] the communication descriptor.\\
Scope:{\bf local}.\\ Scope:{\bf local}.\\
Type:{\bf required}.\\ Type:{\bf required}.\\
Intent: {\bf in}.\\
Specified as: a structured data of type \descdata. Specified as: a structured data of type \descdata.
\end{description} \end{description}
@ -1052,11 +1147,13 @@ Specified as: a structured data of type \descdata.
local numbering.\\ local numbering.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf out}.\\
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} \\
Intent: {\bf out}.\\
An integer value; 0 means no error has been detected. An integer value; 0 means no error has been detected.
\end{description} \end{description}
@ -1080,23 +1177,28 @@ An integer value; 0 means no error has been detected.
\item[row] The (first) row to be extracted.\\ \item[row] The (first) row to be extracted.\\
Scope:{\bf local}\\ Scope:{\bf local}\\
Type:{\bf required}\\ Type:{\bf required}\\
Intent: {\bf in}.\\
Specified as: an integer $>0$. Specified as: an integer $>0$.
\item[a] the matrix from which to get rows.\\ \item[a] the matrix from which to get rows.\\
Scope:{\bf local}\\ Scope:{\bf local}\\
Type:{\bf required}\\ Type:{\bf required}\\
Intent: {\bf in}.\\
Specified as: a structured data of type \spdata. Specified as: a structured data of type \spdata.
\item[append] Whether to append or overwrite existing output.\\ \item[append] Whether to append or overwrite existing output.\\
Scope:{\bf local}\\ Scope:{\bf local}\\
Type:{\bf optional}\\ Type:{\bf optional}\\
Intent: {\bf in}.\\
Specified as: a logical value default: false (overwrite). Specified as: a logical value default: false (overwrite).
\item[nzin] Input size to be appended to.\\ \item[nzin] Input size to be appended to.\\
Scope:{\bf local}\\ Scope:{\bf local}\\
Type:{\bf optional}\\ Type:{\bf optional}\\
Intent: {\bf in}.\\
Specified as: an integer $>0$. When append is true, specifies how many Specified as: an integer $>0$. When append is true, specifies how many
entries in the output vectors are already filled. entries in the output vectors are already filled.
\item[lrw] The last row to be extracted.\\ \item[lrw] The last row to be extracted.\\
Scope:{\bf local}\\ Scope:{\bf local}\\
Type:{\bf optional}\\ Type:{\bf optional}\\
Intent: {\bf in}.\\
Specified as: an integer $>0$, default: $row$. Specified as: an integer $>0$, default: $row$.
%% \item[is] the starting row on matrix $a$.\\ %% \item[is] the starting row on matrix $a$.\\
@ -1114,22 +1216,27 @@ Specified as: an integer $>0$, default: $row$.
\item[nz] the number of elements returned by this call.\\ \item[nz] the number of elements returned by this call.\\
Scope:{\bf local}.\\ Scope:{\bf local}.\\
Type:{\bf required}.\\ Type:{\bf required}.\\
Intent: {\bf out}.\\
Returned as: an integer scalar. Returned as: an integer scalar.
\item[ia] the row indices.\\ \item[ia] the row indices.\\
Scope:{\bf local}.\\ Scope:{\bf local}.\\
Type:{\bf required}.\\ Type:{\bf required}.\\
Intent: {\bf inout}.\\
Specified as: an integer array with the \verb|ALLOCATABLE| attribute. Specified as: an integer array with the \verb|ALLOCATABLE| attribute.
\item[ja] the column indices of the elements to be inserted.\\ \item[ja] the column indices of the elements to be inserted.\\
Scope:{\bf local}.\\ Scope:{\bf local}.\\
Type:{\bf required}.\\ Type:{\bf required}.\\
Intent: {\bf inout}.\\
Specified as: an integer array with the \verb|ALLOCATABLE| attribute. Specified as: an integer array with the \verb|ALLOCATABLE| attribute.
\item[val] the elements to be inserted.\\ \item[val] the elements to be inserted.\\
Scope:{\bf local}.\\ Scope:{\bf local}.\\
Type:{\bf required}.\\ Type:{\bf required}.\\
Intent: {\bf inout}.\\
Specified as: a real array with the \verb|ALLOCATABLE| attribute. Specified as: a real array with the \verb|ALLOCATABLE| attribute.
\item[info] Error code.\\ \item[info] Error code.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required} \\ Type: {\bf required} \\
Intent: {\bf out}.\\
An integer value; 0 means no error has been detected. An integer value; 0 means no error has been detected.
\end{description} \end{description}
@ -1165,14 +1272,17 @@ This function computes the memory occupation of a PSBLAS object.
$A$. \\ $A$. \\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: a structured data of type \spdata. Specified as: a structured data of type \spdata.
\item[desc\_a] Communication descriptor.\\ \item[desc\_a] Communication descriptor.\\
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: a structured data of type \descdata. Specified as: a structured data of type \descdata.
\item[prec] \item[prec]
Scope: {\bf local} \\ Scope: {\bf local} \\
Type: {\bf required}\\ Type: {\bf required}\\
Intent: {\bf in}.\\
Specified as: a preconditioner data structure \precdata. Specified as: a preconditioner data structure \precdata.
\item[\bf On Return] \item[\bf On Return]
\item[Function value] The memory occupation of the object specified in \item[Function value] The memory occupation of the object specified in

File diff suppressed because one or more lines are too long

@ -47,7 +47,7 @@ contains
integer, intent(out) :: iret integer, intent(out) :: iret
integer, optional, intent(in) :: iunit integer, optional, intent(in) :: iunit
character(len=*), optional, intent(in) :: filename character(len=*), optional, intent(in) :: filename
real(kind(1.d0)), optional, pointer :: b(:) real(kind(1.d0)), optional, allocatable :: b(:)
character(len=72), optional, intent(out) :: mtitle character(len=72), optional, intent(out) :: mtitle
character :: rhstype,type*3,key*8 character :: rhstype,type*3,key*8
@ -106,13 +106,8 @@ contains
if (valcrd.gt.0) read (infile,fmt=valfmt) (a%aspk(i),i=1,nnzero) if (valcrd.gt.0) read (infile,fmt=valfmt) (a%aspk(i),i=1,nnzero)
if (present(b) .and. (rhscrd.gt.0)) then if (present(b) .and. (rhscrd.gt.0)) then
if (associated(b)) then call psb_ensure_size(nrow,b,info)
if (size(b) < nrow) deallocate(b) if (info == 0) read (infile,fmt=rhsfmt) (b(i),i=1,nrow)
endif
if (.not.associated(b)) then
allocate(b(nrow),stat=info)
endif
read (infile,fmt=rhsfmt) (b(i),i=1,nrow)
endif endif
else if (tolower(type(2:2)) == 's') then else if (tolower(type(2:2)) == 's') then
@ -125,13 +120,8 @@ contains
if (valcrd.gt.0) read (infile,fmt=valfmt) (a%aspk(i),i=1,nnzero) if (valcrd.gt.0) read (infile,fmt=valfmt) (a%aspk(i),i=1,nnzero)
if (present(b) .and. (rhscrd.gt.0)) then if (present(b) .and. (rhscrd.gt.0)) then
if (associated(b)) then call psb_ensure_size(nrow,b,info)
if (size(b) < nrow) deallocate(b) if (info == 0) read (infile,fmt=rhsfmt) (b(i),i=1,nrow)
endif
if (.not.associated(b)) then
allocate(b(nrow),stat=info)
endif
read (infile,fmt=rhsfmt) (b(i),i=1,nrow)
endif endif
call psb_ipcsr2coo(a,ircode) call psb_ipcsr2coo(a,ircode)
@ -306,7 +296,7 @@ contains
integer, intent(out) :: iret integer, intent(out) :: iret
integer, optional, intent(in) :: iunit integer, optional, intent(in) :: iunit
character(len=*), optional, intent(in) :: filename character(len=*), optional, intent(in) :: filename
real(kind(1.d0)), optional, pointer :: b(:) real(kind(1.d0)), optional, allocatable :: b(:)
character(len=72), optional, intent(out) :: mtitle character(len=72), optional, intent(out) :: mtitle
character :: rhstype,type*3,key*8 character :: rhstype,type*3,key*8
@ -365,13 +355,8 @@ contains
if (valcrd.gt.0) read (infile,fmt=valfmt) (a%aspk(i),i=1,nnzero) if (valcrd.gt.0) read (infile,fmt=valfmt) (a%aspk(i),i=1,nnzero)
if (present(b) .and. (rhscrd.gt.0)) then if (present(b) .and. (rhscrd.gt.0)) then
if (associated(b)) then call psb_ensure_size(nrow,b,info)
if (size(b) < nrow) deallocate(b) if (info == 0) read (infile,fmt=rhsfmt) (b(i),i=1,nrow)
endif
if (.not.associated(b)) then
allocate(b(nrow),stat=info)
endif
read (infile,fmt=rhsfmt) (b(i),i=1,nrow)
endif endif
else if (tolower(type(2:2)) == 's') then else if (tolower(type(2:2)) == 's') then
@ -394,13 +379,8 @@ contains
if (valcrd.gt.0) read (infile,fmt=valfmt) (a%aspk(i),i=1,nnzero) if (valcrd.gt.0) read (infile,fmt=valfmt) (a%aspk(i),i=1,nnzero)
if (present(b) .and. (rhscrd.gt.0)) then if (present(b) .and. (rhscrd.gt.0)) then
if (associated(b)) then call psb_ensure_size(nrow,b,info)
if (size(b) < nrow) deallocate(b) if (info == 0) read (infile,fmt=rhsfmt) (b(i),i=1,nrow)
endif
if (.not.associated(b)) then
allocate(b(nrow),stat=info)
endif
read (infile,fmt=rhsfmt) (b(i),i=1,nrow)
endif endif
@ -455,13 +435,8 @@ contains
if (valcrd.gt.0) read (infile,fmt=valfmt) (a%aspk(i),i=1,nnzero) if (valcrd.gt.0) read (infile,fmt=valfmt) (a%aspk(i),i=1,nnzero)
if (present(b) .and. (rhscrd.gt.0)) then if (present(b) .and. (rhscrd.gt.0)) then
if (associated(b)) then call psb_ensure_size(nrow,b,info)
if (size(b) < nrow) deallocate(b) if (info == 0) read (infile,fmt=rhsfmt) (b(i),i=1,nrow)
endif
if (.not.associated(b)) then
allocate(b(nrow),stat=info)
endif
read (infile,fmt=rhsfmt) (b(i),i=1,nrow)
endif endif
call psb_ipcsr2coo(a,ircode) call psb_ipcsr2coo(a,ircode)

Loading…
Cancel
Save