[petsc-dev] Copy *SNES-struct deeply
Johannes Lotz
lotz at stce.rwth-aachen.de
Mon Mar 4 06:40:58 CST 2013
Ok. Appendix:
just to make our use case clear --
we need to solve the same nonlinear system completely out of the context
the original system was solved. That means we have to copy ALL data
needed for that.
I.e. we need to save a checkpoint that enables us to re-run exactly the
same piece of code (nonlinear system solve) as often as we want --
regardless of what happens after the original execution of the nonlinear
solver and regardless of what happens to the original snes-object. Of
cource we stick in the same initial x and the same right hand side b
during the re-run. And we additionally assume the MPI-world to be still
intact.
I don't know if there are other use cases requiring such a
functionality. But the application of algorithmic (or automatic)
differentiation onto petsc (that is what we're working on) will require
checkpoints on and on again.
So until now -- as I understood -- there's no such Clone()-routine,
which is fine -- we will have to deal with this contraint. Just wanted
to be sure to not have missed sth. ...
- Johannes
On 02/28/2013 01:41 PM, Matthew Knepley wrote:
> On Thu, Feb 28, 2013 at 7:10 AM, Jed Brown <jedbrown at mcs.anl.gov
> <mailto:jedbrown at mcs.anl.gov>> wrote:
>
>
> On Thu, Feb 28, 2013 at 6:50 AM, Matthew Knepley
> <knepley at gmail.com <mailto:knepley at gmail.com>> wrote:
>
> Ah, its specialized:
>
> https://bitbucket.org/petsc/petsc-dev/src/923de80728797e2783dffed96365fada710347b8/include/petscdmplex.h?at=default#cl-23
>
> Is there an objection to me promoting this?
>
>
> Matt, your current implementation is sort of a mix of shallow
> (with respect to private DM_Plex stuff) clone and deep/rebuilt
> (with respect to DM stuff like defaultSection). I think it's worth
> making consistent, but safe sharing semantics are tricky to
> specify. I think DMDA will be somewhat involved regardless of the
> desired semantics.
>
>
> I think that was justified when PetscSection was just considered data
> like PetscLayout. However, now that it
> is an object, we should reconsider.
>
> Unfortunately, I think sharing the default section between clone could
> be very error prone. I am currently using
> Clone() to share the large mesh data structures in the back end, but
> do not want any sharing of the sections. I
> think this would be the common use case.
>
> Matt
>
> --
> 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
More information about the petsc-dev
mailing list