Commits

Jed Brown committed 2256686

DMPlexDistribute: fix label distribution

This old code was not advancing to the next label when it finds "depth"
(which is not distributed), thus it just compared "depth" multiple times
and never checked the other label names.

Comments (0)

Files changed (1)

src/dm/impls/plex/plex.c

       if (!rank) {ierr = PetscMemcpy(name, next->name, nameSize+1);CHKERRQ(ierr);}
       ierr = MPI_Bcast(name, nameSize+1, MPI_CHAR, 0, comm);CHKERRQ(ierr);
       ierr = PetscStrcmp(name, "depth", &isdepth);CHKERRQ(ierr);
-      if (isdepth) {ierr = PetscFree(name);CHKERRQ(ierr); continue;}
+      if (isdepth) {            /* skip because "depth" is not distributed */
+        ierr = PetscFree(name);CHKERRQ(ierr);
+        if (!rank) next = next->next;
+        continue;
+      }
       ierr           = PetscNew(struct _n_DMLabel, &newLabel);CHKERRQ(ierr);
       newLabel->name = name;
       /* Bcast numStrata (could filter for no points in stratum) */