On Apr 5, 2012, at 1:12 PM, Abdul Hanan Sheikh wrote:

> Hi,, 
> Thanks for more details!! 
> Recursive two level multigrid  (by using PCMG with my desired stuff in it, in 
> PCSHELL) is okay. I will do it recursively. 
> No Problem with recursion and nested iterations. 
> Coming to two level, 
> How can I get exactly Prec = C +  M^-1 (I - A*C) in a two level multigrid ? 
> What should be specific choice of pre_smoother_ksp_context and 
> post_smoother_ksp_context 
> to get the "Prec" ? 
> what operators should be chosen in these two ksp contexts ? 

   If you truly want this form exactly; then it is 0 iterations of a pre-smooth 
and the KSP you set for the coarse mesh is C_c while you set the M^-1 apply 
shell to post-smooth KSP.

   I see Jed just wrote "This is just -pc_mg_type kaskade (zero pre-smoothing 
iterations, one post-smoothing iteration)."  This is also correct and just a 
different way of expressing the same thing.


    Barry

What motivates you to use this form? It is non-standard. Normal multigrid with 
a pre-smooth and post-smooth (both M^-1) can be written algebraically as 

M^-1   + (I - M^-1A)C(I- AM^-1)  which also equals M^-1 + C - CAM^-1 - M^-1A C 
+ M^-1 A C A M^-1

Note that I don't view writing the operations out this way as particularly 
informative (for example witing it as C +  M^-1 (I - A*C)), it conceals the 
fact that your algorithm first projects the error onto the coarse grid space 
and then projects the new error onto some fine grid space. Normal multigrid 
with a pre and post first projects the error onto some fine grid space, then 
projects the new error onto the coarse grid space then projects the newest 
error onto the fine grid space again.
    
> 
> 
> Awiaitng, 
> with regards, Abdul
> 
> 
> 
> 
> 
> 
> 
> 
> From: Jed Brown <jedbrown at mcs.anl.gov>
> To: PETSc users list <petsc-users at mcs.anl.gov> 
> Cc: Abdul Hanan Sheikh <hanangul12 at yahoo.co.uk> 
> Sent: Thursday, 5 April 2012, 17:56
> Subject: Re: [petsc-users] Implementation of Multilevel preconditioner
> 
> On Thu, Apr 5, 2012 at 08:38, Barry Smith <bsmith at mcs.anl.gov> wrote:
>    C +  M^-1 (I - A*C)   is exactly a multiplicative Schwarz method with two 
> preconditioners. Or in another way to put it it is exactly a two level 
> multigrid so you can use PCMG in a straightforward way.
> 
> It looks to me like he wants to do nested iteration with recursive coarse 
> levels rather than just iteration in a smoother.
> 
> I need the accuracy at first and somehow at second coarse level. 
> After these two levels, the number of iterations at each level till coarsest 
> is constantly one.  
> 
> Okay, but one iteration of a preconditioned Krylov method is still two 
> preconditioner applications, so the method would still be exponential in the 
> number of levels. If Richardson iteration is okay, you can use 
> -pc_mg_cycle_type w to do two iterations instead of 1. The code would 
> actually work fine with increasing this further, but it looks like you would 
> currently have to cheat a bit to get many recursive cycles.
> 
> PCMGSetCycleType(pc,(PCMGCycleType)5);
> 
> There is currently no interface for setting a different number of cycles on 
> each level, but you could include mgimpl.h and change the levels->cycles 
> manually.
> 
> Note that W cycles are already often considered to be too much work on coarse 
> levels to justify in a parallel setting, so it's somewhat unlikely that 
> running more coarse level iterations will really be better than a more 
> standard multigrid with stronger smoothers.
> 
> 

Reply via email to