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.
> On Dec 1, 2021, at 4:37 PM, Abhyankar, Shrirang G > <[email protected]> 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 <[email protected] <mailto:[email protected]>> > Date: Wednesday, December 1, 2021 at 3:19 PM > To: "Knepley, Matthew G (VISIT)" <[email protected] > <mailto:[email protected]>>, PETSc Development <[email protected] > <mailto:[email protected]>>, "Abhyankar, Shrirang G" > <[email protected] <mailto:[email protected]>>, "Zhang, > Hong" <[email protected] <mailto:[email protected]>>, Getnet Betrie > <[email protected] <mailto:[email protected]>> > 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 DMPLEX > and hence DMNETWORK. > > 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.
