mld2p4-2:

docs/html/img100.png
 docs/html/img101.png
 docs/html/img102.png
 docs/html/img103.png
 docs/html/img104.png
 docs/html/img105.png
 docs/html/img106.png
 docs/html/img107.png
 docs/html/img108.png
 docs/html/img93.png
 docs/html/img94.png
 docs/html/img95.png
 docs/html/img96.png
 docs/html/img97.png
 docs/html/img98.png
 docs/html/img99.png
 docs/html/node17.html
 docs/html/node18.html
 docs/html/node20.html
 docs/html/node26.html
 docs/mld2p4-2.1-guide.pdf
 docs/src/userinterface.tex
 tests/pdegen/runs/ppde.inp

Update docs with new aggregation and solvers.
stopcriterion
Salvatore Filippone 9 years ago
parent 111313d3c6
commit f6d0f6de23

Binary file not shown.

Before

Width:  |  Height:  |  Size: 611 B

After

Width:  |  Height:  |  Size: 250 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 245 B

After

Width:  |  Height:  |  Size: 611 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 195 B

After

Width:  |  Height:  |  Size: 245 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 210 B

After

Width:  |  Height:  |  Size: 195 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 614 B

After

Width:  |  Height:  |  Size: 210 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 645 B

After

Width:  |  Height:  |  Size: 614 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 336 B

After

Width:  |  Height:  |  Size: 645 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 655 B

After

Width:  |  Height:  |  Size: 336 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 655 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 328 B

After

Width:  |  Height:  |  Size: 317 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 207 B

After

Width:  |  Height:  |  Size: 328 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 293 B

After

Width:  |  Height:  |  Size: 207 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 340 B

After

Width:  |  Height:  |  Size: 293 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 676 B

After

Width:  |  Height:  |  Size: 340 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 471 B

After

Width:  |  Height:  |  Size: 676 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 250 B

After

Width:  |  Height:  |  Size: 471 B

@ -100,9 +100,12 @@ according to the preconditioner type chosen by the user.
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>integer, optional, intent(in)</code>.</TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The number of levels of the multilevel preconditioner.
If <code>nlev</code> is not present and <code>ptype</code>=<code>'ML'</code>, <code>'ml'</code>,
then <code>nlev</code>=2 is assumed. Otherwise, <code>nlev</code> is ignored.</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The number of levels of the multilevel
preconditioner. This optional argument is deprecated,
new codes should set the number of levels with <code>mld_precset</code>.</TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>&nbsp;</TD>
</TR>
</TABLE>

