@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
< HTML >
< HEAD >
< TITLE > Arguments < / TITLE >
< META NAME = "description" CONTENT = " Arguments ">
< TITLE > Subroutine mld_precaply < / TITLE >
< META NAME = "description" CONTENT = " Subroutine mld_precaply ">
< META NAME = "keywords" CONTENT = "userhtml" >
< META NAME = "resource-type" CONTENT = "document" >
< META NAME = "distribution" CONTENT = "global" >
@ -18,435 +18,171 @@ original version by: Nikos Drakos, CBLU, University of Leeds
< LINK REL = "STYLESHEET" HREF = "userhtml.css" >
< LINK REL = "next" HREF = "node20.html" >
< LINK REL = "previous" HREF = "node18.html" >
< LINK REL = "up" HREF = "node1 8 .html">
< LINK REL = "up" HREF = "node1 5 .html">
< LINK REL = "next" HREF = "node20.html" >
< / HEAD >
< BODY >
< DIV CLASS = "navigation" > <!-- Navigation Panel -->
< A NAME = "tex2html 30 3"
< A NAME = "tex2html 29 3"
HREF="node20.html">
< IMG WIDTH = "37" HEIGHT = "24" ALIGN = "BOTTOM" BORDER = "0" ALT = "next"
SRC="file:/usr/share/latex2html/icons/next.png">< / A >
< A NAME = "tex2html2 9 9"
HREF="node18 .html">
< A NAME = "tex2html2 8 9"
HREF="node15 .html">
< IMG WIDTH = "26" HEIGHT = "24" ALIGN = "BOTTOM" BORDER = "0" ALT = "up"
SRC="file:/usr/share/latex2html/icons/up.png">< / A >
< A NAME = "tex2html2 95 "
< A NAME = "tex2html2 83 "
HREF="node18.html">
< IMG WIDTH = "63" HEIGHT = "24" ALIGN = "BOTTOM" BORDER = "0" ALT = "previous"
SRC="file:/usr/share/latex2html/icons/prev.png">< / A >
< A NAME = "tex2html 30 1"
< A NAME = "tex2html 29 1"
HREF="node2.html">
< IMG WIDTH = "65" HEIGHT = "24" ALIGN = "BOTTOM" BORDER = "0" ALT = "contents"
SRC="file:/usr/share/latex2html/icons/contents.png">< / A >
< BR >
< B > Next:< / B > < A NAME = "tex2html 30 4"
HREF="node20.html">Subroutine mld_precbld < / A >
< B > Up:< / B > < A NAME = "tex2html 30 0"
HREF="node18.html">Subroutine mld_precset < / A >
< B > Previous:< / B > < A NAME = "tex2html2 96 "
HREF="node18.html">Subroutine mld_precset < / A >
< B > < A NAME = "tex2html 30 2"
< B > Next:< / B > < A NAME = "tex2html 29 4"
HREF="node20.html">Subroutine mld_precfree < / A >
< B > Up:< / B > < A NAME = "tex2html 29 0"
HREF="node15.html">User Interface < / A >
< B > Previous:< / B > < A NAME = "tex2html2 84 "
HREF="node18.html">Subroutine mld_precbld < / A >
< B > < A NAME = "tex2html 29 2"
HREF="node2.html">Contents< / A > < / B >
< BR >
< BR > < / DIV >
<!-- End of Navigation Panel -->
< H3 > < A NAME = "SECTION00082100000000000000" >
Arguments< / A >
< / H3 >
< P >
< TABLE CELLPADDING = 3 >
< TR > < TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 34 > < code > p< / code > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 340 > < code > type(mld_< / code > < SPAN CLASS = "textit" > x< / SPAN > < code > prec_type), intent(inout)< / code > .< / TD >
< / TR >
< TR > < TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 34 > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 340 > The preconditioner data structure. Note that < SPAN CLASS = "textit" > x< / SPAN > must
be chosen according to the real/complex, single/double precision
version of MLD2P4 under use.< / TD >
< / TR >
< TR > < TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 34 > < code > what< / code > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 340 > < code > integer, intent(in)< / code > .< / TD >
< / TR >
< TR > < TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 34 > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 340 > The number identifying the parameter to be set.
A mnemonic constant has been associated to each of these
numbers, as reported in Tables < A HREF = "#tab:p_type" > 2< / A > -< A HREF = "#tab:p_coarse" > 5< / A > .< / TD >
< / TR >
< TR > < TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 34 > < code > val < / code > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 340 > < code > integer< / code > < SPAN CLASS = "textit" > or< / SPAN > < code > character(len=*)< / code > < SPAN CLASS = "textit" > or< / SPAN >
< code > real(psb_spk_)< / code > < SPAN CLASS = "textit" > or< / SPAN > < code > real(psb_dpk_)< / code > ,
< code > intent(in)< / code > .< / TD >
< / TR >
< TR > < TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 34 > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 340 > The value of the parameter to be set. The list of allowed
values and the corresponding data types is given in
Tables < A HREF = "#tab:p_type" > 2< / A > -< A HREF = "#tab:p_coarse" > 5< / A > .
When the value is of type < code > character(len=*)< / code > ,
it is also treated as case insensitive.< / TD >
< / TR >
< TR > < TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 34 > < code > info< / code > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 340 > < code > integer, intent(out)< / code > .< / TD >
< / TR >
< TR > < TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 34 > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 340 > Error code. If no error, 0 is returned. See Section < A HREF = "node28.html#sec:errors" > 7< / A >
for details.< / TD >
< / TR >
< / TABLE >
< H2 > < A NAME = "SECTION00084000000000000000" > < / A > < A NAME = "sec:precaply" > < / A >
< BR >
Subroutine mld_precaply
< / H2 >
< P >
< DIV ALIGN = "CENTER" >
< code > mld_precaply(p,x,y,desc_a,info)< / code >
< BR > < code > mld_precaply(p,x,y,desc_a,info,trans,work)< / code >
< BR >
A variety of (one-level and multi-level) preconditioners can be obtained
by a suitable setting of the preconditioner parameters. These parameters
can be logically divided into four groups, i.e. parameters defining
< / DIV >
< OL >
< LI > the type of multi-level preconditioner;
< / LI >
< LI > the one-level preconditioner used as smoother;
< / LI >
< LI > the aggregation algorithm;
< / LI >
< LI > the coarse-space correction at the coarsest level.
< / LI >
< / OL >
A list of the parameters that can be set, along with their allowed and
default values, is given in Tables < A HREF = "#tab:p_type" > 2< / A > -< A HREF = "#tab:p_coarse" > 5< / A > .
For a detailed description of the meaning of the parameters, please
refer to Section < A HREF = "node10.html#sec:background" > 4< / A > .
< P >
This routine computes <!-- MATH
$y = op(M^{-1})\, x$
-->
< SPAN CLASS = "MATH" > < IMG
WIDTH="118" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img94.png"
ALT="$y = op(M^{-1}) x$">< / SPAN > , where < SPAN CLASS = "MATH" > < IMG
WIDTH="23" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img59.png"
ALT="$M$">< / SPAN > is a previously built
preconditioner, stored into < code > p< / code > , and < SPAN CLASS = "MATH" > < IMG
WIDTH="21" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img95.png"
ALT="$op$">< / SPAN >
denotes the preconditioner itself or its transpose, according to
the value of < code > trans< / code > .
Note that, when MLD2P4 is used with a Krylov solver from PSBLAS,
< code > mld_precaply< / code > is called within the PSBLAS routine < code > mld_krylov< / code >
and hence it is completely transparent to the user.
< P >
< BR > < P > < / P >
< DIV ALIGN = "CENTER" > < A NAME = "1245" > < / A >
< TABLE >
< CAPTION > < STRONG > Table 2:< / STRONG >
Parameters defining the type of multi-level preconditioner.
< / CAPTION >
< TR > < TD >
< DIV ALIGN = "CENTER" >
< TABLE CELLPADDING = 3 BORDER = "1" ALIGN = "CENTER" >
< TR > < TD ALIGN = "LEFT" > < code > what< / code > < / TD >
< TD ALIGN = "LEFT" > < SMALL > DATA TYPE< / SMALL > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 57 > < code > val< / code > < / TD >
< TD ALIGN = "LEFT" > < SMALL > DEFAULT< / SMALL > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 198 > < SMALL > COMMENTS< / SMALL > < / TD >
< / TR >
< TR > < TD ALIGN = "LEFT" > < code > mld_ml_type_< / code > < / TD >
< TD ALIGN = "LEFT" > < code > character(len=*)< / code > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 57 > < TT > 'ADD'< / TT > < TT > 'MULT'< / TT > < / TD >
< TD ALIGN = "LEFT" > < TT > 'MULT'< / TT > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 198 > Basic multi-level framework: additive or multiplicative
among the levels (always additive inside a level).< / TD >
< / TR >
< TR > < TD ALIGN = "LEFT" > < code > mld_smoother_type_< / code > < / TD >
< TD ALIGN = "LEFT" > < code > character(len=*)< / code > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 57 > < TT > 'DIAG'< / TT > < TT > 'BJAC'< / TT > < TT > 'AS'< / TT > < / TD >
< TD ALIGN = "LEFT" > < TT > 'AS'< / TT > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 198 > Basic one-level preconditioner (i.e. smoother): diagonal,
block Jacobi, AS.< / TD >
< / TR >
< TR > < TD ALIGN = "LEFT" > < code > mld_smoother_pos_< / code > < / TD >
< TD ALIGN = "LEFT" > < code > character(len=*)< / code > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 57 > < TT > 'PRE'< / TT > < TT > 'POST'< / TT > < TT > 'TWOSIDE'< / TT > < / TD >
< TD ALIGN = "LEFT" > < TT > 'POST'< / TT > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 198 > ``Position'' of the smoother: pre-smoother, post-smoother,
pre- and post-smoother.< / TD >
< / TR >
< / TABLE >
< / DIV >
< / TD > < / TR >
< / TABLE >
< / DIV > < P > < / P >
< BR >
< BIG CLASS = "LARGE" > < B > Arguments< / B > < / BIG >
< P >
< BR > < P > < / P >
< DIV ALIGN = "CENTER" > < A NAME = "1247" > < / A >
< TABLE >
< CAPTION > < STRONG > Table 3:< / STRONG >
Parameters defining the one-level preconditioner used as smoother.
< / CAPTION >
< TR > < TD >
< DIV ALIGN = "CENTER" >
< TABLE CELLPADDING = 3 BORDER = "1" ALIGN = "CENTER" >
< TR > < TD ALIGN = "LEFT" > < code > what< / code > < / TD >
< TD ALIGN = "LEFT" > < SMALL > DATA TYPE< / SMALL > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 91 > < code > val< / code > < / TD >
< TD ALIGN = "LEFT" > < SMALL > DEFAULT< / SMALL > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 198 > < SMALL > COMMENTS< / SMALL > < / TD >
< TABLE CELLPADDING = 3 >
< TR > < TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 34 > < code > p< / code > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 340 > < code > type(mld_< / code > < SPAN CLASS = "textit" > x< / SPAN > < code > prec_type), intent(inout)< / code > .< / TD >
< / TR >
< TR > < TD ALIGN = "LEFT" > < code > mld_sub_ovr_< / code > < / TD >
< TD ALIGN = "LEFT" > < code > integer< / code > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 91 > any int. num. < SPAN CLASS = "MATH" > < IMG
WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img88.png"
ALT="$\ge 0$">< / SPAN > < / TD >
< TD ALIGN = "LEFT" > 1< / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 198 > Number of overlap layers.< / TD >
< TR > < TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 34 > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 340 > The preconditioner data structure, containing the local part of < SPAN CLASS = "MATH" > < IMG
WIDTH="23" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img59.png"
ALT="$M$">< / SPAN > .
Note that < SPAN CLASS = "textit" > x< / SPAN > must be chosen according
to the real/complex, single/double precision version of MLD2P4 under use.< / TD >
< / TR >
< TR > < TD ALIGN = "LEFT" > < code > mld_sub_restr_< / code > < / TD >
< TD ALIGN = "LEFT" > < code > character(len=*)< / code > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 91 > < TT > 'HALO'< / TT > < TT > 'NONE'< / TT > < / TD >
< TD ALIGN = "LEFT" > < TT > 'HALO'< / TT > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 198 > Type of restriction operator:
< TT > 'HALO'< / TT > for taking into account the overlap, < TT > 'NONE'< / TT >
for neglecting it.< / TD >
< TR > < TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 34 > < code > x< / code > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 340 > < SPAN CLASS = "textit" > type< / SPAN > < code > (< / code > < SPAN CLASS = "textit" > kind_parameter< / SPAN > < code > ), dimension(:), intent(in)< / code > .< / TD >
< / TR >
< TR > < TD ALIGN = "LEFT" > < code > mld_sub_prol_< / code > < / TD >
< TD ALIGN = "LEFT" > < code > character(len=*)< / code > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 91 > < TT > 'SUM'< / TT > < TT > 'NONE'< / TT > < / TD >
< TD ALIGN = "LEFT" > < TT > 'NONE'< / TT > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 198 > Type of prolongator operator:
< TT > 'SUM'< / TT > for adding the contributions from the overlap, < TT > 'NONE'< / TT >
for neglecting them .< / TD >
< TR > < TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 34 > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 340 > The local part of the vector < SPAN CLASS = "MATH" > < IMG
WIDTH="15" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img96.png"
ALT="$x$">< / SPAN > . Note that < SPAN CLASS = "textit" > type< / SPAN > and
< SPAN CLASS = "textit" > kind_parameter< / SPAN > must be chosen according
to the real/complex, single/double precision version of MLD2P4 under use.< / TD >
< / TR >
< TR > < TD ALIGN = "LEFT" > < code > mld_sub_solve_< / code > < / TD >
< TD ALIGN = "LEFT" > < code > character(len=*)< / code > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 91 > < TT > 'ILU'< / TT > < TT > 'MILU'< / TT > < TT > 'ILUT'< / TT >
< TT > 'UMF'< / TT > < TT > 'SLU'< / TT > < / TD >
< TD ALIGN = "LEFT" > < TT > 'UMF'< / TT > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 198 > Local solver: ILU(< SPAN CLASS = "MATH" > < IMG
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img34.png"
ALT="$p$">< / SPAN > ), MILU(< SPAN CLASS = "MATH" > < IMG
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img34.png"
ALT="$p$">< / SPAN > ), ILU(< SPAN CLASS = "MATH" > < IMG
WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img35.png"
ALT="$p,t$">< / SPAN > ), LU from UMFPACK, LU from SuperLU
(plus triangular solve).< / TD >
< TR > < TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 34 > < code > y< / code > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 340 > < SPAN CLASS = "textit" > type< / SPAN > < code > (< / code > < SPAN CLASS = "textit" > kind_parameter< / SPAN > < code > ), dimension(:), intent(out)< / code > .< / TD >
< / TR >
< TR > < TD ALIGN = "LEFT" > < code > mld_sub_fillin_< / code > < / TD >
< TD ALIGN = "LEFT" > < code > integer< / code > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 91 > Any int. num. < SPAN CLASS = "MATH" > < IMG
WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img88.png"
ALT="$\ge 0$">< / SPAN > < / TD >
< TD ALIGN = "LEFT" > 0< / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 198 > Fill-in level < SPAN CLASS = "MATH" > < IMG
< TR > < TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 34 > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 340 > The local part of the vector < SPAN CLASS = "MATH" > < IMG
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img34.png"
ALT="$p$">< / SPAN > of the incomplete LU factorizations.< / TD >
< / TR >
< TR > < TD ALIGN = "LEFT" > < code > mld_sub_iluthrs_< / code > < / TD >
< TD ALIGN = "LEFT" > < code > real(< / code > < SPAN CLASS = "textit" > kind_parameter< / SPAN > < code > )< / code > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 91 > Any real num. < SPAN CLASS = "MATH" > < IMG
WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img88.png"
ALT="$\ge 0$">< / SPAN > < / TD >
< TD ALIGN = "LEFT" > 0< / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 198 > Drop tolerance < SPAN CLASS = "MATH" > < IMG
WIDTH="11" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img89.png"
ALT="$t$">< / SPAN > in the ILU(< SPAN CLASS = "MATH" > < IMG
WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img35.png"
ALT="$p,t$">< / SPAN > ) factorization.< / TD >
SRC="img97.png"
ALT="$y$">< / SPAN > . Note that < SPAN CLASS = "textit" > type< / SPAN > and
< SPAN CLASS = "textit" > kind_parameter< / SPAN > must be chosen according
to the real/complex, single/double precision version of MLD2P4 under use.< / TD >
< / TR >
< TR > < TD ALIGN = "LEFT" > < code > mld_sub_ren_< / code > < / TD >
< TD ALIGN = "LEFT" > < code > character(len=*)< / code > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 91 > < TT > 'RENUM_NONE'< / TT > < TT > 'RENUM_GLOBAL'< / TT > < / TD >
< TD ALIGN = "LEFT" > < TT > 'RENUM_NONE'< / TT > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 198 > Row and column reordering of the local submatrices: no reordering,
reordering according to the global numbering of the rows and columns of
the whole matrix.< / TD >
< TR > < TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 34 > < code > desc_a< / code > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 340 > < code > type(psb_desc_type), intent(in)< / code > .< / TD >
< / TR >
< / TABLE >
< / DIV >
< / TD > < / TR >
< / TABLE >
< / DIV > < P > < / P >
< BR >
< P >
< BR > < P > < / P >
< DIV ALIGN = "CENTER" > < A NAME = "1249" > < / A >
< TABLE >
< CAPTION > < STRONG > Table 4:< / STRONG >
Parameters defining the aggregation algorithm.
< / CAPTION >
< TR > < TD >
< DIV ALIGN = "CENTER" >
< TABLE CELLPADDING = 3 BORDER = "1" ALIGN = "CENTER" >
< TR > < TD ALIGN = "LEFT" > < code > what< / code > < / TD >
< TD ALIGN = "LEFT" > < SMALL > DATA TYPE< / SMALL > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 65 > < code > val< / code > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 74 > < SMALL > DEFAULT< / SMALL > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 198 > < SMALL > COMMENTS< / SMALL > < / TD >
< / TR >
< TR > < TD ALIGN = "LEFT" > < code > mld_aggr_alg_< / code > < / TD >
< TD ALIGN = "LEFT" > < code > character(len=*)< / code > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 65 > < TT > 'DEC'< / TT > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 74 > < TT > 'DEC'< / TT > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 198 > Aggregation algorithm. Currently, only the decoupled aggregation is available.< / TD >
< TR > < TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 34 > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 340 > The communication descriptor associated to the matrix to be
preconditioned.< / TD >
< / TR >
< TR > < TD ALIGN = "LEFT" > < code > mld_aggr_kind_< / code > < / TD >
< TD ALIGN = "LEFT" > < code > character(len=*)< / code > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 65 > < TT > 'SMOOTH'< / TT > < TT > 'RAW'< / TT > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 74 > < TT > 'SMOOTH'< / TT > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 198 > Type of aggregation: smoothed, raw (i.e. using the tentative prolongator).< / TD >
< TR > < TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 34 > < code > info< / code > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 340 > < code > integer, intent(out)< / code > .< / TD >
< / TR >
< TR > < TD ALIGN = "LEFT" > < code > mld_aggr_thresh_< / code > < / TD >
< TD ALIGN = "LEFT" > < code > real(< / code > < SPAN CLASS = "textit" > kind_parameter< / SPAN > < code > )< / code > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 65 > Any real num. < SPAN CLASS = "MATH" > < IMG
WIDTH="56" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
SRC="img90.png"
ALT="$\in [0, 1]$">< / SPAN > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 74 > 0< / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 198 > The threshold < SPAN CLASS = "MATH" > < IMG
WIDTH="13" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img91.png"
ALT="$\theta$">< / SPAN > in the aggregation algorithm.< / TD >
< TR > < TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 34 > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 340 > Error code. If no error, 0 is returned. See Section < A HREF = "node22.html#sec:errors" > 7< / A > for details.< / TD >
< / TR >
< TR > < TD ALIGN = "LEFT" > < code > mld_aggr_eig_< / code > < / TD >
< TD ALIGN = "LEFT" > < code > character(len=*)< / code > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 65 > < TT > 'A_NORMI'< / TT > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 74 > < TT > 'A_NORMI'< / TT > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 198 > Estimate of the eigenvalue < SPAN CLASS = "MATH" > < IMG
WIDTH="50" HEIGHT="21" ALIGN="BOTTOM" BORDER="0"
SRC="img85.png"
ALT="$D^{-1}A$">< / SPAN > with largest modulus,
to build the damping parameter < SPAN CLASS = "MATH" > < IMG
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img84.png"
ALT="$\omega$">< / SPAN > in the smoothed aggregation.
Currently, only the infinity norm of
the matrix is available.< / TD >
< TR > < TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 34 > < code > trans< / code > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 340 > < code > character(len=1), optional, intent(in).< / code > < / TD >
< / TR >
< TR > < TD ALIGN = "LEFT" > < code > mld_aggr_damp_< / code > < / TD >
< TD ALIGN = "LEFT" > < code > real(< / code > < SPAN CLASS = "textit" > kind_parameter< / SPAN > < code > )< / code > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 65 > Any real num.< / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 74 > <!-- MATH
$4/(3||D^{-1}A||_\infty)$
< TR > < TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 34 > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 340 > If < code > trans< / code > = < code > 'N','n'< / code > then <!-- MATH
$op(M^{-1}) = M^{-1}$
-->
< SPAN CLASS = "MATH" > < IMG
WIDTH="124" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img92.png"
ALT="$4/(3\vert\vert D^{-1}A\vert\vert _\infty)$">< / SPAN > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 198 > The damping parameter < SPAN CLASS = "MATH" > < IMG
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img84.png"
ALT="$\omega$">< / SPAN > in the smoothed aggregation algorithm.
If the user specifies a negative value, then < SPAN CLASS = "MATH" > < IMG
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img84.png"
ALT="$\omega$">< / SPAN > is set to its default
value; otherwise, < SPAN CLASS = "MATH" > < IMG
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img84.png"
ALT="$\omega$">< / SPAN > is set to the value provided by the
user. In the latter case no estimate of the eigenvalue < SPAN CLASS = "MATH" > < IMG
WIDTH="50" HEIGHT="21" ALIGN="BOTTOM" BORDER="0"
SRC="img85.png"
ALT="$D^{-1}A$">< / SPAN > with
largest modulus is computed.< / TD >
< / TR >
< / TABLE >
< / DIV >
< / TD > < / TR >
< / TABLE >
< / DIV > < P > < / P >
< BR >
< P >
< BR > < P > < / P >
< DIV ALIGN = "CENTER" > < A NAME = "1251" > < / A >
< TABLE >
< CAPTION > < STRONG > Table 5:< / STRONG >
Parameters defining the coarse-space correction at the coarsest
level.< / CAPTION >
< TR > < TD >
< DIV ALIGN = "CENTER" >
< TABLE CELLPADDING = 3 BORDER = "1" ALIGN = "CENTER" >
< TR > < TD ALIGN = "LEFT" > < code > what< / code > < / TD >
< TD ALIGN = "LEFT" > < SMALL > DATA TYPE< / SMALL > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 91 > < code > val< / code > < / TD >
< TD ALIGN = "LEFT" > < SMALL > DEFAULT< / SMALL > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 198 > < SMALL > COMMENTS< / SMALL > < / TD >
< / TR >
< TR > < TD ALIGN = "LEFT" > < code > mld_coarse_solve_< / code > < / TD >
< TD ALIGN = "LEFT" > < code > character(len=*)< / code > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 91 > < TT > 'BJAC'< / TT > < TT > 'UMF'< / TT > < TT > 'SLU'< / TT >
< TT > 'SLUDIST'< / TT > < / TD >
< TD ALIGN = "LEFT" > < TT > 'BJAC'< / TT > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 198 > Solver used at the coarsest level: block Jacobi, sequential LU from UMFPACK,
sequential LU from SuperLU, distributed LU from SuperLU_Dist.
With < TT > 'SLUDIST'< / TT > the coarsest matrix
must be distributed; with < TT > 'UMF'< / TT > or
< TT > 'SLU'< / TT > it must be replicated.< / TD >
< / TR >
< TR > < TD ALIGN = "LEFT" > < code > mld_coarse_mat_< / code > < / TD >
< TD ALIGN = "LEFT" > < code > character(len=*)< / code > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 91 > < TT > 'DISTR'< / TT > < TT > 'REPL'< / TT > < / TD >
< TD ALIGN = "LEFT" > < TT > 'DISTR'< / TT > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 198 > Coarsest matrix: distributed among the processors or replicated on each of them.< / TD >
< / TR >
< TR > < TD ALIGN = "LEFT" > < code > mld_coarse_subsolve_< / code > < / TD >
< TD ALIGN = "LEFT" > < code > character(len=*)< / code > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 91 > < TT > 'ILU'< / TT > < TT > 'MILU'< / TT > < TT > 'ILUT'< / TT >
< TT > 'UMF'< / TT > < TT > 'SLU'< / TT > < / TD >
< TD ALIGN = "LEFT" > < TT > 'UMF'< / TT > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 198 > Solver for the diagonal blocks of the coarse matrix, in case the block Jacobi solver
is chosen as coarsest-level solver: ILU(< SPAN CLASS = "MATH" > < IMG
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img34.png"
ALT="$p$">< / SPAN > ), MILU(< SPAN CLASS = "MATH" > < IMG
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img34.png"
ALT="$p$">< / SPAN > ), ILU(< SPAN CLASS = "MATH" > < IMG
WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img35.png"
ALT="$p,t$">< / SPAN > ), LU from UMFPACK,
LU from SuperLU, plus triangular solve.< / TD >
< / TR >
< TR > < TD ALIGN = "LEFT" > < code > mld_coarse_sweeps_< / code > < / TD >
< TD ALIGN = "LEFT" > < code > integer< / code > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 91 > Any int. num. < SPAN CLASS = "MATH" > < IMG
WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img93.png"
ALT="$> 0$">< / SPAN > < / TD >
< TD ALIGN = "LEFT" > 4< / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 198 > Number of Block-Jacobi sweeps when 'BJAC' is used as coarsest-level solver.< / TD >
WIDTH="132" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img98.png"
ALT="$op(M^{-1}) = M^{-1}$">< / SPAN > ;
if < code > trans< / code > = < code > 'T','t'< / code > then <!-- MATH
$op(M^{-1}) = M^{-T}$
-->
< SPAN CLASS = "MATH" > < IMG
WIDTH="135" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
SRC="img99.png"
ALT="$op(M^{-1}) = M^{-T}$">< / SPAN >
(transpose of < SPAN CLASS = "MATH" > < IMG
WIDTH="48" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img100.png"
ALT="$M^{-1})$">< / SPAN > ; if < code > trans< / code > = < code > 'C','c'< / code > then <!-- MATH
$op(M^{-1}) = M^{-C}$
-->
< SPAN CLASS = "MATH" > < IMG
WIDTH="136" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
SRC="img101.png"
ALT="$op(M^{-1}) = M^{-C}$">< / SPAN >
(conjugate transpose of < SPAN CLASS = "MATH" > < IMG
WIDTH="48" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img100.png"
ALT="$M^{-1})$">< / SPAN > .< / TD >
< / TR >
< TR > < TD ALIGN = "LEFT" > < code > mld_coarse_fillin_< / code > < / TD >
< TD ALIGN = "LEFT" > < code > integer< / code > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 91 > Any int. num. < SPAN CLASS = "MATH" > < IMG
WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img88.png"
ALT="$\ge 0$">< / SPAN > < / TD >
< TD ALIGN = "LEFT" > 0< / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 198 > Fill-in level < SPAN CLASS = "MATH" > < IMG
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img34.png"
ALT="$p$">< / SPAN > of the incomplete LU factorizations.< / TD >
< TR > < TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 34 > < code > work< / code > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 340 > < SPAN CLASS = "textit" > type< / SPAN > < code > (< / code > < SPAN CLASS = "textit" > kind_parameter< / SPAN > < code > ), dimension(:), optional, target< / code > .< / TD >
< / TR >
< TR > < TD ALIGN = "LEFT" > < code > mld_coarse_iluthrs_< / code > < / TD >
< TD ALIGN = "LEFT" > < code > real(< / code > < SPAN CLASS = "textit" > kind_parameter< / SPAN > < code > )< / code > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 91 > Any real. num. < SPAN CLASS = "MATH" > < IMG
WIDTH="32" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img88.png"
ALT="$\ge 0$">< / SPAN > < / TD >
< TD ALIGN = "LEFT" > 0< / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 198 > Drop tolerance < SPAN CLASS = "MATH" > < IMG
WIDTH="11" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img89.png"
ALT="$t$">< / SPAN > in the ILU(< SPAN CLASS = "MATH" > < IMG
WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img35.png"
ALT="$p,t$">< / SPAN > ) factorization.< / TD >
< TR > < TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 34 > < / TD >
< TD ALIGN = "LEFT" VALIGN = "TOP" WIDTH = 340 > Workspace. Its size should be at
least < code > 4 * psb_cd_get_local_< / code > < code > cols(desc_a)< / code > (see the PSBLAS User's Guide).
Note that < SPAN CLASS = "textit" > type< / SPAN > and < SPAN CLASS = "textit" > kind_parameter< / SPAN > must be chosen according
to the real/complex, single/double precision version of MLD2P4 under use.< / TD >
< / TR >
< / TABLE >
< / DIV >
< / TD > < / TR >
< / TABLE >
< / DIV > < P > < / P >
< BR >
< P >
@ -454,30 +190,30 @@ level.</CAPTION>
< DIV CLASS = "navigation" > < HR >
<!-- Navigation Panel -->
< A NAME = "tex2html 30 3"
< A NAME = "tex2html 29 3"
HREF="node20.html">
< IMG WIDTH = "37" HEIGHT = "24" ALIGN = "BOTTOM" BORDER = "0" ALT = "next"
SRC="file:/usr/share/latex2html/icons/next.png">< / A >
< A NAME = "tex2html2 9 9"
HREF="node18 .html">
< A NAME = "tex2html2 8 9"
HREF="node15 .html">
< IMG WIDTH = "26" HEIGHT = "24" ALIGN = "BOTTOM" BORDER = "0" ALT = "up"
SRC="file:/usr/share/latex2html/icons/up.png">< / A >
< A NAME = "tex2html2 95 "
< A NAME = "tex2html2 83 "
HREF="node18.html">
< IMG WIDTH = "63" HEIGHT = "24" ALIGN = "BOTTOM" BORDER = "0" ALT = "previous"
SRC="file:/usr/share/latex2html/icons/prev.png">< / A >
< A NAME = "tex2html 30 1"
< A NAME = "tex2html 29 1"
HREF="node2.html">
< IMG WIDTH = "65" HEIGHT = "24" ALIGN = "BOTTOM" BORDER = "0" ALT = "contents"
SRC="file:/usr/share/latex2html/icons/contents.png">< / A >
< BR >
< B > Next:< / B > < A NAME = "tex2html 30 4"
HREF="node20.html">Subroutine mld_precbld < / A >
< B > Up:< / B > < A NAME = "tex2html 30 0"
HREF="node18.html">Subroutine mld_precset < / A >
< B > Previous:< / B > < A NAME = "tex2html2 96 "
HREF="node18.html">Subroutine mld_precset < / A >
< B > < A NAME = "tex2html 30 2"
< B > Next:< / B > < A NAME = "tex2html 29 4"
HREF="node20.html">Subroutine mld_precfree < / A >
< B > Up:< / B > < A NAME = "tex2html 29 0"
HREF="node15.html">User Interface < / A >
< B > Previous:< / B > < A NAME = "tex2html2 84 "
HREF="node18.html">Subroutine mld_precbld < / A >
< B > < A NAME = "tex2html 29 2"
HREF="node2.html">Contents< / A > < / B > < / DIV >
<!-- End of Navigation Panel -->
< ADDRESS >