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.
|
Before Width: | Height: | Size: 611 B After Width: | Height: | Size: 250 B |
|
Before Width: | Height: | Size: 245 B After Width: | Height: | Size: 611 B |
|
Before Width: | Height: | Size: 195 B After Width: | Height: | Size: 245 B |
|
Before Width: | Height: | Size: 210 B After Width: | Height: | Size: 195 B |
|
Before Width: | Height: | Size: 614 B After Width: | Height: | Size: 210 B |
|
Before Width: | Height: | Size: 645 B After Width: | Height: | Size: 614 B |
|
Before Width: | Height: | Size: 336 B After Width: | Height: | Size: 645 B |
|
Before Width: | Height: | Size: 655 B After Width: | Height: | Size: 336 B |
|
After Width: | Height: | Size: 655 B |
|
Before Width: | Height: | Size: 328 B After Width: | Height: | Size: 317 B |
|
Before Width: | Height: | Size: 207 B After Width: | Height: | Size: 328 B |
|
Before Width: | Height: | Size: 293 B After Width: | Height: | Size: 207 B |
|
Before Width: | Height: | Size: 340 B After Width: | Height: | Size: 293 B |
|
Before Width: | Height: | Size: 676 B After Width: | Height: | Size: 340 B |
|
Before Width: | Height: | Size: 471 B After Width: | Height: | Size: 676 B |
|
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> </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> </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 <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> </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 real 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 real 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 int. num. <IMG
|
||||
WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
|
||||
SRC="img99.png"
|
||||
SRC="img100.png"
|
||||
ALT="$> 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> </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> </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>
|
||||
|
||||
@@ -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
|
||||
|
||||