[petsc-users] Question about HDF5 Viewer and Datasets

Lucas Banting bantingl at myumanitoba.ca
Tue Jun 23 10:49:43 CDT 2020


Thank you both.

The reason the sequential one was storing multiple datasets was that the vector was created and destroyed each time step, so the name was changing in the hdf5 file as the pointer for the vector was changing.
Neither version originally was ever calling SetTimeStep, which I have since added and it appears to be working as intended.
________________________________
From: Matthew Knepley <knepley at gmail.com>
Sent: Tuesday, June 23, 2020 8:15 AM
To: Lucas Banting <bantingl at myumanitoba.ca>
Cc: PETSc <petsc-users at mcs.anl.gov>
Subject: Re: [petsc-users] Question about HDF5 Viewer and Datasets

On Tue, Jun 23, 2020 at 8:56 AM Lucas Banting <bantingl at myumanitoba.ca<mailto:bantingl at myumanitoba.ca>> wrote:
Hello,

I am trying to use the HDF5 viewer to store the solution of my system at every iteration.
I am storing the solutions in order to compare two different results, one from an old sequential program and one from a new parallel program that is parallelized using the DMDA structure.
I am using matlab to compare the results.

In the sequential program, the vector for the solution is just a simple one dimensional vector made from VecCreate. In the parallel program, the vector is made from DMCreateGlobalVector.

In both versions of the program, I create the viewer as:

call PetscViewerHDF5Open(PETSC_COMM_WORLD,"filename.hdf5",&
                        FILE_MODE_WRITE,hdf5viewer,ierr)

When I load the files into MATLAB after words, the sequential program creates a new dataset each iteration, while the parallel version using DMCreateGlobalVector only stores a single dataset.
Is there a way I can force both viewers to create a new dataset in the same way each time vecview is called? Or is there someway I can manually create a new dataset?

You can see inside the file using 'h5ls' and 'h5dump'. I believe that the Vec is stored in HDF5 using the name (of the PetscObject). I think
that is happening is that you are not setting the name, which means it defaults to the pointer, and that pointer is the same for your
global vector. I believe if you change the name at each iteration, they will all be saved. You can also use the Timestep mechanism as Barry
suggests.

  Thanks,

     Matt

I am using Open MPI 3.1.4, Petsc 3.12.4, Intel Fortran 2019.5, and hdf5/1.10.5.<http://1.10.5.>

Thanks,

Lucas Banting



--
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/<http://www.cse.buffalo.edu/~knepley/>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20200623/fe3b7a19/attachment.html>


More information about the petsc-users mailing list