Saving and loading functions on disk

1. Saving functions on disk

To save a function on disk to use it later, for example in another application, you can use the save function.

The saved file will be named after the name registered for the variable in the constructor (default : u).

auto Vh = Pch<1>( mesh );
auto u = Vh->element("v");
// do something with u
...
// save /path/to/save/v.h5
u.save( _path="/path/to/save", _type="hdf5" );

The path parameter creates a directory at this path to store all the degrees of liberty of this function.

The type parameter can be binary, text or hdf5 . The first two will create one file per processor, whereas "hdf5" will creates only one file.

2. Loading functions from disk

To load a function, the mesh need to be exactly the same as the one used when saving it.
auto Vh = Pch<1>( mesh );
auto u = Vh->element("v");
// load /path/to/load/v.h5
u.load( _path="/path/to/load/", _type="hdf5" );

The path and type parameters need to be the same as the one used to save the function.

3. Extended parallel doftable

In some cases, when we use parallel data, informations from other interfaces of partitions are need. To manage this, we can add ghost degree of freedom on ghost elements at these locations. However, we have to know if data have extended parallel doftable to load and use it.

In order to pass above this restriction, the two function load and save has been updated to use hdf5 format. With this format, extended parallel doftable or not, the function will work without any issues. More than that, we can load elements with extended parallel doftable and resave it without it, and vice versa. This last feature isn’t available with other formats than hdf5.