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> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340><code>integer, optional, intent(in)</code>.</TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD> <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. <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The number of levels of the multilevel
If <code>nlev</code> is not present and <code>ptype</code>=<code>'ML'</code>, <code>'ml'</code>, preconditioner. This optional argument is deprecated,
then <code>nlev</code>=2 is assumed. Otherwise, <code>nlev</code> is ignored.</TD> 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> </TR>
</TABLE> </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: the new smoother/solver variable to the setup routine as follows:
<DIV ALIGN="CENTER"> <DIV ALIGN="CENTER">
<code>call p%set(smoother,info [,ilev ,pos])</code> <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> </DIV>
In this way, the variable will act as a <I>mold</I> to which the 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> <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> for details.</TD>
</TR> </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> </TABLE>
<P> <P>
@ -202,7 +209,7 @@ according to their needs.
<P> <P>
<BR><P></P> <BR><P></P>
<DIV ALIGN="CENTER"><A NAME="1306"></A> <DIV ALIGN="CENTER"><A NAME="1312"></A>
<TABLE> <TABLE>
<CAPTION><STRONG>Table 2:</STRONG> <CAPTION><STRONG>Table 2:</STRONG>
Parameters defining the type of multi-level preconditioner. Parameters defining the type of multi-level preconditioner.
@ -246,7 +253,7 @@ Parameters defining the type of multi-level preconditioner.
<P> <P>
<BR><P></P> <BR><P></P>
<DIV ALIGN="CENTER"><A NAME="1308"></A> <DIV ALIGN="CENTER"><A NAME="1314"></A>
<TABLE> <TABLE>
<CAPTION><STRONG>Table 3:</STRONG> <CAPTION><STRONG>Table 3:</STRONG>
Parameters defining the one-level preconditioner used as smoother. Parameters defining the one-level preconditioner used as smoother.
@ -366,7 +373,7 @@ Parameters defining the one-level preconditioner used as smoother.
<P> <P>
<BR><P></P> <BR><P></P>
<DIV ALIGN="CENTER"><A NAME="1310"></A> <DIV ALIGN="CENTER"><A NAME="1316"></A>
<TABLE> <TABLE>
<CAPTION><STRONG>Table 4:</STRONG> <CAPTION><STRONG>Table 4:</STRONG>
Parameters defining the aggregation algorithm. 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> <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"><code>integer</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68>A positive number</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 <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68>The cubic root of
<code>precinit</code> time</TD> the matrix size at the fine level.</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=170>Coarse size threshold. Disregard the <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=170>Coarse size threshold. Aggregation will
original specification of number of levels in proceed until either the global number of
<code>precinit</code> and continue aggregation variables is below this threshold, or the
until either the global number of variables aggregation does not reduce the size any
is below this threshold, or the aggregation longer, or the maximum number of levels is
does not reduce the size any longer.</TD> 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>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=142><code>mld_aggr_alg_</code> <BR><code>AGGR_ALG</code></TD> <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"><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=68><TT>'DEC'</TT></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=170>Aggregation algorithm. Currently, only the <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>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=142><code>mld_aggr_ord_</code> <BR><code>AGGR_ORD</code></TD> <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> <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"><code>real(</code><I>kind_parameter</I><code>)</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68>Any&nbsp;real&nbsp;num. <IMG <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68>Any&nbsp;real&nbsp;num. <IMG
WIDTH="56" HEIGHT="36" ALIGN="MIDDLE" BORDER="0" WIDTH="56" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
SRC="img93.png" SRC="img94.png"
ALT="$\in [0, 1]$"></TD> ALT="$\in [0, 1]$"></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68>0.05</TD> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68>0.05</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=170>Threshold <IMG <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=170>Threshold <IMG
WIDTH="13" HEIGHT="16" ALIGN="BOTTOM" BORDER="0" WIDTH="13" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
SRC="img94.png" SRC="img95.png"
ALT="$\theta$"> in the aggregation algorithm.</TD> ALT="$\theta$"> in the aggregation algorithm.</TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=142><code>mld_aggr_scale_</code> <BR><code>AGGR_SCALE</code></TD> <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"><code>real(</code><I>kind_parameter</I><code>)</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68>Any&nbsp;real&nbsp;num. <IMG <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68>Any&nbsp;real&nbsp;num. <IMG
WIDTH="56" HEIGHT="36" ALIGN="MIDDLE" BORDER="0" WIDTH="56" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
SRC="img93.png" SRC="img94.png"
ALT="$\in [0, 1]$"></TD> ALT="$\in [0, 1]$"></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=68>1.0</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 <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" WIDTH="33" HEIGHT="16" ALIGN="BOTTOM" BORDER="0"
SRC="img95.png" SRC="img96.png"
ALT="$ilev$"> to level <IMG ALT="$ilev$"> to level <IMG
WIDTH="63" HEIGHT="34" ALIGN="MIDDLE" BORDER="0" WIDTH="63" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
SRC="img96.png" SRC="img97.png"
ALT="$ilev+1$">.</TD> ALT="$ilev+1$">.</TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=142><code>mld_aggr_omega_alg_</code> <BR><code>AGGR_OMEGA_ALG</code></TD> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=142><code>mld_aggr_omega_alg_</code> <BR><code>AGGR_OMEGA_ALG</code></TD>
@ -479,7 +519,7 @@ Parameters defining the aggregation algorithm.
--> -->
<IMG <IMG
WIDTH="113" HEIGHT="39" ALIGN="MIDDLE" BORDER="0" WIDTH="113" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img97.png" SRC="img98.png"
ALT="$4/(3\rho(D^{-1}A))$"></TD> ALT="$4/(3\rho(D^{-1}A))$"></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=170>Damping parameter <IMG <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=170>Damping parameter <IMG
WIDTH="16" HEIGHT="18" ALIGN="BOTTOM" BORDER="0" 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 otherwise it is computed by the library, using the
selected estimate of the spectral radius <IMG selected estimate of the spectral radius <IMG
WIDTH="73" HEIGHT="39" ALIGN="MIDDLE" BORDER="0" WIDTH="73" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img98.png" SRC="img99.png"
ALT="$\rho(D^{-1}A)$"> of ALT="$\rho(D^{-1}A)$"> of
<IMG <IMG
WIDTH="50" HEIGHT="21" ALIGN="BOTTOM" BORDER="0" WIDTH="50" HEIGHT="21" ALIGN="BOTTOM" BORDER="0"
@ -507,7 +547,7 @@ Parameters defining the aggregation algorithm.
<P> <P>
<BR><P></P> <BR><P></P>
<DIV ALIGN="CENTER"><A NAME="1313"></A> <DIV ALIGN="CENTER"><A NAME="1319"></A>
<TABLE> <TABLE>
<CAPTION><STRONG>Table 5:</STRONG> <CAPTION><STRONG>Table 5:</STRONG>
Parameters defining the coarse-space correction at the coarsest Parameters defining the coarse-space correction at the coarsest
@ -530,21 +570,25 @@ level.</CAPTION>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=99><code>mld_coarse_solve_</code> <BR><code>COARSE_SOLVE</code></TD> <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"><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> <TT>'SLU'</TT> <TT>'SLUDIST'</TT></TD>
<TD ALIGN="LEFT"><TT>'BJAC'</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 <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=142>Solver used at the coarsest level: block Jacobi, sequential
LU from UMFPACK, sequential LU from SuperLU, LU from UMFPACK, sequential LU from SuperLU,
distributed LU from SuperLU_Dist. distributed LU from SuperLU_Dist or MUMPS.
<TT>'SLUDIST'</TT> requires the coarsest <TT>'SLUDIST'</TT> and <TT>'MUMPS'</TT>
matrix to be distributed, while <TT>'UMF'</TT> and require the coarsest matrix to be distributed, while
<TT>'SLU'</TT> require it to be replicated.</TD> <TT>'UMF'</TT> and <TT>'SLU'</TT> require
it to be replicated.</TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=99><code>mld_coarse_subsolve_</code> <BR><code>COARSE_SUBSOLVE</code></TD> <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"><code>character(len=*)</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91><TT>'ILU'</TT> <TT>'MILU'</TT> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91><TT>'ILU'</TT> <TT>'MILU'</TT>
<TT>'ILUT'</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">See note</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=142>Solver for the diagonal blocks of the coarse matrix, <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=142>Solver for the diagonal blocks of the coarse matrix,
in case the block Jacobi solver in case the block Jacobi solver
@ -565,7 +609,7 @@ level.</CAPTION>
<TD ALIGN="LEFT"><code>integer</code></TD> <TD ALIGN="LEFT"><code>integer</code></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91>Any&nbsp;int.&nbsp;num.&nbsp;<IMG <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=91>Any&nbsp;int.&nbsp;num.&nbsp;<IMG
WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0" WIDTH="31" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img99.png" SRC="img100.png"
ALT="$&gt; 0$"></TD> ALT="$&gt; 0$"></TD>
<TD ALIGN="LEFT">4</TD> <TD ALIGN="LEFT">4</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=142>Number of Block-Jacobi sweeps when 'BJAC' is used as <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 <TR><TD ALIGN="LEFT" COLSPAN=5><B>Note:</B> defaults for
<TT>m</TT>ld_coarse_subsolve_ are chosen as</TD> <TT>m</TT>ld_coarse_subsolve_ are chosen as</TD>
</TR> </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>
<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> else 'SLU' if installed, 'ILU' otherwise</TD>
</TR> </TR>
</TABLE> </TABLE>

