ADIOS2-backend#
The library depends on the Python-interface of [DOLFINx]() and an MPI-build of [ADIOS2](https://adios2.readthedocs.io/en/latest/setting_up/setting_up.html#as-package). Therefore ADIOS2 should not be install through PYPI/pip, but has to be installed through Conda, Spack or from source.
Important
ADIOS2<2.10.2 does not work properly with numpy>=2.0.0. Everyone is advised to use the newest version of ADIOS2.
This is for instance available through conda or the ghcr.io/fenics/dolfinx/dolfinx:nightly Docker-image.
- io4dolfinx.backends.adios2.backend.get_default_backend_args(arguments: dict[str, Any] | None) dict[str, Any][source]#
Get default arguements (sets engine to BP4).
- io4dolfinx.backends.adios2.backend.mesh_prefix(backend_args: dict[str, Any] | None) str[source]#
ADIOS2 variable-name prefix for the mesh named in
backend_args.The default mesh gets an empty prefix, so that it is stored under exactly the names used before checkpoints could hold more than one mesh. Files written by earlier versions therefore stay readable, and a file holding only the default mesh stays readable by them. Any other mesh is namespaced under
"<name>/".Note
This is io4dolfinx’s own checkpoint schema, not ADIOS2’s VTX visualization schema – no
vtk.xmlattribute is written, and these files are not readable by ParaView’s VTX reader whether they hold one mesh or several. VTX supports only a single mesh per file, so holding several here costs nothing that was ever available. For a visualizable file with several meshes use thevtkhdfbackend, whoseMultiBlockDataSetis designed for it.- Parameters:
backend_args – Arguments to backend
- Returns:
The prefix to prepend to every variable and attribute name of that mesh.
- io4dolfinx.backends.adios2.backend.read_attributes(filename: Path | str, comm: Comm, name: str, backend_args: dict[str, Any] | None = None) dict[str, ndarray][source]#
Read attributes from file using ADIOS2.
- Parameters:
filename – Path to file to read from
comm – MPI communicator used in storage
name – Name of the attributes
engine – ADIOS2 engine to use
- Returns:
The attributes
- io4dolfinx.backends.adios2.backend.read_cell_data(filename: Path | str, name: str, comm: Comm, time: str | float | None, backend_args: dict[str, Any] | None) tuple[ndarray[tuple[Any, ...], dtype[int64]], ndarray][source]#
Read data from the cells of a mesh.
- Parameters:
filename – Path to file
name – Name of point data
comm – Communicator to launch IO on.
time – The time stamp
backend_args – The backend arguments
- Returns:
A tuple (topology, dofs) where topology contains the vertex indices of the cells, dofs the degrees of freedom within that cell.
- io4dolfinx.backends.adios2.backend.read_cell_perms(comm: Comm, filename: Path | str, backend_args: dict[str, Any] | None = None) ndarray[tuple[Any, ...], dtype[uint32]][source]#
Read cell permutation from file with given communicator, Split in continuous chunks based on number of cells in the mesh (global).
- Parameters:
adios – The ADIOS instance
comm – The MPI communicator used to read the data
filename – Path to input file
variable – Name of cell-permutation variable
num_cells_global – Number of cells in the mesh (global)
engine – Type of ADIOS engine to use for reading data
- Returns:
Cell-permutations local to the process
Note
No MPI communication is done during this call
- io4dolfinx.backends.adios2.backend.read_dofmap(filename: str | Path, comm: Comm, name: str, backend_args: dict[str, Any] | None = None) AdjacencyList[source]#
Read the dofmap of a function with a given name.
- Parameters:
filename – Path to file to read from
comm – MPI communicator used in storage
name – Name of the function to read the dofmap for
backend_args – Arguments to backend
- Returns:
Dofmap as an AdjacencyList
- io4dolfinx.backends.adios2.backend.read_dofs(filename: str | Path, comm: Comm, name: str, time: float, backend_args: dict[str, Any] | None = None) tuple[ndarray[tuple[Any, ...], dtype[float32 | float64 | complex64 | complex128]], int][source]#
Read the dofs (values) of a function with a given name from a given timestep.
- Parameters:
filename – Path to file to read from
comm – MPI communicator used in storage
name – Name of the function to read the dofs for
time – Time stamp associated with the function to read
backend_args – Arguments to backend
- Returns:
Contiguous sequence of degrees of freedom (with respect to input data) and the global starting point on the process. Process 0 has [0, M), process 1 [M, N), process 2 [N, O) etc.
- io4dolfinx.backends.adios2.backend.read_function_names(filename: Path | str, comm: Comm, backend_args: dict[str, Any] | None) list[str][source]#
Read all function names from a file.
- Parameters:
filename – Path to file
comm – MPI communicator to launch IO on.
backend_args – Arguments to backend
- Returns:
A list of function names.
- io4dolfinx.backends.adios2.backend.read_legacy_mesh(filename: Path | str, comm: Comm, group: str) tuple[ndarray[tuple[Any, ...], dtype[int64]], ndarray[tuple[Any, ...], dtype[floating]], str | None][source]#
Read in the mesh topology, geometry and (optionally) cell type from a legacy DOLFIN HDF5-file.
- Parameters:
filename – Path to file to read from
comm – MPI communicator used in storage
group – Group in HDF5 file where mesh is stored
- Returns:
Topology as a (num_cells, num_vertices_per_cell) array of global vertex indices
Geometry as a (num_vertices, geometric_dimension) array of vertex coordinates
Cell type as a string (e.g. “tetrahedron”) or None if not found
- Return type:
Tuple containing
- io4dolfinx.backends.adios2.backend.read_mesh_data(filename: Path | str, comm: Comm, time: str | float | None = 0.0, read_from_partition: bool = False, backend_args: dict[str, Any] | None = None) ReadMeshData[source]#
Read an ADIOS2 mesh data for use with DOLFINx.
- Parameters:
filename – Path to input file
comm – The MPI communciator to distribute the mesh over
engine – ADIOS engine to use for reading (BP4, BP5 or HDF5)
time – Time stamp associated with mesh
legacy – If checkpoint was made prior to time-dependent mesh-writer set to True
read_from_partition – Read mesh with partition from file
- Returns:
The mesh topology, geometry, UFL domain and partition function
- io4dolfinx.backends.adios2.backend.read_meshtags_data(filename: str | Path, comm: Comm, name: str, backend_args: dict[str, Any] | None = None) MeshTagsData[source]#
Read mesh tags from file.
- Parameters:
filename – Path to file to read from
comm – MPI communicator used in storage
name – Name of the mesh tags to read
backend_args – Arguments to backend
- Returns:
Internal data structure for the mesh tags read from file
- io4dolfinx.backends.adios2.backend.read_timestamps(filename: Path | str, comm: Comm, function_name: str, backend_args: dict[str, Any] | None = None) ndarray[tuple[Any, ...], dtype[float64 | str]][source]#
Read time-stamps from a checkpoint file.
- Parameters:
comm – MPI communicator
filename – Path to file
function_name – Name of the function to read time-stamps for
backend_args – Arguments for backend, for instance file type.
backend – What backend to use for writing.
- Returns:
The time-stamps
- io4dolfinx.backends.adios2.backend.snapshot_checkpoint(filename: Path | str, mode: FileMode, u: Function, backend_args: dict[str, Any] | None)[source]#
Create a snapshot checkpoint of a dolfinx function.
- Parameters:
filename – Path to file to read from
mode – File-mode to store the function
u – dolfinx function to create a snapshot checkpoint for
backend_args – Arguments to backend
- io4dolfinx.backends.adios2.backend.write_attributes(filename: Path | str, comm: Comm, name: str, attributes: dict[str, ndarray], backend_args: dict[str, Any] | None = None)[source]#
Write attributes to file using ADIOS2.
- Parameters:
filename – Path to file to write to
comm – MPI communicator used in storage
name – Name of the attributes
attributes – Dictionary of attributes to write to file
engine – ADIOS2 engine to use
- io4dolfinx.backends.adios2.backend.write_data(filename: Path | str, array_data: ArrayData, comm: Comm, time: str | float | None, mode: FileMode, backend_args: dict[str, Any] | None)[source]#
Write a 2D-array to file (distributed across proceses with MPI).
- Parameters:
filename – Path to file
array_data – Data to write to file
comm – MPI communicator to open the file with.
time – Time stamp
mode – Append or write
backend_args – The backend arguments
- io4dolfinx.backends.adios2.backend.write_function(filename: Path, comm: Comm, u: FunctionData, time: float = 0.0, mode: FileMode = FileMode.append, backend_args: dict[str, Any] | None = None)[source]#
Write a function to file using ADIOS2
- Parameters:
comm – MPI communicator used in storage
u – Internal data structure for the function data to save to file
filename – Path to file to write to
engine – ADIOS2 engine to use
mode – ADIOS2 mode to use (write or append)
time – Time stamp associated with function
io_name – Internal name used for the ADIOS IO object
- io4dolfinx.backends.adios2.backend.write_mesh(filename: Path | str, comm: Comm, mesh: MeshData, backend_args: dict[str, Any] | None = None, mode: FileMode = FileMode.write, time: float = 0.0)[source]#
Write a mesh to file using ADIOS2.
- Parameters:
comm – MPI communicator used in storage
mesh – Internal data structure for the mesh data to save to file
filename – Path to file to write to
backend_args – File mode and potentially the io-name.
mode – Mode to use (write or append)
time – Time stamp
- io4dolfinx.backends.adios2.backend.write_meshtags(filename: str | Path, comm: Comm, data: MeshTagsData, backend_args: dict[str, Any] | None = None)[source]#
Write mesh tags to file.
- Parameters:
filename – Path to file to write to
comm – MPI communicator used in storage
data – Internal data structure for the mesh tags to save to file
backend_args – Arguments to backend