mld2p4:
docs docs/pdf docs/pdf/Makefile docs/pdf/figures docs/pdf/intro.tex docs/pdf/methods.tex docs/pdf/precs.tex docs/pdf/title.tex docs/pdf/tmp docs/pdf/userguide.tex docs/userguide.pdf First template for documentation.stopcriterion
parent
5b915df153
commit
18252cf6f6
@ -0,0 +1,325 @@
|
|||||||
|
## $Id: Makefile 1524 2007-01-17 17:06:06Z sfilippo $
|
||||||
|
##---------------------------------------------------------------------------
|
||||||
|
## LaTeX Makefile
|
||||||
|
## Copyright (C) 1996-2001 Michael Forman Michael.Forman@Colorado.EDU
|
||||||
|
##
|
||||||
|
## This program is free software; you can redistribute it and/or
|
||||||
|
## modify it under the terms of the GNU General Public License
|
||||||
|
## as published by the Free Software Foundation; either version 2
|
||||||
|
## of the License, or (at your option) any later version.
|
||||||
|
##
|
||||||
|
## This program is distributed in the hope that it will be useful,
|
||||||
|
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
## GNU General Public License for more details.
|
||||||
|
##
|
||||||
|
## You should have received a copy of the GNU General Public License
|
||||||
|
## along with this program; if not, write to the Free Software
|
||||||
|
## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
##
|
||||||
|
## This copyright applies to this Makefile, and all perl scripts.
|
||||||
|
## The GPL does NOT apply to the actual content of the paper or thesis.
|
||||||
|
##---------------------------------------------------------------------------
|
||||||
|
## 01.Dec,1996 forman Initial Makefile
|
||||||
|
## 01.Jun,1997 forman Added support for print, preview, and bibtex
|
||||||
|
## 01.Jan,1998 stones tmp and lib directories to reduce clutter
|
||||||
|
## 05.Feb,1998 forman Added the following functions:
|
||||||
|
## .PHONY to prevent errors
|
||||||
|
## generic TEXFILE definition with following patsubst's
|
||||||
|
## vpath definitions
|
||||||
|
## gzip, gunzip, tar, ci
|
||||||
|
## search for \bibliography in tex file
|
||||||
|
## conditional ifeq omits bibtex if unnecessary
|
||||||
|
## documentation added
|
||||||
|
## 30.Nov,1998 forman Added TOPFILE and SECFILE definitions to support
|
||||||
|
## texfiles with "input" commands.
|
||||||
|
## 23.Dec,1998 marshats Added RCSFILES and ci/co capabilites for multiple files
|
||||||
|
## Now only runs makeindex if $(IDX) file exists.
|
||||||
|
## 15.Mar,1999 forman Added 'make wc' for papers with word quotas.
|
||||||
|
## 24.Aug,1999 forman Converted Makefile to use pdftex as the primary
|
||||||
|
## complier. Now generates true pdf and ps files.
|
||||||
|
## 09.Feb,2000 forman Simplified the documentation. Removed direct
|
||||||
|
## compilation of tex into DVI and PS. Conversion
|
||||||
|
## is done with PDF2PS now.
|
||||||
|
## 08.Aug,2000 forman Added define for figures directories.
|
||||||
|
## 18.Aug,2000 forman Removed the redundant code in the $(pdflatex) and
|
||||||
|
## $(pdflatex-bibtex) definitions by splitting them up
|
||||||
|
## into several smaller definitions which are called
|
||||||
|
## from a single set of "if-then" statements.
|
||||||
|
## 18.Aug,2000 forman Added support for glosstex and makeindex.
|
||||||
|
## 19.Aug,2000 forman To save space, all files in tmp are now links.
|
||||||
|
## 19.Aug,2000 forman Removed all postscript commands in favor of pdf.
|
||||||
|
##---------------------------------------------------------------------------
|
||||||
|
##
|
||||||
|
## This Makefile expects the following directory structure:
|
||||||
|
##
|
||||||
|
## Makefile This file
|
||||||
|
## *.tex Put latex files in root directory.
|
||||||
|
## RCS/ Create an RCS directory for "ci" and "co".
|
||||||
|
## doc/ Document directory. Includes gpl.txt.
|
||||||
|
## lib/ Put all cls, sty, idx, gdf, and bib files in lib.
|
||||||
|
## figures/ Put all figures in the figures directory.
|
||||||
|
## tmp/ Never put anything in tmp -- it gets cleaned out.
|
||||||
|
##
|
||||||
|
##---------------------------------------------------------------------------
|
||||||
|
##
|
||||||
|
## Normal Usage:
|
||||||
|
## make Run pdflatex
|
||||||
|
## make clean Remove all files in tmp and the pdf link in root.
|
||||||
|
## make preview Preview the compiled file
|
||||||
|
## make ci Check in the RCSFILES
|
||||||
|
## make co Check out the RCSFILES
|
||||||
|
##
|
||||||
|
## Advanced Usage:
|
||||||
|
## make gzip Recursively gzip all the files in the root directory
|
||||||
|
## make gunzip Reverse the above process
|
||||||
|
## make tar Tar and gzip the working directory
|
||||||
|
## make wc Count the number of words in your report
|
||||||
|
##
|
||||||
|
##---------------------------------------------------------------------------
|
||||||
|
## WARNING:
|
||||||
|
## If "make ci" fails, "make co" will nuke your files!
|
||||||
|
## Don't put anything in tmp, "make clean" will delete everything!
|
||||||
|
##---------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
|
||||||
|
TOPFILE = userguide.tex
|
||||||
|
SECFILE = title.tex intro.tex methods.tex precs.tex
|
||||||
|
FIGDIR = figures
|
||||||
|
|
||||||
|
XPDFFLAGS =
|
||||||
|
ACROFLAGS = #-- macos
|
||||||
|
#ACROFLAGS = -geometry 1234x1168+0+0 #-- new-sydney-wide
|
||||||
|
#ACROFLAGS = -geometry 1000x1000+0+0 #-- sydney-wide
|
||||||
|
#ACROFLAGS = -geometry 750x1000+0+0 #-- sydney
|
||||||
|
#ACROFLAGS = -geometry 1200x1200+0+0 #-- home-wide
|
||||||
|
#ACROFLAGS = -geometry 900x1200+0+0 #-- home
|
||||||
|
|
||||||
|
##---------------------------------------------------------------------------
|
||||||
|
## Change nothing below here (unless you're really really good).
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
##
|
||||||
|
## Accounting
|
||||||
|
#
|
||||||
|
START = $(shell date)
|
||||||
|
WDIR = $(notdir $(shell pwd))
|
||||||
|
DATE = $(shell date +%Y-%m-%d)
|
||||||
|
|
||||||
|
##
|
||||||
|
## Programs
|
||||||
|
#
|
||||||
|
PDFLATEX = pdflatex
|
||||||
|
ACRO = evince
|
||||||
|
XPDF = xpdf
|
||||||
|
WC = wc
|
||||||
|
PDF2PS = pdf2ps
|
||||||
|
PDF2TEXT = pdftotext
|
||||||
|
MAKEIDX = makeindex
|
||||||
|
GLOSSTEX = glosstex
|
||||||
|
BIBTEX = bibtex
|
||||||
|
FILTER = ../bin/texfilter
|
||||||
|
FILTER = cat
|
||||||
|
CLEANIDX = ../bin/cleanidx
|
||||||
|
|
||||||
|
##
|
||||||
|
## Files
|
||||||
|
#
|
||||||
|
TEXFILES = $(TOPFILE) $(SECFILE)
|
||||||
|
RCSFILES = $(TEXFILES) Makefile
|
||||||
|
|
||||||
|
BASEFILE = $(patsubst %.tex,%,$(TOPFILE))
|
||||||
|
IDX = $(join $(BASEFILE),.idx)
|
||||||
|
PDF = $(join $(BASEFILE),.pdf)
|
||||||
|
PS = $(join $(BASEFILE),.ps)
|
||||||
|
GXS = $(join $(BASEFILE),.gxs)
|
||||||
|
GLX = $(join $(BASEFILE),.glx)
|
||||||
|
|
||||||
|
FIGURES = $(sort $(wildcard $(FIGDIR)/*))
|
||||||
|
GLOFILES:= $(sort $(wildcard lib/*.gdf))
|
||||||
|
GLOFILES:= $(patsubst lib/%,%,$(GLOFILES))
|
||||||
|
BIBFILES:= $(shell grep ^.bibliography{ $(TOPFILE)|sed "s/,/ /g"|sed "s/%.*//g")
|
||||||
|
BIBFILES:= $(patsubst \bibliography{%,%,$(BIBFILES))
|
||||||
|
BIBFILES:= $(patsubst %},%,$(BIBFILES))
|
||||||
|
BIBFILES:= $(sort $(addsuffix .bib,$(BIBFILES)))
|
||||||
|
|
||||||
|
LIBFILES = $(sort $(wildcard lib/*))
|
||||||
|
|
||||||
|
TEXLNFIL = $(addprefix $(PWD)/,$(TEXFILES))
|
||||||
|
|
||||||
|
#============================================================================
|
||||||
|
|
||||||
|
all: $(PDF)
|
||||||
|
@echo $(PDF)
|
||||||
|
|
||||||
|
$(PDF): $(TEXFILES) $(LIBFILES) $(FIGURES) Makefile
|
||||||
|
$(header)
|
||||||
|
$(initialize)
|
||||||
|
$(pdflatex-filter)
|
||||||
|
ifneq ($(BIBFILES),)
|
||||||
|
$(bibtex)
|
||||||
|
$(pdflatex-filter)
|
||||||
|
endif
|
||||||
|
ifneq ($(GLOFILES),)
|
||||||
|
$(glosstex)
|
||||||
|
$(pdflatex-filter)
|
||||||
|
endif
|
||||||
|
# $(makeindex)
|
||||||
|
$(pdflatex-filter)
|
||||||
|
$(finish)
|
||||||
|
|
||||||
|
$(PS): $(PDF)
|
||||||
|
$(PDF2PS) $< $(PS)
|
||||||
|
|
||||||
|
ps: $(PS)
|
||||||
|
|
||||||
|
#============================================================================
|
||||||
|
|
||||||
|
.PHONY: clean clean-tmp preview print gzip gunzip tar ci
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f $(PDF) $(PS)
|
||||||
|
cd tmp ; rm -f *
|
||||||
|
|
||||||
|
clean-tmp:
|
||||||
|
cd tmp ; rm -f *
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
preview: $(PDF)
|
||||||
|
$(ACRO) $(ACROFLAGS) $< &
|
||||||
|
|
||||||
|
xpreview: $(PDF)
|
||||||
|
$(XPDF) $(XPDFFLAGS) $< &
|
||||||
|
|
||||||
|
wc: $(PDF)
|
||||||
|
$(PDF2TEXT) $< | $(WC)
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
ci: $(RCSFILES)
|
||||||
|
$(shell for i in $(RCSFILES) ; do ci -u $$i ; done)
|
||||||
|
|
||||||
|
co: $(RCSFILES)
|
||||||
|
$(shell for i in $(RCSFILES) ; do co -l $$i ; done)
|
||||||
|
|
||||||
|
gzip: clean-tmp
|
||||||
|
gzip -r ./
|
||||||
|
gunzip Makefile.gz
|
||||||
|
|
||||||
|
gunzip:
|
||||||
|
gunzip -r ./
|
||||||
|
|
||||||
|
tar: clean-tmp
|
||||||
|
cd .. ; \
|
||||||
|
tar cvf $(WDIR)-$(DATE).tar $(WDIR) ; \
|
||||||
|
gzip $(WDIR)-$(DATE).tar
|
||||||
|
|
||||||
|
info:
|
||||||
|
$(header)
|
||||||
|
|
||||||
|
#============================================================================
|
||||||
|
|
||||||
|
define header
|
||||||
|
@echo
|
||||||
|
@echo "#---------------------------------------------------------------------"
|
||||||
|
@echo "MAKEFILE = LaTeX PDF Makefile"
|
||||||
|
@echo "AUTHOR = Alfredo Buttari"
|
||||||
|
@echo 'ID = $$Id: Makefile 1524 2007-01-17 17:06:06Z sfilippo $ '
|
||||||
|
@echo "#---------------------------------------------------------------------"
|
||||||
|
@echo
|
||||||
|
@echo "ACRO = $(ACRO) $(ACROFLAGS) $(PDF)"
|
||||||
|
@echo "XPDF = $(XPDF) $(XPDFFLAGS) $(PDF)"
|
||||||
|
@echo "GV = $(GV) $(GVFLAGS) $(PS)"
|
||||||
|
@echo "LPR = $(LPR) $(LPRFLAGS) $(PS)"
|
||||||
|
@echo
|
||||||
|
@echo "WDIR = $(WDIR)"
|
||||||
|
@echo "DATE = $(DATE)"
|
||||||
|
@echo
|
||||||
|
@echo "TOPFILE = $(TOPFILE)"
|
||||||
|
@echo "SECFILE = $(SECFILE)"
|
||||||
|
@echo "TEXFILES = $(TEXFILES)"
|
||||||
|
@echo "PDF = $(PDF)"
|
||||||
|
@echo "PS = $(PS)"
|
||||||
|
@echo "BIBFILES = $(BIBFILES)"
|
||||||
|
@echo "GLOFILES = $(GLOFILES)"
|
||||||
|
@echo "IDXFILES = $(IDXFILES)"
|
||||||
|
@echo
|
||||||
|
endef
|
||||||
|
# @echo "FIGURES = $(FIGURES)"
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
define initialize
|
||||||
|
@if test ! -d tmp; then mkdir tmp; fi
|
||||||
|
@ln -sf $(TEXLNFIL) tmp
|
||||||
|
@ln -sf $(PWD)/lib/* tmp
|
||||||
|
@ln -sf $(PWD)/$(FIGDIR) tmp
|
||||||
|
endef
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
define pdflatex
|
||||||
|
@echo
|
||||||
|
@echo "----- pdflatex -------------------------------------------------------"
|
||||||
|
@echo -n "Starting: "; date
|
||||||
|
@echo
|
||||||
|
cd tmp; $(PDFLATEX) $(TOPFILE)
|
||||||
|
endef
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
define pdflatex-filter
|
||||||
|
@echo
|
||||||
|
@echo "----- pdflatex -------------------------------------------------------"
|
||||||
|
@echo -n "Starting: "; date
|
||||||
|
@echo
|
||||||
|
cd tmp; ($(PDFLATEX) $(TOPFILE) 2>&1) | $(FILTER)
|
||||||
|
endef
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
define bibtex
|
||||||
|
@echo
|
||||||
|
@echo "----- bibtex ---------------------------------------------------------"
|
||||||
|
@echo -n "Starting: "; date
|
||||||
|
@echo
|
||||||
|
cd tmp; $(BIBTEX) $(BASEFILE)
|
||||||
|
endef
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
define glosstex
|
||||||
|
@echo
|
||||||
|
@echo "----- glosstex -------------------------------------------------------"
|
||||||
|
@echo -n "Starting: "; date
|
||||||
|
@echo
|
||||||
|
cd tmp; $(GLOSSTEX) $(BASEFILE) $(GLOFILES)
|
||||||
|
cd tmp; $(MAKEIDX) $(GXS) -o $(GLX) -s glosstex.ist
|
||||||
|
endef
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
define makeindex
|
||||||
|
@echo
|
||||||
|
@echo "----- makeindex ------------------------------------------------------"
|
||||||
|
@echo -n "Starting: "; date
|
||||||
|
@echo
|
||||||
|
cd tmp; mv $(IDX) $(IDX)-; $(CLEANIDX) < $(IDX)- > $(IDX)
|
||||||
|
cd tmp; $(MAKEIDX) $(IDX)
|
||||||
|
endef
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
define finish
|
||||||
|
@ln -sf tmp/$@ .
|
||||||
|
@echo
|
||||||
|
@echo "----- finish ---------------------------------------------------------"
|
||||||
|
@echo -n "Start: "$(START); echo
|
||||||
|
@echo -n "Finish: "; date
|
||||||
|
@echo -n "Output: "; ls -l -o tmp/$@
|
||||||
|
@echo -n "Target: "
|
||||||
|
endef
|
||||||
|
|
||||||
|
|
@ -0,0 +1,32 @@
|
|||||||
|
\section{Introduction}\label{sec:intro}
|
||||||
|
|
||||||
|
The MLD2P4 library provides ....
|
||||||
|
|
||||||
|
|
||||||
|
\subsection{Programming model}
|
||||||
|
|
||||||
|
The MLD2P4 librarary is based on the Single Program Multiple Data
|
||||||
|
(SPMD) programming model: each process participating in the
|
||||||
|
computation performs the same actions on a chunk of data. Parallelism
|
||||||
|
is thus data-driven.
|
||||||
|
|
||||||
|
Because of this structure, many subroutines coordinate their action
|
||||||
|
across the various processes, thus providing an implicit
|
||||||
|
synchronization point, and therefore \emph{must} be
|
||||||
|
called simultaneously by all processes participating in the
|
||||||
|
computation.
|
||||||
|
However there are many cases where no synchronization, and indeed no
|
||||||
|
communication among processes, is implied.
|
||||||
|
|
||||||
|
Throughout this user's guide each subroutine will be clearly indicated
|
||||||
|
as:
|
||||||
|
\begin{description}
|
||||||
|
\item[Synchronous:] must be called simultaneously by all the
|
||||||
|
processes in the relevant communication context;
|
||||||
|
\item[Asynchronous:] may be called in a totally independent manner.
|
||||||
|
\end{description}
|
||||||
|
|
||||||
|
%%% Local Variables:
|
||||||
|
%%% mode: latex
|
||||||
|
%%% TeX-master: "userguide"
|
||||||
|
%%% End:
|
@ -0,0 +1,605 @@
|
|||||||
|
\section{Iterative Methods}
|
||||||
|
\label{sec:methods}
|
||||||
|
|
||||||
|
In this chapter we provide routines for preconditioners and iterative
|
||||||
|
methods. The interfaces for Krylov subspace methods are available in
|
||||||
|
the module \verb|mld_krylov_mod|. The installation process of MLD2P4
|
||||||
|
ensures that these may be used as a drop-in replacement for the PSBLAS
|
||||||
|
methods; they are accessible under the PSBLAS names (see the PSBLAS
|
||||||
|
documentation),
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
%
|
||||||
|
% Krylov Methods driver routine
|
||||||
|
%
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
|
||||||
|
\subroutine{mld\_krylov \label{krylov}}{Krylov Methods Driver Routine}
|
||||||
|
|
||||||
|
This subroutine is a driver that provides a general interface for all
|
||||||
|
the Krylov-Subspace family methods.
|
||||||
|
|
||||||
|
The stopping criterion is the normwise backward error, in the infinity
|
||||||
|
norm, i.e. the iteration is stopped when
|
||||||
|
\[ err = \frac{\|r_i\|}{(\|A\|\|x_i\|+\|b\|)} < eps \]
|
||||||
|
or the 2-norm residual reduction
|
||||||
|
\[ err = \frac{\|r_i\|}{\|b\|_2} < eps \]
|
||||||
|
according to the value passed through the istop argument (see
|
||||||
|
later). In the above formulae, $x_i$ is the tentative solution and
|
||||||
|
$r_i=b-Ax_i$ the corresponding residual at the $i$-th iteration.
|
||||||
|
|
||||||
|
|
||||||
|
\syntax{call psb\_krylov}{method,a,prec,b,x,eps,desc\_a,info,itmax,iter,err,itrace,irst,istop}
|
||||||
|
|
||||||
|
\begin{description}
|
||||||
|
\item[Type:] Synchronous.
|
||||||
|
\item[\bf On Entry]
|
||||||
|
\item[method] a string that defines the iterative method to be
|
||||||
|
used. Supported values are:
|
||||||
|
\begin{description}
|
||||||
|
\item[CG]: the Conjugate Gradient method;
|
||||||
|
\item[CGS]:the Conjugate Gradient Stabilized method;
|
||||||
|
|
||||||
|
\item[BICG]: the Bi-Conjugate Gradient method;
|
||||||
|
\item[BICGSTAB]: the Bi-Conjugate Gradient Stabilized method;
|
||||||
|
\item[BICGSTABL]: the Bi-Conjugate Gradient Stabilized method with restarting;
|
||||||
|
\item[RGMRES]: the Generalized Minimal Residual method with restarting.
|
||||||
|
\end{description}
|
||||||
|
\item[a] the local portion of global sparse matrix
|
||||||
|
$A$. \\
|
||||||
|
Scope: {\bf local} \\
|
||||||
|
Type: {\bf required}\\
|
||||||
|
Intent: {\bf in}.\\
|
||||||
|
Specified as: a structured data of type \spdata.
|
||||||
|
\item[prec] The data structure containing the preconditioner.\\
|
||||||
|
Scope: {\bf local} \\
|
||||||
|
Type: {\bf required}\\
|
||||||
|
Intent: {\bf in}.\\
|
||||||
|
Specified as: a structured data of type \precdata.
|
||||||
|
\item[b] The RHS vector. \\
|
||||||
|
Scope: {\bf local} \\
|
||||||
|
Type: {\bf required}\\
|
||||||
|
Intent: {\bf in}.\\
|
||||||
|
Specified as: a rank one array.
|
||||||
|
\item[x] The initial guess. \\
|
||||||
|
Scope: {\bf local} \\
|
||||||
|
Type: {\bf required}\\
|
||||||
|
Intent: {\bf inout}.\\
|
||||||
|
Specified as: a rank one array.
|
||||||
|
\item[eps] The stopping tolerance. \\
|
||||||
|
Scope: {\bf global} \\
|
||||||
|
Type: {\bf required}\\
|
||||||
|
Intent: {\bf in}.\\
|
||||||
|
Specified as: a real number.
|
||||||
|
\item[desc\_a] contains data structures for communications.\\
|
||||||
|
Scope: {\bf local} \\
|
||||||
|
Type: {\bf required}\\
|
||||||
|
Intent: {\bf in}.\\
|
||||||
|
Specified as: a structured data of type \descdata.
|
||||||
|
\item[itmax] The maximum number of iterations to perform.\\
|
||||||
|
Scope: {\bf global} \\
|
||||||
|
Type: {\bf optional}\\
|
||||||
|
Intent: {\bf in}.\\
|
||||||
|
Default: $itmax = 1000$.\\
|
||||||
|
Specified as: an integer variable $itmax \ge 1$.
|
||||||
|
\item[itrace] If $>0$ print out an informational message about
|
||||||
|
convergence every $itrace$ iterations.\\
|
||||||
|
Scope: {\bf global} \\
|
||||||
|
Type: {\bf optional}\\
|
||||||
|
Intent: {\bf in}.\\
|
||||||
|
\item[irst] An integer specifying the restart parameter.\\
|
||||||
|
Scope: {\bf global} \\
|
||||||
|
Type: {\bf optional}.\\
|
||||||
|
Intent: {\bf in}.\\
|
||||||
|
Values: $irst>0$. This is employed for the BiCGSTABL or RGMRES
|
||||||
|
methods, otherwise it is ignored.
|
||||||
|
|
||||||
|
\item[istop] An integer specifying the stopping criterion.\\
|
||||||
|
Scope: {\bf global} \\
|
||||||
|
Type: {\bf optional}.\\
|
||||||
|
Intent: {\bf in}.\\
|
||||||
|
Values: 1: use the normwise backward error, 2: use the scaled 2-norm
|
||||||
|
of the residual. Default: 1.
|
||||||
|
\item[\bf On Return]
|
||||||
|
\item[x] The computed solution. \\
|
||||||
|
Scope: {\bf local} \\
|
||||||
|
Type: {\bf required}\\
|
||||||
|
Intent: {\bf inout}.\\
|
||||||
|
Specified as: a rank one array.
|
||||||
|
\item[iter] The number of iterations performed.\\
|
||||||
|
Scope: {\bf global} \\
|
||||||
|
Type: {\bf optional}\\
|
||||||
|
Intent: {\bf out}.\\
|
||||||
|
Returned as: an integer variable.
|
||||||
|
\item[err] The convergence estimate on exit.\\
|
||||||
|
Scope: {\bf global} \\
|
||||||
|
Type: {\bf optional}\\
|
||||||
|
Intent: {\bf out}.\\
|
||||||
|
Returned as: a real number.
|
||||||
|
\item[info] Error code.\\
|
||||||
|
Scope: {\bf local} \\
|
||||||
|
Type: {\bf required} \\
|
||||||
|
Intent: {\bf out}.\\
|
||||||
|
An integer value; 0 means no error has been detected.
|
||||||
|
\end{description}
|
||||||
|
|
||||||
|
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
%% %
|
||||||
|
%% % CG
|
||||||
|
%% %
|
||||||
|
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
|
||||||
|
%% \subroutine{psb\_cg \label{cg}}{CG Iterative Method}
|
||||||
|
|
||||||
|
%% This subroutine implements the CG method with restarting. The
|
||||||
|
%% stopping criterion is the normwise backward error, in the infinity
|
||||||
|
%% norm, i.e. the iteration is stopped when
|
||||||
|
%% \[ \frac{\|r\|}{(\|A\|\|x\|+\|b\|)} < eps \]
|
||||||
|
%% or
|
||||||
|
%% \[ \frac{\|r_i\|}{\|b\|_2} < eps \]
|
||||||
|
%% according to the value passed through the istop argument (see later).
|
||||||
|
|
||||||
|
|
||||||
|
%% \syntax{call psb\_cg}{a,prec,b,x,eps,desc\_a,info,itmax,iter,err,itrace,istop}
|
||||||
|
|
||||||
|
%% \begin{description}
|
||||||
|
%% \item[\bf On Entry]
|
||||||
|
%% \item[a] the local portion of global sparse matrix
|
||||||
|
%% $A$. \\
|
||||||
|
%% Scope: {\bf local} \\
|
||||||
|
%% Type: {\bf required}\\
|
||||||
|
%% Specified as: a structured data of type \spdata.
|
||||||
|
%% \item[prec] The data structure containing the preconditioner.\\
|
||||||
|
%% Scope: {\bf local} \\
|
||||||
|
%% Type: {\bf required}\\
|
||||||
|
%% Specified as: a structured data of type \precdata.
|
||||||
|
%% \item[b] The RHS vector. \\
|
||||||
|
%% Scope: {\bf local} \\
|
||||||
|
%% Type: {\bf required}\\
|
||||||
|
%% Specified as: a rank one array.
|
||||||
|
%% \item[x] The initial guess. \\
|
||||||
|
%% Scope: {\bf local} \\
|
||||||
|
%% Type: {\bf required}\\
|
||||||
|
%% Specified as: a rank one array.
|
||||||
|
%% \item[eps] The stopping tolerance. \\
|
||||||
|
%% Scope: {\bf global} \\
|
||||||
|
%% Type: {\bf required}\\
|
||||||
|
%% Specified as: a real number.
|
||||||
|
%% \item[desc\_a] contains data structures for communications.\\
|
||||||
|
%% Scope: {\bf local} \\
|
||||||
|
%% Type: {\bf required}\\
|
||||||
|
%% Specified as: a structured data of type \descdata.
|
||||||
|
%% \item[itmax] The maximum number of iterations to perform.\\
|
||||||
|
%% Scope: {\bf global} \\
|
||||||
|
%% Type: {\bf optional}\\
|
||||||
|
%% Default: $itmax = 1000$.\\
|
||||||
|
%% Specified as: an integer variable $itmax \ge 1$.
|
||||||
|
%% \item[itrace] If $>0$ print out an informational message about
|
||||||
|
%% convergence every $itrace$ iterations.\\
|
||||||
|
%% Scope: {\bf global} \\
|
||||||
|
%% Type: {\bf optional}\\
|
||||||
|
%% \item[istop] An integer specifying the stopping criterion.\\
|
||||||
|
%% Scope: {\bf global} \\
|
||||||
|
%% Type: {\bf optional}\\
|
||||||
|
|
||||||
|
%% \item[\bf On Return]
|
||||||
|
%% \item[x] The computed solution. \\
|
||||||
|
%% Scope: {\bf local} \\
|
||||||
|
%% Type: {\bf required}\\
|
||||||
|
%% Specified as: a rank one array.
|
||||||
|
%% \item[iter] The number of iterations performed.\\
|
||||||
|
%% Scope: {\bf global} \\
|
||||||
|
%% Type: {\bf optional}\\
|
||||||
|
%% Returned as: an integer variable.
|
||||||
|
%% \item[err] The error estimate on exit.\\
|
||||||
|
%% Scope: {\bf global} \\
|
||||||
|
%% Type: {\bf optional}\\
|
||||||
|
%% Returned as: a real number.
|
||||||
|
%% \item[info] Error code.\\
|
||||||
|
%% Scope: {\bf local} \\
|
||||||
|
%% Type: {\bf required} \\
|
||||||
|
%% An integer value; 0 means no error has been detected.
|
||||||
|
%% \end{description}
|
||||||
|
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
%% %
|
||||||
|
%% % CGS
|
||||||
|
%% %
|
||||||
|
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
|
||||||
|
%% \subroutine{psb\_cgs \label{cgs}}{CGS Iterative Method}
|
||||||
|
|
||||||
|
%% This subroutine implements the CGS method with restarting. The
|
||||||
|
%% stopping criterion is the normwise backward error, in the infinity
|
||||||
|
%% norm, i.e. the iteration is stopped when
|
||||||
|
%% \[ \frac{\|r\|}{(\|A\|\|x\|+\|b\|)} < eps \]
|
||||||
|
%% or
|
||||||
|
%% \[ \frac{\|r_i\|}{\|b\|_2} < eps \]
|
||||||
|
%% according to the value passed through the istop argument (see later).
|
||||||
|
|
||||||
|
|
||||||
|
%% \syntax{call psb\_cgs}{a,prec,b,x,eps,desc\_a,info,itmax,iter,err,itrace,istop}
|
||||||
|
|
||||||
|
%% \begin{description}
|
||||||
|
%% \item[\bf On Entry]
|
||||||
|
%% \item[a] the local portion of global sparse matrix
|
||||||
|
%% $A$. \\
|
||||||
|
%% Scope: {\bf local} \\
|
||||||
|
%% Type: {\bf required}\\
|
||||||
|
%% Specified as: a structured data of type \spdata.
|
||||||
|
%% \item[prec] The data structure containing the preconditioner.\\
|
||||||
|
%% Scope: {\bf local} \\
|
||||||
|
%% Type: {\bf required}\\
|
||||||
|
%% Specified as: a structured data of type \precdata.
|
||||||
|
%% \item[b] The RHS vector. \\
|
||||||
|
%% Scope: {\bf local} \\
|
||||||
|
%% Type: {\bf required}\\
|
||||||
|
%% Specified as: a rank one array.
|
||||||
|
%% \item[x] The initial guess. \\
|
||||||
|
%% Scope: {\bf local} \\
|
||||||
|
%% Type: {\bf required}\\
|
||||||
|
%% Specified as: a rank one array.
|
||||||
|
%% \item[eps] The stopping tolerance. \\
|
||||||
|
%% Scope: {\bf global} \\
|
||||||
|
%% Type: {\bf required}\\
|
||||||
|
%% Specified as: a real number.
|
||||||
|
%% \item[desc\_a] contains data structures for communications.\\
|
||||||
|
%% Scope: {\bf local} \\
|
||||||
|
%% Type: {\bf required}\\
|
||||||
|
%% Specified as: a structured data of type \descdata.
|
||||||
|
%% \item[itmax] The maximum number of iterations to perform.\\
|
||||||
|
%% Scope: {\bf global} \\
|
||||||
|
%% Type: {\bf optional}\\
|
||||||
|
%% Default: $itmax = 1000$.\\
|
||||||
|
%% Specified as: an integer variable $itmax \ge 1$.
|
||||||
|
%% \item[itrace] If $>0$ print out an informational message about
|
||||||
|
%% convergence every $itrace$ iterations.\\
|
||||||
|
%% Scope: {\bf global} \\
|
||||||
|
%% Type: {\bf optional}\\
|
||||||
|
%% \item[istop] An integer specifying the stopping criterion.\\
|
||||||
|
%% Scope: {\bf global} \\
|
||||||
|
%% Type: {\bf optional}\\
|
||||||
|
|
||||||
|
%% \item[\bf On Return]
|
||||||
|
%% \item[x] The computed solution. \\
|
||||||
|
%% Scope: {\bf local} \\
|
||||||
|
%% Type: {\bf required}\\
|
||||||
|
%% Specified as: a rank one array.
|
||||||
|
%% \item[iter] The number of iterations performed.\\
|
||||||
|
%% Scope: {\bf global} \\
|
||||||
|
%% Type: {\bf optional}\\
|
||||||
|
%% Returned as: an integer variable.
|
||||||
|
%% \item[err] The error estimate on exit.\\
|
||||||
|
%% Scope: {\bf global} \\
|
||||||
|
%% Type: {\bf optional}\\
|
||||||
|
%% Returned as: a real number.
|
||||||
|
%% \item[info] Error code.\\
|
||||||
|
%% Scope: {\bf local} \\
|
||||||
|
%% Type: {\bf required} \\
|
||||||
|
%% An integer value; 0 means no error has been detected.
|
||||||
|
%% \end{description}
|
||||||
|
|
||||||
|
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
%% %
|
||||||
|
%% % BiCG
|
||||||
|
%% %
|
||||||
|
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
%% \subroutine{psb\_bicg \label{bicg}}{BiCG Iterative Method}
|
||||||
|
|
||||||
|
%% This subroutine implements the BiCG method with restarting. The
|
||||||
|
%% stopping criterion is the normwise backward error, in the infinity
|
||||||
|
%% norm, i.e. the iteration is stopped when
|
||||||
|
%% \[ \frac{\|r\|}{(\|A\|\|x\|+\|b\|)} < eps \]
|
||||||
|
%% or
|
||||||
|
%% \[ \frac{\|r_i\|}{\|b\|_2} < eps \]
|
||||||
|
%% according to the value passed through the istop argument (see later).
|
||||||
|
|
||||||
|
|
||||||
|
%% \syntax{call psb\_bicg}{a,prec,b,x,eps,desc\_a,info,itmax,iter,err,itrace,istop}
|
||||||
|
|
||||||
|
%% \begin{description}
|
||||||
|
%% \item[\bf On Entry]
|
||||||
|
%% \item[a] the local portion of global sparse matrix
|
||||||
|
%% $A$. \\
|
||||||
|
%% Scope: {\bf local} \\
|
||||||
|
%% Type: {\bf required}\\
|
||||||
|
%% Specified as: a structured data of type \spdata.
|
||||||
|
%% \item[prec] The data structure containing the preconditioner.\\
|
||||||
|
%% Scope: {\bf local} \\
|
||||||
|
%% Type: {\bf required}\\
|
||||||
|
%% Specified as: a structured data of type \precdata.
|
||||||
|
%% \item[b] The RHS vector. \\
|
||||||
|
%% Scope: {\bf local} \\
|
||||||
|
%% Type: {\bf required}\\
|
||||||
|
%% Specified as: a rank one array.
|
||||||
|
%% \item[x] The initial guess. \\
|
||||||
|
%% Scope: {\bf local} \\
|
||||||
|
%% Type: {\bf required}\\
|
||||||
|
%% Specified as: a rank one array.
|
||||||
|
%% \item[eps] The stopping tolerance. \\
|
||||||
|
%% Scope: {\bf global} \\
|
||||||
|
%% Type: {\bf required}\\
|
||||||
|
%% Specified as: a real number.
|
||||||
|
%% \item[desc\_a] contains data structures for communications.\\
|
||||||
|
%% Scope: {\bf local} \\
|
||||||
|
%% Type: {\bf required}\\
|
||||||
|
%% Specified as: a structured data of type \descdata.
|
||||||
|
%% \item[itmax] The maximum number of iterations to perform.\\
|
||||||
|
%% Scope: {\bf global} \\
|
||||||
|
%% Type: {\bf optional}\\
|
||||||
|
%% Default: $itmax = 1000$.\\
|
||||||
|
%% Specified as: an integer variable $itmax \ge 1$.
|
||||||
|
%% \item[itrace] If $>0$ print out an informational message about
|
||||||
|
%% convergence every $itrace$ iterations.\\
|
||||||
|
%% Scope: {\bf global} \\
|
||||||
|
%% Type: {\bf optional}\\
|
||||||
|
%% \item[istop] An integer specifying the stopping criterion.\\
|
||||||
|
%% Scope: {\bf global} \\
|
||||||
|
%% Type: {\bf optional}\\
|
||||||
|
|
||||||
|
%% \item[\bf On Return]
|
||||||
|
%% \item[x] The computed solution. \\
|
||||||
|
%% Scope: {\bf local} \\
|
||||||
|
%% Type: {\bf required}\\
|
||||||
|
%% Specified as: a rank one array.
|
||||||
|
%% \item[iter] The number of iterations performed.\\
|
||||||
|
%% Scope: {\bf global} \\
|
||||||
|
%% Type: {\bf optional}\\
|
||||||
|
%% Returned as: an integer variable.
|
||||||
|
%% \item[err] The error estimate on exit.\\
|
||||||
|
%% Scope: {\bf global} \\
|
||||||
|
%% Type: {\bf optional}\\
|
||||||
|
%% Returned as: a real number.
|
||||||
|
%% \item[info] Error code.\\
|
||||||
|
%% Scope: {\bf local} \\
|
||||||
|
%% Type: {\bf required} \\
|
||||||
|
%% An integer value; 0 means no error has been detected.
|
||||||
|
%% \end{description}
|
||||||
|
|
||||||
|
|
||||||
|
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
%% %
|
||||||
|
%% % BiCGSTAB
|
||||||
|
%% %
|
||||||
|
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
%% \subroutine{psb\_bicgstab \label{bicgstab}}{BiCGSTAB Iterative Method}
|
||||||
|
|
||||||
|
%% This subroutine implements the BiCGSTAB method with restarting. The
|
||||||
|
%% stopping criterion is the normwise backward error, in the infinity
|
||||||
|
%% norm, i.e. the iteration is stopped when
|
||||||
|
%% \[ \frac{\|r\|}{(\|A\|\|x\|+\|b\|)} < eps \]
|
||||||
|
%% or
|
||||||
|
%% \[ \frac{\|r_i\|}{\|b\|_2} < eps \]
|
||||||
|
%% according to the value passed through the istop argument (see later).
|
||||||
|
|
||||||
|
|
||||||
|
%% \syntax{call psb\_bicgstab}{a,prec,b,x,eps,desc\_a,info,itmax,iter,err,itrace,istop}
|
||||||
|
|
||||||
|
%% \begin{description}
|
||||||
|
%% \item[\bf On Entry]
|
||||||
|
%% \item[a] the local portion of global sparse matrix
|
||||||
|
%% $A$. \\
|
||||||
|
%% Scope: {\bf local} \\
|
||||||
|
%% Type: {\bf required}\\
|
||||||
|
%% Specified as: a structured data of type \spdata.
|
||||||
|
%% \item[prec] The data structure containing the preconditioner.\\
|
||||||
|
%% Scope: {\bf local} \\
|
||||||
|
%% Type: {\bf required}\\
|
||||||
|
%% Specified as: a structured data of type \precdata.
|
||||||
|
%% \item[b] The RHS vector. \\
|
||||||
|
%% Scope: {\bf local} \\
|
||||||
|
%% Type: {\bf required}\\
|
||||||
|
%% Specified as: a rank one array.
|
||||||
|
%% \item[x] The initial guess. \\
|
||||||
|
%% Scope: {\bf local} \\
|
||||||
|
%% Type: {\bf required}\\
|
||||||
|
%% Specified as: a rank one array.
|
||||||
|
%% \item[eps] The stopping tolerance. \\
|
||||||
|
%% Scope: {\bf global} \\
|
||||||
|
%% Type: {\bf required}\\
|
||||||
|
%% Specified as: a real number.
|
||||||
|
%% \item[desc\_a] contains data structures for communications.\\
|
||||||
|
%% Scope: {\bf local} \\
|
||||||
|
%% Type: {\bf required}\\
|
||||||
|
%% Specified as: a structured data of type \descdata.
|
||||||
|
%% \item[itmax] The maximum number of iterations to perform.\\
|
||||||
|
%% Scope: {\bf global} \\
|
||||||
|
%% Type: {\bf optional}\\
|
||||||
|
%% Default: $itmax = 1000$.\\
|
||||||
|
%% Specified as: an integer variable $itmax \ge 1$.
|
||||||
|
%% \item[itrace] If $>0$ print out an informational message about
|
||||||
|
%% convergence every $itrace$ iterations.\\
|
||||||
|
%% Scope: {\bf global} \\
|
||||||
|
%% Type: {\bf optional}\\
|
||||||
|
%% \item[istop] An integer specifying the stopping criterion.\\
|
||||||
|
%% Scope: {\bf global} \\
|
||||||
|
%% Type: {\bf optional}\\
|
||||||
|
|
||||||
|
%% \item[\bf On Return]
|
||||||
|
%% \item[x] The computed solution. \\
|
||||||
|
%% Scope: {\bf local} \\
|
||||||
|
%% Type: {\bf required}\\
|
||||||
|
%% Specified as: a rank one array.
|
||||||
|
%% \item[iter] The number of iterations performed.\\
|
||||||
|
%% Scope: {\bf global} \\
|
||||||
|
%% Type: {\bf optional}\\
|
||||||
|
%% Returned as: an integer variable.
|
||||||
|
%% \item[err] The error estimate on exit.\\
|
||||||
|
%% Scope: {\bf global} \\
|
||||||
|
%% Type: {\bf optional}\\
|
||||||
|
%% Returned as: a real number.
|
||||||
|
%% \item[info] Error code.\\
|
||||||
|
%% Scope: {\bf local} \\
|
||||||
|
%% Type: {\bf required} \\
|
||||||
|
%% An integer value; 0 means no error has been detected.
|
||||||
|
%% \end{description}
|
||||||
|
|
||||||
|
|
||||||
|
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
%% %
|
||||||
|
%% % BiCGSTAB(L)
|
||||||
|
%% %
|
||||||
|
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
%% \subroutine{psb\_bicgstabl \label{bicgstabl}}{BiCGSTAB-$l$ Iterative Method}
|
||||||
|
|
||||||
|
%% This subroutine implements the BiCGSTAB-$l$ method with restarting. The
|
||||||
|
%% stopping criterion is the normwise backward error, in the infinity
|
||||||
|
%% norm, i.e. the iteration is stopped when
|
||||||
|
%% \[ \frac{\|r\|}{(\|A\|\|x\|+\|b\|)} < eps \]
|
||||||
|
%% or
|
||||||
|
%% \[ \frac{\|r_i\|}{\|b\|_2} < eps \]
|
||||||
|
%% according to the value passed through the istop argument (see later).
|
||||||
|
|
||||||
|
|
||||||
|
%% \syntax{call psb\_bicgstab}{a,prec,b,x,eps,desc\_a,info,itmax,iter,err,itrace,irst,istop}
|
||||||
|
|
||||||
|
%% \begin{description}
|
||||||
|
%% \item[\bf On Entry]
|
||||||
|
%% \item[a] the local portion of global sparse matrix
|
||||||
|
%% $A$. \\
|
||||||
|
%% Scope: {\bf local} \\
|
||||||
|
%% Type: {\bf required}\\
|
||||||
|
%% Specified as: a structured data of type \spdata.
|
||||||
|
%% \item[prec] The data structure containing the preconditioner.\\
|
||||||
|
%% Scope: {\bf local} \\
|
||||||
|
%% Type: {\bf required}\\
|
||||||
|
%% Specified as: a structured data of type \precdata.
|
||||||
|
%% \item[b] The RHS vector. \\
|
||||||
|
%% Scope: {\bf local} \\
|
||||||
|
%% Type: {\bf required}\\
|
||||||
|
%% Specified as: a rank one array.
|
||||||
|
%% \item[x] The initial guess. \\
|
||||||
|
%% Scope: {\bf local} \\
|
||||||
|
%% Type: {\bf required}\\
|
||||||
|
%% Specified as: a rank one array.
|
||||||
|
%% \item[eps] The stopping tolerance. \\
|
||||||
|
%% Scope: {\bf global} \\
|
||||||
|
%% Type: {\bf required}\\
|
||||||
|
%% Specified as: a real number.
|
||||||
|
%% \item[desc\_a] contains data structures for communications.\\
|
||||||
|
%% Scope: {\bf local} \\
|
||||||
|
%% Type: {\bf required}\\
|
||||||
|
%% Specified as: a structured data of type \descdata.
|
||||||
|
%% \item[itmax] The maximum number of iterations to perform.\\
|
||||||
|
%% Scope: {\bf global} \\
|
||||||
|
%% Type: {\bf optional}\\
|
||||||
|
%% Default: $itmax = 1000$.\\
|
||||||
|
%% Specified as: an integer variable $itmax \ge 1$.
|
||||||
|
%% \item[itrace] If $>0$ print out an informational message about
|
||||||
|
%% convergence every $itrace$ iterations.\\
|
||||||
|
%% Scope: {\bf global} \\
|
||||||
|
%% Type: {\bf optional}\\
|
||||||
|
%% \item[irst] An integer specifying the restarting iteration.\\
|
||||||
|
%% Scope: {\bf global} \\
|
||||||
|
%% Type: {\bf optional}\\
|
||||||
|
%% \item[istop] An integer specifying the stopping criterion.\\
|
||||||
|
%% Scope: {\bf global} \\
|
||||||
|
%% Type: {\bf optional}\\
|
||||||
|
|
||||||
|
%% \item[\bf On Return]
|
||||||
|
%% \item[x] The computed solution. \\
|
||||||
|
%% Scope: {\bf local} \\
|
||||||
|
%% Type: {\bf required}\\
|
||||||
|
%% Specified as: a rank one array.
|
||||||
|
%% \item[iter] The number of iterations performed.\\
|
||||||
|
%% Scope: {\bf global} \\
|
||||||
|
%% Type: {\bf optional}\\
|
||||||
|
%% Returned as: an integer variable.
|
||||||
|
%% \item[err] The error estimate on exit.\\
|
||||||
|
%% Scope: {\bf global} \\
|
||||||
|
%% Type: {\bf optional}\\
|
||||||
|
%% Returned as: a real number.
|
||||||
|
%% \item[info] Error code.\\
|
||||||
|
%% Scope: {\bf local} \\
|
||||||
|
%% Type: {\bf required} \\
|
||||||
|
%% An integer value; 0 means no error has been detected.
|
||||||
|
%% \end{description}
|
||||||
|
|
||||||
|
|
||||||
|
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
%% %
|
||||||
|
%% % GMRES
|
||||||
|
%% %
|
||||||
|
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
%% \subroutine{psb\_gmres \label{gmres}}{GMRES Iterative Method}
|
||||||
|
|
||||||
|
%% This subroutine implements the GMRES method with restarting. The
|
||||||
|
%% stopping criterion is the normwise backward error, in the infinity
|
||||||
|
%% norm, i.e. the iteration is stopped when
|
||||||
|
%% \[ \frac{\|r\|}{(\|A\|\|x\|+\|b\|)} < eps \]
|
||||||
|
%% or
|
||||||
|
%% \[ \frac{\|r_i\|}{\|b\|_2} < eps \]
|
||||||
|
%% according to the value passed through the istop argument (see later).
|
||||||
|
|
||||||
|
|
||||||
|
%% \syntax{call psb\_gmres}{a,prec,b,x,eps,desc\_a,info,itmax,iter,err,itrace,irst,istop}
|
||||||
|
|
||||||
|
%% \begin{description}
|
||||||
|
%% \item[\bf On Entry]
|
||||||
|
%% \item[a] the local portion of global sparse matrix
|
||||||
|
%% $A$. \\
|
||||||
|
%% Scope: {\bf local} \\
|
||||||
|
%% Type: {\bf required}\\
|
||||||
|
%% Specified as: a structured data of type \spdata.
|
||||||
|
%% \item[prec] The data structure containing the preconditioner.\\
|
||||||
|
%% Scope: {\bf local} \\
|
||||||
|
%% Type: {\bf required}\\
|
||||||
|
%% Specified as: a structured data of type \precdata.
|
||||||
|
%% \item[b] The RHS vector. \\
|
||||||
|
%% Scope: {\bf local} \\
|
||||||
|
%% Type: {\bf required}\\
|
||||||
|
%% Specified as: a rank one array.
|
||||||
|
%% \item[x] The initial guess. \\
|
||||||
|
%% Scope: {\bf local} \\
|
||||||
|
%% Type: {\bf required}\\
|
||||||
|
%% Specified as: a rank one array.
|
||||||
|
%% \item[eps] The stopping tolerance. \\
|
||||||
|
%% Scope: {\bf global} \\
|
||||||
|
%% Type: {\bf required}\\
|
||||||
|
%% Specified as: a real number.
|
||||||
|
%% \item[desc\_a] contains data structures for communications.\\
|
||||||
|
%% Scope: {\bf local} \\
|
||||||
|
%% Type: {\bf required}\\
|
||||||
|
%% Specified as: a structured data of type \descdata.
|
||||||
|
%% \item[itmax] The maximum number of iterations to perform.\\
|
||||||
|
%% Scope: {\bf global} \\
|
||||||
|
%% Type: {\bf optional}\\
|
||||||
|
%% Default: $itmax = 1000$.\\
|
||||||
|
%% Specified as: an integer variable $itmax \ge 1$.
|
||||||
|
%% \item[itrace] If $>0$ print out an informational message about
|
||||||
|
%% convergence every $itrace$ iterations.\\
|
||||||
|
%% Scope: {\bf global} \\
|
||||||
|
%% Type: {\bf optional}\\
|
||||||
|
%% \item[irst] An integer specifying the restart iteration.\\
|
||||||
|
%% Scope: {\bf global} \\
|
||||||
|
%% Type: {\bf optional}\\
|
||||||
|
%% \item[istop] An integer specifying the stopping criterion.\\
|
||||||
|
%% Scope: {\bf global} \\
|
||||||
|
%% Type: {\bf optional}\\
|
||||||
|
|
||||||
|
%% \item[\bf On Return]
|
||||||
|
%% \item[x] The computed solution. \\
|
||||||
|
%% Scope: {\bf local} \\
|
||||||
|
%% Type: {\bf required}\\
|
||||||
|
%% Specified as: a rank one array.
|
||||||
|
%% \item[iter] The number of iterations performed.\\
|
||||||
|
%% Scope: {\bf global} \\
|
||||||
|
%% Type: {\bf optional}\\
|
||||||
|
%% Returned as: an integer variable.
|
||||||
|
%% \item[err] The error estimate on exit.\\
|
||||||
|
%% Scope: {\bf global} \\
|
||||||
|
%% Type: {\bf optional}\\
|
||||||
|
%% Returned as: a real number.
|
||||||
|
%% \item[info] Error code.\\
|
||||||
|
%% Scope: {\bf local} \\
|
||||||
|
%% Type: {\bf required} \\
|
||||||
|
%% An integer value; 0 means no error has been detected.
|
||||||
|
%% \end{description}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
%%% Local Variables:
|
||||||
|
%%% mode: latex
|
||||||
|
%%% TeX-master: "userguide"
|
||||||
|
%%% End:
|
@ -0,0 +1,278 @@
|
|||||||
|
\section{Preconditioner routines}
|
||||||
|
\label{sec:precs}
|
||||||
|
|
||||||
|
% \section{Preconditioners}
|
||||||
|
\label{sec:psprecs}
|
||||||
|
The MLD2P4 library contains the implementation of many preconditioning
|
||||||
|
techniques. The preconditioners may be applied as normal ``base''
|
||||||
|
preconditioners; alternatively multiple ``base'' preconditioners may
|
||||||
|
be combined in a multilevel framework.
|
||||||
|
|
||||||
|
The base (one-level) preconditioners include:
|
||||||
|
\begin{itemize}
|
||||||
|
\item Diagonal Scaling
|
||||||
|
\item Block Jacobi
|
||||||
|
\item Additive Schwarz, Restricted Additive Schwarz and
|
||||||
|
Additive Schwarz with Harmonic extensions;
|
||||||
|
\end{itemize}
|
||||||
|
The Jacobi and Additive Schwarz preconditioners can make use of the
|
||||||
|
following solvers:
|
||||||
|
\begin{itemize}
|
||||||
|
\item Level-$p$ Incomplete LU factorization ($ILU(p)$);
|
||||||
|
\item Threshold Incomplete LU factorization ($ILU(\tau,p)$);
|
||||||
|
\item Complete LU factorization by means of the following optional
|
||||||
|
external packages:
|
||||||
|
\begin{itemize}
|
||||||
|
\item UMFPACK;
|
||||||
|
\item SuperLU;
|
||||||
|
\item SuperLU\_Dist.
|
||||||
|
\end{itemize}
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
The supporting data type and subroutine interfaces are defined in the
|
||||||
|
module \verb|mld_prec_mod|; the module also overrides the variables
|
||||||
|
and tyep definitions of \verb|psb_prec_mod| so as to function as a
|
||||||
|
drop-in replacement for the PSBLAS methods. Thus if the user does not
|
||||||
|
wish to employ the additional MLD2P4 capabitlities, it is possible to
|
||||||
|
migrate an existing PSBLAS program without any source code
|
||||||
|
modifications, only a recompilation is needed.
|
||||||
|
|
||||||
|
%% We also provide a companion package of multi-level Additive
|
||||||
|
%% Schwarz preconditioners called MD2P4; this is actually a family of
|
||||||
|
%% preconditioners since there is the possibility to choose between
|
||||||
|
%% many variants, and is currently in an experimental stateIts
|
||||||
|
%% documentation is planned to appear after stabilization of the
|
||||||
|
%% package, which will characterize release 2.1 of our library.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\subroutine{mld\_precinit}{Initialize a preconditioner}
|
||||||
|
|
||||||
|
\syntax{call mld\_precinit}{prec, ptype, info}
|
||||||
|
\syntax*{call mld\_precinit}{prec, ptype, info, nlev}
|
||||||
|
|
||||||
|
\begin{description}
|
||||||
|
\item[Type:] Asynchronous.
|
||||||
|
\item[\bf On Entry]
|
||||||
|
\item[ptype] the type of preconditioner.
|
||||||
|
Scope: {\bf global} \\
|
||||||
|
Type: {\bf required}\\
|
||||||
|
Intent: {\bf in}.\\
|
||||||
|
Specified as: a character string, see usage notes.
|
||||||
|
\item[nlev] Number of levels in a multilevel precondtioner.
|
||||||
|
Scope: {\bf global} \\
|
||||||
|
Type: {\bf optional}\\
|
||||||
|
Specified as: an integer value, see usage notes.
|
||||||
|
%% \item[rs]
|
||||||
|
%% Scope: {\bf global} \\
|
||||||
|
%% Type: {\bf optional}\\
|
||||||
|
%% Specified as: a long precision real number.
|
||||||
|
\item[\bf On Exit]
|
||||||
|
|
||||||
|
\item[prec]
|
||||||
|
Scope: {\bf local} \\
|
||||||
|
Type: {\bf required}\\
|
||||||
|
Intent: {\bf inout}.\\
|
||||||
|
Specified as: a preconditioner data structure \precdata.
|
||||||
|
\item[info]
|
||||||
|
Scope: {\bf global} \\
|
||||||
|
Type: {\bf required}\\
|
||||||
|
Intent: {\bf out}.\\
|
||||||
|
Error code: if no error, 0 is returned.
|
||||||
|
\end{description}
|
||||||
|
\subsection*{Usage Notes}
|
||||||
|
%% The PSBLAS 2.0 contains a number of preconditioners, ranging from a
|
||||||
|
%% simple diagonal scaling to 2-level domain decomposition. These
|
||||||
|
%% preconditioners may use the SuperLU or the UMFPACK software, if
|
||||||
|
%% installed; see~\cite{SUPERLU,UMFPACK}.
|
||||||
|
Legal inputs to this subroutine are interpreted depending on the
|
||||||
|
$ptype$ string as follows\footnote{The string is case-insensitive}:
|
||||||
|
\begin{description}
|
||||||
|
\item[NONE] No preconditioning, i.e. the preconditioner is just a copy
|
||||||
|
operator.
|
||||||
|
\item[DIAG] Diagonal scaling; each entry of the input vector is
|
||||||
|
multiplied by the reciprocal of the sum of the absolute values of
|
||||||
|
the coefficients in the corresponding row of matrix $A$;
|
||||||
|
\item[BJAC] Precondition by a factorization of the
|
||||||
|
block-diagonal of matrix $A$, where block boundaries are determined
|
||||||
|
by the data allocation boundaries for each process; requires no
|
||||||
|
communication.
|
||||||
|
\item[AS] Additive Schwarz; default is to apply the Restricted
|
||||||
|
Additive Schwarz variant, with an $ILU(0)$ factorization
|
||||||
|
\item[ML] Multilevel preconditioner.
|
||||||
|
\end{description}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\subroutine{mld\_precset}{Set preconditioner features}
|
||||||
|
|
||||||
|
\syntax{call mld\_precset}{prec, what, val, info, ilev}
|
||||||
|
|
||||||
|
|
||||||
|
\begin{description}
|
||||||
|
\item[Type:] Asynchronous.
|
||||||
|
\item[\bf On Entry]
|
||||||
|
\item[prec] the preconditioner.\\
|
||||||
|
Scope: {\bf local} \\
|
||||||
|
Type: {\bf required}\\
|
||||||
|
Intent: {\bf inout}.\\
|
||||||
|
Specified as: an already initialized precondtioner data structure \precdata\\
|
||||||
|
\item[what] The feature to be set. \\
|
||||||
|
Scope: {\bf local} \\
|
||||||
|
Type: {\bf required}\\
|
||||||
|
Intent: {\bf in}.\\
|
||||||
|
Specified as: an integer constants. Symbolic names are available in
|
||||||
|
the library module, see usage notes for legal values.
|
||||||
|
\item[val] The value to set the chosen feature to. \\
|
||||||
|
Scope: {\bf local} \\
|
||||||
|
Type: {\bf required}\\
|
||||||
|
Intent: {\bf in}.\\
|
||||||
|
Specified as: an integer, double precision or character variable.
|
||||||
|
Symbolic names for some choices are available in the library module,
|
||||||
|
see usage notes for legal values.
|
||||||
|
\item[ilev] The level of a multilevel preconditioner to which the
|
||||||
|
feature choice should apply.\\
|
||||||
|
Scope: {\bf global} \\
|
||||||
|
Type: {\bf optional}\\
|
||||||
|
Specified as: an integer value, see usage notes.
|
||||||
|
\end{description}
|
||||||
|
|
||||||
|
\begin{description}
|
||||||
|
\item[\bf On Return]
|
||||||
|
\item[prec] the preconditioner.\\
|
||||||
|
Scope: {\bf local} \\
|
||||||
|
Type: {\bf required}\\
|
||||||
|
Intent: {\bf inout}.\\
|
||||||
|
Specified as: a precondtioner data structure \precdata\\
|
||||||
|
\item[info] Error code.\\
|
||||||
|
Scope: {\bf local} \\
|
||||||
|
Type: {\bf required} \\
|
||||||
|
Intent: {\bf out}.\\
|
||||||
|
An integer value; 0 means no error has been detected.
|
||||||
|
\end{description}
|
||||||
|
|
||||||
|
\subsection*{Usage Notes}
|
||||||
|
Legal inputs to this subroutine are interpreted depending on the value
|
||||||
|
of \verb|what| input as follows
|
||||||
|
\begin{description}
|
||||||
|
\item[mld\_coarse\_mat\_]
|
||||||
|
\end{description}
|
||||||
|
|
||||||
|
|
||||||
|
\subroutine{mld\_precbld}{Builds a preconditioner}
|
||||||
|
|
||||||
|
\syntax{call mld\_precbld}{a, desc\_a, prec, info}
|
||||||
|
|
||||||
|
\begin{description}
|
||||||
|
\item[Type:] Synchronous.
|
||||||
|
\item[\bf On Entry]
|
||||||
|
\item[a] the system sparse matrix.
|
||||||
|
Scope: {\bf local} \\
|
||||||
|
Type: {\bf required}\\
|
||||||
|
Intent: {\bf in}, target.\\
|
||||||
|
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.
|
||||||
|
Scope: {\bf local} \\
|
||||||
|
Type: {\bf required}\\
|
||||||
|
Intent: {\bf in}, target.\\
|
||||||
|
Specified as: a communication descriptor data structure \descdata.
|
||||||
|
%% \item[upd]
|
||||||
|
%% Scope: {\bf global} \\
|
||||||
|
%% Type: {\bf optional}\\
|
||||||
|
%% Intent: {\bf in}.\\
|
||||||
|
%% Specified as: a character.
|
||||||
|
\end{description}
|
||||||
|
|
||||||
|
\begin{description}
|
||||||
|
\item[\bf On Return]
|
||||||
|
\item[prec] the preconditioner.\\
|
||||||
|
Scope: {\bf local} \\
|
||||||
|
Type: {\bf required}\\
|
||||||
|
Intent: {\bf inout}.\\
|
||||||
|
Specified as: a precondtioner data structure \precdata\\
|
||||||
|
\item[info] Error code.\\
|
||||||
|
Scope: {\bf local} \\
|
||||||
|
Type: {\bf required} \\
|
||||||
|
Intent: {\bf out}.\\
|
||||||
|
An integer value; 0 means no error has been detected.
|
||||||
|
\end{description}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\subroutine{mld\_precaply}{Preconditioner application routine}
|
||||||
|
|
||||||
|
\syntax{call mld\_precaply}{prec,x,y,desc\_a,info,trans,work}
|
||||||
|
\syntax*{call mld\_precaply}{prec,x,desc\_a,info,trans}
|
||||||
|
|
||||||
|
\begin{description}
|
||||||
|
\item[Type:] Synchronous.
|
||||||
|
\item[\bf On Entry]
|
||||||
|
\item[prec] the preconditioner.
|
||||||
|
Scope: {\bf local} \\
|
||||||
|
Type: {\bf required}\\
|
||||||
|
Intent: {\bf in}.\\
|
||||||
|
Specified as: a preconditioner data structure \precdata.
|
||||||
|
\item[x] the source vector.
|
||||||
|
Scope: {\bf local} \\
|
||||||
|
Type: {\bf required}\\
|
||||||
|
Intent: {\bf inout}.\\
|
||||||
|
Specified as: a double precision array.
|
||||||
|
\item[desc\_a] the problem communication descriptor.
|
||||||
|
Scope: {\bf local} \\
|
||||||
|
Type: {\bf required}\\
|
||||||
|
Intent: {\bf in}.\\
|
||||||
|
Specified as: a communication data structure \descdata.
|
||||||
|
\item[trans]
|
||||||
|
Scope: {\bf } \\
|
||||||
|
Type: {\bf optional}\\
|
||||||
|
Intent: {\bf in}.\\
|
||||||
|
Specified as: a character.
|
||||||
|
\item[work] an optional work space
|
||||||
|
Scope: {\bf local} \\
|
||||||
|
Type: {\bf optional}\\
|
||||||
|
Intent: {\bf inout}.\\
|
||||||
|
Specified as: a double precision array.
|
||||||
|
\end{description}
|
||||||
|
|
||||||
|
\begin{description}
|
||||||
|
\item[\bf On Return]
|
||||||
|
\item[y] the destination vector.
|
||||||
|
Scope: {\bf local} \\
|
||||||
|
Type: {\bf required}\\
|
||||||
|
Intent: {\bf inout}.\\
|
||||||
|
Specified as: a double precision array.
|
||||||
|
\item[info] Error code.\\
|
||||||
|
Scope: {\bf local} \\
|
||||||
|
Type: {\bf required} \\
|
||||||
|
Intent: {\bf out}.\\
|
||||||
|
An integer value; 0 means no error has been detected.
|
||||||
|
\end{description}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\subroutine{mld\_prec\_descr}{Prints a description of current preconditioner}
|
||||||
|
|
||||||
|
\syntax{call mld\_prec\_descr}{prec}
|
||||||
|
|
||||||
|
\begin{description}
|
||||||
|
\item[Type:] Asynchronous.
|
||||||
|
\item[\bf On Entry]
|
||||||
|
\item[prec] the preconditioner.
|
||||||
|
Scope: {\bf local} \\
|
||||||
|
Type: {\bf required}\\
|
||||||
|
Intent: {\bf in}.\\
|
||||||
|
Specified as: a preconditioner data structure \precdata.
|
||||||
|
\end{description}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
%%% Local Variables:
|
||||||
|
%%% mode: latex
|
||||||
|
%%% TeX-master: "userguide"
|
||||||
|
%%% End:
|
@ -0,0 +1,51 @@
|
|||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
% Contents: The title page
|
||||||
|
% $Id: title.tex 1999 2007-10-29 15:25:27Z sfilippo $
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
|
||||||
|
\ifx\pdfoutput\undefined % We're not running pdftex
|
||||||
|
\else
|
||||||
|
\pdfbookmark{MLD2P4-1.0 User's Guide}{title}
|
||||||
|
\fi
|
||||||
|
\newlength{\centeroffset}
|
||||||
|
\setlength{\centeroffset}{-0.5\oddsidemargin}
|
||||||
|
\addtolength{\centeroffset}{0.5\evensidemargin}
|
||||||
|
%\addtolength{\textwidth}{-\centeroffset}
|
||||||
|
\thispagestyle{empty}
|
||||||
|
\vspace*{\stretch{1}}
|
||||||
|
\noindent\hspace*{\centeroffset}\makebox[0pt][l]{\begin{minipage}{\textwidth}
|
||||||
|
\flushright
|
||||||
|
{\Huge\bfseries MLD2P4-1.0 User's guide
|
||||||
|
}
|
||||||
|
\noindent\rule[-1ex]{\textwidth}{5pt}\\[2.5ex]
|
||||||
|
\hfill\emph{\Large A reference guide for the MultiLevel Domain
|
||||||
|
Decomposition Parallel Preconditioners Package based on Parallel Sparse BLAS}
|
||||||
|
\end{minipage}}
|
||||||
|
|
||||||
|
\vspace{\stretch{1}}
|
||||||
|
\noindent\hspace*{\centeroffset}\makebox[0pt][l]{\begin{minipage}{\textwidth}
|
||||||
|
\flushright
|
||||||
|
{\bfseries
|
||||||
|
by Salvatore Filippone\\
|
||||||
|
Alfredo Buttari} \\
|
||||||
|
University of Rome ``Tor Vergata'' \\[3ex]
|
||||||
|
{\bfseries Daniela di Serafino }\\
|
||||||
|
Second University of Naples\\[3ex]
|
||||||
|
{\bfseries Pasqua D'Ambra}\\
|
||||||
|
ICAR-CNR, Naples\\[3ex]
|
||||||
|
\today
|
||||||
|
\end{minipage}}
|
||||||
|
|
||||||
|
%\addtolength{\textwidth}{\centeroffset}
|
||||||
|
\vspace{\stretch{2}}
|
||||||
|
|
||||||
|
\endinput
|
||||||
|
|
||||||
|
%
|
||||||
|
|
||||||
|
% Local Variables:
|
||||||
|
% TeX-master: "userguide"
|
||||||
|
% mode: latex
|
||||||
|
% mode: flyspell
|
||||||
|
% End:
|
||||||
|
|
@ -0,0 +1,255 @@
|
|||||||
|
\documentclass[10pt,a4paper,twoside]{article}
|
||||||
|
\usepackage{pstricks}
|
||||||
|
\usepackage{fancybox}
|
||||||
|
\usepackage{amsfonts}
|
||||||
|
% \usepackage{minitoc}
|
||||||
|
% \setcounter{minitocdepth}{2}
|
||||||
|
\usepackage[bookmarks=true,
|
||||||
|
bookmarksnumbered=true,
|
||||||
|
bookmarksopen=false,
|
||||||
|
plainpages=false,
|
||||||
|
pdfpagelabels,
|
||||||
|
colorlinks,
|
||||||
|
linkcolor=blue]{hyperref}
|
||||||
|
\usepackage{ifthen}
|
||||||
|
\usepackage{graphicx}
|
||||||
|
\newtheorem{theorem}{Theorem}
|
||||||
|
\newtheorem{corollary}{Corollary}
|
||||||
|
|
||||||
|
%\newboolean{mtc}
|
||||||
|
%\setboolean{mtc}{true}
|
||||||
|
|
||||||
|
\pdfoutput=1
|
||||||
|
\relax
|
||||||
|
\pdfcompresslevel=0 %-- 0 = none, 9 = best
|
||||||
|
\pdfinfo{ %-- Info dictionary of PDF output /Author (Alfredo Buttari)
|
||||||
|
/Title ( MultiLevel Domain Decomposition Parallel Preconditioners Package
|
||||||
|
based on PSBLAS V. 1.0)
|
||||||
|
/Subject ( MultiLevel Domain Decomposition Parallel Preconditioners
|
||||||
|
Package)
|
||||||
|
/Keywords (Computer Science Linear Algebra Fluid Dynamics Parallel Linux MPI PSBLAS Iterative Solvers Preconditioners)
|
||||||
|
/Creator (pdfLaTeX)
|
||||||
|
/Producer ($Id: userguide.tex 1978 2007-10-19 14:51:12Z sfilippo $)
|
||||||
|
}
|
||||||
|
\pdfcatalog{ %-- Catalog dictionary of PDF output.
|
||||||
|
/URI (http://ce.uniroma2.it/psblas)
|
||||||
|
}
|
||||||
|
|
||||||
|
\newcounter{subroutine}[subsection]
|
||||||
|
\newcounter{example}[subroutine]
|
||||||
|
\makeatletter
|
||||||
|
\def\subroutine{\@ifstar{\@subroutine}{\clearpage\@subroutine}}%
|
||||||
|
\def\@subroutine#1#2{%
|
||||||
|
\stepcounter{subroutine}%
|
||||||
|
\section*{\flushleft #1---#2 \endflushleft}%
|
||||||
|
\addcontentsline{toc}{subsection}{#1}%
|
||||||
|
\markright{#1}}%
|
||||||
|
\newcommand{\subsubroutine}[2]{%
|
||||||
|
\stepcounter{subroutine}%
|
||||||
|
\subsection*{\flushleft #1---#2 \endflushleft}%
|
||||||
|
\addcontentsline{toc}{subsubsection}{#1}%
|
||||||
|
\markright{#1}}%
|
||||||
|
\newcommand{\examplename}{Example}
|
||||||
|
\newcommand{\syntaxname}{Syntax}
|
||||||
|
\def\syntax{\@ifstar{\@ssyntax}{\@syntax}}%
|
||||||
|
\def\@syntax{\nobreak\section*{\syntaxname}%
|
||||||
|
\@ssyntax}%
|
||||||
|
\def\@ssyntax#1#2{%
|
||||||
|
\nobreak
|
||||||
|
\setbox\@tempboxa\hbox{#1\ {\em $($#2$)$}}%
|
||||||
|
\ifdim \wd\@tempboxa >\hsize
|
||||||
|
\setbox\@tempboxa\hbox{\em $($#2$)$}
|
||||||
|
\ifdim\wd\@tempboxa >\hsize
|
||||||
|
\begin{flushright}#1\ \em$($#2$)$\end{flushright}%
|
||||||
|
\else
|
||||||
|
\hbox to\hsize{#1\hfil}%
|
||||||
|
\hbox to\hsize{\hfil\box\@tempboxa}%
|
||||||
|
\fi
|
||||||
|
\else
|
||||||
|
\hbox to\hsize{\hfil\box\@tempboxa\hfil}%
|
||||||
|
\fi\par\vskip\baselineskip}
|
||||||
|
\makeatother
|
||||||
|
\newcommand{\example}{\stepcounter{example}%
|
||||||
|
\section*{\examplename~\theexample}}
|
||||||
|
|
||||||
|
\newcommand{\precdata}{\hyperlink{precdata}{{\tt mld\_prec\_type}}}
|
||||||
|
\newcommand{\descdata}{\hyperlink{descdata}{{\tt psb\_desc\_type}}}
|
||||||
|
\newcommand{\spdata}{\hyperlink{spdata}{{\tt psb\_spmat\_type}}}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
\include{title}
|
||||||
|
\cleardoublepage
|
||||||
|
\begingroup
|
||||||
|
\renewcommand*{\thepage}{toc}
|
||||||
|
\pagenumbering{roman} % Roman numbering
|
||||||
|
\setcounter{page}{1} % Abstract start on page ii
|
||||||
|
\tableofcontents
|
||||||
|
\endgroup
|
||||||
|
|
||||||
|
\cleardoublepage
|
||||||
|
|
||||||
|
\pagenumbering{arabic} % Arabic numbering
|
||||||
|
\setcounter{page}{1} % Chapters start on page 1
|
||||||
|
|
||||||
|
\include{intro}
|
||||||
|
\include{precs}
|
||||||
|
\include{methods}
|
||||||
|
|
||||||
|
\cleardoublepage
|
||||||
|
|
||||||
|
\begin{thebibliography}{99}
|
||||||
|
|
||||||
|
\bibitem{PARA04FOREST}
|
||||||
|
G.~Bella, S.~Filippone, A.~De Maio and M.~Testa,
|
||||||
|
{\em A Simulation Model for Forest Fires},
|
||||||
|
in J.~Dongarra, K.~Madsen, J.~Wasniewski, editors,
|
||||||
|
Proceedings of PARA~04 Workshop on State of the Art
|
||||||
|
in Scientific Computing, pp.~546--553, Lecture Notes in Computer Science,
|
||||||
|
Springer, 2005.
|
||||||
|
\bibitem{2007d} A. Buttari, D. di Serafino, P. D'Ambra, S. Filippone,\newblock
|
||||||
|
2LEV-D2P4: a package of high-performance preconditioners,\newblock
|
||||||
|
Applicable Algebra in Engineering, Communications and Computing,
|
||||||
|
Volume 18, Number 3, May, 2007, pp. 223-239
|
||||||
|
%Published online: 13 February 2007, {\tt http://dx.doi.org/10.1007/s00200-007-0035-z}
|
||||||
|
%
|
||||||
|
\bibitem{2007c} P. D'Ambra, S. Filippone, D. Di Serafino\newblock
|
||||||
|
On the Development of PSBLAS-based Parallel Two-level Schwarz Preconditioners
|
||||||
|
\newblock
|
||||||
|
Applied Numerical Mathematics, Elsevier Science,
|
||||||
|
Volume 57, Issues 11-12, November-December 2007, Pages 1181-1196.
|
||||||
|
%published online 3 February 2007, {\tt
|
||||||
|
% http://dx.doi.org/10.1016/j.apnum.2007.01.006}
|
||||||
|
|
||||||
|
\bibitem{BLAS2}
|
||||||
|
Dongarra, J. J., DuCroz, J., Hammarling, S. and Hanson, R.,
|
||||||
|
An Extended Set of {F}ortran {B}asic {L}inear {A}lgebra {S}ubprograms,
|
||||||
|
{ACM Trans. Math. Softw.} vol.~{14}, 1--17, 1988.
|
||||||
|
\bibitem{BLAS3}
|
||||||
|
Dongarra, J., DuCroz, J., Hammarling, S. and Duff, I.,
|
||||||
|
A Set of level 3 Basic Linear Algebra Subprograms,
|
||||||
|
{ACM Trans. Math. Softw.} vol.~{16}, 1--17, 1990.
|
||||||
|
%% \bibitem{DOUGLAS}
|
||||||
|
%% R.E.~Bank and C.C.~Douglas,
|
||||||
|
%% {\em SMMP: Sparse Matrix Multiplication Package},
|
||||||
|
%% Advances in Computational Mathematics, 1993, 1, 127-137.
|
||||||
|
%% (See also {\tt http://www.mgnet.org/~douglas/ccd-codes.html})
|
||||||
|
%
|
||||||
|
%
|
||||||
|
%% \bibitem{PARA04}
|
||||||
|
%% A.~Buttari, P.~D'Ambra, D.~di Serafino and S.~Filippone,
|
||||||
|
%% {\em Extending PSBLAS to Build Parallel Schwarz Preconditioners},
|
||||||
|
%% in , J.~Dongarra, K.~Madsen, J.~Wasniewski, editors,
|
||||||
|
%% Proceedings of PARA~04 Workshop on State of the Art
|
||||||
|
%% in Scientific Computing, pp.~593--602, Lecture Notes in Computer Science,
|
||||||
|
%% Springer, 2005.
|
||||||
|
%
|
||||||
|
%% \bibitem{CAI_SAAD}
|
||||||
|
%% X.~C.~Cai and Y.~Saad,
|
||||||
|
%% {\em Overlapping Domain Decomposition Algorithms for General Sparse Matrices},
|
||||||
|
%% Numerical Linear Algebra with Applications, 3(3), pp.~221--237, 1996.
|
||||||
|
%% %
|
||||||
|
%% \bibitem{CAI_SARKIS}
|
||||||
|
%% X.C.~Cai and M.~Sarkis,
|
||||||
|
%% {\em A Restricted Additive Schwarz Preconditioner for General Sparse Linear Systems},
|
||||||
|
%% SIAM Journal on Scientific Computing, 21(2), pp.~792--797, 1999.
|
||||||
|
%
|
||||||
|
%% \bibitem{CAI_WIDLUND}
|
||||||
|
%% X.C.~Cai and O.~B.~Widlund,
|
||||||
|
%% {\em Domain Decomposition Algorithms for Indefinite Elliptic Problems},
|
||||||
|
%% SIAM Journal on Scientific and Statistical Computing, 13(1), pp.~243--258, 1992.
|
||||||
|
%
|
||||||
|
%% \bibitem{DD1}
|
||||||
|
%% T.~Chan and T.~Mathew,
|
||||||
|
%% {\em Domain Decomposition Algorithms},
|
||||||
|
%% in A.~Iserles, editor, Acta Numerica 1994, pp.~61--143, 1994.
|
||||||
|
%% Cambridge University Press.
|
||||||
|
%% %
|
||||||
|
%% \bibitem{APNUM06}
|
||||||
|
%% P.~D'Ambra, D.~di Serafino and S.~Filippone,
|
||||||
|
%% On the Development of PSBLAS-based Parallel Two-level Schwarz Preconditioners,
|
||||||
|
%% Applied Numerical Mathematics, to appear, 2007.
|
||||||
|
%
|
||||||
|
%% \bibitem{UMFPACK}
|
||||||
|
%% T.A.~Davis,
|
||||||
|
%% {\em Algorithm 832: UMFPACK - an Unsymmetric-pattern Multifrontal
|
||||||
|
%% Method with a Column Pre-ordering Strategy},
|
||||||
|
%% ACM Transactions on Mathematical Software, 30, pp.~196--199, 2004.
|
||||||
|
%% (See also {\tt http://www.cise.ufl.edu/~davis/})
|
||||||
|
%% %
|
||||||
|
%% \bibitem{SUPERLU}
|
||||||
|
%% J.W.~Demmel, S.C.~Eisenstat, J.R.~Gilbert, X.S.~Li and J.W.H.~Liu,
|
||||||
|
%% A supernodal approach to sparse partial pivoting,
|
||||||
|
%% SIAM Journal on Matrix Analysis and Applications, 20(3), pp.~720--755, 1999.
|
||||||
|
%
|
||||||
|
\bibitem{BLACS}
|
||||||
|
J.~J.~Dongarra and R.~C.~Whaley,
|
||||||
|
{\em A User's Guide to the BLACS v.~1.1},
|
||||||
|
Lapack Working Note 94, Tech.\ Rep.\ UT-CS-95-281, University of
|
||||||
|
Tennessee, March 1995 (updated May 1997).
|
||||||
|
%
|
||||||
|
\bibitem{sblas97}
|
||||||
|
I.~Duff, M.~Marrone, G.~Radicati and C.~Vittoli,
|
||||||
|
{\em Level 3 Basic Linear Algebra Subprograms for Sparse Matrices:
|
||||||
|
a User Level Interface},
|
||||||
|
ACM Transactions on Mathematical Software, 23(3), pp.~379--401, 1997.
|
||||||
|
%
|
||||||
|
\bibitem{sblas02}
|
||||||
|
I.~Duff, M.~Heroux and R.~Pozo,
|
||||||
|
{\em An Overview of the Sparse Basic Linear
|
||||||
|
Algebra Subprograms: the New Standard from the BLAS Technical Forum},
|
||||||
|
ACM Transactions on Mathematical Software, 28(2), pp.~239--267, 2002.
|
||||||
|
\bibitem{PSBLAS}
|
||||||
|
S.~Filippone and M.~Colajanni,
|
||||||
|
{\em PSBLAS: A Library for Parallel Linear Algebra
|
||||||
|
Computation on Sparse Matrices},
|
||||||
|
\newblock
|
||||||
|
ACM Transactions on Mathematical Software, 26(4), pp.~527--550, 2000.
|
||||||
|
%
|
||||||
|
\bibitem{KIVA3PSBLAS}
|
||||||
|
S.~Filippone, P.~D'Ambra, M.~Colajanni,
|
||||||
|
{\em Using a Parallel Library of Sparse Linear Algebra in a Fluid Dynamics
|
||||||
|
Applications Code on Linux Clusters},
|
||||||
|
in G.~Joubert, A.~Murli, F.~Peters, M.~Vanneschi, editors,
|
||||||
|
Parallel Computing - Advances \& Current Issues,
|
||||||
|
pp.~441--448, Imperial College Press, 2002.
|
||||||
|
%
|
||||||
|
\bibitem{METIS}
|
||||||
|
Karypis, G. and Kumar, V.,
|
||||||
|
{\em {METIS}: Unstructured Graph Partitioning and Sparse Matrix
|
||||||
|
Ordering System}.
|
||||||
|
Minneapolis, MN 55455: University of Minnesota, Department of
|
||||||
|
Computer Science, 1995.
|
||||||
|
Internet Address: {\verb|http://www.cs.umn.edu/~karypis|}.
|
||||||
|
\bibitem{BLAS1}
|
||||||
|
Lawson, C., Hanson, R., Kincaid, D. and Krogh, F.,
|
||||||
|
Basic {L}inear {A}lgebra {S}ubprograms for {F}ortran usage,
|
||||||
|
{ACM Trans. Math. Softw.} vol.~{5}, 38--329, 1979.
|
||||||
|
|
||||||
|
\bibitem{machiels}
|
||||||
|
{Machiels, L. and Deville, M.}
|
||||||
|
{\em Fortran 90: An entry to object-oriented programming for the solution
|
||||||
|
of partial differential equations.}
|
||||||
|
{ACM Trans. Math. Softw.} vol.~{23}, 32--49.
|
||||||
|
\bibitem{metcalf}
|
||||||
|
{Metcalf, M., Reid, J. and Cohen, M.}
|
||||||
|
{\em Fortran 95/2003 explained.}
|
||||||
|
{Oxford University Press}, 2004.
|
||||||
|
%
|
||||||
|
%% \bibitem{DD2}
|
||||||
|
%% B.~Smith, P.~Bjorstad and W.~Gropp,
|
||||||
|
%% {\em Domain Decomposition: Parallel Multilevel Methods for Elliptic
|
||||||
|
%% Partial Differential Equations},
|
||||||
|
%% Cambridge University Press, 1996.
|
||||||
|
%
|
||||||
|
\bibitem{MPI1}
|
||||||
|
M.~Snir, S.~Otto, S.~Huss-Lederman, D.~Walker and J.~Dongarra,
|
||||||
|
{\em MPI: The Complete Reference. Volume 1 - The MPI Core}, second edition,
|
||||||
|
MIT Press, 1998.
|
||||||
|
%
|
||||||
|
\end{thebibliography}
|
||||||
|
|
||||||
|
\end{document}
|
||||||
|
%%% Local Variables:
|
||||||
|
%%% mode: latex
|
||||||
|
%%% TeX-master: 'userguide'
|
||||||
|
%%% End:
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue