Please implement things properly with subclasses (subtypes) and get this crap out of the public interface files
dm/interfaces should be able to be compiled and linked even if dm/impls stuff did not exist. This mixing of particular subclass implementations and public interface functions is disgusting. Ideally we'd have nightly tests that flags this broken stuff. Barry #include <petscdmplex.h> { PetscBool isplex; ierr = PetscObjectTypeCompare((PetscObject) cdm, DMPLEX, &isplex);CHKERRQ(ierr); if (isplex) { ierr = DMPlexGetHeightStratum(cdm, 0, &cStart, &cEnd);CHKERRQ(ierr); } else SETERRQ(PetscObjectComm((PetscObject) cdm), PETSC_ERR_ARG_WRONG, "Coordinate localization requires a DMPLEX coordinate DM"); PetscBool isplex; ierr = PetscObjectTypeCompare((PetscObject) cdm, DMPLEX, &isplex);CHKERRQ(ierr); if (isplex) { ierr = DMPlexGetDepthStratum(cdm, 0, &vStart, &vEnd);CHKERRQ(ierr); ierr = DMPlexGetMaxProjectionHeight(cdm,&maxHeight);CHKERRQ(ierr); ierr = DMGetWorkArray(dm,2*(maxHeight + 1),MPIU_INT,&pStart);CHKERRQ(ierr); pEnd = &pStart[maxHeight + 1]; newStart = vStart; newEnd = vEnd; for (h = 0; h <= maxHeight; h++) { ierr = DMPlexGetHeightStratum(cdm, h, &pStart[h], &pEnd[h]);CHKERRQ(ierr); newStart = PetscMin(newStart,pStart[h]); newEnd = PetscMax(newEnd,pEnd[h]); > On Mar 11, 2018, at 4:21 PM, Matthew Knepley <knep...@gmail.com> wrote: > > This stuff is in DM because two concepts need to be promoted to DM. They are > already both in DA and Plex: > > 1) GlobalToNatural, which is in dmi.c > > 2) Coordinates, in particular periodic coordinates, which is in dm.c > > Removing these means adding 1 or 2 functions to dmimpl > > Matt > > > On Mon, Mar 12, 2018 at 3:06 AM, Smith, Barry F. <bsm...@mcs.anl.gov> wrote: > > > > > -- > 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/