Took a little more time than I expected but the branch 
barry/extend-pcmg-galerkin now supports 

PCMGSetGalerkin() and -pc_mg_galerkin now take 
PC_MG_GALERKIN_BOTH,PC_MG_GALERKIN_PMAT,PC_MG_GALERKIN_MAT, PC_MG_GALERKIN_NONE 
as arguments instead of PetscBool
This allows computing either mat, or pmat or both via the Galerkin process

so you should be able to provide A and M with KSPSetOperators() and then run 
with -pc_mg_galerkin both to get both generated on the coarse meshes via the 
Galekin process.  Note that if you use the additional option -pc_use_amat false 
it will use only the M for both mat and pmat in the multigrid process (while A 
is only used for the outer Krylov solver definition of the operator.) For some 
problems this is actually a better approach.


  Please let me know if you have any difficulties with it.

Barry

> On Jul 22, 2016, at 3:42 AM, domenico lahaye <[email protected]> 
> wrote:
> 
> Dear Barry, 
>  
>   Thank you for your suggestion. 
>  
>   I will be happy to test drive the new code when available. 
> 
>   Kind wishes, Domenico. 
> 
> 
> 
> From: Barry Smith <[email protected]>
> To: Lawrence Mitchell <[email protected]> 
> Cc: domenico lahaye <[email protected]>; PETSc Users List 
> <[email protected]>
> Sent: Friday, July 22, 2016 1:41 AM
> Subject: Re: [petsc-users] Regarding ksp ex42 - Citations
> 
> 
>   I'll add support for handling both A and M via Galerkin. It is easy to 
> write the code, picking a good simple API that doesn't break anything is more 
> difficult.  I'm leaning to change PCMGSetGalerkin(PC,PetscBool) to 
> PCMGSetGalerkin(PC, PCMGGalerkinType) where 
> 
> typedef enum { PC_MG_GALERKIN_BOTH,PC_MG_GALERKIN_PMAT,PC_MG_GALERKIN_MAT, 
> PC_MG_GALERKIN_NONE
> } PCMGGalerkinType;
> 
> Barry
> 
> 
> 
> > On Jul 21, 2016, at 6:09 AM, Lawrence Mitchell 
> > <[email protected]> wrote:
> > 
> > 
> >> On 21 Jul 2016, at 10:55, domenico lahaye <[email protected]> 
> >> wrote:
> >> 
> >> Apologies for being not sufficient clear in my previous message.
> >> 
> >> I would like to be able to Galerkin coarsen A^h to obtain A^H
> >> and to separately Galerkin coarsen M^h to obtain M^H.
> >> 
> >> So, yes, the way in which I currently (partially) understand your
> >> description of the new DMCreateMatrices would do the job.
> > 
> > If you want to separately coarsen A and M via Galerkin, I think it will be 
> > easier to just change the code in PCSetUp_MG to handle the case where A and 
> > M are different on the coarse levels.  Effectively you just need to 
> > replicate the code that computes the coarse grid "B" matrix to separately 
> > compute coarse grid A and B matrices and pass them in to KSPSetOperators.
> > 
> > Cheers,
> > 
> > Lawrence
> > 
> 
> 

Reply via email to