@ -85,7 +85,7 @@ variable of the new type in the main program, it is possible to pass
the new smoother/solver variable to the setup routine as follows:
<DIV ALIGN="CENTER">
<code>call p%set(smoother,info [,ilev ,pos])</code>
<BR><code>call p%set(solver,info [,ilev ,poss])</code>
<BR><code>call p%set(solver,info [,ilev ,pos])</code>
</DIV>
In this way, the variable will act as a <I>mold</I> to which the
@ -147,6 +147,13 @@ modified, and thus has no direct knowledge about the new type.
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Error code. If no error, 0 is returned. See Section&nbsp;<A HREF="node23.html#sec:errors">7</A>
for details.</TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>pos</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>charater(len=*), intent(in)</code>.</TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>Whether the other arguments apply to the <code>'PRE'</code>
or to the <code>'POST'</code> smoothers.</TD>
</TR>
</TABLE>
<P>
@ -202,7 +209,7 @@ according to their needs.
<P>
<BR><P></P>
<DIV ALIGN="CENTER"><A NAME="1306"></A>
<DIV ALIGN="CENTER"><A NAME="1312"></A>
<TABLE>
<CAPTION><STRONG>Table 2:</STRONG>
Parameters defining the type of multi-level preconditioner.
@ -246,7 +253,7 @@ Parameters defining the type of multi-level preconditioner.
<P>
<BR><P></P>
<DIV ALIGN="CENTER"><A NAME="1308"></A>
<DIV ALIGN="CENTER"><A NAME="1314"></A>
<TABLE>
<CAPTION><STRONG>Table 3:</STRONG>
Parameters defining the one-level preconditioner used as smoother.
@ -366,7 +373,7 @@ Parameters defining the one-level preconditioner used as smoother.
<P>
<BR><P></P>
<DIV ALIGN="CENTER"><A NAME="1310"></A>
<DIV ALIGN="CENTER"><A NAME="1316"></A>
<TABLE>
<CAPTION><STRONG>Table 4:</STRONG>
Parameters defining the aggregation algorithm.
@ -383,21 +390,54 @@ Parameters defining the aggregation algorithm.
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=142><code>mld_coarse_aggr_size_</code> <BR><code>COARSE_AGGR_SIZE</code></TD>
<TD ALIGN="LEFT"><code>integer</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68>A positive number</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68>0, meaning that the size is fixed at
<code>precinit</code> time</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=170>Coarse size threshold. Disregard the
original specification of number of levels in
<code>precinit</code> and continue aggregation
until either the global number of variables
is below this threshold, or the aggregation
does not reduce the size any longer.</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68>The cubic root of
the matrix size at the fine level.</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=170>Coarse size threshold. Aggregation will
proceed until either the global number of
variables is below this threshold, or the
aggregation does not reduce the size any
longer, or the maximum number of levels is
reached.</TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=142><code>mld_min_aggr_ratio</code> <BR><code>MIN_AGGR_RATIO</code></TD>
<TD ALIGN="LEFT"><code>real</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68>A number greater than one</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68>1.5</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=170>Minimum aggregation ratio. Aggregation will
stop if the ratio between the matrix sizes
at two consecutive levels drops below this
threshold.</TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=142><code>mld_n_prec_levs_</code> <BR><code>N_PREC_LEVS</code></TD>
<TD ALIGN="LEFT"><code>integer</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68>A number greater than 1, or -1.</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68>-1</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=170>Number of levels; if set to a positive
number greater than 1, it will force the
aggregation algorithm to use this many
levels (unless there is no reduction in the
coarse matrix size).</TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=142><code>mld_max_prec_levs_</code> <BR><code>MAX_PREC_LEVS</code></TD>
<TD ALIGN="LEFT"><code>integer</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68>A positive number</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68>20</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=170>Maximum number of levels: irrespective of
the other settings, do not use more than
this many levels.</TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=142><code>mld_aggr_alg_</code> <BR><code>AGGR_ALG</code></TD>
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68><TT>'DEC'</TT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68><TT>'DEC'</TT>, <TT>'SYMDEC'</TT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68><TT>'DEC'</TT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=170>Aggregation algorithm. Currently, only the
decoupled aggregation is available.</TD>
decoupled aggregation is available; the
<code>SYMDEC</code> option applies decoupled
aggregation to the sparsity pattern
of <IMG
WIDTH="62" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
SRC="img93.png"
ALT="$A+A^T$">.</TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=142><code>mld_aggr_ord_</code> <BR><code>AGGR_ORD</code></TD>
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
@ -420,28 +460,28 @@ Parameters defining the aggregation algorithm.
<TD ALIGN="LEFT"><code>real(</code><I>kind_parameter</I><code>)</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68>Any&nbsp;real&nbsp;num. <IMG
WIDTH="56" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
SRC="img93.png"
SRC="img94.png"
ALT="$\in [0, 1]$"></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68>0.05</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=170>Threshold <IMG
WIDTH="13" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
SRC="img94.png"
SRC="img95.png"
ALT="$\theta$"> in the aggregation algorithm.</TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=142><code>mld_aggr_scale_</code> <BR><code>AGGR_SCALE</code></TD>
<TD ALIGN="LEFT"><code>real(</code><I>kind_parameter</I><code>)</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68>Any&nbsp;real&nbsp;num. <IMG
WIDTH="56" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
SRC="img93.png"
SRC="img94.png"
ALT="$\in [0, 1]$"></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68>1.0</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=170>Scale factor applied to the threshold going
from level <IMG
from level <IMG
WIDTH="33" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
SRC="img95.png"
SRC="img96.png"
ALT="$ilev$"> to level <IMG
WIDTH="63" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
SRC="img96.png"
SRC="img97.png"
ALT="$ilev+1$">.</TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=142><code>mld_aggr_omega_alg_</code> <BR><code>AGGR_OMEGA_ALG</code></TD>
@ -452,13 +492,13 @@ Parameters defining the aggregation algorithm.
WIDTH="16" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img86.png"
ALT="$\omega$"> in the
smoothed aggregation should be computed:
either via an estimate of the spectral radius of
<IMG
smoothed aggregation should be computed:
either via an estimate of the spectral radius of
<IMG
WIDTH="50" HEIGHT="21" ALIGN="BOTTOM" BORDER="0"
SRC="img87.png"
ALT="$D^{-1}A$">, or explicily
specified by the user.</TD>
specified by the user.</TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=142><code>mld_aggr_eig_</code> <BR><code>AGGR_EIG</code></TD>
<TD ALIGN="LEFT"><code>character(len=*)</code></TD>
@ -479,7 +519,7 @@ Parameters defining the aggregation algorithm.
-->
<IMG
WIDTH="113" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img97.png"
SRC="img98.png"
ALT="$4/(3\rho(D^{-1}A))$"></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=170>Damping parameter <IMG
WIDTH="16" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
@ -491,7 +531,7 @@ Parameters defining the aggregation algorithm.
otherwise it is computed by the library, using the
selected estimate of the spectral radius <IMG
WIDTH="73" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img98.png"
SRC="img99.png"
ALT="$\rho(D^{-1}A)$"> of
<IMG
WIDTH="50" HEIGHT="21" ALIGN="BOTTOM" BORDER="0"
@ -507,7 +547,7 @@ Parameters defining the aggregation algorithm.
<P>
<BR><P></P>
<DIV ALIGN="CENTER"><A NAME="1313"></A>
<DIV ALIGN="CENTER"><A NAME="1319"></A>
<TABLE>
<CAPTION><STRONG>Table 5:</STRONG>
Parameters defining the coarse-space correction at the coarsest
@ -530,21 +570,25 @@ level.</CAPTION>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=99><code>mld_coarse_solve_</code> <BR><code>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>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91><TT>'BJAC'</TT>
<TT>'UMF'</TT> <TT>'MUMPS'</TT>
<TT>'SLU'</TT> <TT>'SLUDIST'</TT></TD>
<TD ALIGN="LEFT"><TT>'BJAC'</TT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=142>Solver used at the coarsest level: block Jacobi, sequential
LU from UMFPACK, sequential LU from SuperLU,
distributed LU from SuperLU_Dist.
<TT>'SLUDIST'</TT> requires the coarsest
matrix to be distributed, while <TT>'UMF'</TT> and
<TT>'SLU'</TT> require it to be replicated.</TD>
distributed LU from SuperLU_Dist or MUMPS.
<TT>'SLUDIST'</TT> and <TT>'MUMPS'</TT>
require the coarsest matrix to be distributed, while
<TT>'UMF'</TT> and <TT>'SLU'</TT> require
it to be replicated.</TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=99><code>mld_coarse_subsolve_</code> <BR><code>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>
<TT>'UMF'</TT>
<TT>'SLU'</TT>
<TT>'MUMPS'</TT></TD>
<TD ALIGN="LEFT">See note</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=142>Solver for the diagonal blocks of the coarse matrix,
in case the block Jacobi solver
@ -565,7 +609,7 @@ level.</CAPTION>
<TD ALIGN="LEFT"><code>integer</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91>Any&nbsp;int.&nbsp;num.&nbsp;<IMG
WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img99.png"
SRC="img100.png"
ALT="$&gt; 0$"></TD>
<TD ALIGN="LEFT">4</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=142>Number of Block-Jacobi sweeps when 'BJAC' is used as
@ -601,9 +645,9 @@ level.</CAPTION>
<TR><TD ALIGN="LEFT" COLSPAN=5><B>Note:</B> defaults for
<TT>m</TT>ld_coarse_subsolve_ are chosen as</TD>
</TR>
<TR><TD ALIGN="LEFT" COLSPAN=5>single precision version: 'SLU' if installed, 'ILU' otherwise</TD>
<TR><TD ALIGN="LEFT" COLSPAN=5>single precision version: 'MUMPS' if installed, 'SLU' if installed, 'ILU' otherwise</TD>
</TR>
<TR><TD ALIGN="LEFT" COLSPAN=5>double precision version: 'UMF' if installed,
<TR><TD ALIGN="LEFT" COLSPAN=5>double precision version: 'MUMPS' if installed, 'UMF' if installed,
else 'SLU' if installed, 'ILU' otherwise</TD>
</TR>
</TABLE>

