> >> > I have structured cell-centered data and would like to visualize
> >> > this with
> >> Paraview. Up to now I use PetscViewerVTKOpen and VecView to write
> >> data in *.vts format. I would like to tell PETSc that the fieldtype
> >> is PETSC_VTK_CELL_FIELD. I have found PetscViewerVTKAddField.
> >> >
> >> > Is this the way to go? I was thinking maybe a DMDASetFieldType
> >> > exists, but
> >> did not find any. If yes, what is the PetscViewerVTKWriteFunction I
> >> need to provide?
> >>
> >> DMDA does not explicitly support distinguishing between cell and
> >> point values.  PetscViewerVTKAddField is a developer level routine
> >> and you would need to implement a function similar to
> >> DMDAVTKWriteAll_VTS (not at all trivial and you need to read the code
> >> because it is responsible for almost everything).
> >
> > I am looking at src/sys/classes/viewer/impls/vtk/vtkv.c. There is a
> reference to PETSC_VTK_POINT_FIELD vs. PETSC_VTK_CELL_FIELD. Judging
> from the output I get, I was assuming fieldtype=PETSC_VTK_POINT_FIELD. I
> would be totally fine with replacing POINT by CELL everywhere, since all my
> data is cell-centered.
> 
> I think coordinates need to be PointData, not coordinates of cell centroids.
> DMDA doesn't have that concept.  (Maybe it should, but adding it is no small
> task and hacking the output is likely to create a lot of edge cases.)
> 
I had a look at DMDAVTKWriteAll_VTS. You are totally right that this is not 
generic. www.vtk.org/VTK/img/file-formats.pdf describes the StructuredGrid 
format. "Points" contain only one DataArray specifying the coordinates whereas 
Cells contain three DataArrays with connectivity, offsets and types. 

What if I use DMDAVTKWriteAll_VTR and write a RectliniearGrid? Then I could 
just replace PointData with CellData and "hack" only the extent which should 
leave no edge cases...

Reply via email to