[petsc-dev] Checkpoint-restart with DMPlex objects

Lawrence Mitchell wence at gmx.li
Mon Dec 17 10:54:10 CST 2018


Hi Matt, all,

> On 14 Dec 2018, at 19:54, Matthew Knepley <knepley at gmail.com> wrote:
> 
> On Fri, Jul 20, 2018 at 5:34 AM Lawrence Mitchell <wence at gmx.li> wrote:
> Dear petsc-dev,
> 
> I'm once again revisiting doing "proper" checkpoint-restart cycles.  I would like to leverage the existing PETSc stuff for this as much as possible, but I am a bit lost as to what is implemented, and what is missing.
> 
> I have:
> 
> - A (distributed) DMPlex defining the topology
> 
> - Some number of fields defined on this topology, each described by:
> 
>   - a Section (with a point permutation set)
>   - a Vec of coefficients
>   - Some extra information that describes what the coefficients mean, but let's assume I know how to handle that.
> 
> (Aside, for Vecs with a block size > 1, I actually have a section that indexes the blocks, which probably means I need to unroll into an unblocked version first).
> 
> Sections usually are {point --> {dofs}}. Not sure how it uses blocks instead of points

Note that I use sections to construct a function space numbering, but I don't use them directly in any assembly. So I have some extra information that the Section doesn't have.

IOW, I map {point -> {# nodes}} and then separately say "there are 3 dofs at each node".

Hence the section for P1 and Vector(P1) that I get from PETSc are identical. We can argue about whether or not this is the right choice, but it's easy to unroll.

[...] Elided, local or global numbering for Sections/DMPlex objects.

> Hmm, I have to think a little bit more. Where are you at  with this now?

Exactly where I was in July when I wrote the email (which I had forgotten I wrote!).

Thanks,

Lawrence



More information about the petsc-dev mailing list