|
|
|
@ -89,7 +89,7 @@ the corresponding codes are available in <code>examples/fileread/</code>.
|
|
|
|
|
|
|
|
|
|
<P>
|
|
|
|
|
|
|
|
|
|
<DIV ALIGN="CENTER"><A NAME="fig:ex1"></A><A NAME="520"></A>
|
|
|
|
|
<DIV ALIGN="CENTER"><A NAME="fig:ex1"></A><A NAME="519"></A>
|
|
|
|
|
<TABLE>
|
|
|
|
|
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 2:</STRONG>
|
|
|
|
|
setup and application of the default multi-level preconditioner (example 1).
|
|
|
|
@ -172,15 +172,12 @@ Furthermore, specifying block-Jacobi as coarsest-level
|
|
|
|
|
solver implies that the coarsest-level matrix is distributed
|
|
|
|
|
among the processes.
|
|
|
|
|
Figure <A HREF="#fig:ex3">4</A> shows how to set a W-cycle preconditioner which
|
|
|
|
|
applies 2 Gauss-Seidel sweeps as pre- and post-smoother,
|
|
|
|
|
applies 2 hybrid Gauss-Seidel sweeps as pre- and post-smoother,
|
|
|
|
|
and solves the coarsest-level system with the multifrontal LU factorization
|
|
|
|
|
implemented in MUMPS. It is specified that the coarsest-level
|
|
|
|
|
matrix is distributed, since MUMPS can be used on both
|
|
|
|
|
replicated and distributed matrices, and by default
|
|
|
|
|
it is used on replicated ones. Note the use of the parameter <code>pos</code>
|
|
|
|
|
to specify a property only for the pre-smoother or the post-smoother
|
|
|
|
|
(see Section <A HREF="node17.html#sec:precset">6.2</A> for more details).
|
|
|
|
|
The code fragments shown in Figures <A HREF="#fig:ex2">3</A> and <A HREF="#fig:ex3">4</A> are
|
|
|
|
|
it is used on replicated ones. The code fragments shown in Figures <A HREF="#fig:ex2">3</A> and <A HREF="#fig:ex3">4</A> are
|
|
|
|
|
included in the example program file <code>mld_dexample_ml.f90</code> too.
|
|
|
|
|
|
|
|
|
|
<P>
|
|
|
|
@ -198,7 +195,7 @@ boundary conditions are also available in the directory <code>examples/pdegen</c
|
|
|
|
|
|
|
|
|
|
<P>
|
|
|
|
|
|
|
|
|
|
<DIV ALIGN="CENTER"><A NAME="fig:ex2"></A><A NAME="522"></A>
|
|
|
|
|
<DIV ALIGN="CENTER"><A NAME="fig:ex2"></A><A NAME="521"></A>
|
|
|
|
|
<TABLE>
|
|
|
|
|
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 3:</STRONG>
|
|
|
|
|
setup of a multi-level preconditioner</CAPTION>
|
|
|
|
@ -231,7 +228,7 @@ setup of a multi-level preconditioner</CAPTION>
|
|
|
|
|
|
|
|
|
|
<P>
|
|
|
|
|
|
|
|
|
|
<DIV ALIGN="CENTER"><A NAME="fig:ex3"></A><A NAME="524"></A>
|
|
|
|
|
<DIV ALIGN="CENTER"><A NAME="fig:ex3"></A><A NAME="523"></A>
|
|
|
|
|
<TABLE>
|
|
|
|
|
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 4:</STRONG>
|
|
|
|
|
setup of a multi-level preconditioner</CAPTION>
|
|
|
|
@ -241,14 +238,13 @@ setup of a multi-level preconditioner</CAPTION>
|
|
|
|
|
<TR><TD>
|
|
|
|
|
<PRE>
|
|
|
|
|
... ...
|
|
|
|
|
! build a W-cycle preconditioner with 2 Gauss-Seidel sweeps as
|
|
|
|
|
! pre- and post-smoother, a distributed coarsest
|
|
|
|
|
! build a W-cycle preconditioner with 2 hybrid Gauss-Seidel sweeps
|
|
|
|
|
! as pre- and post-smoother, a distributed coarsest
|
|
|
|
|
! matrix, and MUMPS as coarsest-level solver
|
|
|
|
|
call P%init('ML',info)
|
|
|
|
|
call P%set('ML_TYPE','WCYCLE',info)
|
|
|
|
|
call P%set('SMOOTHER_TYPE','GS',info)
|
|
|
|
|
call P%set('SMOOTHER_SWEEPS',2,info,pos='PRE')
|
|
|
|
|
call P%set('SMOOTHER_SWEEPS',2,info,pos='POST')
|
|
|
|
|
call P%set('ML_CYCLE','WCYCLE',info)
|
|
|
|
|
call P%set('SMOOTHER_TYPE','FBGS',info)
|
|
|
|
|
call P%set('SMOOTHER_SWEEPS',2,info)
|
|
|
|
|
call P%set('COARSE_SOLVE','MUMPS',info)
|
|
|
|
|
call P%set('COARSE_MAT','DIST',info)
|
|
|
|
|
call P%hierarchy_build(A,desc_A,info)
|
|
|
|
@ -265,7 +261,7 @@ setup of a multi-level preconditioner</CAPTION>
|
|
|
|
|
|
|
|
|
|
<P>
|
|
|
|
|
|
|
|
|
|
<DIV ALIGN="CENTER"><A NAME="fig:ex4"></A><A NAME="526"></A>
|
|
|
|
|
<DIV ALIGN="CENTER"><A NAME="fig:ex4"></A><A NAME="525"></A>
|
|
|
|
|
<TABLE>
|
|
|
|
|
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 5:</STRONG>
|
|
|
|
|
setup of a one-level Schwarz preconditioner.</CAPTION>
|
|
|
|
|