@ -69,14 +69,14 @@ This routine computes <!-- MATH
--> -->
<IMG <IMG
WIDTH="118" HEIGHT="39" ALIGN="MIDDLE" BORDER="0" WIDTH="118" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img100.png" SRC="img101.png"
ALT="$y = op(M^{-1}) x$">, where <IMG ALT="$y = op(M^{-1}) x$">, where <IMG
WIDTH="23" HEIGHT="15" ALIGN="BOTTOM" BORDER="0" WIDTH="23" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
SRC="img60.png" SRC="img60.png"
ALT="$M$"> is a previously built ALT="$M$"> is a previously built
preconditioner, stored into <code>p</code>, and <IMG preconditioner, stored into <code>p</code>, and <IMG
WIDTH="21" HEIGHT="31" ALIGN="MIDDLE" BORDER="0" WIDTH="21" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img101.png" SRC="img102.png"
ALT="$op$"> ALT="$op$">
denotes the preconditioner itself or its transpose, according to denotes the preconditioner itself or its transpose, according to
the value of <code>trans</code>. 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> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The local part of the vector <IMG <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The local part of the vector <IMG
WIDTH="15" HEIGHT="18" ALIGN="BOTTOM" BORDER="0" WIDTH="15" HEIGHT="18" ALIGN="BOTTOM" BORDER="0"
SRC="img102.png" SRC="img103.png"
ALT="$x$">. Note that <I>type</I> and ALT="$x$">. Note that <I>type</I> and
<I>kind_parameter</I> must be chosen according <I>kind_parameter</I> must be chosen according
to the real/complex, single/double precision version of MLD2P4 under use.</TD> 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> <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34>&nbsp;</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The local part of the vector <IMG <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=340>The local part of the vector <IMG
WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0" WIDTH="13" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
SRC="img103.png" SRC="img104.png"
ALT="$y$">. Note that <I>type</I> and ALT="$y$">. Note that <I>type</I> and
<I>kind_parameter</I> must be chosen according <I>kind_parameter</I> must be chosen according
to the real/complex, single/double precision version of MLD2P4 under use.</TD> 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 <IMG
WIDTH="132" HEIGHT="39" ALIGN="MIDDLE" BORDER="0" WIDTH="132" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img104.png" SRC="img105.png"
ALT="$op(M^{-1}) = M^{-1}$">; ALT="$op(M^{-1}) = M^{-1}$">;
if <code>trans</code> = <code>'T','t'</code> then <!-- MATH if <code>trans</code> = <code>'T','t'</code> then <!-- MATH
$op(M^{-1}) = M^{-T}$ $op(M^{-1}) = M^{-T}$
--> -->
<IMG <IMG
WIDTH="135" HEIGHT="40" ALIGN="MIDDLE" BORDER="0" WIDTH="135" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
SRC="img105.png" SRC="img106.png"
ALT="$op(M^{-1}) = M^{-T}$"> ALT="$op(M^{-1}) = M^{-T}$">
(transpose of <IMG (transpose of <IMG
WIDTH="48" HEIGHT="39" ALIGN="MIDDLE" BORDER="0" 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 ALT="$M^{-1})$">; if <code>trans</code> = <code>'C','c'</code> then <!-- MATH
$op(M^{-1}) = M^{-C}$ $op(M^{-1}) = M^{-C}$
--> -->
<IMG <IMG
WIDTH="136" HEIGHT="40" ALIGN="MIDDLE" BORDER="0" WIDTH="136" HEIGHT="40" ALIGN="MIDDLE" BORDER="0"
SRC="img107.png" SRC="img108.png"
ALT="$op(M^{-1}) = M^{-C}$"> ALT="$op(M^{-1}) = M^{-C}$">
(conjugate transpose of <IMG (conjugate transpose of <IMG
WIDTH="48" HEIGHT="39" ALIGN="MIDDLE" BORDER="0" WIDTH="48" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img106.png" SRC="img107.png"
ALT="$M^{-1})$">.</TD> ALT="$M^{-1})$">.</TD>
</TR> </TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=34><code>work</code></TD> <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> The command line arguments were: <BR>
<STRONG>latex2html</STRONG> <TT>-local_icons -noaddress -dir ../../html userhtml.tex</TT> <STRONG>latex2html</STRONG> <TT>-local_icons -noaddress -dir ../../html userhtml.tex</TT>
<P> <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> <BR><HR>
</BODY> </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)|.\\ \verb|info| & \verb|integer, intent(out)|.\\
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\ & Error code. If no error, 0 is returned. See Section~\ref{sec:errors} for details.\\
\verb|nlev| & \verb|integer, optional, intent(in)|.\\ \verb|nlev| & \verb|integer, optional, intent(in)|.\\
& The number of levels of the multilevel preconditioner. & The number of levels of the multilevel
If \verb|nlev| is not present and \verb|ptype|=\verb|'ML'|, \verb|'ml'|, preconditioner. This optional argument is deprecated,
then \verb|nlev|=2 is assumed. Otherwise, \verb|nlev| is ignored.\\ 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} \end{tabular}
\clearpage \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: the new smoother/solver variable to the setup routine as follows:
\begin{center} \begin{center}
\verb|call p%set(smoother,info [,ilev ,pos])|\\ \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} \end{center}
In this way, the variable will act as a \emph{mold} to which the In this way, the variable will act as a \emph{mold} to which the
preconditioner will conform, even though the MLD2P4 library is not 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)|.\\ \verb|info| & \verb|integer, intent(out)|.\\
& Error code. If no error, 0 is returned. See Section~\ref{sec:errors} & Error code. If no error, 0 is returned. See Section~\ref{sec:errors}
for details.\\ 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)|.\\ %\verb|ilev| & \verb|integer, optional, intent(in)|.\\
% & For the multilevel preconditioner, the level at which the % & For the multilevel preconditioner, the level at which the
@ -297,19 +303,43 @@ according to their needs.
%\multicolumn{5}{|c|}{\emph{aggregation algorithm}} \\ \hline %\multicolumn{5}{|c|}{\emph{aggregation algorithm}} \\ \hline
\verb|mld_coarse_aggr_size_| \break \verb|COARSE_AGGR_SIZE| & \verb|integer| \verb|mld_coarse_aggr_size_| \break \verb|COARSE_AGGR_SIZE| & \verb|integer|
& A positive number & A positive number
& 0, meaning that the size is fixed at & The cubic root of
\verb|precinit| time the matrix size at the fine level.
& Coarse size threshold. Disregard the & Coarse size threshold. Aggregation will
original specification of number of levels in proceed until either the global number of
\verb|precinit| and continue aggregation variables is below this threshold, or the
until either the global number of variables aggregation does not reduce the size any
is below this threshold, or the aggregation longer, or the maximum number of levels is
does not reduce the size any longer. \\ \hline 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=*)| \verb|mld_aggr_alg_| \break \verb|AGGR_ALG| & \verb|character(len=*)|
& \texttt{'DEC'} & \texttt{'DEC'}, \texttt{'SYMDEC'}
& \texttt{'DEC'} & \texttt{'DEC'}
& Aggregation algorithm. Currently, only the & 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=*)| \verb|mld_aggr_ord_| \break \verb|AGGR_ORD| & \verb|character(len=*)|
& \texttt{'NATURAL'} & \texttt{'NATURAL'}
& \texttt{'DEGREE'} & \texttt{'DEGREE'}
@ -376,19 +406,23 @@ according to their needs.
& Coarsest matrix: distributed among the processors or & Coarsest matrix: distributed among the processors or
replicated on each of them. \\ \hline replicated on each of them. \\ \hline
\verb|mld_coarse_solve_| \break \verb|COARSE_SOLVE| & \verb|character(len=*)| \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{'SLU'} \hspace{2.5cm} \texttt{'SLUDIST'}
& \texttt{'BJAC'} & \texttt{'BJAC'}
& Solver used at the coarsest level: block Jacobi, sequential & Solver used at the coarsest level: block Jacobi, sequential
LU from UMFPACK, sequential LU from SuperLU, LU from UMFPACK, sequential LU from SuperLU,
distributed LU from SuperLU\_Dist. distributed LU from SuperLU\_Dist or MUMPS.
\texttt{'SLUDIST'} requires the coarsest \texttt{'SLUDIST'} and \texttt{'MUMPS'}
matrix to be distributed, while \texttt{'UMF'} and require the coarsest matrix to be distributed, while
\texttt{'SLU'} require it to be replicated. \\ \hline \texttt{'UMF'} and \texttt{'SLU'} require
it to be replicated. \\ \hline
\verb|mld_coarse_subsolve_| \break \verb|COARSE_SUBSOLVE| & \verb|character(len=*)| \verb|mld_coarse_subsolve_| \break \verb|COARSE_SUBSOLVE| & \verb|character(len=*)|
& \texttt{'ILU'} \hspace{2.5cm} \texttt{'MILU'} & \texttt{'ILU'} \hspace{2.5cm} \texttt{'MILU'}
\hspace{2.5cm} \texttt{'ILUT'} \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 & See note
& Solver for the diagonal blocks of the coarse matrix, & Solver for the diagonal blocks of the coarse matrix,
in case the block Jacobi solver in case the block Jacobi solver
@ -411,8 +445,8 @@ according to their needs.
\hline \hline
\multicolumn{5}{|l|}{{\bfseries Note:} defaults for \multicolumn{5}{|l|}{{\bfseries Note:} defaults for
{\texttt mld\_coarse\_subsolve\_} are chosen as }\\ {\texttt mld\_coarse\_subsolve\_} are chosen as }\\
\multicolumn{5}{|l|}{single precision version: 'SLU' if installed, 'ILU' otherwise}\\ \multicolumn{5}{|l|}{single precision version: 'MUMPS' if installed, 'SLU' if installed, 'ILU' otherwise}\\
\multicolumn{5}{|l|}{double precision version: 'UMF' if installed, \multicolumn{5}{|l|}{double precision version: 'MUMPS' if installed, 'UMF' if installed,
else 'SLU' if installed, 'ILU' otherwise}\\ else 'SLU' if installed, 'ILU' otherwise}\\
\hline \hline
\end{tabular} \end{tabular}

