[petsc-users] DMPLEX Field name changes after getting a Vec

Matthew Knepley knepley at gmail.com
Wed Apr 1 06:15:50 CDT 2020


On Wed, Apr 1, 2020 at 5:34 AM Pierre Seize <pierre.seize at onera.fr> wrote:

> Hello everyone.
>
> I noticed a strange feature, and I don't know if it is a small bug or if
> it is expected behaviour.
>
> I have a DMPLEX read from a file, and I add a PetscFV field to it. For
> debugging purposes I want to name this PetscFV with PetscObjectSetName. But
> when later I create a global vector, the name of the field gets erased. Is
> it to be expected ?
>
> You are right. It is a bug. I have made a merge request for this fix here:

  https://gitlab.com/petsc/petsc/-/merge_requests/2670

and it seems to work on your example:

master *:~/Downloads/tmp/Pierre$ ./names

DM Object: Mesh 1 MPI processes

  type: plex

Mesh in 0 dimensions:

Labels:

  celltype: 0 strata with value/size ()

Field FV Model:

  adjacency FVM

DM Object: Mesh 1 MPI processes

  type: plex

Mesh in 0 dimensions:

Labels:

  celltype: 0 strata with value/size ()

Field FV Model:

  adjacency FVM

The reason for this behavior was that originally, FEM people named the
fields individually, but
FV people tended to have one field with the physical fields being
components so that they could
have a single Riemann solve for all fields. Now you can name field
components, so this does not
matter anymore.

Thanks,

   Matt

> Here is a minimal working example:
>
> #include <petscdmplex.h>
> int main(int argc, char **argv){
>   PetscErrorCode    ierr;
>
>   DM      dm;
>   PetscFV fvm;
>   Vec     x;
>
>   ierr = PetscInitialize(&argc, &argv, NULL, NULL); if (ierr) return ierr;
>   ierr = DMCreate(PETSC_COMM_WORLD, &dm);                   CHKERRQ(ierr);
>   ierr = DMSetType(dm, DMPLEX);                             CHKERRQ(ierr);
>   ierr = PetscFVCreate(PETSC_COMM_WORLD, &fvm);             CHKERRQ(ierr);
>   ierr = DMAddField(dm, NULL, (PetscObject) fvm);           CHKERRQ(ierr);
>   ierr = PetscObjectSetName((PetscObject) fvm, "FV Model"); CHKERRQ(ierr);
>   ierr = DMView(dm, PETSC_VIEWER_STDOUT_WORLD);             CHKERRQ(ierr);
> <- Here the field is named "FV Model"
>   ierr = DMCreateGlobalVector(dm, &x);                      CHKERRQ(ierr);
>   ierr = DMView(dm, PETSC_VIEWER_STDOUT_WORLD);             CHKERRQ(ierr);
> <- Here the field is named "Field_0"
>
>
>   ierr = VecDestroy(&x);       CHKERRQ(ierr);
>   ierr = PetscFVDestroy(&fvm); CHKERRQ(ierr);
>   ierr = DMDestroy(&dm);       CHKERRQ(ierr);
>   ierr = PetscFinalize();
>   return ierr;
> }
>


-- 
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/ <http://www.cse.buffalo.edu/~knepley/>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20200401/c601fbc0/attachment.html>


More information about the petsc-users mailing list