[petsc-dev] DMPLEX cannot support two different edges for the same two vertices, hence DMPLEX cannot?

Matthew Knepley knepley at gmail.com
Wed Dec 1 16:07:30 CST 2021

On Wed, Dec 1, 2021 at 4:51 PM Barry Smith <bsmith at petsc.dev> wrote:

>   It may not happen with one rank. Or it may.
>   With more than one rank one may run a code and think it is working
> correctly but that does not mean the PetscSF is correct. It is generating
> "extra" degrees of freedom for these vertices each associated with a
> different edge and not properly connecting them. You can tell by doing a
> full DMView on the dmplex and PetscSF and seeing more roots than there
> should be listed. Hence the numerics will be wrong even though it does not
> crash or complain.

Okay, I think we need specific tests to see what is going on.

Theoretically, having multiple edges between vertices does not make sense
since the edge _means_ (v_i, v_j) topologically. You can certainly have
many fields on a given edge, but I don't know what it would mean to have
two edges since no topological query could tell the difference.

However, you can certainly tell Plex anything you want to tell it.
DMPlexBuildFromCellListParallel() gets only cells and vertices, so you are
saying that there is a duplicate cell. That is allowed and should work
properly, EXCEPT if you wanted to identify a cell only by its cone (then
you could not tell them apart). I do this for faces, but I did not think I
ever did it for cells.



> On Dec 1, 2021, at 4:37 PM, Abhyankar, Shrirang G <
> shrirang.abhyankar at pnnl.gov> wrote:
> Barry,
> “Is there anything we can do to support having multiple edges between the
> same two vertices”
> Some of my power grid datasets have multiple edges between the same two
> vertices and I’ve not faced an issue with DMNetwork. However, all the data
> was read on rank 0 only (and then distributed).
> Maybe the issue is with the edges being passed on different ranks?
> Thanks,
> Shri
> *From: *Barry Smith <bsmith at petsc.dev>
> *Date: *Wednesday, December 1, 2021 at 3:19 PM
> *To: *"Knepley, Matthew G (VISIT)" <knepley at gmail.com>, PETSc Development
> <petsc-dev at mcs.anl.gov>, "Abhyankar, Shrirang G" <
> shrirang.abhyankar at pnnl.gov>, "Zhang, Hong" <hzhang at mcs.anl.gov>, Getnet
> Betrie <gbetrie at anl.gov>
> *Subject: *DMPLEX cannot support two different edges for the same two
> vertices, hence DMPLEX cannot?
> Check twice before you click! This email originated from outside PNNL.
>    Matt,
>      If DMPlexBuildFromCellListParallel() is called with two edges that
> have the same two vertices what will happen? It looks like it ends up with
> an incorrect PetscSF if the two edges are passed on different ranks. Hence
> the DMPLEX is not valid and produces garbage.
>      Neurons can be connected to themselves which seems to be breaking
>      Is there anything we can do to support having multiple edges between
> the same two vertices? If not is there a way we can have
> DMPlexBuildFromCellListParallel() generate an error automatically if there
> are such extra edges in the input data.
>    Thanks
>   Barry
> In this work, the neurons are represented by vertices in the network and
> each synapse is a graph edge.

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/20211201/973ada96/attachment.html>

More information about the petsc-dev mailing list