This documentation is not for the latest stable Salvus version.
Point (receiver) data are output in the ASDF file format. Please see the ASDF website for details and documentation.
Meshes and wavefield data are read and written as HDF5 files. The HDF5 library allows us to performantly access single files in parallel, as well as allowing for the portable sharing of such files. To see a visual representation of what's in these files we recommend using Paraview.
Note that we strongly recommend to download Paraview from the official website -- the versions installed through Linux package management systems often do not come with the correct libraries installed.
Files are visualized in Paraview using the
XDMF standard. This is why you'll see
for every mesh, surface, or volume output file used by Salvus, an associated
file with the same name but with a .xdmf
file suffix. It is this .xdmf
file that should be opened in Paraview. When you do open such a file, you
should see a dialogue box which looks similar to the following image:
The reader you require is "XDMF Reader". Selecting a different reader may cause Paraview to crash.
Not all data that is required to visualize the mesh and the model defined on that mesh in detail is also required for the numerical computations. To avoid unnecessarily large files, salvus can write meshes with different level of detail for visualization. If a mesh lacks the visualization data, it can always be added later on by reading and rewriting the mesh:
UnstructuredMesh.from_h5("input.h5").write_h5("output.h5", mode="all")
Similarly, the mesh file size can be reduced by removing unnecessary data:
UnstructuredMesh.from_h5("input.h5").write_h5("output.h5", mode="minimal")
For details on the different output modes see
salvus.mesh.UnstructuredMesh.write_h5()
XDMF files can contain multiple blocks of data, in particular salvus meshes can contain:
the Skeleton Mesh, that is the first order mesh. This is useful to look at the element sizes and where refinements are placed. For higher order meshes, this should not be used to judge element shape or quality, but for first order meshes the skeleton is equal to actual mesh.
the GLL Model: this block contains a sub-connectivity for each element in the case of higher order meshes and duplicated nodes to correctly represent discontinuous fields such as the material properties as nodal fields.
the GLL Mesh: this block also contains the sub-connectivity, but does not duplicate the nodes. As such it allows paraview to correctly detect the outer boundaries of the domain, which leads to better performance and smoother rendering. On the downside, the model cannot be represented on this block.
As XDMF does not support correct handling of high order meshes, we have
resorted to sub-connectivities above. To get a more accurate representation of
the smooth shapes of higher order elements, salvus can output meshes in
VTK format.
3D meshes can be written both in the legacy ASCII format and the newer xml
based format, 2D meshes currently only support the legacy format. For paraview
to correctly detect the files, the file endings need to be *.vtu
for xml
files and *.vtk
for the legacy files. Note that these files do not contain
the model and cannot be used for numerical computations, but are only meant to
visualize the geometry of the mesh.