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 <[email protected]>
Sent: Tuesday, June 23, 2020 8:15 AM
To: Lucas Banting <[email protected]>
Cc: PETSc <[email protected]>
Subject: Re: [petsc-users] Question about HDF5 Viewer and Datasets

On Tue, Jun 23, 2020 at 8:56 AM Lucas Banting 
<[email protected]<mailto:[email protected]>> 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/>

Reply via email to