Releases: firedrakeproject/firedrake
2026.4.0
What's Changed
Deprecations
- Adapt to UFL changing some methods to properties by @connorjward in #4629
- Remove deprecated adjoint backend usage by @connorjward in #4769
- Remove deprecated File alias for VTKFile by @connorjward in #4756
- Remove star imports from
__init__.pyby @leo-collins in #4722 - Remove bizarre cofunction init behaviour by @connorjward in #4754
- Rename 'unmarked' to 'UNMARKED' to make clear that it is a constant by @connorjward in #4837
- Remove deprecated BCs method attribute by @connorjward in #4822
- Drop utils.cached_property in favour of functools.cached_property by @nileshhadalgi016 in #4903
- Remove deprecated function space subfunctions by @connorjward in #4895
- Simplify MeshGeometry initialisation by @connorjward in #4583
- Deprecate WithGeometry.create factory function by @connorjward in #4957
- Prefer petsctools over pyop2.utils for certain utility methods by @connorjward in #5002
- Deprecate variable layer extrusion by @connorjward in #5028
Install
- Download MUMPS on Linux because PETSc now assumes a higher version by @JHopeCollins in #4661
- Clean up how we include package data in our distributions by @connorjward in #4755
- Explicitly link MPI in setup.py by @connorjward in #4762
VertexOnlyMesh/interpolation
- Stop renumbering arguments in the expression to
interpolateby @leo-collins in #4582 - test assembly of composition of interpolates by @leo-collins in #4710
- Remove
Interpolatorfrom public API and other interpolation refactoring by @leo-collins in #4595 - Make assembly of interpolation matrices respect
mat_typeby @leo-collins in #4749 - interpolate two-forms by @leo-collins in #4770
- symbolic interpolation docs by @leo-collins in #4739
- multi-domain assembly by @leo-collins in #4763
- Assemble mixed cross-mesh interpolation operator by @leo-collins in #4792
- Leo/cross mesh non lagrange by @leo-collins in #4804
- Use
Index_CreateWithArrayto build mesh spatial index by @leo-collins in #4865 - Avoid creating a function space when calculating bounding box coordinates by @leo-collins in #4900
Adjoint/checkpointing
- Add per-rank disk checkpointing for adjoint tape by @sghelichkhani in #4891
Submesh
- Allow for solving multi-domain problems involving codim-0 submeshes by @ksagiyam in #3478
- Allow for solving multi-domain problems involving codim-1 submeshes by @ksagiyam in #4430
- Ksagiyam/support submesh assign by @ksagiyam in #4489
- Submesh on subcommunicator by @pbrubeck in #4761
- Submesh: relabel ghost entities as owned if comm.size == 1 by @pbrubeck in #4816
- Tidy up Submesh by @pbrubeck in #4999
Netgen
- Move Firedrake code from ngsPETSc into Firedrake by @connorjward in #4782
- Adaptive Multigrid by @pbrubeck in #4726
- Netgen: curved meshes from Mesh constructor and refine_marked_elements by @pbrubeck in #4930
- Add multigrid tests for Netgen SplineGeometry and CSGeometry by @pbrubeck in #5016
Covariance operator and ensemble
- Ensemble methods dispatch to MPI methods for non-Firedrake types by @JHopeCollins in #4580
EnsembleBlockDiagonalMatandEnsembleBJacobiPCby @JHopeCollins in #4711- White noise generators and AR covariance operators by @JHopeCollins in #4716
Ensemble.sequentialcontext manager by @JHopeCollins in #4964- Move CovariancePC to top level namespace by @JHopeCollins in #5020
MixedCovarianceOperatorby @JHopeCollins in #5026- autoregressive covariance: add custom weight for custom diffusion form by @JHopeCollins in #5027
Other
- LinearEigensolver: default to eps_target = 0 is conceptually wrong by @stefanozampini in #4634
- PMGPC: use native matrix-free (adjoint) interpolation by @pbrubeck in #4602
- ImplicitMatrixContext: create submatrix via MatCreateSubMatrixVirtual by @pbrubeck in #4693
- default firedrake options prefix for petsctools by @JHopeCollins in #4699
- Support MatIS and BDDC by @pbrubeck in #4405
- Mesh independent optimization trick by @jrmaddison in #4575
- Redesign how we interface with communicators and PETSc by @connorjward in #4766
- Function space method to create broken function space. by @JHopeCollins in #4773
- Ml mixed fs by @jshipton in #4795
- Tidy up custom exceptions by @leo-collins in #4834
- Interpolate into PhysicallyMappedElements by @pbrubeck in #4832
FiredrakeExceptionbase class by @leo-collins in #4843- fix zero-form interpolation by @leo-collins in #4841
- Multigrid: native transfers for non-Lagrange elements by @pbrubeck in #4839
NonUniqueMeshSequenceErrorby @leo-collins in #4844- Accept pathlib.Path objects as filename in Mesh by @ZiyaSelim in #4853
- Introduce runtime_quadrature_space by @pbrubeck in #4850
- Test BDFM by @pbrubeck in #4866
- Fix multidomain assign by @pbrubeck in #4849
- BDDC: cellwise subdomains, matfree MatIS, and user-defined primal vertices by @pbrubeck in #4757
- Fix assign for MixedFunctionSpace and correct 'ancester' typo by @sghelichkhani in #4888
- RestrictedFunctionSpace: support assignment across different restrictions by @pbrubeck in #4890
- Add deadlock safe function for calling fallible pieces of code on rank 0 by @connorjward in #4972
- Real x extruded fixes by @connorjward in #4970
- Fix Real coefficients in interior facet integrals by @sghelichkhani in #4992
- PCPatch: support exterior facet integrals by @miguelcoolchips in #4878
- Fix assembly of Real coefficients for interior facet integrals by @connorjward in #4996
- Refactor periodic utility meshes by @connorjward in #4836
- Loading of periodic meshes generated by gmsh by @miguelcoolchips in #4935
- Add CUDA configuration to firedrake-configure and github actions by @dsroberts in #4988
- Check that the mesh has a boundary before trying to apply a BC to it by @connorjward in #5014
- delay creation of multifunction by @dham in #5022
- Allow passing a maximum degree quadrature to a measure by @JHopeCollins in #4989
- Improved traceback from PETSc errors by @stefanozampini in https://github.com...
Firedrake: an automated finite element system
This release is specifically created to document the version of firedrake used in a particular set of experiments using Firedrake. Please do not cite this as a general source for Firedrake or any of its dependencies. Instead, refer to https://www.firedrakeproject.org/citing.html
2025.10.4
What's Changed
- Fix Docker builds by @connorjward in #4955
- Install build requirements in workflow now they aren't available by default by @connorjward in #4960
- Update notebooks repo at every push to release by @connorjward in #4958
- Fix Dockerfile ENV setting (export does not work) by @connorjward in #4966
- Update reference in demo by @ABaierReinio in #4967
- Add link to slides and code for Firedrake training event next week by @pefarrell in #4968
- Add zenodo to linkcheck ignore list by @connorjward in #4974
- Conference photo, light edits by @pefarrell in #4977
- Fix docstring for PeriodicBoxMesh by @connorjward in #4978
- Add extra detail about times and dates for Firedrake/PETSc 26 by @connorjward in #4990
- Add missing PetscFunctionBegin calls to tinyASM by @connorjward in #4997
- Add missing exercise 1 back into first notebook by @connorjward in #5013
Full Changelog: 2025.10.3...2025.10.4
2025.10.3
What's Changed
- Use
PETSc.ScalarType(0)inFunction.zeroby @JHopeCollins in #4720 - Automatically update notebooks repository on push to release by @connorjward in #4639
- default firedrake options prefix for petsctools by @JHopeCollins in #4727
- Fix linkcheck by @connorjward in #4733
- BUG: Fix EquationBC + matfree + fieldsplit by @pbrubeck in #4734
- Multicomponent demo sub bcs for EquationBC by @KarsKnook in #4695
- BUG: use native prolongation for KMV elements by @pbrubeck in #4747
- Add HDF5 test to firedrake-check by @connorjward in #4759
- BUG: fix Function._ad_dot for H1 (#4590) by @stephankramer in #4760
- FML: fix dunder methods and support BaseForm by @pbrubeck in #4768
- Zenodo fixes by @connorjward in #4758
- BUG: Fix symmetry in supermeshing by @pbrubeck in #4764
- Add webpage about March tutorial by @pefarrell in #4793
- Fix docs for sphinx 9 by @connorjward in #4802
- Add a registration link for Oxford training event by @pefarrell in #4796
- FunctionSpace: enable variant and quad_scheme and docs by @pbrubeck in #4607
- Enable solve(a == 0, u) by @pbrubeck in #4805
- Update Firedrake 26 organising committee by @connorjward in #4813
- Skip timing out backwards compat io tests on CI by @JHopeCollins in #4818
- Fix for numpy 2.4.1 by @pbrubeck in #4824
- Fix typo in patch demos by @pbrubeck in #4826
- Purge the pip cache in CI by @connorjward in #4858
- More numpy 2.4.1 fixes by @pbrubeck in #4862
- MG: force injection into all levels with Real space unknown by @pbrubeck in #4864
- Fix for petsc4py/slepc4py+setuptools 81 by @connorjward in #4871
- setuptools fix for petsc4py+slepc4py in docker file by @JHopeCollins in #4875
- Speed up test collection by @connorjward in #4880
- PETSc/Firedrake meeting webpage by @dham in #4872
- fix accommodation dates by @dham in #4885
- Add contributing guide to website by @connorjward in #4877
- Draft schedule (#4894) by @pbrubeck in #4897
- Remove broken team member link by @connorjward in #4898
- Link to AI policy in contrib docs by @connorjward in #4910
- convert incorrect use of single backicks to double by @j-bowhay in #4916
- Fix dumpdir fixture by @connorjward in #4922
- Remove broken submesh example from docstring by @connorjward in #4928
- Improvements for plotting tests by @connorjward in #4927
- Fix deadlock when the compiler crashes internally by @connorjward in #4913
- Bugfix with deflation: only deflate successful solves by @pefarrell in #4933
- Trivial change to tutorial website: specify rooms by @pefarrell in #4936
- Fix stochastic PyOP2 test hang by @connorjward in #4937
- update adjoint notebook for api changes by @dham in #4945
- firedrake-zenodo 'fixes' by @connorjward in #4939
- Website edits: close registration by @pefarrell in #4947
- Use latest PETSc patch release by @connorjward in #4938
Full Changelog: 2025.10.2...2025.10.3
Firedrake: an automated finite element system
This release is specifically created to document the version of firedrake used in a particular set of experiments using Firedrake. Please do not cite this as a general source for Firedrake or any of its dependencies. Instead, refer to https://www.firedrakeproject.org/citing.html
2025.10.2
What's Changed
- Ignore flaky old hotel link by @connorjward in #4630
- Add [docs] dependency in developer install instructions by @pbrubeck in #4633
- replace obsolete intersphinx by @dham in #4141
- Add PyOP2 API docs back to conf.py by @connorjward in #4636
- fix
test_high_order_location_warped_interior_facetby @leo-collins in #4632 - BUG: fix reuse of matfree adjoint Interpolator by @pbrubeck in #4623
- test: skip regression/test_locate_cell.py::test_high_order_location_e… by @ksagiyam in #4642
- Fix Hessian calculation for
NonlinearVariationalSolverblock by @JHopeCollins in #4641 - BUG: Fix TransferManager reuse on VectorFunctionSpace components by @pbrubeck in #4649
- BUG: fix multigrid transfers for symmetric tensors by @pbrubeck in #4648
- Attach appctx to DirichletBCs by @pbrubeck in #4655
- Ksagiyam/disable temp by @ksagiyam in #4658
- Firedrake container on ARM by @connorjward in #4640
- Bug: Fix bcs for BaseFormOperator on MixedFunctionSpace by @pbrubeck in #4659
- Fix linkcheck by @connorjward in #4681
- BUG: Fix FormSum involving the output tensor by @pbrubeck in #4670
- Multicomponent demo update (into release) by @ABaierReinio in #4676
- Specialise G-ADOPT smoke tests for main and release by @connorjward in #4680
- Fix Thetis smoke tests by @connorjward in #4686
- Fix firedrake-check: tweak locations for cell location tests by @connorjward in #4692
- PCPatch: validate mesh overlap by @pbrubeck in #4684
- Add information about building with non-system MPIs by @connorjward in #4698
- Fix subfunction hessian by @JHopeCollins in #4705
- Leo/authors by @leo-collins in #4704
- Remove mailing list information from the website by @connorjward in #4691
- Fix Hypre auxiliary spaces by @pbrubeck in #4712
- Make VTK optional again by @connorjward in #4713
- fix
Function._ad_assign_numpyfor real space in parallel by @JHopeCollins in #4714 - Fix point evaluation API change by @leo-collins in #4675
- Fix the bug in implementing the AuxiliaryOperatorPC and add a note in… by @Molin-Han in #4717
New Contributors
- @Molin-Han made their first contribution in #4717
Full Changelog: 2025.10.1...2025.10.2
Firedrake: an automated finite element system
This release is specifically created to document the version of firedrake used in a particular set of experiments using Firedrake. Please do not cite this as a general source for Firedrake or any of its dependencies. Instead, refer to https://www.firedrakeproject.org/citing.html
Firedrake: an automated finite element system
This release is specifically created to document the version of firedrake used in a particular set of experiments using Firedrake. Please do not cite this as a general source for Firedrake or any of its dependencies. Instead, refer to https://www.firedrakeproject.org/citing.html
2025.10.1
What's Changed
- Distinguish firedrake-configure links without leading to git conflicts by @connorjward in #4625
- pyproject.toml: add immutabledict by @ksagiyam in #4622
- Move ensemble parallelism links by @connorjward in #4626
- SLATE: prevent Cofunction reassembly by @pbrubeck in #4377
Full Changelog: 2025.10.0...2025.10.1
2025.10.0
What's Changed
Adjoint
Interpolate/VertexOnlyMesh
- Dual interpolation from/into MixedFunctionSpace by @pbrubeck in #4197
- Cleanup Interpolate assembly by @pbrubeck in #4288
- Move
__future__interpolation intointerpolation.pyby @leo-collins in #4346 - Allow construction of interpolation matrix between a
VertexOnlyMeshand its input-ordering by @leo-collins in #4341 - Make
interpolatefunction avoid usingInterpolatorby @leo-collins in #4432 - Change VOM
missing_points_behaviourAPI by @leo-collins in #4524 - Cell location on non-simplicial higher-order meshes by @leo-collins in #4517
- Fix for vom-to-vom permutation matrix on Vector-valued function spaces by @leo-collins in #4510
- Cell location on simplicial higher-order meshes by @leo-collins in #4484
- introduce
PointEvaluatorobject by @leo-collins in #4516 - Remove
Interpolator.interpolateby @leo-collins in #4531 - deprecate
.at()by @leo-collins in #4543 - Warn users about
interpolateexpression renumbering by @leo-collins in #4572 - stop annotation inside PointEvaluator by @leo-collins in #4567
- Pass kwargs to Cofunction.interpolate by @pbrubeck in #4587
- Matfree adjoint interpolation by @pbrubeck in #4552
- Explicitly assemble the interpolate adjoint matrix by @pbrubeck in #4576
- MixedInterpolator by @pbrubeck in #4596
submesh
petsctools
- Use petsctools package by @connorjward in #4194
- Import
get_external_packagesfrompetsctoolsnotfiredrake.petscby @JHopeCollins in #4381 - Fixes for changes to petsctools OptionsManager API by @connorjward in #4418
- Use petsctools release by @connorjward in #4423
- Link to petsctools API documentation by @connorjward in #4569
- Use petsctools for citations by @connorjward in #4560
Ensemble
EnsembleFunctionandEnsembleFunctionSpace. by @JHopeCollins in #4025
Other
- BDDC: Fix block sizes by @pbrubeck in #4253
- Remove firedrake-install and friends by @connorjward in #4270
- Ksagiyam/rename sub elements by @ksagiyam in #4354
- use ufl.apply_coefficient_split() by @ksagiyam in #4349
- Speed up caching by @connorjward in #4383
- remove mesh.init() by @ksagiyam in #4201
- Change master to main (2) by @connorjward in #4445
- Stop casting Constants+domain to Real functions by @connorjward in #4497
- TSFC: Improved caching to remove ComponentTensors by @pbrubeck in #4503
- Avoid
dat_versionincrement withriesz_representation("l2")by @jrmaddison in #4504 - Expunge Vector by @connorjward in #4499
- fix snes_linesearch_type l2 -> secant by @ksagiyam in #4525
- RestrictedFunctionSpace: support Fieldsplit, multigrid, and python PC by @pbrubeck in #4169
- FixAtPointBC: support bendy meshes by @pbrubeck in #4532
- MG: rediscretize with a different coarse_mat_type by @pbrubeck in #4538
- Extruded plotting fixes by @danshapero in #4553
- Add support for deflation via firedrake.DeflatedSNES by @pefarrell in #4558
- Fix coarsening for R space by @pbrubeck in #3814
- delete
_from_cell_listby @leo-collins in #4557 - Coarsen SLATE Tensors by @pbrubeck in #2889
- VariationalSolver: support
sub_mat_typeby @pbrubeck in #4028 - Fix TransferManager reuse for mixed coefficients by @pbrubeck in #4600
Full Changelog: 2025.4.3...2025.10.0