Thanks for explaining all .? Purpose is to implement an adapted deflation preconditioner.? Basically, it has nothing to do more with multigrid algorithm.? To have PETSC codes, i was left out to use PCMG framework to implment this.?
? 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. Does C_c mean recursive action ? if so, then fine!? Setting M^-1 preconditioner in ksp_post context with what ksp_type ? ?to my understanding, Richardson ? ?Just need an endorsement this time.? Thank you! regards, Abdul >________________________________ > From: Barry Smith <bsmith at mcs.anl.gov> >To: Abdul Hanan Sheikh <hanangul12 at yahoo.co.uk>; PETSc users list ><petsc-users at mcs.anl.gov> >Cc: Jed Brown <jedbrown at mcs.anl.gov> >Sent: Thursday, 5 April 2012, 20:27 >Subject: Re: [petsc-users] Implementation of Multilevel preconditioner > > >? ? >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. >> >> > > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20120405/a7ebd0ee/attachment-0001.htm>
