*** empty log message ***

psblas3-type-indexed
Alfredo Buttari 19 years ago
parent a9123fe03a
commit 4012f47ba0

@ -1,6 +1,6 @@
include Make.inc
library:
lib:
( [ -d lib ] || mkdir lib)
(cd src; make lib)
@echo "====================================="
@ -14,3 +14,4 @@ veryclean:
(cd src; make veryclean)
(cd lib; /bin/rm -f *.a *$(.mod) *$(.fh))
.PHONY: lib

@ -46,8 +46,7 @@ Table~\ref{tab:f90halo}.
\item[desc\_a] contains data structures for communications.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a structured data type specified in
\S~\ref{sec:datastruct}.
Specified as: a structured data of type \descdata.
\item[alpha] the scalar $\alpha$.\\
Scope: {\bf global} \\
Type: {\bf optional} \\
@ -121,9 +120,8 @@ Table~\ref{tab:f90ovrl}.
\item[desc\_a] contains data structures for communications.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a structured data type specified in
\S~\ref{sec:datastruct}.
item[choice] specify if exchange overlap elements.
Specified as: a structured data of type \descdata.
\item[choice] specify if exchange overlap elements.
\begin{description}
\item[choice = .true.] exchange overlap elements, i.e. apply operator
$P^{T}$;
@ -232,7 +230,7 @@ indicated in Table~\ref{tab:gather}.
\item[desc\_a] contains data structures for communications.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a structured data type specified in \S~\ref{sec:datastruct}.
Specified as: a structured data of type \descdata.
\item[root] The process that holds the global copy. If $root=-1$ all
the processes will have a copy of the global vector.\\
Scope: {\bf global} \\
@ -322,7 +320,7 @@ Specified as: a rank one or two array.
\item[desc\_a] contains data structures for communications.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a structured data type specified in \S~\ref{sec:datastruct}.
Specified as: a structured data of type \descdata.
\item[root] The process that holds the global copy. If $root=-1$ all
the processes have a copy of the global vector.\\
Scope: {\bf global} \\