@ -69,14 +69,14 @@ This routine computes <!-- MATH
-->
<IMG
WIDTH="118" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img100.png"
SRC="img101.png"
ALT="$y = op(M^{-1}) x$">, where <IMG
WIDTH="23" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img60.png"
ALT="$M$"> is a previously built
preconditioner, stored into <code>p</code>, and <IMG
WIDTH="21" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img101.png"
SRC="img102.png"
ALT="$op$">
denotes the preconditioner itself or its transpose, according to
the value of <code>trans</code>.
@ -106,7 +106,7 @@ and hence it is completely transparent to the user.
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The local part of the vector <IMG
WIDTH="15" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img102.png"
SRC="img103.png"
ALT="$x$">. Note that <I>type</I> and
<I>kind_parameter</I> must be chosen according
to the real/complex, single/double precision version of MLD2P4 under use.</TD>
@ -117,7 +117,7 @@ and hence it is completely transparent to the user.
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The local part of the vector <IMG
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img103.png"
SRC="img104.png"
ALT="$y$">. Note that <I>type</I> and
<I>kind_parameter</I> must be chosen according
to the real/complex, single/double precision version of MLD2P4 under use.</TD>
@ -144,28 +144,28 @@ and hence it is completely transparent to the user.
-->
<IMG
WIDTH="132" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img104.png"
SRC="img105.png"
ALT="$op(M^{-1}) = M^{-1}$">;
if <code>trans</code> = <code>'T','t'</code> then <!-- MATH
$op(M^{-1}) = M^{-T}$
-->
<IMG
WIDTH="135" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
SRC="img105.png"
SRC="img106.png"
ALT="$op(M^{-1}) = M^{-T}$">
(transpose of <IMG
WIDTH="48" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img106.png"
SRC="img107.png"
ALT="$M^{-1})$">; if <code>trans</code> = <code>'C','c'</code> then <!-- MATH
$op(M^{-1}) = M^{-C}$
-->
<IMG
WIDTH="136" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
SRC="img107.png"
SRC="img108.png"
ALT="$op(M^{-1}) = M^{-C}$">
(conjugate transpose of <IMG
WIDTH="48" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img106.png"
SRC="img107.png"
ALT="$M^{-1})$">.</TD>
</TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>work</code></TD>

@ -63,7 +63,7 @@ Mathematics Department, Macquarie University, Sydney.
The command line arguments were: <BR>
<STRONG>latex2html</STRONG> <TT>-local_icons -noaddress -dir ../../html userhtml.tex</TT>
<P>
The translation was initiated by Salvatore Filippone on 2016-05-18
The translation was initiated by Salvatore Filippone on 2016-05-23
<BR><HR>
</BODY>

File diff suppressed because it is too large Load Diff

@ -63,9 +63,11 @@ according to the preconditioner type chosen by the user.
\verb|info| & \verb|integer, intent(out)|.\\
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\
\verb|nlev| & \verb|integer, optional, intent(in)|.\\
& The number of levels of the multilevel preconditioner.
If \verb|nlev| is not present and \verb|ptype|=\verb|'ML'|, \verb|'ml'|,
then \verb|nlev|=2 is assumed. Otherwise, \verb|nlev| is ignored.\\
& The number of levels of the multilevel
preconditioner. This optional argument is deprecated,
new codes should set the number of levels with \verb|mld_precset|.\\
% If \verb|nlev| is not present and \verb|ptype|=\verb|'ML'|, \verb|'ml'|,
% then \verb|nlev|=2 is assumed. Otherwise, \verb|nlev| is ignored.\\
\end{tabular}
\clearpage
@ -96,7 +98,7 @@ variable of the new type in the main program, it is possible to pass
the new smoother/solver variable to the setup routine as follows:
\begin{center}
\verb|call p%set(smoother,info [,ilev ,pos])|\\
\verb|call p%set(solver,info [,ilev ,poss])|
\verb|call p%set(solver,info [,ilev ,pos])|
\end{center}
In this way, the variable will act as a \emph{mold} to which the
preconditioner will conform, even though the MLD2P4 library is not
@ -133,6 +135,10 @@ modified, and thus has no direct knowledge about the new type.
\verb|info| & \verb|integer, intent(out)|.\\
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors}
for details.\\
\verb|pos| & \verb|charater(len=*), intent(in)|.\\
& Whether the other arguments apply to the \verb|'PRE'|
or to the \verb|'POST'| smoothers.\\
%
%\verb|ilev| & \verb|integer, optional, intent(in)|.\\
% & For the multilevel preconditioner, the level at which the
@ -297,19 +303,43 @@ according to their needs.
%\multicolumn{5}{|c|}{\emph{aggregation algorithm}} \\ \hline
\verb|mld_coarse_aggr_size_| \break \verb|COARSE_AGGR_SIZE| & \verb|integer|
& A positive number
& 0, meaning that the size is fixed at
\verb|precinit| time
& Coarse size threshold. Disregard the
original specification of number of levels in
\verb|precinit| and continue aggregation
until either the global number of variables
is below this threshold, or the aggregation
does not reduce the size any longer. \\ \hline
& The cubic root of
the matrix size at the fine level.
& Coarse size threshold. Aggregation will
proceed until either the global number of
variables is below this threshold, or the
aggregation does not reduce the size any
longer, or the maximum number of levels is
reached. \\ \hline
\verb|mld_min_aggr_ratio| \break \verb|MIN_AGGR_RATIO| & \verb|real|
& A number greater than one
& 1.5
& Minimum aggregation ratio. Aggregation will
stop if the ratio between the matrix sizes
at two consecutive levels drops below this
threshold.\\ \hline
\verb|mld_n_prec_levs_| \break \verb|N_PREC_LEVS| & \verb|integer|
& A number greater than 1, or -1.
& -1
& Number of levels; if set to a positive
number greater than 1, it will force the
aggregation algorithm to use this many
levels (unless there is no reduction in the
coarse matrix size). \\ \hline
\verb|mld_max_prec_levs_| \break \verb|MAX_PREC_LEVS| & \verb|integer|
& A positive number
& 20
& Maximum number of levels: irrespective of
the other settings, do not use more than
this many levels. \\ \hline
\verb|mld_aggr_alg_| \break \verb|AGGR_ALG| & \verb|character(len=*)|
& \texttt{'DEC'}
& \texttt{'DEC'}, \texttt{'SYMDEC'}
& \texttt{'DEC'}
& Aggregation algorithm. Currently, only the
decoupled aggregation is available. \\ \hline
decoupled aggregation is available; the
\verb|SYMDEC| option applies decoupled
aggregation to the sparsity pattern
of $A+A^T$.\\ \hline
\verb|mld_aggr_ord_| \break \verb|AGGR_ORD| & \verb|character(len=*)|
& \texttt{'NATURAL'}
& \texttt{'DEGREE'}
@ -331,15 +361,15 @@ according to their needs.
& Any~real~num. $\in [0, 1]$
& 1.0
& Scale factor applied to the threshold going
from level $ilev$ to level $ilev+1$. \\ \hline
from level $ilev$ to level $ilev+1$. \\ \hline
\verb|mld_aggr_omega_alg_| \break \verb|AGGR_OMEGA_ALG|& \verb|character(len=*)|
& \texttt{'EIG\_EST'} \hspace{2.5cm} \texttt{'USER\_CHOICE'}
& \texttt{'EIG\_EST'}
& How the damping parameter $\omega$ in the
smoothed aggregation should be computed:
either via an estimate of the spectral radius of
$D^{-1}A$, or explicily
specified by the user. \\ \hline
smoothed aggregation should be computed:
either via an estimate of the spectral radius of
$D^{-1}A$, or explicily
specified by the user. \\ \hline
\verb|mld_aggr_eig_| \break \verb|AGGR_EIG| & \verb|character(len=*)|
& \texttt{'A\_NORMI'}
& \texttt{'A\_NORMI'}
@ -376,19 +406,23 @@ according to their needs.
& Coarsest matrix: distributed among the processors or
replicated on each of them. \\ \hline
\verb|mld_coarse_solve_| \break \verb|COARSE_SOLVE| & \verb|character(len=*)|
& \texttt{'BJAC'} \hspace{2.5cm} \texttt{'UMF'} \hspace{2.5cm}
& \texttt{'BJAC'} \hspace{2.5cm}
\texttt{'UMF'} \hspace{2.5cm} \texttt{'MUMPS'} \hspace{2.5cm}
\texttt{'SLU'} \hspace{2.5cm} \texttt{'SLUDIST'}
& \texttt{'BJAC'}
& Solver used at the coarsest level: block Jacobi, sequential
LU from UMFPACK, sequential LU from SuperLU,
distributed LU from SuperLU\_Dist.
\texttt{'SLUDIST'} requires the coarsest
matrix to be distributed, while \texttt{'UMF'} and
\texttt{'SLU'} require it to be replicated. \\ \hline
distributed LU from SuperLU\_Dist or MUMPS.
\texttt{'SLUDIST'} and \texttt{'MUMPS'}
require the coarsest matrix to be distributed, while
\texttt{'UMF'} and \texttt{'SLU'} require
it to be replicated. \\ \hline
\verb|mld_coarse_subsolve_| \break \verb|COARSE_SUBSOLVE| & \verb|character(len=*)|
& \texttt{'ILU'} \hspace{2.5cm} \texttt{'MILU'}
\hspace{2.5cm} \texttt{'ILUT'}
\hspace{2.5cm} \texttt{'UMF'} \hspace{2.5cm} \texttt{'SLU'}
\hspace{2.5cm} \texttt{'UMF'}
\hspace{2.5cm} \texttt{'SLU'}
\hspace{2.5cm} \texttt{'MUMPS'}
& See note
& Solver for the diagonal blocks of the coarse matrix,
in case the block Jacobi solver
@ -411,8 +445,8 @@ according to their needs.
\hline
\multicolumn{5}{|l|}{{\bfseries Note:} defaults for
{\texttt mld\_coarse\_subsolve\_} are chosen as }\\
\multicolumn{5}{|l|}{single precision version: 'SLU' if installed, 'ILU' otherwise}\\
\multicolumn{5}{|l|}{double precision version: 'UMF' if installed,
\multicolumn{5}{|l|}{single precision version: 'MUMPS' if installed, 'SLU' if installed, 'ILU' otherwise}\\
\multicolumn{5}{|l|}{double precision version: 'MUMPS' if installed, 'UMF' if installed,
else 'SLU' if installed, 'ILU' otherwise}\\
\hline
\end{tabular}

@ -1,6 +1,6 @@
BICGSTAB ! Iterative method: BiCGSTAB BiCG CGS RGMRES BiCGSTABL CG
CSR ! Storage format CSR COO JAD
0100 ! IDIM; domain size is idim**3
0030 ! IDIM; domain size is idim**3
2 ! ISTOPC
2000 ! ITMAX
10 ! ITRACE
@ -17,7 +17,7 @@ GS ! Subdomain solver DSCALE ILU MILU ILUT UMF SLU GS M
1.d-4 ! Threshold T for ILU(T,P)
4 ! Smoother/Jacobi sweeps
BJAC ! Smoother type JACOBI BJAC AS; ignored for non-ML
2 ! Number of levels in a multilevel preconditioner
3 ! Number of levels in a multilevel preconditioner
SMOOTHED ! Kind of aggregation: SMOOTHED, NONSMOOTHED, MINENERGY
SYMDEC ! Type of aggregation DEC SYMDEC
NATURAL ! Ordering of aggregation NATURAL DEGREE
@ -30,4 +30,4 @@ ILU ! Coarse level: subsolver DSCALE GS ILU UMF SLU SLU
1.d-4 ! Coarse level: Threshold T for ILU(T,P)
4 ! Coarse level: Number of Jacobi sweeps
-0.10d0 ! Smoother Aggregation Threshold: >= 0.0 default if <0
1000 ! Coarse size limit to determine levels. If <0, then use NL
-010 ! Coarse size limit to determine levels. If <0, then use NL

Loading…
Cancel
Save