From 4012f47ba037a59123df45345cd725abbd19419e Mon Sep 17 00:00:00 2001 From: Alfredo Buttari Date: Wed, 9 Nov 2005 12:08:34 +0000 Subject: [PATCH] *** empty log message *** --- Makefile | 3 +- docs/pdf/commrout.tex | 12 +- docs/pdf/datastruct.tex | 8 +- docs/pdf/methods.tex | 36 +-- docs/pdf/psbrout.tex | 33 +-- docs/pdf/toolsrout.tex | 490 ++++++++++++++++++++++++++++------ docs/pdf/userguide.tex | 4 +- src/methd/psb_dcg.f90 | 17 -- src/tools/psb_glob_to_loc.f90 | 2 +- test/Fileread/df_sample.f90 | 2 +- 10 files changed, 453 insertions(+), 154 deletions(-) diff --git a/Makefile b/Makefile index 354eb21e..0b22b253 100644 --- a/Makefile +++ b/Makefile @@ -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 diff --git a/docs/pdf/commrout.tex b/docs/pdf/commrout.tex index a562deea..4488332d 100644 --- a/docs/pdf/commrout.tex +++ b/docs/pdf/commrout.tex @@ -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} \\ diff --git a/docs/pdf/datastruct.tex b/docs/pdf/datastruct.tex index 2bcfd386..7ad12de1 100644 --- a/docs/pdf/datastruct.tex +++ b/docs/pdf/datastruct.tex @@ -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}{} diff --git a/docs/pdf/methods.tex b/docs/pdf/methods.tex index 51914449..e8c5b058 100644 --- a/docs/pdf/methods.tex +++ b/docs/pdf/methods.tex @@ -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}\\ diff --git a/docs/pdf/psbrout.tex b/docs/pdf/psbrout.tex index 9f92bee9..614f3cd5 100644 --- a/docs/pdf/psbrout.tex +++ b/docs/pdf/psbrout.tex @@ -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 diff --git a/docs/pdf/toolsrout.tex b/docs/pdf/toolsrout.tex index 4c8459fd..3088c412 100644 --- a/docs/pdf/toolsrout.tex +++ b/docs/pdf/toolsrout.tex @@ -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" diff --git a/docs/pdf/userguide.tex b/docs/pdf/userguide.tex index 92af315a..cf976e63 100644 --- a/docs/pdf/userguide.tex +++ b/docs/pdf/userguide.tex @@ -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} diff --git a/src/methd/psb_dcg.f90 b/src/methd/psb_dcg.f90 index 94b0d34a..d73bd3da 100644 --- a/src/methd/psb_dcg.f90 +++ b/src/methd/psb_dcg.f90 @@ -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) diff --git a/src/tools/psb_glob_to_loc.f90 b/src/tools/psb_glob_to_loc.f90 index 2da8cbf6..e29d02f9 100644 --- a/src/tools/psb_glob_to_loc.f90 +++ b/src/tools/psb_glob_to_loc.f90 @@ -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(). 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 diff --git a/test/Fileread/df_sample.f90 b/test/Fileread/df_sample.f90 index 88b90540..f17ce392 100644 --- a/test/Fileread/df_sample.f90 +++ b/test/Fileread/df_sample.f90 @@ -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)