Checkpointing functionality for DOLFINx meshes/functions with ADIOS2
Project description
ADIOS2Wrappers for DOLFINx
This is an extension for DOLFINx to checkpoint meshes, meshtags and functions using ADIOS2.
The code uses the adios2 Python-wrappers to write DOLFINx objects to file, supporting N-to-M (recoverable) and N-to-N (snapshot) checkpointing. See: Checkpointing in DOLFINx - FEniCS 23 for more information.
For scalability, the code uses MPI Neighbourhood collectives for communication across processes.
Installation
Docker
ADIOS2 is installed in the official DOLFINx containers.
docker run -ti -v $(pwd):/root/shared -w /root/shared --name=dolfinx-checkpoint ghcr.io/fenics/dolfinx/dolfinx:nightly
Conda
To use with conda (DOLFINx release v0.7.0 works with v0.7.3 of ADIOS4DOLFINx)
conda create -n dolfinx-checkpoint python=3.10
conda activate dolfinx-checkpoint
conda install -c conda-forge fenics-dolfinx pip adios2
python3 -m pip install git+https://github.com/jorgensd/adios4dolfinx@v0.7.2
Functionality
DOLFINx
- Reading and writing meshes, using
adios4dolfinx.read/write_mesh
- Reading and writing meshtags associated to meshes
adios4dolfinx.read/write_meshtags
- Reading checkpoints for any element (serial and parallel, arbitrary number of functions and timesteps per file). Use
adios4dolfinx.read/write_function
. - Writing standalone function checkpoints relating to "original meshes", i.e. meshes read from
XDMFFile
. Useadios4dolfinx.write_function_on_input_mesh
for this. - Store mesh partitioning and re-read the mesh with this information, avoiding calling SCOTCH, Kahip or Parmetis.
[!IMPORTANT]
For checkpoints written withwrite_function
to be valid, you first have to store the mesh withwrite_mesh
to the checkpoint file.
[!IMPORTANT]
A checkpoint file supports multiple functions and multiple time steps, as long as the functions are associated with the same mesh
[!IMPORTANT]
Only one mesh per file is allowed
Backwards compatibility
[!WARNING] If you are using v0.7.2, you are adviced to upgrade to v0.7.3, as it contains som crucial fixes for openmpi.
Legacy DOLFIN
Only checkpoints for Lagrange
or DG
functions are supported from legacy DOLFIN
- Reading meshes from the DOLFIN HDF5File-format
- Reading checkpoints from the DOLFIN HDF5File-format (one checkpoint per file only)
- Reading checkpoints from the DOLFIN XDMFFile-format (one checkpoint per file only, and only uses the
.h5
file)
See the API for more information.
Long term plan
The long term plan is to get this library merged into DOLFINx (rewritten in C++ with appropriate Python-bindings).
Contributor guidelines
When contributing to this repository, please first create an issue containing information about the missing feature or the bug that you would like to fix. Here you can discuss the change you want to make with the maintainers of the repository.
Please note we have a code of conduct, please follow it in all your interactions with the project.
New contributor guide
To get an overview of the project, read the documentation. Here are some resources to help you get started with open source contributions:
- Finding ways to contribute to open source on GitHub
- Set up Git
- GitHub flow
- Collaborating with pull requests
Pull Request Process
Pull Request
- When you're finished with the changes, create a pull request, also known as a PR. It is also OK to create a draft pull request from the very beginning. Once you are done you can click on the ["Ready for review"] button. You can also request a review from one of the maintainers.
- Don't forget to link PR to the issue that you opened .
- Enable the checkbox to allow maintainer edits so the branch can be updated for a merge. Once you submit your PR, a team member will review your proposal. We may ask questions or request for additional information.
- We may ask for changes to be made before a PR can be merged, either using suggested changes or pull request comments. You can apply suggested changes directly through the UI. You can make any other changes in your fork, then commit them to your branch.
- As you update your PR and apply changes, mark each conversation as resolved.
- If you run into any merge issues, checkout this git tutorial to help you resolve merge conflicts and other issues.
- Please make sure that all tests are passing, github pages renders nicely, and code coverage are are not lower than before your contribution. You see the different github action workflows by clicking the "Action" tab in the GitHub repository.
Note that for a pull request to be accepted, it has to pass all the tests on CI, which includes:
mypy
: typecheckingruff
: Code formattingpytest
: Successfull execution of all tests in thetests
folder.
Our Pledge
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file adios4dolfinx-0.8.0.dev0.tar.gz
.
File metadata
- Download URL: adios4dolfinx-0.8.0.dev0.tar.gz
- Upload date:
- Size: 37.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c960685279cc1ca1ca827a334a8e3cc6b69e0bca2edc4536923f3b1018bfc8a1 |
|
MD5 | 195ec5c8ef383ab7ad0344e6d9135561 |
|
BLAKE2b-256 | 9d4076e464cfde7026caa8739c502ef17ceff63f4d157e115a24315a3716c885 |
Provenance
File details
Details for the file adios4dolfinx-0.8.0.dev0-py3-none-any.whl
.
File metadata
- Download URL: adios4dolfinx-0.8.0.dev0-py3-none-any.whl
- Upload date:
- Size: 31.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4f80971114895daeb688c7c3e97195b3026d459f1e0a690afd647381426b803e |
|
MD5 | fae313fb67696f8807811549acbbd570 |
|
BLAKE2b-256 | d8356de6d33bda4a7442b535a3059d154fab929411829f7d4eb52a7fa46e9edb |