@ -11,7 +11,8 @@ the modules \verb|psb_spmat_type|, \verb|psb_descriptor_type| and \verb|psb_prec
\subsection{Sparse Matrix data structure}
\label{sec:spmat}
Contains all information about local portion of the sparse matrix and
The \hypertarget{spdata}{{\tt psb\_spmat\_type}} data structure
contains all information about local portion of the sparse matrix and
its storage mode. Many of this fields are set in fully-transparent
mode by PSBLAS-TOOLS routines when inserting a new sparse matrix, user
must set only fields which describe matrix storage mode (see
@ -95,7 +96,8 @@ column index are stored into \verb|apsk(j)|, \verb|ia1(j)| and
\subsection{Descriptor data structure}
\label{sec:desc}
All the general matrix informations and elements to be
exchanged among processes are stored within a data structure of the type $psb_desc_type$.
exchanged among processes are stored within a data structure of the
type \hypertarget{descdata}{{\tt psb\_desc\_type}}.
Every structure of this type is associated to a sparse matrix, it
contains data about general matrix informations and elements to be
exchanged among processes. \\
@ -180,7 +182,7 @@ as follows:
\subsection{Preconditioner data structure}
\label{sec:prec}
\hypertarget{precdata}{ciao finocchio}
\hypertarget{precdata}{}

@ -31,11 +31,11 @@ according to the value passed through the istop argument (see later).
$A$. \\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a structured data type specified in \S~\ref{sec:datastruct}.
Specified as: a structured data of type \spdata.
\item[prec] The data structure containing the preconditioner.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a structured data type specified in \S~\ref{sec:datastruct}.
Specified as: a structured data of type \precdata.
\item[b] The RHS vector. \\
Scope: {\bf local} \\
Type: {\bf required}\\
@ -51,7 +51,7 @@ Specified as: a real number.
\item[desc\_a] contains data structures for communications.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a structured data type specified in \S~\ref{sec:datastruct}.
Specified as: a structured data of type \descdata.
\item[itmax] The maximum number of iterations to perform.\\
Scope: {\bf global} \\
Type: {\bf optional}\\
@ -107,11 +107,11 @@ according to the value passed through the istop argument (see later).
$A$. \\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a structured data type specified in \S~\ref{sec:datastruct}.
Specified as: a structured data of type \spdata.
\item[prec] The data structure containing the preconditioner.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a structured data type specified in \S~\ref{sec:datastruct}.
Specified as: a structured data of type \precdata.
\item[b] The RHS vector. \\
Scope: {\bf local} \\
Type: {\bf required}\\
@ -127,7 +127,7 @@ Specified as: a real number.
\item[desc\_a] contains data structures for communications.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a structured data type specified in \S~\ref{sec:datastruct}.
Specified as: a structured data of type \descdata.
\item[itmax] The maximum number of iterations to perform.\\
Scope: {\bf global} \\
Type: {\bf optional}\\
@ -183,11 +183,11 @@ according to the value passed through the istop argument (see later).
$A$. \\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a structured data type specified in \S~\ref{sec:datastruct}.
Specified as: a structured data of type \spdata.
\item[prec] The data structure containing the preconditioner.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a structured data type specified in \S~\ref{sec:datastruct}.
Specified as: a structured data of type \precdata.
\item[b] The RHS vector. \\
Scope: {\bf local} \\
Type: {\bf required}\\
@ -203,7 +203,7 @@ Specified as: a real number.
\item[desc\_a] contains data structures for communications.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a structured data type specified in \S~\ref{sec:datastruct}.
Specified as: a structured data of type \descdata.
\item[itmax] The maximum number of iterations to perform.\\
Scope: {\bf global} \\
Type: {\bf optional}\\
@ -260,11 +260,11 @@ according to the value passed through the istop argument (see later).
$A$. \\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a structured data type specified in \S~\ref{sec:datastruct}.
Specified as: a structured data of type \spdata.
\item[prec] The data structure containing the preconditioner.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a structured data type specified in \S~\ref{sec:datastruct}.
Specified as: a structured data of type \precdata.
\item[b] The RHS vector. \\
Scope: {\bf local} \\
Type: {\bf required}\\
@ -280,7 +280,7 @@ Specified as: a real number.
\item[desc\_a] contains data structures for communications.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a structured data type specified in \S~\ref{sec:datastruct}.
Specified as: a structured data of type \descdata.
\item[itmax] The maximum number of iterations to perform.\\
Scope: {\bf global} \\
Type: {\bf optional}\\
@ -337,11 +337,11 @@ according to the value passed through the istop argument (see later).
$A$. \\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a structured data type specified in \S~\ref{sec:datastruct}.
Specified as: a structured data of type \spdata.
\item[prec] The data structure containing the preconditioner.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a structured data type specified in \S~\ref{sec:datastruct}.
Specified as: a structured data of type \precdata.
\item[b] The RHS vector. \\
Scope: {\bf local} \\
Type: {\bf required}\\
@ -357,7 +357,7 @@ Specified as: a real number.
\item[desc\_a] contains data structures for communications.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a structured data type specified in \S~\ref{sec:datastruct}.
Specified as: a structured data of type \descdata.
\item[itmax] The maximum number of iterations to perform.\\
Scope: {\bf global} \\
Type: {\bf optional}\\
@ -417,11 +417,11 @@ according to the value passed through the istop argument (see later).
$A$. \\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a structured data type specified in \S~\ref{sec:datastruct}.
Specified as: a structured data of type \spdata.
\item[prec] The data structure containing the preconditioner.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a structured data type specified in \S~\ref{sec:datastruct}.
Specified as: a structured data of type \precdata.
\item[b] The RHS vector. \\
Scope: {\bf local} \\
Type: {\bf required}\\
@ -437,7 +437,7 @@ Specified as: a real number.
\item[desc\_a] contains data structures for communications.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a structured data type specified in \S~\ref{sec:datastruct}.
Specified as: a structured data of type \descdata.
\item[itmax] The maximum number of iterations to perform.\\
Scope: {\bf global} \\
Type: {\bf optional}\\

@ -62,7 +62,7 @@ indicated in Table~\ref{tab:f90axpby}. The rank of $y$ must be the same of $x$.
\item[desc\_a] contains data structures for communications.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a structured data type specified in \S~\ref{sec:datastruct}.
Specified as: a structured data of type \descdata.
\item[n] number of columns in dense submatrices $x$ and $y$.\\
Scope: {\bf global} \\
Type: {\bf optional}; can only be present if $x$ and $y$ are of rank 2.\\
@ -156,8 +156,7 @@ Table~\ref{tab:f90dot}. The rank of $y$ must be the same of $x$.
\item[desc\_a] contains data structures for communications.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a structured data type specified in
\S~\ref{sec:datastruct}.
Specified as: a structured data of type \descdata.
\item[jx] the column index of global dense matrix $x$,
identifying the column of subvector $x$.\\
Scope: {\bf global} \\
@ -230,7 +229,7 @@ Table~\ref{tab:f90mdot}. The rank of $y$ must be the same of $x$.
\item[desc\_a] contains data structures for communications.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a structured data type specified in Sec.~\ref{sec:datastruct}.
Specified as: a structured data of type \descdata.
\item[\bf On Return]
\item[res] is the dot product of subvectors $x$ and $y$.\\
Scope: {\bf global} \\
@ -295,8 +294,7 @@ Table~\ref{tab:f90amax}.
\item[desc\_a] contains data structures for communications.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a structured data type specified in
\S~\ref{sec:datastruct}.
Specified as: a structured data of type \descdata.
\item[jx] the column index of global dense matrix $x$,
identifying the column of subvector $x$.\\
Scope: {\bf global} \\
@ -353,7 +351,7 @@ Table~\ref{tab:f90mamax}.
\item[desc\_a] contains data structures for communications.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a structured data type specified in Sec.~\ref{sec:datastruct}.
Specified as: a structured data of type \descdata.
\item[\bf On Return]
\item[res] is the infinity norm of the columns of $x$.\\
Scope: {\bf global} \\
@ -416,8 +414,7 @@ Table~\ref{tab:f90asum}.
\item[desc\_a] contains data structures for communications.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a structured data type specified in
\S~\ref{sec:datastruct}.
Specified as: a structured data of type \descdata.
\item[jx] the column index of global dense matrix $x$,
identifying the column of subvector $x$.\\
Scope: {\bf global} \\
@ -486,8 +483,7 @@ Table~\ref{tab:f90nrm2}.
\item[desc\_a] contains data structures for communications.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a structured data type specified in
\S~\ref{sec:datastruct}.
Specified as: a structured data of type \descdata.
\item[jx] the column index of global dense matrix $x$,
identifying the column of subvector $x$.\\
Scope: {\bf global} \\
@ -546,13 +542,11 @@ Long Precision Complex & psb\_nrmi \\
$A$. \\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a structured data type specified in
\S~\ref{sec:datastruct}.
Specified as: a structured data of type \spdata.
\item[desc\_a] contains data structures for communications.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a structured data type specified in
\S~\ref{sec:datastruct}.
Specified as: a structured data of type \descdata.
\item[\bf On Return]
\item[Function value] is the infinity-norm of sparse submatrix $A$.\\
Scope: {\bf global} \\
@ -626,8 +620,7 @@ Table~\ref{tab:f90spmm}.
$A$. \\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a structured data type specified in
\S~\ref{sec:datastruct}.
Specified as: a structured data of type \spdata.
\item[x] the local portion of global dense matrix
$x$. This subroutine computes the location of the first element of
local subarray used, based on $jx$ and the field $matrix\_data$ of $desc\_a$ . \\
@ -651,8 +644,7 @@ Table~\ref{tab:f90spmm}. The rank of $y$ must be the same of $x$.
\item[desc\_a] contains data structures for communications.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a structured data type specified in
\S~\ref{sec:datastruct}.
Specified as: a structured data of type \descdata.
\item[trans] indicate what kind of operation to perform.
\begin{description}
\item[trans = N] the operation is specified by equation \ref{eq:f90spmm_no_tra}
@ -791,8 +783,7 @@ Table~\ref{tab:f90spsm}. The rank of $y$ must be the same of $x$.
\item[desc\_a] contains data structures for communications.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a structured data type specified in
\S~\ref{sec:datastruct}.
Specified as: a structured data of type \descdata.
\item[trans] specify with {\em unitd} the operation to perform.
\begin{description}
\item[trans = 'N'] the operation is with no transposed matrix

@ -5,32 +5,37 @@
\subroutine{psb\_alloc}{Allocates a dense matrix}
\syntax{call psb\_alloc}{m, n, x, desc\_a, info, js}
\syntax*{call psb\_alloc}{m, n, x, desc\_a, info}
\begin{description}
\item[\bf On Entry]
\item[m] The number of rows of the dense matrix to be allocated.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: Integer scalar.
\item[n] The number of columns of the dense matrix to be allocated.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: Integer scalar.
\item[desc\_a] The communication descriptor.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a variable of type \descdata.\\
\item[js] The starting column.\\
Scope: {\bf local} \\
Type: {\bf optional}\\
Specified as: Integer scalar.
\end{description}
\begin{description}
\item[\bf On Return]
\item[x] The dense matrix to be allocated.
\item[x] The dense matrix to be allocated.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a one or two dimensional array.\\
\item[info] Error code.
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: Integer scalar.
\end{description}
%
@ -45,16 +50,19 @@ Type: {\bf required}\\
\item[desc\_a] The communication descriptor.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a variable of type \descdata.\\
\end{description}
\begin{description}
\item[\bf On Return]
\item[x] The dense matrix to be assembled.
\item[x] The dense matrix to be assembled.\\
Scope: {\bf local} \\
Type: {\bf required}\\
\item[info] Error code.
Specified as: a one or two dimensional array.\\
\item[info] Error code.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: Integer scalar.\\
\end{description}
@ -67,12 +75,30 @@ Type: {\bf required}\\
\begin{description}
\item[\bf On Entry]
\item[arg]
\item[trans] A character that specifies whether to permute $A$ or $A^T$.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a single character with value 'N' for $A$ or 'T' for $A^T$.\\
\item[iperm] An integer array containing permutation information.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: an integer one-dimensional array.\\
\item[a] The sparse matrix to be permuted.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a \spdata variable.\\
\item[desc\_a] The communication descriptor of type \descdata.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a variable of type \descdata.\\
\end{description}
\begin{description}
\item[\bf On Return]
\item[arg]
\item[info] Error code.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: Integer scalar.\\
\end{description}
@ -81,16 +107,25 @@ Type: {\bf required}\\
%
\subroutine{psb\_descprt}{Prints a descriptor}
\syntax{call psb\_descprt}{iout, desc\_p, glob, short}
\syntax{call psb\_descprt}{iout, desc\_a, glob, short}
\begin{description}
\item[\bf On Entry]
\item[arg]
\item[iout] An integer that defines the output unit.
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: Integer scalar.\\
\item[desc\_a] The communication descriptor of type \descdata that
must be printed.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a variable of type \descdata.\\
\end{description}
\begin{description}
\item[\bf On Return]
\item[arg]
\item[glob] ??????
\item[short] ??????
\end{description}
@ -103,12 +138,23 @@ Type: {\bf required}\\
\begin{description}
\item[\bf On Entry]
\item[arg]
\item[x] The dense matrix to
be freed.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a one or two dimensional array.
\item[desc\_a] The communication descriptor.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a variable of type \descdata.\\
\end{description}
\begin{description}
\item[\bf On Return]
\item[arg]
\item[info] Error code.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: Integer scalar.\\
\end{description}
@ -121,31 +167,80 @@ Type: {\bf required}\\
\begin{description}
\item[\bf On Entry]
\item[arg]
\item[trans] A character that specifies whether to permute $A$ or $A^T$.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a single character with value 'N' for $A$ or 'T' for $A^T$.\\
\item[iperm] An integer array containing permutation information.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: an integer one-dimensional array.\\
\item[x] The dense matrix to be permuted.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a one or two dimensional array.\\
\item[desc\_a] The communication descriptor.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a variable of type \descdata.\\
\end{description}
\begin{description}
\item[\bf On Return]
\item[arg]
\item[info] Error code.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: Integer scalar.\\
\end{description}
%
%% psb_ins %%
%% psb_spins %%
%
\subroutine{psb\_ins}{Insert a submatrix into a dense matrix}
\subroutine{psb\_spins}{Insert a cloud of elements into a sparse matrix}
\syntax{call psb\_ins}{m, n, x, ix, jx, blck, desc\_a, info, iblck, jblck}
\syntax*{call psb\_ins}{m, x, ix, jx, blck, desc\_a, info, iblck}
\syntax*{call psb\_ins}{m, x, ix, jx, blck, desc\_a, info, iblck, insflag}
\syntax{call psb\_spins}{nz, ia, ja, val, a, desc\_a, info, is, js}
\begin{description}
\item[\bf On Entry]
\item[arg]
\item[nz] the number of elements to be inserted.\\
Scope:{\bf local}.\\
Type:{\bf required}.\\
Specified as: an integer scalar.
\item[ia] the row indices of the elements to be inserted.\\
Scope:{\bf local}.\\
Type:{\bf required}.\\
Specified as: an integer array of size $nz$.
\item[ja] the column indices of the elements to be inserted.\\
Scope:{\bf local}.\\
Type:{\bf required}.\\
Specified as: an integer array of size $nz$.
\item[val] the elements to be inserted.\\
Scope:{\bf local}.\\
Type:{\bf required}.\\
Specified as: an array of size $nz$.
\item[desc\_a] The communication descriptor.\\
Scope: {\bf local}. \\
Type: {\bf required}.\\
Specified as: a variable of type \descdata.\\
\item[is] the starting row on matrix $a$.\\
Scope:{\bf local}.\\
Type:{\bf optional}.\\
Specified as: an integer vaule.
\item[js] the starting column on matrix $a$.\\
Scope:{\bf local}.\\
Type:{\bf optional}\\
Specified as: an integer value
\end{description}
\begin{description}
\item[\bf On Return]
\item[arg]
\item[a] the matrix into which elements will be inserted.\\
Scope:{\bf local}\\
Type:{\bf required}\\
Specified as: a structured data of type \spdata.
\item[info] Error code.\\
Scope: {\bf local} \\
Type: {\bf required}\\
\end{description}
@ -154,17 +249,39 @@ Type: {\bf required}\\
%
\subroutine{psb\_dscall}{Allocates a communication descriptor}
\syntax{call psb\_dscall}{m, n, parts, icontxt, desc\_a, info, flag}
\syntax{call psb\_dscall}{m, n, parts, icontxt, desc\_a, info}
\syntax*{call psb\_dscall}{m, v, icontxt, desc\_a, info, flag}
\begin{description}
\item[\bf On Entry]
\item[arg]
\item[m] the number of rows of the problem.\\
Scope:{\bf global}.\\
Type:{\bf required}.\\
Specified as: an integer value.
\item[n] the number of columns of the problem.\\
Scope:{\bf global}.\\
Type:{\bf required}.\\
Specified as: an integer value.
\item[parts] the subroutine that defines the partitioning scheme.\\
Scope:{\bf global}.\\
Type:{\bf required}.\\
Specified as: a subroutine as described in ???
\item[icontxt] the communication context.\\
Scope:{\bf global}.\\
Type:{\bf required}.\\
Specified as: an integer value.
\end{description}
\begin{description}
\item[\bf On Return]
\item[arg]
\item[desc\_a] the communication descriptor.\\
Scope:{\bf local}.\\
Type:{\bf required}.\\
Specified as: a structured data of type \descdata.
\item[info] Error code.
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: an integer variable.\\
\end{description}
@ -177,11 +294,18 @@ Type: {\bf required}\\
\begin{description}
\item[\bf On Entry]
\item[arg]
\item[desc\_a] the communication descriptor.\\
Scope:{\bf local}.\\
Type:{\bf required}.\\
Specified as: a structured data of type \descdata.
\end{description}
\begin{description}
\item[\bf On Return]
\item[info] Error code.
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: an integer variable.
\item[arg]
\end{description}
@ -192,17 +316,27 @@ Type: {\bf required}\\
%
\subroutine{psb\_dsccpy}{Copies a communication descriptor}
\syntax{call }{}
\syntax*{call }{}
\syntax{call psb\_dsccpy}{desc\_out, desc\_a, info}
\begin{description}
\item[\bf On Entry]
\item[arg]
\item[desc\_a] the communication descriptor.\\
Scope:{\bf local}.\\
Type:{\bf required}.\\
Specified as: a structured data of type \descdata.
\end{description}
\begin{description}
\item[\bf On Return]
\item[arg]
\item[desc\_out] the communication descriptor copy.\\
Scope:{\bf local}.\\
Type:{\bf required}.\\
Specified as: a structured data of type \descdata.
\item[info] Error code.
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: an integer variable.\\
\end{description}
@ -211,37 +345,66 @@ Type: {\bf required}\\
%
\subroutine{psb\_dscfree}{Frees a communication descriptor}
\syntax{call }{}
\syntax*{call }{}
\syntax{call psb\_dscfree}{desc\_a, info}
\begin{description}
\item[\bf On Entry]
\item[arg]
\item[desc\_a] the communication descriptor to be freed.\\
Scope:{\bf local}.\\
Type:{\bf required}.\\
Specified as: a structured data of type \descdata.
\end{description}
\begin{description}
\item[\bf On Return]
\item[arg]
\item[info] Error code.
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: an integer variable.
\end{description}
%
%% psb_dscins %%
%
\subroutine{psb\_dscins}{Comunnication descriptor insert routine}
\syntax{call }{}
\syntax*{call }{}
\syntax{call psb\_dscins}{nz, ia, ja, desc\_a, info, is, js}
\begin{description}
\item[\bf On Entry]
\item[arg]
\item[nz] the number of points being inserted.\\
Scope: {\bf local}.\\
Type: {\bf required}.\\
Specified as: an integer value.
\item[ia] the row indices of the points being inserted.\\
Scope: {\bf local}.\\
Type: {\bf required}.\\
Specified as: an integer array of length $nz$.
\item[ja] the column indices of the points being inserted.\\
Scope: {\bf local}.\\
Type: {\bf required}.\\
Specified as: an integer array of length $nz$.
\item[is] the row offset.\\
Scope:{\bf local}.\\
Type:{\bf optional}.\\
Specified as: an integer value.
\item[js] the column offset.\\
Scope: {\bf local}.\\
Type: {\bf optional}.\\
Specified as: an integer value.
\end{description}
\begin{description}
\item[\bf On Return]
\item[arg]
\item[desc\_a] the communication descriptor to be freed.\\
Scope:{\bf local}.\\
Type:{\bf required}.\\
Specified as: a structured data of type \descdata.
\item[info] Error code.
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: an integer variable.
\end{description}
@ -251,17 +414,30 @@ Type: {\bf required}\\
%
\subroutine{psb\_dscren}{Applies a renumeration to a communication descriptor}
\syntax{call }{}
\syntax*{call }{}
\syntax{call psb\_dscren}{trans, iperm, desc\_a, info}
\begin{description}
\item[\bf On Entry]
\item[arg]
\item[trans] A character that specifies whether to permute $A$ or $A^T$.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a single character with value 'N' for $A$ or 'T' for $A^T$.\\
\item[iperm] An integer array containing permutation information.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: an integer one-dimensional array.\\
\item[desc\_a] the communication descriptor.\\
Scope:{\bf local}.\\
Type:{\bf required}.\\
Specified as: a structured data of type \descdata.
\end{description}
\begin{description}
\item[\bf On Return]
\item[arg]
\item[info] Error code.
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: an integer variable.
\end{description}
@ -271,17 +447,30 @@ Type: {\bf required}\\
%
\subroutine{psb\_spalloc}{Allocates a sparse matrix}
\syntax{call }{}
\syntax*{call }{}
\syntax{call psb\_spalloc}{a, desc\_a, info, nnz}
\begin{description}
\item[\bf On Entry]
\item[arg]
\item[desc\_a] the communication descriptor.\\
Scope:{\bf local}.\\
Type:{\bf required}.\\
Specified as: a structured data of type \descdata.
\item[nnz] the number of nonzeroes in the matrix.\\
Scope: {\bf global}.\\
Type: {\bf optional}.\\
Specified as: an integer value.
\end{description}
\begin{description}
\item[\bf On Return]
\item[arg]
\item[a] the matrix to be allocated.\\
Scope:{\bf local}\\
Type:{\bf required}\\
Specified as: a structured data of type \spdata.
\item[info] Error code.
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: an integer variable.
\end{description}
@ -291,17 +480,38 @@ Type: {\bf required}\\
%
\subroutine{psb\_spasb}{Sparse matrix assembly routine}
\syntax{call }{}
\syntax*{call }{}
\syntax{call psb\_spasb}{a, desc\_a, info, afmt, up, dup}
\begin{description}
\item[\bf On Entry]
\item[arg]
\item[desc\_a] the communication descriptor.\\
Scope:{\bf local}.\\
Type:{\bf required}.\\
Specified as: a structured data of type \descdata.
\item[afmt] the storage format for the sparse matrix.\\
Scope: {\bf global}.\\
Type: {\bf optional}.\\
Specified as: an array of characters. If not specified 'CSR' will be assumed.
\item[up] ???.\\
Scope: {\bf global}.\\
Type: {\bf optional}.\\
Specified as: .
\item[dup] ???.\\
Scope: {\bf global}.\\
Type: {\bf optional}.\\
Specified as:
\end{description}
\begin{description}
\item[\bf On Return]
\item[arg]
\item[a] the matrix to be assembled.\\
Scope:{\bf local}\\
Type:{\bf required}\\
Specified as: a structured data of type \spdata.
\item[info] Error code.
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: an integer variable.
\end{description}
@ -311,17 +521,30 @@ Type: {\bf required}\\
%
\subroutine{psb\_spcnv}{Converts a sparse matrix storage format}
\syntax{call }{}
\syntax*{call }{}
\syntax{call psb\_spcnv}{a, b, desc\_a, info}
\begin{description}
\item[\bf On Entry]
\item[arg]
\item[a] the matrix to be converted.\\
Scope:{\bf local}\\
Type:{\bf required}\\
Specified as: a structured data of type \spdata.
\item[desc\_a] the communication descriptor.\\
Scope:{\bf local}.\\
Type:{\bf required}.\\
Specified as: a structured data of type \descdata.
\end{description}
\begin{description}
\item[\bf On Return]
\item[arg]
\item[b] the converted matrix.\\
Scope:{\bf local}\\
Type:{\bf required}\\
Specified as: a structured data of type \spdata.
\item[info] Error code.
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: an integer variable.
\end{description}
@ -331,37 +554,83 @@ Type: {\bf required}\\
%
\subroutine{psb\_spfree}{Frees a sparse matrix}
\syntax{call }{}
\syntax*{call }{}
\syntax{call psb\_spfree}{a, desc\_a, info}
\begin{description}
\item[\bf On Entry]
\item[arg]
\item[a] the matrix to be freed.\\
Scope:{\bf local}\\
Type:{\bf required}\\
Specified as: a structured data of type \spdata.
\item[desc\_a] the communication descriptor.\\
Scope:{\bf local}.\\
Type:{\bf required}.\\
Specified as: a structured data of type \descdata.
\end{description}
\begin{description}
\item[\bf On Return]
\item[arg]
\item[info] Error code.
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: an integer variable.
\end{description}
%
%% psb_spins %%
%% psb_ins %%
%
\subroutine{psb\_spins}{Sparse matrix insertion routine}
\subroutine{psb\_ins}{Sparse matrix insertion routine}
\syntax{call }{}
\syntax*{call }{}
\syntax{call psb\_ins}{m, n, x, ix, jx, blck, desc\_a, info, iblck, jblck}
\begin{description}
\item[\bf On Entry]
\item[arg]
\item[m] rows number of submatrix belonging to blck to be inserted..\\
Scope:{\bf local}.\\
Type:{\bf required}.\\
Specified as: an integer value.
\item[n] columns number of submatrix belonging to blck to be inserted.\\
Scope:{\bf local}.\\
Type:{\bf required}.\\
Specified as: an integer value.
\item[ix] x global-row corresponding to position at which blck submatrix must be inserted.\\
Scope:{\bf local}.\\
Type:{\bf required}.\\
Specified as: an integer value.
\item[jx] x global-col corresponding to position at which blck submatrix must be inserted.\\
Scope:{\bf local}.\\
Type:{\bf required}.\\
Specified as: an integer value.
\item[blck] the dense submatrix to be inserted.\\
Scope:{\bf local}.\\
Type:{\bf required}.\\
Specified as: a one or two dimensional array.
\item[desc\_a] the communication descriptor.\\
Scope:{\bf local}.\\
Type:{\bf required}.\\
Specified as: a structured data of type \descdata.
\item[iblck] first row of submatrix belonging to blck to be inserted.\\
Scope:{\bf local}.\\
Type:{\bf required}.\\
Specified as: an integer value.
\item[jblck] first column of submatrix belonging to blck to be inserted.\\
Scope:{\bf local}.\\
Type:{\bf required}.\\
Specified as: an integer value.
\end{description}
\begin{description}
\item[\bf On Return]
\item[arg]
\item[x] the output dense matrix.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a one or two dimensional array.\\
\item[info] Error code.
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: an integer variable.
\end{description}
@ -369,39 +638,43 @@ Type: {\bf required}\\
%
%% psb_sprn %%
%
\subroutine{psb\_sprn}{???}
\subroutine{psb\_sprn}{Reinit sparse matrix structure for psblas routines.}
\syntax{call }{}
\syntax*{call }{}
\syntax{call psb\_sprn}{a, decsc\_a, info}
\begin{description}
\item[\bf On Entry]
\item[arg]
\item[a] the matrix to be reinitialized.\\
Scope:{\bf local}\\
Type:{\bf required}\\
Specified as: a structured data of type \spdata.
\item[desc\_a] the communication descriptor.\\
Scope:{\bf local}.\\
Type:{\bf required}.\\
Specified as: a structured data of type \descdata.
\end{description}
\begin{description}
\item[\bf On Return]
\item[arg]
\item[info] Error code.
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: an integer variable.
\end{description}
%
%% psb_spupdate %%
%
\subroutine{psb\_spupdate}{???}
\subroutine{psb\_spupdate}{Updates a sparse matrix.}
\syntax{call }{}
\syntax*{call }{}
\syntax{call psb\_spupdate}{a, ia, ja, blck, desc\_a, info, ix, jx, updflag}
\begin{description}
\item[\bf On Entry]
\item[arg]
\end{description}
\begin{description}
\item[\bf On Return]
\item[arg]
\end{description}
@ -411,17 +684,42 @@ Type: {\bf required}\\
%
\subroutine{psb\_glob\_to\_loc}{Global to local indices convertion}
\syntax{call }{}
\syntax*{call }{}
\syntax{call psb\_glob\_to\_loc}{x, y, desc\_a, info, iact}
\syntax*{call psb\_glob\_to\_loc}{x, desc\_a, info, iact}
\begin{description}
\item[\bf On Entry]
\item[arg]
\item[x] An integer vector of indices to be converted.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a rank one integer array.\\
\item[desc\_a] the communication descriptor.\\
Scope:{\bf local}.\\
Type:{\bf required}.\\
Specified as: a structured data of type \descdata.
\item[iact] specifies action to be taken in case of range errors.
Scope: {\bf global} \\
Type: {\bf optional}\\
Specified as: a character variable \verb|E|, \verb|W| or \verb|A|.
\end{description}
\begin{description}
\item[\bf On Return]
\item[arg]
\item[x] If $y$ is not present,
then $x$ is overwritten with the translated integer indices.
Scope: {\bf global} \\
Type: {\bf required}\\
Specified as: a rank one integer array.
\item[y] If $y$ is not present,
then $y$ is overwritten with the translated integer indices, and $x$
is left unchanged.
Scope: {\bf global} \\
Type: {\bf optional}\\
Specified as: a rank one integer array.
\item[info] Error code.
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: an integer variable.
\end{description}
@ -431,20 +729,44 @@ Type: {\bf required}\\
%
\subroutine{psb\_loc\_to\_glob}{Local to global indices conversion}
\syntax{call }{}
\syntax*{call }{}
\syntax{call psb\_loc\_to\_glob}{x, y, desc\_a, info, iact}
\syntax*{call psb\_loc\_to\_glob}{x, desc\_a, info, iact}
\begin{description}
\item[\bf On Entry]
\item[arg]
\item[x] An integer vector of indices to be converted.\\
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: a rank one integer array.\\
\item[desc\_a] the communication descriptor.\\
Scope:{\bf local}.\\
Type:{\bf required}.\\
Specified as: a structured data of type \descdata.
\item[iact] specifies action to be taken in case of range errors.
Scope: {\bf global} \\
Type: {\bf optional}\\
Specified as: a character variable \verb|E|, \verb|W| or \verb|A|.
\end{description}
\begin{description}
\item[\bf On Return]
\item[arg]
\item[x] If $y$ is not present,
then $x$ is overwritten with the translated integer indices.
Scope: {\bf global} \\
Type: {\bf required}\\
Specified as: a rank one integer array.
\item[y] If $y$ is not present,
then $y$ is overwritten with the translated integer indices, and $x$
is left unchanged.
Scope: {\bf global} \\
Type: {\bf optional}\\
Specified as: a rank one integer array.
\item[info] Error code.
Scope: {\bf local} \\
Type: {\bf required}\\
Specified as: an integer variable.
\end{description}
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "userguide"

@ -63,7 +63,9 @@
\newcommand{\example}{\stepcounter{example}%
\section*{\examplename~\theexample}}
\newcommand{\precdata}{\hyperlink{precdata}{\tt psb\_prec\_data}}
\newcommand{\precdata}{\hyperlink{precdata}{{\tt psb\_prec\_data}}}
\newcommand{\descdata}{\hyperlink{descdata}{{\tt psb\_desc\_data}}}
\newcommand{\spdata}{\hyperlink{spdata}{{\tt psb\_spmat\_data}}}
\begin{document}
\include{title}

@ -186,23 +186,6 @@ Subroutine psb_dcg(a,prec,b,x,eps,desc_a,info,&
it = it + 1
itx = itx + 1
!!$
!!$ solve mz = r
!!$ Note: the overlapped preconditioner (if overlap is non empty)
!!$ is non-symmetric: M^{-1} = \Lambda P^T K^{-1} P
!!$ For CG we use instead
!!$ M^{-1} = \sqrt{\Lambda} P^T K^{-1} P \sqrt{\Lambda}
!!$ Keep track of the old symmetrized stuf, might come in useful.
!!$ CALL F90_PSAXPBY(ONE,R,ZERO,Z,DECOMP_DATA)
!!$ CALL F90_PSOVRL(Z,DECOMP_DATA,&
!!$ & UPDATE_TYPE=SQUARE_ROOT_,CHOICE=NOEXCHANGE)
!!$ CALL F90_PSSPSM(ONE,L,Z,ZERO,W,DECOMP_DATA,&
!!$ & TRANS='N',UNIT=DIAGL,CHOICE=NONE_,WORK=AUX)
!!$ CALL F90_PSSPSM(ONE,U,W,ZERO,Z,DECOMP_DATA,&
!!$ & TRANS='N',UNIT=DIAGU,CHOICE=NONE_,DIAG=VDIAG,WORK=AUX)
!!$ CALL F90_PSOVRL(Z,DECOMP_DATA,&
!!$ & UPDATE_TYPE=SQUARE_ROOT_)
!!$ CALL F90_PSHALO(Z,DECOMP_DATA)
Call psb_prcaply(prec,r,z,desc_a,info,work=aux)
rho_old = rho
rho = psb_dot(r,z,desc_a,info)

@ -5,7 +5,7 @@
!
! Parameters:
! x - integer, dimension(:). Array containing the indices to be translated.
! y - integer, dimension(:). Array containing the indices to be translated.
! y - integer, dimension(:). Array containing the translated indices.
! desc_a - type(<psb_desc_type>). The communication descriptor.
! info - integer. Eventually returns an error code.
! iact - integer(optional). A character defining the behaviour of this subroutine when is found an index not belonging to the calling process

@ -81,7 +81,7 @@ program df_sample
amroot = (myprow==0).and.(mypcol==0)
name='df_sample'
if(psb_get_errstatus().ne.0) return
if(psb_get_errstatus().ne.0) goto 9999
info=0
call psb_set_errverbosity(2)
call psb_set_erraction(0)

Loading…
Cancel
Save