[petsc-users] VecView DMDA and HDF5 - Unable to write out files properly

Matteo Semplice matteo.semplice at uninsubria.it
Thu Oct 14 08:21:49 CDT 2021


Il 14/10/21 14:37, Matthew Knepley ha scritto:
> On Wed, Oct 13, 2021 at 6:30 PM Abhishek G.S. 
> <gsabhishek1ags at gmail.com <mailto:gsabhishek1ags at gmail.com>> wrote:
>
>     Hi,
>     I need some help with getting the file output working right.
>
>     I am using a DMDACreate3D to initialize my DM. This is my write
>     function
>
>     void write(){
>     PetscViewer viewer;
>     PetscViewerHDF5Open(PETSC_COMM_WORLD,filename.c_str(),FILE_MODE_WRITE,&viewer);
>     DMDAVecRestoreArray(dm,global_vector,global_array)
>     VecView(global_vec, viewer);
>     DMDAVecGetArray(dm,global_vector,global_array);
>     PetscViewerDestroy(&viewer);
>     }
>
>     1) I have 2 PDE's to solve. Still, I went ahead creating a single
>     DM with dof=1 and creating two vectors using the
>     DMCreateGlobalVector(). I want to write the file out
>     periodically.  Should I perform DMDAVecRestoreArray and
>     DMDAVecGetArray every time is write out the global_vector? (I know
>     that it is just indexing the pointers and there is no copying of
>     values. But I am not sure)
>
>
> I don't think you need the Get/RestoreArray() calls here.
>
>     2) I am writing out to HDF5 format. I see that the vecview is
>     supposed to reorder the global_vector based on the DM. However,
>     when I read the H5 files, I get an error on ViSIT and my output
>     image becomes a 1D image rather than a 2D/3D. What might be the
>     reason for this ?.
>     Error Msg : "In domain 0, your zonal variable "avtGhostZones" has
>     25600 values, but it should have 160.  Some values were removed to
>     ensure VisIt runs smoothly"
>     I was using a 160x160x1 DM
>
>
> I do not believe we support HDF5 <--> Visit/Paraview for DMDA. The 
> VecView() is just writing out the vector as a linear array without 
> mesh details. For
> interfacing with the visualization, I think we use .vtu files. You 
> should be able to get this effect using
>
>   VecViewFromOptions(global_vec, NULL, "-vec_view");
>
> in your code, and then
>
>   -vec_view vtk:sol.vtu
>
> on the command line.

Hi.

If you want to stick with HDF5, you can also write a XDMF file with the 
grid information and open that in Paraview.

I am attaching some routines that I have written to do that in a solver 
that deals with a time dependent PDE system with 2 variables; with them 
I end up with a single XDMF file that Paraview can load and which 
contains references to all timesteps in my simulations, with each 
timestep being contained in an HDF5 file on its own. The idea is to call 
writeDomain at the beginning of the simulation, writeHDF5 for each 
timestep that I want to save and writeSimulationXDMF at the end. 
(Warning: 3D is in use, while 2D ia almost untested...)

It's not the optimal solution since (1) all timesteps could be in the 
same HDF5 and (2) in each HDF5 i write the vectors separately and it 
would be better to dump the entire data in one go and interpret them as 
a Nx*Ny*Nz*Nvariables data from the XDMF. Nevertheless they might be a 
starting point for you if you wan to try this approach.

Matteo

>     3) I tried using the "petsc_gen_xdmf.py" to generate the xdmf
>     files for use in Paraview. Here the key ["viz/geometry"] is
>     missing. The keys present in the output H5 file are just the two
>     vectors I am writing and has no info about mesh. Isn't this
>     supposed to come automatically since the vector is attached to the
>     DM? How do I sort this out?
>
>
> This support is for unstructured grids, DMPlex and DMForest.
>
>     4) Can I have multiple vectors attached to the DM by
>     DMCreateGlobalVector() even though I created the DMDA using dof=1.
>
>
> Yes.
>
>   Thanks,
>
>      Matt
>
>     thanks,
>     Abhishek
>
>
>
> -- 
> 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/ 
> <https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.cse.buffalo.edu%2F~knepley%2F&data=04%7C01%7Cmatteo.semplice%40uninsubria.it%7Cf27a34f639784d0231c708d98f0f7279%7C9252ed8bdffc401c86ca6237da9991fa%7C0%7C0%7C637698118789688898%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=Xb8nyv7BIl6zSBbbLFkQzluIF8s%2BOLwUQeVfjtr3q4k%3D&reserved=0>

-- 
---
Professore Associato in Analisi Numerica
Dipartimento di Scienza e Alta Tecnologia
Università degli Studi dell'Insubria
Via Valleggio, 11 - Como

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20211014/ac717091/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: hdf5Output.cpp
Type: text/x-c++src
Size: 9482 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20211014/ac717091/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: hdf5Output.h
Type: text/x-chdr
Size: 1085 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20211014/ac717091/attachment-0001.bin>


More information about the petsc-users mailing list