DMPlexCreateSquareBoundary naively seems to

1. Create topology only on rank 0.
2. Set positions on all ranks.

In particular, if seems to allocate space proportional to the entire
number of vertices on every rank:

  ierr = PetscSectionGetStorageSize(coordSection, &coordSize);CHKERRQ(ierr);
  ierr = VecCreate(PetscObjectComm((PetscObject)dm),
&coordinates);CHKERRQ(ierr);
  ierr = VecSetSizes(coordinates, coordSize, PETSC_DETERMINE);CHKERRQ(ierr);

How does this code work?  It's clearly intended to be callable in a
parallel context given that it has a !rank conditional, and works as
part of various examples, so I'm clearly missing something.

Geoffrey

Reply via email to