[petsc-users] VTKViewer with petsc4py

Lisandro Dalcin dalcinl at gmail.com
Fri Jul 30 21:10:13 CDT 2010


On 30 July 2010 21:13, Blaise Bourdin <bourdin at lsu.edu> wrote:
> Hi,
>
> Is PetscViewerSetFormat implemented in petsc4py (I am using petsc-3.1-p3 and petsc4py-1.1)?

Viewer.setFormat() is certainly available.

> I am trying to save a DA and Vec in vtk format, but can't figure out the python equivalent to
> PetscViewerSetFormat(VTKViewer,PETSC_VIEWER_ASCII_VTK).
>

However, it seems I missed to add Viewer.Format.ASCII_VTK. As a
workaround, you could do:

viewer.setFormat(11) # "11" is the corresponding enum value from petscviewer.h

Alternatively, you could monkeypatch like below at the beginning of your code:

from petsc4py import PETSc
PETSc.Viewer.Format.ASCII_VTK = 11


> My C code would be
>  ierr = PetscViewerCreate(PETSC_COMM_WORLD,&VTKViewer);CHKERRQ(ierr);
>  ierr = PetscViewerSetType(VTKViewer,PETSC_VIEWER_ASCII);CHKERRQ(ierr);
>  ierr = PetscViewerFileSetName(VTKViewer,filename);CHKERRQ(ierr);
>  ierr = PetscViewerSetFormat(VTKViewer,PETSC_VIEWER_ASCII_VTK);CHKERRQ(ierr);
>
>  ierr = DAView(da,VTKViewer);CHKERRQ(ierr);
>  ierr = VecView(U,VTKViewer);CHKERRQ(ierr);
>
> What would be the python equivalent?
>

vtkviewer = PETSc.Viewer().create(PETSc.COMM_WORLD)
vtkviewer.setType('ascii') # or pass PETSc.Viewer.Type.ASCII
vtkviewer.setFileName(filename)
vtkviewer.setFromat(PETSc.Viewer.Format.ASCII_VTK) # of course,
requires previous hack.


However, this way is simpler:

vtkviewer = PETSc.Viewer().createASCII(
    filename, format=PETSc.Viewer.Format.ASCII_VTK,
    comm= PETSc.COMM_WORLD)


PS:  I'll add the missing format enumerate ASAP to petsc4py-dev,
branch release-1-1. I'm near to make a micro release with a bunch of
fixes, I´m just waiting for Cython 0.13 to be released.

-- 
Lisandro Dalcin
---------------
CIMEC (INTEC/CONICET-UNL)
Predio CONICET-Santa Fe
Colectora RN 168 Km 472, Paraje El Pozo
Tel: +54-342-4511594 (ext 1011)
Tel/Fax: +54-342-4511169


More information about the petsc-users mailing list