[petsc-dev] Telescope usage

Matthew Knepley knepley at gmail.com
Mon May 16 17:12:23 CDT 2022


On Mon, May 16, 2022 at 9:59 AM Loic Gouarin <loic.gouarin at polytechnique.edu>
wrote:

> 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.
>
> Hi Loic!

Here is my guess. When TELESCOPE redistributes the coarse grid DMDA, it
creates a new DMDA and copies over all the information it can see. However,
I think you may have state that is attached to the old DMDA that is not
getting redistributed. If this is true, I can help you write a hook that
redistributes that state when TELESCOPE maps between distributions.

   Thanks,

     Matt


> Thanks,
>
> Loic
>
>
>   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
>
>
>
>

-- 
What most experimenters take for granted before they begin their
experiments is infinitely more interesting than any results to which their
experiments lead.
-- Norbert Wiener

https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20220516/2701f3cb/attachment.html>


More information about the petsc-dev mailing list