Hello

I noticed DMPlexCreateFromFile ignores the interpolate flag for HDF5. It's the 
only format for which PetscViewer API is used for loading, and this API has no 
means to specify interpolation. I guess there should be at least

    if (interpolate) {
      DM idm = NULL;

      ierr = DMPlexInterpolate(*dm, &idm);CHKERRQ(ierr);
      ierr = DMPlexCopyCoordinates(*dm, idm);CHKERRQ(ierr);
      ierr = DMCopyLabels(*dm, idm);CHKERRQ(ierr);
      ierr = DMDestroy(dm);CHKERRQ(ierr);
      *dm = idm;
    }

in DMPlexCreateFromFile after the DMLoad call.

This brings me to more general thing to discuss. The behavior of different mesh 
constructors for interpolate=PETSC_TRUE is not unified. The most elaborate 
behavior is in DMPlexCreateDoublet which after DMPlexInterpolate also copies 
the DM name, coordinates and labels. So I suggest all this stuff is done in 
DMPlexInterpolate.

BTW I think it's kind of weird the output DM passed to DMPlexInterpolate must 
me nullified - cf. MatReuse. 

Vaclav

Reply via email to