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.FunctionSpace
function by @francesco-ballarin in #2818 - Import mpi4py early for MPI initialisation by @garth-wells in #2826
- Improve documentation of
pack_coefficients
by @jpdean in #2822 - Use
pyproject.toml
for 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_edges
by @IgorBaratta in #2856 - Remove call to
compute_graph_edges
incompute_owned_indices
by @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_dofmap
indolfinx.fem
by @jorgensd in #2932 - Add CITATION.cff by @mscroggs in #2953
- Fix
create_submesh
by 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.py
anddemo_scattering_boundary_conditions.py
by @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_Datatype
by @garth-wells in #3031 - Dofmap builder preparation for mixed topology by @chrisrichardson in #3025
- Add interface to
mesh::Geometry
for multiple cmaps and dofmaps by @chrisrichardson in #3035 - Simplify
Form
constructor by adding astruct
for 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_data
in 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_topology
by @jorgensd in #3075 - Improve mesh refinement documentation by @jorgensd in #3010
- Topology computation for mixed topology by @chrisrichardson in #2994
- Refactor
la.Vector.norm
by @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.Expression
by @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_form
function 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.FunctionSpace
function 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.typed
markers in python subpackages by @francesco-ballarin in #2833 - Drop setting dl open flags in
dolfinx/__init__.py
by @francesco-ballarin in #2836 - Doc string improvement by @garth-wells in #2839
- Add
flake8
andisort
checks on python files incpp
folder 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_function
by @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 docker file, and remove installation of build requirements from workflows by @francesco-ballarin in #2857
- Fix CI build with OpenMPI5: remove some env variables by @garth-wells in #2865
- Use
value_type
andgeometry_type
template names by @garth-wells in #2864 - Fix
pyvista
demo and workflow by @francesco-ballarin in #2866 - Bump versions in Dockerfiles by @garth-wells in #2863
- Try smaller ARM runner with nanobind by @jhale in #2869
- Clean up unused includes in PETSc nanobind casters, but leave the macro available by @francesco-ballarin in #2871
- Re-enable basix element test by @francesco-ballarin in #2867
- Update .gitignore by @francesco-ballarin in #2882
- Change python/README to markdown by @garth-wells in #2883
- Updates for ufcx update by @chrisrichardson in #2886
- Make topology const in
locate_dofs_topological
by @IgorBaratta in #2885 - Rename dof transformation functions by @mscroggs in #2888
- Export
CMAKE_PREFIX_PATH
in helper installation scripts by @francesco-ballarin in #2887 - Add workflow to update stable tag to fixed tag e.g. v0.7.2. by @jhale in #2892
- Update docker-update-stable.yml by @jhale in #2893
- Change nanobind build options to remove
-Os
by @jorgensd in #2895 - Correct CMAKE_BUILD_TYPE in end user Docker images by @jorgensd in #2894
- Simplify CMake for Python interface build by @garth-wells in #2896
- Increase again number of cores on ARM buildjet runners while building Docker end-user image by @francesco-ballarin in #2897
- Work-around nanobind issue with
std::function
by @garth-wells in #2899 - Adds an action to quickly update stable image tag by @jhale in #2901
- Remove packages from pyproject project section by @jhale in #2902
- Bump DOLFINx release version in Spack action by @jhale in #2904
- Unfix Sphinx version and remove Sphinx Makefile by @jhale in #2908
- Add
ruff
to base test environment by @francesco-ballarin in #2909 - Run
cmake-format
onCMakeLists.txt
files too on CI by @francesco-ballarin in #2910 - Purge
cppimport
fromDockerfile
s by @francesco-ballarin in #2911 - Fix broken links to integration test workflows in
RELEASE.md
by @francesco-ballarin in #2915 - Update GH bug template by @garth-wells in #2912
- Fix misleading commit message when updating documentation repository by @francesco-ballarin in #2914
- Set min version for
scikit-build-core
by @garth-wells in #2917 - Fix test for collapsing function spaces by @jpdean in #2919
- Bump versions in oneAPI Dockerfile by @garth-wells in #2921
- Add Basix dependency to
pyproject.toml
by @garth-wells in #2924 - Install ptscotch in oneAPI image by @garth-wells in #2928
- Refactor build basic dofmap by @chrisrichardson in #2927
- Remove
dolfinx.nls
from Python documentation by @jorgensd in #2933 - Improve overview of online documentation with autosummary by @jorgensd in #2931
- Disable Spack CI 0.7.2 Python build by @garth-wells in #2939
- Update GMSH quadrilateral recombination options to force pure quadrilateral meshes by @jorgensd in #2940
- Add test of quadrature element by @mscroggs in #2907
- Work-arounds for latest doxygen release by @garth-wells in #2947
- Update names of fields in basix.ufl by @mscroggs in #2957
- Update types by @mscroggs in #2959
- Simplify mesh creation interface and algorithms by @garth-wells in #2954
- Timer fix by @jhale in #2966
- Update stokes demo tolerance by @IgorBaratta in #2964
- Add dofmap consistency check for
VTXWriter
andFidesWriter
by @garth-wells in #2952 - Type hint fixes by @garth-wells in #2967
- Further typing fixes by @francesco-ballarin in #2969
- Remove some implicit PETSc from tests when not needed by @chrisrichardson in #2970
- Improve FFI support for calling C functions from Python/Numba by @garth-wells in #2968
- Simplify doc path in
README.md
by @garth-wells in #2974 - Simplify handling of scalar type for FFCx by @garth-wells in #2975
- Increase tolerance in some tests by @IgorBaratta in #2976
- Change binary stripping settings for scikit-build-core by @jhale in #2980
- Remove default CMAKE_BUILD_TYPE from end-user action by @jhale in #2981
- Add
IndexMap::global_to_local
to the Python interface by @jorgensd in #2972 - Update sonar-scanner version in CI by @jorgensd in #2990
- Drop
fenics-dev@googlegroups.com
in favor offenics-steering-council@googlegroups.com
by @francesco-ballarin in #2995 - Simplify access to wrapped C++ form classes by @garth-wells in #2977
- Fix scalar type in
generate-cmakefiles.py
by @IgorBaratta in #2999 - Stop cffi_utils failing on KeyError by @mscroggs in #2993
- Create 'solver' fixture for tests, and update
test_complex_assembler.py
to use it. by @chrisrichardson in #3001 - Small tweaks to custom cell kernel demo by @jhale in #3007
- Update all notebooks to render correctly on web page and in notebooks. by @jorgensd in #3005
- Lighter switch to ruff by @jhale in #2998
- Add 0.7.3 to bug report issue template by @jorgensd in #3014
- Bump actions/upload-artifact to v4 by @francesco-ballarin in #3015
- ADIOS2 for Spack by default by @jhale in #3017
- Fix input arguments to
dolfinx.mesh.refine_plaza
by @francesco-ballarin in #3018 - Another update to Spack by @jhale in #3019
- Ensure that explicitly requested packages are enabled by CMake (and otherwise fail) by @garth-wells in #3024
- Improve wording in
README.md
by @garth-wells in #3027 - Fix some use of deprecated Python and NumPy functionality in tests by @garth-wells in #3029
- Fix pytest marker warning and some doc typos by @garth-wells in #3030
- Updates for ruff by @garth-wells in #3033
- Bump dependency versions by @garth-wells in #3032
- Re-enable a test by @garth-wells in #3034
- Add some PETSc
destroy
to avoid MPICH leak messages by @garth-wells in #3036 - correct typo in issue template by @mscroggs in #3042
- Remove dead code in mesh.py by @chrisrichardson in #3046
- Bump openmpi patch version by @jorgensd in #3048
- Simplify the dual_graph to use
CellType
rather thantdim
by @chrisrichardson in #3049 - Add transformation_type enum by @mscroggs in #2989
- Simple typo by @chrisrichardson in #3055
- Improve Python test coverage by @chrisrichardson in #3053
- Better error messages if mesh dtype is not compatible with function space dtype by @mscroggs in #3043
- Check that UFCx kernel functions are not
null
by @garth-wells in #3057 - Remove
.flake8
file by @garth-wells in #3058 - Always pass
std::span
by value by @garth-wells in #3059 - Make
dolfinx.mesh.Mesh.input_global_indices
a numpy array by @jorgensd in #3069 - Add pair header for SparsityPattern graph return type by @chrisrichardson in #3073
- Documentation fix by @chrisrichardson in #3074
- Missing C++ accessor to mesh object in create nonmatching interpolation data by @jorgensd in #3078
- Update macOS action to Sonoma/14 by @jhale in #3080
- C++ demo documentation refinements by @garth-wells in #3068
- Mark IndexMaps on communicators with size 1 as non-overlapped by @garth-wells in #3066
- Bump versions in Dockerfiles by @garth-wells in #3082
- Simplify
IndexMap
overlap by @garth-wells in #3085 - Switch macOS CI to arm M1 by @jhale in #3084
- Add multiple dofmaps and elements to Geometry by @chrisrichardson in #3071
- Updates for
mdspan
by @garth-wells in #3086 - Add option to preserve sub-IndexMap ghost ordering by @garth-wells in #3091
- Add support for mixed-domain coefficient packing by @jpdean in #3093
- Let
*_apply_dof_transformation
accept lists of cells in Python layer by @jorgensd in #3090 - Fix padding of xdmf vector of len < 3 by @jorgensd in #3095
- Fix sub index map destination rank computation by @jpdean in #3099
- Small change to
MPI_I(s)send
buffer allocation by @garth-wells in #3104 - Revert change to Python interface of non-matching interpolation data by @jorgensd in #3088
- Generalize bounds of bc for arbitrary partitioning in
test_assembly_domains.py
by @jorgensd in #3118 - Move piece node outside of function loop in VTKFile by @jorgensd in #3120
- Fix deprecation warning introduced in #3092 by @francesco-ballarin in #3122
- Require MPI ADIOS2 build during configuration. by @jhale in #3125
- Linting and formatting prior to 0.8 by @jhale in #3126
- Split linting and build steps in CI by @garth-wells in #3127
- Template
distribute_entity_data
to support multiple data-types by @jorgensd in #3119 - Bump dependency versions in Docker files by @garth-wells in #3130
- macos version bumps for CI by @garth-wells in #3131
- Make ADIOS tests compatible with 2.9 and 2.10 by @jhale in #3128
- Remove legacy detection of PETSc scalar type by @garth-wells in #3132
- Don't run build steps if linting fails by @jhale in #3134
- Use adjacencylist constructor in test by @jhale in #3139
- Remove linting from CircleCI - covered by Actions by @garth-wells in #3140
- Remove Sphinx pin from Dockerfile by @jhale in #3141
- Updates for Basix function changes by @garth-wells in #3142
- Update release instructions by @jhale in #3147
- Re-activate commented lines in hyperelastic demo by @garth-wells in #3146
- Updates for Conda weekly CI by @garth-wells in #3150
- Remove conda
-y
option by @garth-wells in #3152 - Run C++ unit tests on the no-PETSc CI job by @garth-wells in #3153
- Documentation improvements for dof transforms by @garth-wells in #3154
- Update Lagrange variant demo by @mscroggs in #3155
- Document transpose data storate for blocked elements by @mscroggs in #3156