[dune-pdelab] Parallel (block?) preconditioners

Christian Engwer christian.engwer at uni-muenster.de
Wed Nov 2 14:12:21 CET 2011


Hi Eike,

in dune-istl the parallel run is usually different from the seq. run.
Especially for ILU. ISTL doesn't use global preconditioners, but uses
a schwarz style parallelization.

Christian

On Wed, Nov 02, 2011 at 12:52:06PM +0000, Eike Mueller wrote:
> Dear dune-pdelab list,
> 
> I have modified the overlapping ISTL backend for CG with a SSOR
> preconditioner to use an ILU0 preconditioner instead, i.e. I wrote a
> new
> 
> class ISTLBackend_OVLP_CG_ILU0 :
>   public Dune::PDELab::OVLPScalarProductImplementation<GFS>,
>   public Dune::PDELab::LinearResultStorage
> 
> [...]
> 
> The 'apply' method, where the preconditioner is initialised, looks
> like this:
> 
>      void apply(M& A, V& z, W& r, typename V::ElementType reduction)
>      {
>        typedef Dune::PDELab::OverlappingOperator<C,M,V,W> POP;
>        POP pop(c,A);
>        typedef Dune::PDELab::OVLPScalarProduct<GFS,V> PSP;
>        PSP psp(*this);
>        typedef Dune::SeqILU0<M,V,W,1> SeqPrec;
>        SeqPrec seqprec(A,steps);
>        typedef
> Dune::PDELab::OverlappingWrappedPreconditioner<C,GFS,SeqPrec> WPREC;
>        WPREC wprec(gfs,seqprec,c,this->parallelHelper());
>        int verb=0;
>        if (gfs.gridview().comm().rank()==0) verb=verbose;
>          Dune::CGSolver<V> solver(pop,psp,wprec,reduction,maxiter,verb);
>          Dune::InverseOperatorResult stat;
>          solver.apply(z,r,stat);
>          res.converged  = stat.converged;
>          res.iterations = stat.iterations;
>          res.elapsed    = stat.elapsed;
>          res.reduction  = stat.reduction;
>          res.conv_rate  = stat.conv_rate;
>        }
> 
> Now, will this create a block preconditioner (i.e. when decomposing
> the matrix A into L and U, will it treat entries A_{ij} for which i
> and j are owned by different processors as zero) or will this
> construct the 'full' incomplete LU decomposition? In other words,
> will the fill structure of the matrix in a one process run be
> identical to the preconditioner in a 4 process run (up to rounding
> errors etc)?
> I guess the same question can be asked for the SSOR preconditioner
> (ISTLBackend_OVLP_CG_SSOR), i.e. if I do 5 SSOR smoothing steps,
> will each processor relax its local domain 5 times?
> 
> Thank you very much,
> 
> Eike
> 
> _______________________________________________
> dune-pdelab mailing list
> dune-pdelab at dune-project.org
> http://lists.dune-project.org/mailman/listinfo/dune-pdelab
> 




More information about the dune-pdelab mailing list