[petsc-dev] getting data out of a PetscFE simulation

Matthew Knepley knepley at gmail.com
Tue Jan 28 22:40:23 CST 2014


That's right. We need to change all the examples.

   Matt
On Jan 28, 2014 10:25 PM, "Jed Brown" <jed at jedbrown.org> wrote:

> Matthew Knepley <knepley at gmail.com> writes:
>
> > On Tue, Jan 28, 2014 at 9:41 PM, Jed Brown <jed at jedbrown.org> wrote:
> >
> >> Matthew Knepley <knepley at gmail.com> writes:
> >> > In ex62:
> >> >
> >> >   if (user.runType == RUN_FULL) {
> >> >     PetscViewer viewer;
> >> >     Vec         uLocal;
> >> >     const char *name;
> >> >
> >> >     ierr = PetscViewerCreate(PETSC_COMM_WORLD, &viewer);CHKERRQ(ierr);
> >> >     ierr = PetscViewerSetType(viewer, PETSCVIEWERVTK);CHKERRQ(ierr);
> >> >     ierr = PetscViewerSetFormat(viewer,
> >> > PETSC_VIEWER_ASCII_VTK);CHKERRQ(ierr);
> >> >     ierr = PetscViewerFileSetName(viewer,
> "ex62_sol.vtk");CHKERRQ(ierr);
> >>
> >> Please don't do this.  Just set the type to PETSCVIEWERVTK, set the file
> >> name to some *.vtu; the VTK viewer will infer output format from
> >> extension and write the VTU XML format with binary-appended data in a
> >> fairly fast and memory-scalable way.  Then
> >>
> >>   VecView(u,viewer);
> >
> >
> > I think Jed is wrong here. You need to be using local vectors since
> > they have BC and constraints in them. Please explain how your VTU
> > format will magically put them in.
>
> We made this work when I threw a temper tantrum while we were writing TS
> ex11.c (late 2012).
>
> PetscErrorCode VecView_Plex(Vec v, PetscViewer viewer)
> {
>   DM             dm;
>   PetscBool      isvtk;
>   PetscErrorCode ierr;
>
>   PetscFunctionBegin;
>   ierr = VecGetDM(v, &dm);CHKERRQ(ierr);
>   if (!dm) SETERRQ(PetscObjectComm((PetscObject)v), PETSC_ERR_ARG_WRONG,
> "Vector not generated from a DM");
>   ierr = PetscObjectTypeCompare((PetscObject) viewer, PETSCVIEWERVTK,
> &isvtk);CHKERRQ(ierr);
>   if (isvtk) {
>     Vec         locv;
>     const char *name;
>
>     ierr = DMGetLocalVector(dm, &locv);CHKERRQ(ierr);
>     ierr = PetscObjectGetName((PetscObject) v, &name);CHKERRQ(ierr);
>     ierr = PetscObjectSetName((PetscObject) locv, name);CHKERRQ(ierr);
>     ierr = DMGlobalToLocalBegin(dm, v, INSERT_VALUES, locv);CHKERRQ(ierr);
>     ierr = DMGlobalToLocalEnd(dm, v, INSERT_VALUES, locv);CHKERRQ(ierr);
>     ierr = VecView_Plex_Local(locv, viewer);CHKERRQ(ierr);
>     ierr = DMRestoreLocalVector(dm, &locv);CHKERRQ(ierr);
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20140128/fe021d51/attachment.html>


More information about the petsc-dev mailing list