Releases: FEniCS/dolfinx
v0.10.0.post4
This fixes an issue building against ADIOS2 2.11 and above. Users do not need to upgrade.
Full Changelog: v0.10.0.post3...v0.10.0.post4
v0.10.0.post3
Contains a fix for an unsigned integer bug in a test identified by @drew-parsons through Debian's CI/build system. See #3996 for more details.
For end-users, this version is functionally identical to all v0.10.0* tags, and they do not need to upgrade.
Full Changelog: v0.10.0.post2...v0.10.0.post3
v0.10.0.post2
Contains a non-critical fix for pytest>=9 which contains an API-breaking for reading pyproject.toml. This release may be useful for package maintainers, but users do not need to upgrade.
We note the recent critical bug fix release of FFCx https://github.com/FEniCS/ffcx/releases/tag/v0.10.1.
Full Changelog: v0.10.0.post1...v0.10.0.post2
v0.10.0.post1
This post release fixes a bug in the test python/test/unit/common/test_version.py which checks that the C++ library and Python library have the same version.
For users, this version is functionally identical to v0.10.0 and v0.10.0.post0 tags.
For package maintainers, the new version of this test uses the Python package packaging. This does not affect the dependencies for fenics-dolfinx itself.
Full Changelog: v0.10.0.post0...v0.10.0.post1
v0.10.0.post0
What's Changed
This is a major release of DOLFINx and users are advised to upgrade.
All PRs are included below. A curated changelog is available here.
The v0.10.0 tag exists but was never released due to errors in the documentation build.
Features and API changes
- Safe default value for unbound variables in dolfinx.conf by @mleoni-pf in #3470
- Use standard C++20 (no GNU extensions) by @garth-wells in #3479
- Revised
Timer, now usingstd::chronoby @garth-wells in #3484 - Improve Newton solver docs by @garth-wells in #3490
- Fixes to
Timerlogic by @garth-wells in #3488 - Allow access to logged timer data by @garth-wells in #3487
- Small updates to Newton Solver documentation. by @jhale in #3491
- C++ style improvements in subdomain demo by @garth-wells in #3493
- Demo updates for LU solver bugs by @garth-wells in #3499
- Improve readability of form in HDG demo by @jpdean in #3508
- Fix SNES NonlinearPDE class when using line search by @jhale in #3507
- Improve Topology construction and fix MPI/NBX bug by @garth-wells in #3512
- Add C++ demo that shows mixed elements and consistency fixes for element spaces by @garth-wells in #3500
- Use separately allocated data for each call to MPI_Ineighbor_allgatherv by @chrisrichardson in #3513
- Add more PETSc destruction notes to assembly functionality that creates PETSc.Mat/Vec objects by @jorgensd in #3524
- Allow specifying attribute name when reading meshtag by @mleoni-pf in #3257
- Remove jit options from function-space as we no longer generate code. by @jorgensd in #3529
- Use non-standard Python package manager uv in oneAPI CI by @Saransh-cpp in #3550
- Add
FiniteElementpython wrapper by @schnellerhase in #3542 - Mesh
Geometryimprovements for mixed topology by @garth-wells in #3575 - Modify demo_helmholtz.py to solve for plane wave solution in complex mode by @jzitelli in #3563
- VTKHDF mesh I/O by @chrisrichardson in #3576
- Use block preconditioner for mixed Poisson problem by @garth-wells in #3580
- Fix bug in coefficient packing by @garth-wells in #3645
- Add discrete curl matrix operator by @garth-wells in #3587
- Support assembly of linear forms with cell integrals on mixed-topology meshes by @jpdean in #3606
- Move SpMV from tests into MatrixCSR by @chrisrichardson in #3591
- Put FEM 'packing' functions into separate header by @garth-wells in #3621
- Mixed topology: find dS cells by @chrisrichardson in #3632
- Extend
locate_entitiesfor mixed-topology meshes by @jpdean in #3637 - Move
Expression::evalto a free function with other 'assemblers' by @garth-wells in #3625 - Simplify assembler implementation interfaces by @garth-wells in #3649
- Expose
_bbox_coordinatesofBoundingBoxTreeto users by @ordinary-slim in #3600 - Extend the mesh generation testing to the 3D cases by @schnellerhase in #3604
- Refactor LA into native and PETSc part and add assigners by @jhale in #3659
- Allow a custom cell reorder function to be passed to
create_meshby @jpdean in #3664 - Add support for Serendipity (order 2) coordinate elements by @jorgensd in #3662
- Add void* to tabulate tensor kernel by @sclaus2 in #3660
- Correct usage of input coefficients for
apply_liftingof blocked operators. by @jorgensd in #3680 - Block assembly with no DirichletBC and None on diagonal by @jorgensd in #3683
- Fix finite relative-residual at 0th iteration by @RemDelaporteMathurin in #3713
- Expose
Scattererin Python layer by @chrisrichardson in #3727 - Local dual graph for branching meshes by @schnellerhase in #3730
- Extend blocked/nest/monolithic assembly test with a higher order vector example by @schnellerhase in #3708
- Add a demo showing how submeshes can be used to represent boundary data by @jpdean in #3711
- SNES solver interface for standard, block and nest systems by @jorgensd in #3648
dolfinx.fem.petsc.LinearProblemfor nest and block systems by @jorgensd in #3684- Check rank/shape consistency between user provided Constants and Constants in generated UFCx code by @garth-wells in #3760
- XDMF IO for meshes using serendipity degree 2 by @mscroggs in #3731
- NonlinearProblem docstring improvements by @jhale in #3765
- Improve nested fieldsplit preconditioning setup on
*Problemclasses by @jorgensd in #3752 - Remove shared_vertex ghost mode option by @chrisrichardson in #3795
- Replace
std::mapin refinement by @chrisrichardson in #3797 - Harmonise Stokes high and low-level preconditioner setup by @jhale in #3778
- Write VTKHDF point and cell data by @chrisrichardson in #3806
- Introduce
create_identity_partitionerfor refined mesh partitioning by @schnellerhase in #3661 - Create parallel communication graph and support NetworkX analysis and visualiation by @garth-wells in #3803
- Doc improvements
dolfinx.jitby @jhale in #3812 - Simplify PETSc wrapper solve return type by @jhale in #3810
- Improve PETSc wrapper documentation by @jhale in #3811
- Align order of
create_meshin Python layer to C++ layer by @schnellerhase in #3826 - Correct several typos in Stokes example and improve documentation formatting by @jorgensd in #3834
- Force non random order of execution for C++ tests by @schnellerhase in #3852
- Expose original cell indices by @jorgensd in #3854
- Wrap FunctionSpace.collapse by @michalhabera in #3851
- Allow
dolfinx.fem.Constantto take native float as value type by @finsberg in #3847 - Generalise
la::Vectorto support GPUs by @garth-wells in #3855 - Remove
mpiexecin cmake test target by @jhale in #3870 - Refactor
dolfinx::fem::Formto use local indexing of forms, rather than integral ids by @jorgensd in #3740 - Re-enable Windows build by @jhale in #3867
- Allow copy of MatrixCSR to different storage (GPU support) by @chrisrichardson in #3886
- Rocky -> AlmaLinux for CI by @garth-wells in #3887
- Introduce
dolfinx.fem.create_dofmapsby @schnellerhase in #3842 - Vertex integrals by @schnellerhase in #3726
- Support 'cast-copy' of
la::MatrixCSR,la::Vectorandcommon::Scatterer(includes GPU support) by @garth-wells in #3894 - allow stable abi builds by @minrk in #3875
- Drop Python 3.9 support by @schnellerhase in #3903
- Global dual graph computation for branching meshes by @schnellerhase in #3830
- Change interface of
fem.petsc.create_vectorto allow for general list of function spaces by @schnellerhase in #3694 - Fix vector block data for single function space case by @schnellerhase in #3924
- Improve python exposure of determine_point_ownership by @jorgensd in #3927
- add checks of cell tag consistency in gmshio by @pierricmora in #3342
- Support list of DG-0 + other space in VTXWriter by @ordinary-slim in #3375
- Fix "jo...
v0.9.0.post1
This post release fixes:
- Installation of optional test dependencies (pyamg, numba etc.) in Docker images.
Version numbers are still 0.9.0 throughout.
These changes are for strict correctness - the v0.9.0 tag will be functionally identical for almost all users.
A curated set of release notes is available at: https://fenicsproject.org/blog/v0.9.0/
Full Changelog: https://github.com/FEniCS/dolfinx/compare/v0.9.0.post0..v0.9.0.post1
v0.9.0.post0
This post release fixes:
- An incorrect lower bound on the Basix version in the C++ build.
- Updates
CITATION.cff.
Version numbers are still 0.9.0 throughout.
These changes are for strict correctness - the v0.9.0 tag will be functionally identical for almost all users.
A curated set of release notes is available at: https://fenicsproject.org/blog/v0.9.0/
Full Changelog: v0.9.0...v0.9.0.post0
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_indicesoverlocate_entities_boundaryfor 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
CONFIGmode. 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_densefor 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
Timerinterface 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
dolfinxby @jhale in #3335 - Expose
DirichletBC.dof_indicesto 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_assemblydemo to CMake by @garth-wells in #3436 - Simplify blocked demos using
extract_blocksby @jorgensd in #3450 - Updating
demo_axis.pyanddemo_pml.pyfor parallel computing by @jorgensd in #3433 - Vertex submesh support by @jorgensd in #3455
- Pass graph partitioner to
mesh::refineby @garth-wells in #3444 - Return source rank for each node in constant degree adjacency list when distributing by @garth-wells in #3447
- Use
std::optionalto 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_tfor 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.mdby @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.04by @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
spdlogto 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_geometryby @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
pyamgdemo 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::anywith -1 and add argument tonb::ndarrayin 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
...
v0.8.0
This is a major release with a number of important bug fixes and new features. Users are advised to upgrade.
Full Changelog: v0.7.3...v0.8.0
Major changes
- Remove deprecated
fem.FunctionSpacefunction by @francesco-ballarin in #2818 - Import mpi4py early for MPI initialisation by @garth-wells in #2826
- Improve documentation of
pack_coefficientsby @jpdean in #2822 - Use
pyproject.tomlfor install of Python part by @chrisrichardson in #2707 - Fix bounding box leaf collision check by @jorgensd in #2850
- Switch to nanobind by @garth-wells in #2820
- Remove unnecessary calls to
compute_graph_edgesby @IgorBaratta in #2856 - Remove call to
compute_graph_edgesincompute_owned_indicesby @IgorBaratta in #2875 - Remove remaning
MPI_Alltoall(v)calls by @garth-wells in #2868 - Add test of symmetric tensor elements by @mscroggs in #2880
- Add test of quadrature element by @mscroggs in #2870
- Speed up non-matching interpolation data and add extrapolation parameter by @jorgensd in #2858
- Let PETSc choose default LU solver within NewtonSolver by @jhale in #2803
- Implement interpolation for quadrature elements by @mscroggs in #2878
- Encourage proper management of subspaces in user code by @IgorBaratta in #2916
- Expose
transpose_dofmapindolfinx.femby @jorgensd in #2932 - Add CITATION.cff by @mscroggs in #2953
- Fix
create_submeshby generalising sub index map creation by @jpdean in #2890 - Split mesh and mesh topology MPI communicators by @garth-wells in #2925
- Implementation performance improvements when concatenating function spaces for PETSc by @garth-wells in #2945
- Generalise topology to take multiple cell types by @chrisrichardson in #2979
- Improvements to
demo_helmholtz.pyanddemo_scattering_boundary_conditions.pyby @BillMaZengou in #2992 - Replace deprecated ffcx.element_interface.QuadratureElement with basix.ufl.quadrature_element by @mscroggs in #2956
- Allow for blocked elements with block size 1 by @mscroggs in #2955
- Custom C/C++ kernel demo by @jhale in #2983
- Implement VTK I/O for arbitrary degree tetrahedron cells by @mscroggs in #2985
- Fix
IndexMap->global_to_local()by @jorgensd in #2963 - Fix leak for
MPI_Datatypeby @garth-wells in #3031 - Dofmap builder preparation for mixed topology by @chrisrichardson in #3025
- Add interface to
mesh::Geometryfor multiple cmaps and dofmaps by @chrisrichardson in #3035 - Simplify
Formconstructor by adding astructfor integral data by @jpdean in #3045 - Fix doc in demo_poisson.py by @BillMaZengou in #2984
- Implement VTK I/O for arbitrary degree hex cells by @mscroggs in #2982
- Wrap discrete_gradient in Python by @mscroggs in #3037
- Wrap
create_nonmatching_meshes_interpolation_datain Python by @mscroggs in #3039 - Wrap entities_to_geometry in Python by @mscroggs in #3038
- Ruff format mk2 by @jhale in #3044
- Add matrix-free solver python demo by @IgorBaratta in #3028
- C++ demos document generation by @ampdes in #3052
- Add maps for mixed-domain assembly by @jpdean in #3056
- Add mixed-domain matrix assembly for facet integrals (codimension 0) by @jpdean in #3079
- Support DG-0 functions in VTXWriter by @jorgensd in #3107
- Replace NumPy's logical_and and logical_or by @michalhabera in #3115
- Reuse mesh when saving to VTX by @massimiliano-leoni in #2738
- Add numpy interface to
dolfinx.cpp.mesh.extract_topologyby @jorgensd in #3075 - Improve mesh refinement documentation by @jorgensd in #3010
- Topology computation for mixed topology by @chrisrichardson in #2994
- Refactor
la.Vector.normby @nate-sime in #3108 - Complex variables stored correctly in VTXWriter by @jorgensd in #2831
- Fix interior facet permutations by @anzil in #3009
- Support evaluation of facets in
dolfinx.fem.Expressionby @jorgensd in #3062 - Make PETSc optional (ed JH: in C++) by @chrisrichardson in #3123
- Dof transform name updates by @garth-wells in #3149
- Re-name overloaded
create_formfunction by @garth-wells in #3003 - Fix determine point ownership when majority of points in receiving mesh is outside in-mesh by @mleoni-pf in #3110
- Support creation of meshes from Basix elements from Python by @garth-wells in #2960
- Add mixed-domain vector assembly by @jpdean in #3087
- Remove gdim input to UFL elements, move value_shape to function space by @mscroggs in #2996
New Contributors
- @BillMaZengou made their first contribution in #2984
- @ampdes made their first contribution in #3052
- @mleoni-pf made their first contribution in #3110
- @uvilla made their first contribution in #3092
All other changes
- Switch default dev-env container pull to ghcr.io by @jhale in #2806
- Rename name -> name by @mscroggs in #2809
- TST: add missing include by @minrk in #2810
- Missing from future import annotations by @minrk in #2808
- Bump version to 0.8.0.dev0 by @jhale in #2813
- Add two more cases to GitHub ISSUE_TEMPLATE: installation and general questions by @francesco-ballarin in #2814
- Post-release fixes for 0.7.0 by @jhale in #2815
- Add macOS-13 runner for conda install test by @jhale in #2816
- Update UFL element by @mscroggs in #2784
- Fix docker workflow after removal of
fem.FunctionSpacefunction by @francesco-ballarin in #2819 - Add conda to macos-13 runner. by @jhale in #2821
- Fix redhat dockerfile by @garth-wells in #2823
- Fix conda CI tests by @garth-wells in #2824
- Remove unnecessary
py.typedmarkers in python subpackages by @francesco-ballarin in #2833 - Drop setting dl open flags in
dolfinx/__init__.pyby @francesco-ballarin in #2836 - Doc string improvement by @garth-wells in #2839
- Add
flake8andisortchecks on python files incppfolder by @francesco-ballarin in #2838 - Remove unused pylit3 fron doc dependencies by @garth-wells in #2842
- Rename Basix functions by @mscroggs in #2849
- Update install instructions. by @jhale in #2851
- Pass pybind11 hint to cmake find. by @jhale in #2852
- Update computation of number of components for arbitrary value shape in
xdmf_functionby @IgorBaratta in #2848 - Pass cmake build type and cxx flags up to scikit-build-core by @jhale in #2853
- Remove installation of build requirements from workflows, since they are already installed in the underlying docker images by @francesco-ballarin in #2854
- Let dlx.la.Vector manage the scope of the petsc4py wrapper (#1) by @uvilla in #3092
- Fix typo in Dockerfile.end-user by @jhale in #2860
- Move upgrade of pip/setuptools from redhat workflow to redhat docke...
v0.7.3
This minor bug fix release:
- Makes some minor changes to the documentation for improved readability.
- Fixes test fail in the unit tests related to gmsh creating meshes with quadrilaterals and triangles on ARM targets.
There is no need to upgrade from v0.7.2.
Full Changelog: v0.7.2...v0.7.3