OK, I think I've figured out what the problem was here. The
'cell_geometry' vector I wrote to the HDF5 file was actually a local
vector (not global). If I first do DMLocalToGlobal on it and then
VecView the global vector, it turns up under the 'fields' group, and I
can access it for reading back in.
Cheers, Adrian
On 12/02/16 18:07, Adrian Croucher wrote:
hi
I'm having trouble reading in a vector on a DMPlex from an HDF5 file.
The attached minimal program (readdmvec2.F90) illustrates the problem.
What it does is:
- reads in a DMPlex from file (ghotcol.exo) and sets it up
(distributes, constructs ghost cells and default section)
- uses DMGetGlobalVector() to get the vector
- sets its object name to 'cell_geometry'
- opens the HDF5 file (hotcol_ss.h5) in a viewer and tries to read the
vector using VecLoad()
The VecLoad() dies, saying "object 'cell_geometry' doesn't exist" in
the HDF5 file. (Full error message is below.)
But it does exist- it shows up as a dataset in the '/' group in
h5dump. I can also read it in from a Python script and h5py, e.g.:
>>> import h5py
>>> f = h5py.File('hotcol_ss.h5')
>>> f['cell_geometry'][:]
Any idea why VecLoad() can't find it? I get the same error running on
any number of processors.
The program that writes 'cell_geometry' to the HDF5 file also
subsequently writes time-dependent simulation results to the same file
(that's what the other datasets are in there) using
DMSetOutputSequenceNumber() and VecView(). I am wondering if the
problem is related to this, because if I just write a simple vector
out to the file by itself it seems to read back in ok.
Cheers, Adrian
--
Dr Adrian Croucher
Senior Research Fellow
Department of Engineering Science
University of Auckland, New Zealand
email: [email protected]
tel: +64 (0)9 923 84611