@ -1,6 +1,6 @@
BICGSTAB ! Iterative method: BiCGSTAB BiCG CGS RGMRES BiCGSTABL CG BICGSTAB ! Iterative method: BiCGSTAB BiCG CGS RGMRES BiCGSTABL CG
CSR ! Storage format CSR COO JAD CSR ! Storage format CSR COO JAD
0100 ! IDIM; domain size is idim**3 0030 ! IDIM; domain size is idim**3
2 ! ISTOPC 2 ! ISTOPC
2000 ! ITMAX 2000 ! ITMAX
10 ! ITRACE 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) 1.d-4 ! Threshold T for ILU(T,P)
4 ! Smoother/Jacobi sweeps 4 ! Smoother/Jacobi sweeps
BJAC ! Smoother type JACOBI BJAC AS; ignored for non-ML 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 SMOOTHED ! Kind of aggregation: SMOOTHED, NONSMOOTHED, MINENERGY
SYMDEC ! Type of aggregation DEC SYMDEC SYMDEC ! Type of aggregation DEC SYMDEC
NATURAL ! Ordering of aggregation NATURAL DEGREE 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) 1.d-4 ! Coarse level: Threshold T for ILU(T,P)
4 ! Coarse level: Number of Jacobi sweeps 4 ! Coarse level: Number of Jacobi sweeps
-0.10d0 ! Smoother Aggregation Threshold: >= 0.0 default if <0 -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