[petsc-users] HDF5 time step count

Adrian Croucher a.croucher at auckland.ac.nz
Wed May 1 22:03:08 CDT 2024


hi Matt & all,

I just had a query from one of my users which prompted me to see if any 
progress had been made on the issue below - using PETSc to get the 
number of time steps in an HDF5 file.

I can't see anything new in PETSc on this - I did try using 
PetscViewerHDF5ReadSizes() to see if that would do it, but it seems it 
doesn't. If I use that on the "time" dataset it just returns 1.

Regards, Adrian

On 11/10/21 2:08 pm, Adrian Croucher wrote:
> On 10/11/21 11:59 AM, Matthew Knepley wrote:
>> On Sun, Oct 10, 2021 at 6:51 PM Adrian Croucher 
>> <a.croucher at auckland.ac.nz> wrote:
>>
>>     hi
>>
>>     Is there any way to query the PETSc HDF5 viewer to find the
>>     number of
>>     time steps in the file?
>>
>>     A common use case I have is that an HDF5 file from a previous
>>     simulation
>>     is used to get initial conditions for a subsequent run. The most
>>     common
>>     thing you want to do is restart from the last set of results in the
>>     previous output. To do that you need to know how many time steps
>>     there
>>     are, so you can set the output index to be the last one.
>>
>>     I thought maybe I could just query the size of the "time"
>>     dataset, but I
>>     can't even see any obvious way to do that using the viewer functions.
>>
>>
>> There is nothing in there that does it right now. Do you know how to 
>> do it in HDF5?
>> If so, I can put it in. Otherwise, I will have to learn more HDF5 :)
>
> I haven't actually tried this myself but it looks like what you do is:
>
> 1) get the dataspace for the dataset (in our case the "time" dataset):
>
> hid_t dspace = H5Dget_space(dset);
>
> 2) Get the dimensions of the dataspace:
>
> const int ndims = 1;
>
> hsize_t dims[ndims];
> H5Sget_simple_extent_dims(dspace, dims, NULL);
>
> The first element of dims should be the number of time steps. Here 
> I've assumed the number of dimensions of the time dataset is 1. In 
> general you can instead query the rank of the dataspace using 
> H5Sget_simple_extent_ndims() to get the rank ndims.
>
> Regards, Adrian
>
-- 
Dr Adrian Croucher
Senior Research Fellow
Department of Engineering Science
Waipapa Taumata Rau / University of Auckland, New Zealand
email:a.croucher at auckland.ac.nz
tel: +64 (0)9 923 4611
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20240502/f8e9f61b/attachment-0001.html>


More information about the petsc-users mailing list