<html><head><style type='text/css'>p { margin: 0; }</style></head><body><div style='font-family: Times New Roman; font-size: 12pt; color: #000000'>I believe it, it works for me that way too. But my function to write the data doesn't create the group. I get:<br><br>|16:45||tgallagher@harpy:MSDM-Build|&gt; h5dump -A test.h5 <br>HDF5 "test.h5" {<br>GROUP "/" {<br>&nbsp;&nbsp; DATASET "Coordinates" {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DATATYPE&nbsp; H5T_IEEE_F64LE<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DATASPACE&nbsp; SIMPLE { ( 10, 10, 10, 3 ) / ( 10, 10, 10, 3 ) }<br>&nbsp;&nbsp; }<br>}<br>}<br><br>despite the call to PetscViewerHDF5PushGroup I showed in the code snippet. I'm pretty stumped why it's not working.<br><br>Tim<br><br><hr id="zwchr"><div style="color:#000;font-weight:normal;font-style:normal;text-decoration:none;font-family:Helvetica,Arial,sans-serif;font-size:12pt;"><b>From: </b>"Matthew Knepley" &lt;knepley@gmail.com&gt;<br><b>To: </b>gtg085x@mail.gatech.edu, "PETSc users list" &lt;petsc-users@mcs.anl.gov&gt;<br><b>Sent: </b>Monday, November 28, 2011 4:39:57 PM<br><b>Subject: </b>Re: [petsc-users] Creating HDF5 groups<br><br>On Mon, Nov 28, 2011 at 2:20 PM, Tim Gallagher <span dir="ltr">&lt;<a href="mailto:tim.gallagher@gatech.edu" target="_blank">tim.gallagher@gatech.edu</a>&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Hi,<br>
<br>
I'm a little confused about why this section of code doesn't work, so hopefully somebody can help me. I'm able to run the vec/vec/examples/tutorials/ex19.c test that creates an HDF5 file, and h5dump verifies that it is making the groups and putting vectors in them. However, my code does not make the group (so it obviously doesn't put the vector in it!). The function is:<br>
</blockquote><div><br></div><div>I commented out the write into the root group in ex19 and it worked fine:</div><div><br></div><div><div>knepley:/PETSc3/petsc/petsc-dev$ ./arch-sieve-fdatatypes-debug/bin/h5dump ./ex19.h5&nbsp;</div>
<div>./arch-sieve-fdatatypes-debug/bin/h5dump ./ex19.h5&nbsp;</div><div>HDF5 "./ex19.h5" {</div><div>GROUP "/" {</div><div>&nbsp; &nbsp;GROUP "testBlockSize" {</div><div>&nbsp; &nbsp; &nbsp; DATASET "TestVec" {</div>
<div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DATATYPE &nbsp;H5T_IEEE_F64LE</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DATASPACE &nbsp;SIMPLE { ( 3, 2 ) / ( 3, 2 ) }</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DATA {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(0,0): 1, 1,</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(1,0): 1, 1,</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(2,0): 1, 1</div>
<div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div>&nbsp; &nbsp; &nbsp; }</div><div>&nbsp; &nbsp;}</div><div>&nbsp; &nbsp;GROUP "testTimestep" {</div><div>&nbsp; &nbsp; &nbsp; DATASET "TestVec" {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DATATYPE &nbsp;H5T_IEEE_F64LE</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DATASPACE &nbsp;SIMPLE { ( 2, 3, 2 ) / ( H5S_UNLIMITED, 3, 2 ) }</div>
<div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DATA {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(0,0,0): 1, 1,</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(0,1,0): 1, 1,</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(0,2,0): 1, 1,</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(1,0,0): 1, 1,</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(1,1,0): 1, 1,</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(1,2,0): 1, 1</div>
<div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div>&nbsp; &nbsp; &nbsp; }</div><div>&nbsp; &nbsp;}</div><div>}</div><div>}</div></div><div><br></div><div>&nbsp; &nbsp;Matt</div><div>&nbsp;</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

#undef __FUNCT__<br>
#define __FUNCT__ "Body::SaveGrid"<br>
PetscErrorCode Body::SaveGrid(const char filename[])<br>
{<br>
 &nbsp;PetscViewer hdf5File;<br>
 &nbsp;Vec coordVec;<br>
<br>
 &nbsp;// Grab the coordinate vector<br>
 &nbsp;m_lastError = DMDAGetCoordinates(m_nodes,&amp;coordVec);<br>
 &nbsp;CHKERRXX(m_lastError);<br>
<br>
 &nbsp;m_lastError = PetscObjectSetName((PetscObject) coordVec, "Coordinates");<br>
 &nbsp;CHKERRXX(m_lastError);<br>
<br>
 &nbsp;// Open the file<br>
 &nbsp;m_lastError = PetscViewerHDF5Open(m_commGroup, filename, FILE_MODE_WRITE, &amp;hdf5File);<br>
 &nbsp;CHKERRXX(m_lastError);<br>
<br>
 &nbsp;// Set the group to dump the grid in<br>
 &nbsp;m_lastError = PetscViewerHDF5PushGroup(hdf5File, "/grid");<br>
 &nbsp;CHKERRXX(m_lastError);<br>
<br>
 &nbsp;// Dump the coordinates<br>
 &nbsp;m_lastError = VecView(coordVec, hdf5File);<br>
 &nbsp;CHKERRXX(m_lastError);<br>
<br>
 &nbsp;m_lastError = PetscViewerHDF5PopGroup(hdf5File);<br>
 &nbsp;CHKERRXX(m_lastError);<br>
<br>
 &nbsp;// Clean up<br>
 &nbsp;m_lastError = PetscViewerDestroy(&amp;hdf5File);<br>
 &nbsp;CHKERRXX(m_lastError);<br>
}<br>
<br>
The only thing I can really see different about this and ex19 is that I don't first write any dataset to the root group, but that's not required to be valid HDF5. If I call PetscViewerHDF5GetGroup after the PushGroup call, it returns /grid.<br>

<br>
Any ideas?<br>
<br>
Thanks,<br>
<font color="#888888"><br>
Tim<br>
</font></blockquote></div><br><br clear="all"><div><br></div>-- <br>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>
-- Norbert Wiener<br>
</div><br></div></body></html>