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 "jointed" manifold mesh creation by @jorgensd in #3916
- Bugfix: mesh construction from mesh data on single process by @schnellerhase in #3936
- Handle diagonal assembly by @jorgensd in #3908
- Unification of one-sided sub-entity integrals + ridge integrals by @jorgensd in #3900
- Add XDMF-file flush functionality by @schnellerhase in #3947
- Fix
interpolation_matrixfor continuous spaces by @jorgensd in #3948 - Safer handling of PETSc destruction in high-level classes by @jorgensd in #3951
Other changes
- Update release instructions. by @jhale in #3460
- Bump version to 0.10 by @jhale in #3462
- Update Windows conda instructions. by @jhale in #3466
- Simplify conda weekly test by @jhale in #3467
- Add pip to dependabot by @jhale in #3464
- Fix warnings from Docker build linter by @jhale in #3463
- Spack CI update by @garth-wells in #3472
- Update version in Spack CI file by @garth-wells in #3473
- Re-enable Windows conda check using cmd.exe by @jhale in #3474
- Install all dependencies needed to run tests. by @jhale in #3475
- Improve build and optional dependency handing in Dockerfiles by @jhale in #3476
- Bump mpi4py/setup-mpi from 1.2.2 to 1.2.6 by @dependabot[bot] in #3457
- Bump adios2, HDF5, MPICH and OPENMPI in docker images. by @jorgensd in #3486
- Simplify interface to
nanobind::ndarrayby @garth-wells in #3496 - Bump mpi4py/setup-mpi from 1.2.6 to 1.2.7 by @dependabot[bot] in #3497
- PETSc version bump to 3.22.1 in Dockerfiles by @garth-wells in #3498
- Start simplification and consistency fixes for
fem::FiniteElementby @garth-wells in #3502 - Remove loguru and old pugixml references by @jorgensd in #3503
- Remove
Fidesfile backend by @garth-wells in #3485 - Expose set original cell index to python by @jorgensd in #3504
- Require
nanobind>=2.2.0by @francesco-ballarin in #3510 - Fix doc typo by @garth-wells in #3514
- Unify code path of
DirichletBC::setby @schnellerhase in #3505 - Remove debug print by @jorgensd in #3515
- Allow mixed element with single element by @jorgensd in #3520
- Fix topological dimension of vertex-meshes by @jorgensd in #3523
- Remove error/warning when running macOS with OpenMPI by @jhale in #3525
- Check/fix for newest ruff by @jhale in #3527
- Fix typos by @mleoni-pf in #3526
- Remove pkg-config install from macOS test by @jhale in #3530
- Get FEniCSx refs from central workflow by @jhale in #3537
- Remove brew unlink by @schnellerhase in #3539
- Fix symmetric value shape by @michalhabera in #3535
- Fix domain id ordering of manually specified integration entities in Python by @jpdean in #3538
- Add
AdjacencyListpython wrapper by @schnellerhase in #3509 - cpp to MPI type mapping improvements by @schnellerhase in #3495
- Remove
TimeLogManagerand makeTimeLoggersingleton by @schnellerhase in #3494 - Ignore none subdomain data in form compilation subdomain checker by @jorgensd in #3541
- Unify and fix BoundingBoxtree constructor (C++) by @jorgensd in #3545
- Bump mpi4py/setup-mpi from 1.2.7 to 1.2.8 by @dependabot[bot] in #3544
- Copy x into u inside SNES Solver during Jacobian computation by @jhale in #3551
- Fix regression in FiniteElement Python wrapper by @jorgensd in #3552
- Further fixes to FiniteElement Python wrapper by @jorgensd in #3554
- Extract edge tags and vertex tags from gmsh and return a NamedTuple by @finsberg in #3547
- Fix regression from PR 3547 by @finsberg in #3560
- Add missing datatype in test_fem_pipeline by @finsberg in #3561
- Fix for mixed topology when mixing cells with different facet types by @chrisrichardson in #3572
- Single code path for mesh creation by @garth-wells in #3573
- Fix doc typos by @garth-wells in #3574
- Topology doc and code path improvements by @garth-wells in #3577
- Move Discourse and Slack to top of README by @garth-wells in #3578
- Simplify and improve Topology interface by @garth-wells in #3579
- Spelling fixes by @garth-wells in #3586
- Fix: interval refinement assertion ignores optional type by @schnellerhase in #3584
- Fix inconsistent ufl usage in demos by @schnellerhase in #3532
- Version bumps in Dockerfile by @garth-wells in #3592
- Tidy up sparse matrix code by @garth-wells in #3596
- Fix mapping of coefficients and constants for form independent compilation. by @jorgensd in #3597
- More work towards supporting mixed-topology meshes by @jpdean in #3590
- Switch to GitHub native runners by @jhale in #3601
- Update PETSc vector for mixed topology by @chrisrichardson in #3612
- Find ADIOS2 CXX only by @garth-wells in #3613
- Bump versions in Dockerfile by @garth-wells in #3614
- Bump pyvista version by @jorgensd in #3616
- Fix dofmap extraction for subsets of cells. Resolve #3607 by @jorgensd in #3615
- Use strict compiler flags when building nanobind layer in Debug mode. by @garth-wells in #3617
- Require
nanobind>=2.5.0by @francesco-ballarin in #3622 - Disable some GCC checks that trigger false positive warnings by @garth-wells in #3623
- Update documentation in petsc.py by @a-latyshev in #3626
- update DefElement links by @mscroggs in #3627
- Unpin cffi version (fixes tests for Python 3.13) by @garth-wells in #3635
- Add checks on geometry element for generated code by @garth-wells in #3633
- Update oneAPI CI by @garth-wells in #3636
- Add identifiable Python include directory name for Python wrappers by @schnellerhase in #3608
- Doc fixes and pin Sphinx version by @garth-wells in #3639
- Performance fixes and simplifications for
fem::Formby @garth-wells in #3646 - Bump sphinx from 8.1.3 to 8.2.1 in /python by @dependabot[bot] in #3647
- Changes to type system by @schnellerhase in #3642
- CI use
fenicsx-refs.envconfiguration in favor of run dependency by @schnellerhase in #3654 - Unpin Sphinx version. by @garth-wells in #3658
- Simplify:
MDSPAN_IMPL_STANDARD_NAMESPACE->mdby @schnellerhase in #3655 - Include
std::int64_tfordistribute_entity_databy @jorgensd in #3651 - Improve code clarity in cell maps/permutations by @garth-wells in #3665
- Allow custom cell reorder function to be used in built-in meshes by @jpdean in #3666
- Unify PETSc matrix and vector factory functions by @jorgensd in #3667
- Require
clang-formatCI checks to pass by @garth-wells in #3669 - Build spdlog from source in Dockerfile.test-env by @jhale in #3670
- Update Dockerfile minor versions and fix spdlog by @jhale in #3671
- Pin nanobind version to 2.5.0 by @garth-wells in #3676
- Unpin nanobind version by @garth-wells in #3677
- Unify assembly functions for PETSc data structures (Python) by @garth-wells in #3668
- Bump mpi4py/setup-mpi from 1.2.8 to 1.2.9 by @dependabot[bot] in #3656
- Small doc improvement by @garth-wells in #3681
- Update pyvista.yml by @jorgensd in #3685
- Fixes for mypy by @jorgensd in #3690
- Replace numpy
concatwithconcatenateby @schnellerhase in #3692 - Bump PETSc and SLEPc versions to newly released 3.23.0 by @schnellerhase in #3689
- Bump mpi4py/setup-mpi from 1.2.9 to 1.3.1 by @dependabot[bot] in #3688
- Stokes demo: create PETSc IS on mesh communicator by @garth-wells in #3693
- Add dolfinx.la.petsc to docs by @jhale in #3687
- Simplify SCOTCH configuration by @garth-wells in #3695
- Remove overflow issue in pybinding for
entities_to_geometryby @jorgensd in #3696 - Extend VTKHDF file format to read/write higher order grids by @jorgensd in #3686
- Add dolfinx dependencies in user docker image as requirement and run end-user Docker image build in CI by @schnellerhase in #3697
- Various code fixes and simplifications by @garth-wells in #3700
- Use
DOLFINX_ENABLE_*for end-user Docker by @schnellerhase in #3699 - Remove 'bug' label. 'bug' is now an issue type. by @garth-wells in #3702
- Get CMake to print some output when SCOTCH is found by @garth-wells in #3703
- Updates for macOS CI by @garth-wells in #3704
- Improve SCOTCH handling in CMake by @garth-wells in #3705
- Revert changes to end-user Docker build by @garth-wells in #3707
- Fix MacOS actions by @chrisrichardson in #3712
- Add missing ghost update in
demo_mixed-poissonby @schnellerhase in #3710 - Update spack specification for PETSc optional by @chrisrichardson in #3714
- Use dtype in vtkhdf test by @mscroggs in #3715
- Remove upper bounds on dependencies. by @jhale in #3719
- Bump PETSc/SLEPc by @schnellerhase in #3720
- Fix oneapi CI by @schnellerhase in #3725
- Specify Python binding language in CMakeLists.txt by @garth-wells in #3734
- Fix signed version of radix_sort by @schnellerhase in #3724
- Refactor gmshio to use correct naming of subentities by @jorgensd in #3732
- Update scientificcomputing arm64 vtk wheel + bump pyvista and PETSc/SLEPc by @schnellerhase in #3737
- style: ascii art alignment by @tiagovla in #3739
- Bump mpi4py/setup-mpi from 1.3.1 to 1.3.2 by @dependabot[bot] in #3723
- Downgrade SLEPc by @schnellerhase in #3741
- Fix mypy by @schnellerhase in #3745
- Make dependabot check dockerfiles by @michalhabera in #3743
- Bump rockylinux/rockylinux from 9 to 10 in /docker by @dependabot[bot] in #3747
- Simplify input to non-linear problem by @jorgensd in #3751
- Set max doc length to 75 for
python/dolfinx/andpython/demo/by @schnellerhase in #3706 - Deactivate ruff 3.9 deprecation by @schnellerhase in #3757
- Pin scipy max version by @schnellerhase in #3761
- Update install docs by @garth-wells in #3762
- Capitalise CFFI in docs by @garth-wells in #3763
- Install custom built libraries to proper locations on RedHat image by @jhale in #3767
- Uniform refinement of mixed topology meshes by @chrisrichardson in #3756
- Fix mypy errors for newly typed ufl by @schnellerhase in #3768
- Bump mpi4py/setup-mpi from 1.3.2 to 1.3.3 by @dependabot[bot] in #3773
- More
mypyfixes by @schnellerhase in #3772 - LinearProblem.solve return converged_reason and number_iterations by @jhale in #3774
- Use boost multiprecision for GJK by @chrisrichardson in #3770
- Remove duplicate lines from
fem/petsc.pyby @francesco-ballarin in #3781 - Bump PETSc and SLEPc by @schnellerhase in #3788
- Add mandatory options prefix to high-level solver classes and general tidy by @francesco-ballarin in #3785
- Tidy up
interpolate.hand get ready for Mixed Topology interpolation by @chrisrichardson in #3793 - Check PETSc options prefix is not empty by @schnellerhase in #3796
- Allow optional node data to be attached to an
AdjacencyListby @garth-wells in #3802 - Move conda/oneAPI CI config file by @garth-wells in #3804
- Local dual graph computation support for custom matching criteria by @schnellerhase in #3782
- Make
bcshandling infem.petsc.set_bcandfem.petsc.apply_liftinguniform by @francesco-ballarin in #3787 - Run
mypyin package mode by @schnellerhase in #3807 clang-tidysupport by @schnellerhase in #3722- Documentation update for
MatrixCSR::multby @chrisrichardson in #3809 - Update release instructions by @jhale in #3813
- Go back to LBYL programming style (instead of EAFP) and several
mypyfixes infem.petscandla.petscby @francesco-ballarin in #3790 - Revert some clang-tidy changes by @garth-wells in #3814
- Simplify import in Python demos by @garth-wells in #3816
- More complete Rocky (Redhat) image by @garth-wells in #3817
- Simplify mixed-domain interface by @jpdean in #3780
- Revert
python/CMakeLists.txtchange made in #3756 by @garth-wells in #3818 - Use cache for Spack CI by @garth-wells in #3821
- Switch from EAFP to LBYL by @schnellerhase in #3794
- Remove pyvista-specific CI (covered elsewhere) by @garth-wells in #3824
- Rationalise and simplify some CI by using Spack by @garth-wells in #3823
- Fix XDMF time series by @schnellerhase in #3829
- Remove redundant CI Actions code by @garth-wells in #3831
- Remove exposure of cpp type through
VTXWriterinterface by @schnellerhase in #3827 - Add default scalar type cast by @schnellerhase in #3833
- Improve CMake find modules by @garth-wells in #3835
- Add new Python versions to conda and fix CI by @garth-wells in #3839
- Small README and Docker improvements by @garth-wells in #3840
- Remove Windows badge - it's alway red by @garth-wells in #3841
- Switch to vtk version that supports aarch64 wheels in end user image by @schnellerhase in #3805
- Get nestis from A instead of P by @jorgensd in #3846
- Consistency of input arguments to
LinearProblemby @jorgensd in #3849 - Warn about missing IndexMap in Topology by @chrisrichardson in #3853
- Add error for missing physical groups in gmsh by @chrisrichardson in #3860
- Fix correct material/void split in loaded waveguide demo by @schnellerhase in #3843
- Fix indentation of create_mesh by @jorgensd in #3863
- Add explicit
<format>includes by @francesco-ballarin in #3865 - Integrate C++ tests into project cmake by @schnellerhase in #3858
- Unpin scipy by @schnellerhase in #3871
- Fix Python-binding of
Form::num_integralsby @jorgensd in #3877 - Bump actions/setup-java from 4 to 5 by @dependabot[bot] in #3874
- Bump actions/checkout from 4 to 5 by @dependabot[bot] in #3873
- Make tests work as standalone project by @schnellerhase in #3879
- Add 'Developer' CMake build type for Python wrappers by @garth-wells in #3878
- Remove MPI Python test Windows by @jhale in #3882
- Update windows.yml by @jhale in #3883
- Run Spack CI build in parallel by @garth-wells in #3888
- Disable Windows demo run by @jhale in #3889
- Spack install fix: change concretize by @garth-wells in #3890
- Cache PETSc on macos CI by @garth-wells in #3891
- Updates for Spack install tests by @garth-wells in #3892
- CI testing via Spack (experimental) by @garth-wells in #3884
- Some mypy fixes by @schnellerhase in #3896
- Small simplifications of gmsh IO interface by @schnellerhase in #3881
- Revert "Remove Windows badge - it's alway red (#3841)" by @jhale in #3898
- Fix kernel extraction on windows by @schnellerhase in #3897
- Pep-0604 - Removing
typing.Unionby @jorgensd in #3906 - Fix type hint regression by @schnellerhase in #3907
- Bump actions/setup-python from 5 to 6 by @dependabot[bot] in #3910
- Bump actions/checkout from 4 to 5 by @dependabot[bot] in #3909
- Remove dynamic memory allocation in lowest-level scalar assembly functions by @garth-wells in #3914
- Rename spack-experimental-ci by @jorgensd in #3918
- Job names need to be unique for branch protection rules by @schnellerhase in #3920
- Ruff formatting 0.13.0 by @jorgensd in #3921
- Fix Windows CI for
.env-file config variables. by @jorgensd in #3922 - Provide commit SHA for Spack install by @garth-wells in #3913
- Ensure
dolfinxdoes not expose warning to user by @schnellerhase in #3905 - Improve GMSH usage in tests by @jorgensd in #3932
- Expose documentation of determine point ownership by @jorgensd in #3933
- Fix typo in binding by @jorgensd in #3935
- Remove PETSc C-binding utils from default namespace and add all spd LogLevels to Python-API by @jorgensd in #3931
DirichletBC.dof_indices()are wrong for blocked spaces by @jorgensd in #3937- Remove breakpoint by @jorgensd in #3939
- More fixes to DirichletBC.dof_indices by @michalhabera in #3941
- Bump PETSc/SLEPc to
3.24.0release by @schnellerhase in #3942 - Revise documentation of Python API and demos by @jorgensd in #3940
- Bump sonarcloud by @jorgensd in #3943
- Petsc ignore type by @jorgensd in #3944
- Clean up demo postprocessing by @jorgensd in #3946
- Fix shape for vtkOriginalPointIds and vtkGhostType by @chrisrichardson in #3952
- Release-notes for 0.10 by @jorgensd in #3950
New Contributors
- @Saransh-cpp made their first contribution in #3550
- @jzitelli made their first contribution in #3563
- @a-latyshev made their first contribution in #3626
- @ordinary-slim made their first contribution in #3600
- @sclaus2 made their first contribution in #3660
- @RemDelaporteMathurin made their first contribution in #3713
Full Changelog: v0.9.0.post1...v0.10.0.post0