<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Nov 27, 2017 at 2:46 PM, Storm Weiner <span dir="ltr"><<a href="mailto:stormweiner@berkeley.edu" target="_blank">stormweiner@berkeley.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><p dir="ltr">Thanks for the advice. </p>
<p dir="ltr">Barry,  did you mean to add more information after that ":"? </p>
<p dir="ltr">HDF5 sounds like a great option for my application,  but I don't see much information about how it interfaces with PETSc.   All I can find are the doc pages for a few viewer routines.  Do you have a link to a more detailed description? </p>
<p dir="ltr">Specifically,  I'd like to know if PETSc has automatically configured HDF5 datatypes and how to access them.  And if there is a standard way to make compound data types derived from PETSc datatypes.   In short,  how much do I need to muck around in HDF5 myself,  and how much can I let PETSc take care of?</p></blockquote><div>You should be able to use HDF5 exactly as you would use the PETSc binary viewer and the filesystem. Instead of giving a directory and filename, you give a groupname</div><div><br></div><div>  <a href="http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Viewer/PetscViewerHDF5PushGroup.html">http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Viewer/PetscViewerHDF5PushGroup.html</a></div><div><br></div><div>and the filename is the object name. Then just call View(). We also allow you to write metadata about the object</div><div><br></div><div>  <a href="http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Viewer/PetscViewerHDF5WriteAttribute.html">http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Viewer/PetscViewerHDF5WriteAttribute.html</a></div><div><br></div><div>     Matt</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><p dir="ltr"> </p>
<p dir="ltr">-Storm</p>
<div class="gmail_extra"><br><div class="gmail_quote">On Nov 26, 2017 5:49 AM, "Smith, Barry F." <<a href="mailto:bsmith@mcs.anl.gov" target="_blank">bsmith@mcs.anl.gov</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
  Storm,<br>
<br>
   Specifically for TS there is an abstract object called TSTrajectory which is a way to store histories of simulations (it is used by TSAdjoint but also useable for other purposes). It has several ways to store histories and more can be added.<br>
<br>
   One draw back to saving everything in PETSc binary in one file is that we don't have simple support for random access of a particular vector.<br>
<br>
   You can also store to HDF5 format and some others that may be useful for you:<br>
<br>
<br>
   Barry<br>
<br>
<br>
> On Nov 26, 2017, at 2:27 AM, Jose E. Roman <<a href="mailto:jroman@dsic.upv.es" target="_blank">jroman@dsic.upv.es</a>> wrote:<br>
><br>
><br>
><br>
>> El 26 nov 2017, a las 2:25, Storm Weiner <<a href="mailto:stormweiner@berkeley.edu" target="_blank">stormweiner@berkeley.edu</a>> escribió:<br>
>><br>
>> Hey there,<br>
>><br>
>> For simulations, its useful to store the history as a series of state vectors.  For simulations with many time-steps it can get annoying to store each state vector as a separate file.  It would be useful if there were some way to manage a database of petsc vectors.  To save the current time-step, append the state vector to the database. To restart a simulation, load the corresponding state vector out of the database.<br>
>><br>
>> Is there a standard way to do this in PETSc?<br>
>><br>
>> Thanks,<br>
>> Storm<br>
><br>
> In the command line, you can use the “append” option for the viewer. For instance in the MFN solver in SLEPc you can do this:<br>
>   $ ./ex23 -mfn_view_solution binary:vectors.bin::append<br>
> It will save one vector in each call to MFNSolve(), and all vectors will be stored in the same file ‘vectors.bin’.<br>
><br>
> Alternatively, in the source code you can use PetscViewerBinaryOpen() to open the viewer, then save as many vectors as you want with VecView(), and finally close the file with PetscViewerDestroy(). Use VecLoad() to load the vectors.<br>
><br>
> Jose<br>
><br>
<br>
</blockquote></div></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div>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</div><div><br></div><div><a href="http://www.caam.rice.edu/~mk51/" target="_blank">https://www.cse.buffalo.edu/~knepley/</a><br></div></div></div></div></div>
</div></div>