[petsc-dev] Telescope usage

Loic Gouarin loic.gouarin at polytechnique.edu
Mon May 16 14:59:21 CDT 2022

Le 16/05/2022 à 21:54, Barry Smith a écrit :
>> On May 16, 2022, at 3:50 PM, Loic Gouarin 
>> <loic.gouarin at polytechnique.edu> wrote:
>> Thanks Barry for your quick reply.
>> Le 16/05/2022 à 21:41, Barry Smith a écrit :
>>>   Loic,
>>>     From your code it looks like you are using a DM. Is it a DMDA or 
>>> a shell DM? If it is a DMDA then the process is intended to be 
>>> pretty straightforward. PCTELESCOPE should create a new DMDA that 
>>> has the same properties as the coarse grid DMDA but lives on a 
>>> smaller number of ranks. From this you can just provide multiple 
>>> levels of coarsening of the DMDA to produce the smaller multigrid 
>>> problems.
>> It's a DMDA. So what you mean is to take the KSP of PCTELESCOPE, get 
>> the DM which is the same of the coarse grid and build all the levels 
>> as previously for the levels of PCTELESCOPE ?
>   Yes, I think you should be able to pull out of the coarse level PC 
> (on the subset of ranks) a DM that and then setup coarse levels from 
> that. But you need to look at an example that that uses telescope and 
> probably even the telescope code itself to see all the details. I 
> don't know them anymore.

I looked at the source code but It didn't help. I will try to explain 
more clearly my experiments to understand what I make wrong and you can 
help more easily.



>   Barry
>>>    Can you let us know more details of what exactly goes wrong with 
>>> attempts? It is likely straightforward to get things working, 
>>> perhaps due to our unclear documentation.
>> I essentially have wrong state or NULL matrices into the PCTELESCOPE.
>> Loic
>>>   Barry
>>>> On May 16, 2022, at 3:28 PM, Loic Gouarin 
>>>> <loic.gouarin at polytechnique.edu> wrote:
>>>> Hello,
>>>> I could have posted my message on the user list but it seems to me 
>>>> that it's more in the petsc development part. Don't hesitate to 
>>>> tell me if I'm wrong.
>>>> I am developing a code called cafes that studies fluid-particle 
>>>> interactions in a Stokes fluid. For that, we implemented the whole 
>>>> solver in matrix free on a cartesian grid. The preconditioner is 
>>>> naturally a geometrical multigrid for the velocity. The set of 
>>>> matrix free for each level is set by hand (I worked with Matthew on 
>>>> this a long time ago now!).
>>>> I would have liked to implement telescope on this part. I started 
>>>> it but I didn't get out of it. So I would like to have your help.
>>>> What I tried to do was to describe my classical multigrid up to a 
>>>> level N1 and then take the coarse solver and apply the telescope 
>>>> preconditioner to it up to a level N2. I don't know if this is the 
>>>> best way but it seemed the most intuitive. The problem is that I 
>>>> could not get the coarse matrix because the setup is not done yet 
>>>> (I use a DMKSPSetComputeOperators for the matrices).
>>>> The construction of the matrix free for each level is here: 
>>>> https://github.com/gouarin/cafes/blob/master/cafes/problem/stokes.hpp#L59-L88
>>>> The description of the Stokes preconditioner is described here : 
>>>> https://github.com/gouarin/cafes/blob/master/cafes/problem/stokes.hpp#L109-L162
>>>> I have tried multiple implementations without success. For me, the 
>>>> start is to add at line 105 something like
>>>> KSP coarse;
>>>> ierr = PCMGGetCoarseSolve(pc_i, &coarse);CHKERRQ(ierr);
>>>> PC pc_coarse;
>>>> ierr = KSPGetPC(coarse, &pc_coarse);CHKERRQ(ierr);
>>>> ierr = PCSetType(pc_coarse, PCTELESCOPE);CHKERRQ(ierr);
>>>> Then, to create the several matrices of the levels of TELESCOPE, I 
>>>> thought using the same process as before with 
>>>> DMKSPSetComputeOperators. But it doesn't work...
>>>> Could you tell me how I can make it work ?
>>>> Thanks,
>>>> Loic
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20220516/c4dafbdf/attachment-0001.html>

More information about the petsc-dev mailing list