[petsc-users] DMPLEX Field name changes after getting a Vec
Pierre Seize
pierre.seize at onera.fr
Wed Apr 1 08:46:03 CDT 2020
Thank you, the fix works fine indeed.
Pierre Seize
Le 2020-04-01 13:15, Matthew Knepley a écrit :
> 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/ [1]
Links:
------
[1] http://www.cse.buffalo.edu/~knepley/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20200401/601a06c5/attachment.html>
More information about the petsc-users
mailing list