v0.9.0
This is a major release of DOLFINx and users are advised to upgrade.
A curated set of release notes is available at: https://fenicsproject.org/blog/v0.9.0/
What's Changed
Features and API changes
- Add support for mixed-domain problems of codimension 1 by @jpdean in #3224
- Interpolation to and from sub-meshes for co-dimension 0 by @jorgensd in #3114
- Favor
exterior_facet_indices
overlocate_entities_boundary
for retrieving complete boundary by @schnellerhase in #3283 - Add specific HPC install recommendation by @jhale in #3161
- Updates and clarifications in release notes by @jhale in #3160
- Interpolation into symmetric tensor by @mscroggs in #3158
- Support Python interface build and run without petsc4py by @garth-wells in #3182
- Split PETSc and non-PETSc tests on CI by @garth-wells in #3184
- Allow for symmetric quadrature elements by @mscroggs in #3188
- Make standalone function for interpolation over non-matching meshes by @jorgensd in #3177
- Add pyamg demo by @chrisrichardson in #3202
- Switch to spdlog by @chrisrichardson in #3216
- Expose interpolation matrix for MatrixCSR (without PETSc) by @chrisrichardson in #3226
- Support mixed topology for dual graph by @chrisrichardson in #3234
- Allow dx and dx(i) in same form by @jorgensd in #3253
- Enable SCOTCH detection via CMake
CONFIG
mode. by @garth-wells in #3244 - Port DOLFINx to Windows by @jhale in #3198
- Generalize all output formats for general length vectors and tensors by @jorgensd in #3227
- Prepare for release of numpy 2.0 by using ruff ruleset by @jorgensd in #3261
- Export missing compile time constants to python by @schnellerhase in #3285
- One dimensional refinement routine by @schnellerhase in #3314
- Extend
to_dense
for parallel use cases by @schnellerhase in #3354 - Clarify memory management of returned petsc4py objects. by @jhale in #3329
- Remove dictionary from constructor by @jorgensd in #3370
- Sparsity pattern insert by @schnellerhase in #3338
Timer
interface improvement by @schnellerhase in #3328- Expose Newton convergence check setter in Python by @jorgensd in #3386
- Expose more optional feature booleans, remove Timer from top level
dolfinx
by @jhale in #3335 - Expose
DirichletBC.dof_indices
to Python interface by @jorgensd in #3389 - Fix element name in mixed Poisson demo by @jpdean in #3391
- Add Python-interface for geometry constructor and geometry class by @jorgensd in #3403
- Remove NBX call from sub-IndexMap creation by @jorgensd in #3392
- Remove deprecated method for accessing PETSc Vec in Python by @garth-wells in #3435
- Create topology Python wrapper by @jorgensd in #3406
- Add
codim_0_assembly
demo to CMake by @garth-wells in #3436 - Simplify blocked demos using
extract_blocks
by @jorgensd in #3450 - Updating
demo_axis.py
anddemo_pml.py
for parallel computing by @jorgensd in #3433 - Vertex submesh support by @jorgensd in #3455
- Pass graph partitioner to
mesh::refine
by @garth-wells in #3444 - Return source rank for each node in constant degree adjacency list when distributing by @garth-wells in #3447
- Use
std::optional
to reduce code duplication in boundary condition setting by @garth-wells in #3434 - Send multiple cell types to partitioner by @chrisrichardson in #3237
- Data independent form compilation for Python interface by @jorgensd in #3263
- Skip negative cell indices when packing coefficients by @jorgensd in #3361
- Add ARM VTK to Docker Notebook image. by @jhale in #3259
Other changes
- Lint. by @jhale in #3157
- More updates for RELEASE.md by @jhale in #3166
- Lint. by @jhale in #3168
- Try tests on GitHub Actions with three MPI ranks by @jhale in #3163
- Remove dynamic memory allocation inside tight loops in the Plaza refinement code by @garth-wells in #3151
- Bump ADIOS2 version in Dockerfiles by @garth-wells in #3170
- Update versions. by @jhale in #3171
- TST: avoid unused variable in assert by @minrk in #3175
- Do CI linting in Actions image by @garth-wells in #3176
- Reuse Basix element instead of recreating from generated code by @mscroggs in #3136
- Use
std::conditional_t
for better C++ compatibility by @chrisrichardson in #3183 - Run Actions with OpenMPI and MPICH, and remove CircleCI config by @garth-wells in #3185
- Remove CircleCI badge from
README.md
by @garth-wells in #3189 - Add check of element hash by @mscroggs in #3186
- Fix reference counting for KSP from NewtonSolver in Python by @garth-wells in #3190
- Update Docker base images to
ubuntu:24.04
by @garth-wells in #3192 - Fix patch level for HDF in Dockerfile by @garth-wells in #3193
- Spack ci update by @garth-wells in #3194
- Add break system packages by @jhale in #3196
- Add petsc4py build requirements by @garth-wells in #3197
- Bump Python version in complex kernel to 3.12 by @jorgensd in #3199
- Spack Actions CI update by @garth-wells in #3203
- Simplify oneAPI and Rocky images by @garth-wells in #3205
- Exit demos that require PETSc when PETSc is not available by @garth-wells in #3206
- Simplify oneAPI CI by @garth-wells in #3210
- Add
spdlog
to doc install requirements by @garth-wells in #3217 - Remove spdlog install from CI yaml by @garth-wells in #3218
- Orient mesh entities consistently and generalise
entities_to_geometry
by @jpdean in #3209 - Install unzip package in CI for Spack by @garth-wells in #3220
- Improvements and fixes for C++ Doxygen/breathe/sphinx doc processing by @garth-wells in #3221
- Improve documentation for
pyamg
demo by @chrisrichardson in #3222 - Permutation computation refactoring by @chrisrichardson in #3223
- Change IR to be compatile with UFCx from FFCX PR-680 by @jorgensd in #3137
- Add docstrings to submesh creation in Python interface by @jorgensd in #3112
- Doc fixes and Doxygen version update by @garth-wells in #3228
- Replace
nb::any
with -1 and add argument tonb::ndarray
in preparation of next nanobind release by @francesco-ballarin in #3105 - Clean up Docker files (first step) by @garth-wells in #3230
- Docker simplify (phase 2) by @garth-wells in #3232
- Dockerfile end-user updates by @garth-wells in #3235
- Bump dependency versions in Dockerfile by @garth-wells in #3239
- demo test: default mpiexec to mpiexec by @minrk in #3242
- Distribute fixed width data by @chrisrichardson in #3240
- Simplify integration domain packing by @jorgensd in #3215
- Add dependabot for github actions by @jorgensd in #3245
- Bump actions/setup-python from 2 to 5 by @dependabot in #3247
- Bump docker/login-action from 2 to 3 by @dependabot in #3249
- Bump actions/cache from 3 to 4 by @dependabot in #3250
- Bump actions/github-script from 6 to 7 by @dependabot in #3248
- Temporarily disable Windows CI - upstream issue. by @jhale in #3251
- Small Basix type updates by @garth-wells in #3254
- Make compile time options compile time constants by @schnellerhase in #3246
- Update defines.h by @jhale in #3255
- Add indices of missing connectivity in error message by @garth-wells in #3264
- Use
enabled_coefficients
to restrict packing of coefficients by @jorgensd in #3260 - Remove
.mailmap
by @nate-sime in #3266 - Improve error message by @garth-wells in #3267
- Add more output to errors raised on PETSc lib import. by @jhale in #3268
- Pin nanobind version in Spack CI test by @garth-wells in #3270
- Workaround for numpy 2.0 issue with pyamg by @chrisrichardson in #3274
- Create mixed topology mesh by @chrisrichardson in #3271
- MacOS CI fixes by @chrisrichardson in #3277
- Fix pyvista actions by @chrisrichardson in #3276
- Pyamg test Add xfail for now by @chrisrichardson in #3284
- Bump docker/build-push-action from 5 to 6 by @dependabot in #3279
- Improve check for facet->cell connectivity by @chrisrichardson in #3281
- Remove workarounds following upstream updates for CI by @chrisrichardson in #3289
- Set C++ standard using modern cmake by @jhale in #3305
- Replace
std::sort
withstd::ranges::sort
by @schnellerhase in #3293 - Replace
std::fill
withstd::ranges::fill
by @schnellerhase in #3294 - Replace
std::lower/uper_bound
withstd::ranges::lower/uper_bound
by @schnellerhase in #3295 - Replace
std::for_each
withstd::ranges::for_each
by @schnellerhase in #3296 - Replace
std::min/max
withstd::ranges::min/max
by @schnellerhase in #3300 - Replace
std::set_*
withstd::ranges::set_*
by @schnellerhase in #3298 - Replace
std::copy
withstd::ranges::copy
by @schnellerhase in #3299 - Fix STL includes by @garth-wells in #3309
- Put gfortran back on PATH for MacOS CI by @chrisrichardson in #3310
- Set CMake policy to avoid warning with newer CMake versions by @garth-wells in #3308
- Only try to lift boundary conditions if forms are provided by @jpdean in #3302
- Replace
std::transform
withstd::ranges::transform
by @schnellerhase in #3297 - Restore oneAPI CI by @garth-wells in #3319
- Re-enable Windows CI. by @jhale in #3320
- Replace
std::unique
withstd::ranges::unique
by @schnellerhase in #3315 - Rework
radix_sort
by @schnellerhase in #3313 - Fix comment in prior PR by @schnellerhase in #3323
- Fix bug in interval refinement test by @schnellerhase in #3331
- Fix ubuntu CI by @schnellerhase in #3339
- Turns search for KaHiP on by default. by @jhale in #3337
- General tidy and restrict cffi < 1.17 due to static condensation demo issue by @jhale in #3343
- Fix ruff check by @schnellerhase in #3349
- Try to get OneAPI CI working again by @chrisrichardson in #3350
- Fix bug in
create_functionspace
by @schnellerhase in #3355 - Fix DofMap::collapse() on rank with no dofs by @jorgensd in #3369
- Fix refine constructor (currently overwriting ufl_cargo) by @jorgensd in #3367
- Fix block vector assembly for mixed-domain problems by @jpdean in #3346
- Mixed dimension assembly in C++ and form independence for subdomains by @jorgensd in #3262
- Reduce complexity of
create_submap_indices
by @jorgensd in #3378 - Skip test if adios2 python module built without MPI. by @jhale in #3124
- Run macos CI on pull requests by @garth-wells in #3381
- Windows CI on dispatch only by @garth-wells in #3388
- Correct reference value size by @jorgensd in #3373
- Some updates for mesh generation by @schnellerhase in #3275
- Test PETSc solver wrappers by @jorgensd in #3383
- Add read option of prims/wedges through xdmffile by @jorgensd in #3384
- Extend testing of quadrature element by @jorgensd in #3382
- Add error handling of ASCII + write/append mode with XDMFFile. by @jorgensd in #3385
- Check optional features are found/not found. by @jhale in #3390
- Bump dependency version in Dockerfiles by @garth-wells in #3394
- Avoid CMake Boost policy warning by @garth-wells in #3395
- Fix missing template type in generation by @schnellerhase in #3404
- Add interval mesh generation testing by @schnellerhase in #3359
- Fix nanobinding for interprocess facets by @jorgensd in #3405
- Bumping sonar-scanner-cli and removing deprecated command by @jorgensd in #3402
- Unify refine interface by @schnellerhase in #3322
- Expose geometry constructor in Python by @jorgensd in #3400
- Add previously missed refine doc string by @schnellerhase in #3410
- Add/extend refinement testing by @schnellerhase in #3360
- Remove std::map from scatter_values in nonmatching interpolation by @jorgensd in #3396
- Fix docs of facet permutations by @mscroggs in #3412
- Add missing docs regarding diagonal by @jorgensd in #3397
- Remove note about FFCx generated elements by @jorgensd in #3414
- Add CMAKE_PREFIX_PATH to Dockerfile by @jhale in #3416
- Fix cffi_utils for abscence of petsc4py by @schnellerhase in #3415
- Save FFI module in fem form. by @bpachev in #3399
- Fix Python wrapper of
distribute_entity_data
by @jorgensd in #3421 - A form can be empty and should return None by @jorgensd in #3422
- Document
compute_midpoints
and remove outdated fixme. by @jorgensd in #3419 - Expose
Topology
in sphinx docs by @jorgensd in #3423 - Fix argument block-size in Expressions by @jorgensd in #3429
- Fix integer overflow bug in sub-IndexMap extraction by @garth-wells in #3431
- Update Install instructions by @jhale in #3427
- Fix mesh constructor again by @jorgensd in #3432
- Remove outdated demo by @chrisrichardson in #3440
- Check for interprocess facets when assembling interior facet integrals by @jorgensd in #3439
- Remove commented line by @jorgensd in #3441
- Bump PETSC release by @jorgensd in #3445
- Use earlier NumPy version in Dockerfile by @garth-wells in #3448
- Add comment in
pyproject.toml
on cffi version pin by @garth-wells in #3449 - Move to py311 for oneAPI test by @garth-wells in #3451
- Fix bug in distribute by @chrisrichardson in #3453
- Fix codim-1 assembly on interior facets by @jorgensd in #3452
- Fix arity order of operators in test by @jorgensd in #3458
New Contributors
- @dependabot made their first contribution in #3247
- @schnellerhase made their first contribution in #3246
- @bpachev made their first contribution in #3399
Full Changelog: v0.8.0...v0.9.0