Releases: FEniCS/basix
v0.10.0
This is a major release of Basix and users are advised to upgrade.
What's Changed
Features and API changes
- Add
FiniteElement::scalar_typeby @garth-wells in #871 - Fix tolerances for determining DOF transformation type and add test by @garth-wells in #875
- add dof_ordering input to basix.ufl.element by @mscroggs in #887
- wrap sub_entity_type by @mscroggs in #888
- replace @abstractproperty with @Property @AbstractMethod by @mscroggs in #906
- Expose gauss jacobi quadrature with alpha parameter by @mscroggs in #926
- Add Crouzeix-Raviart on quads and hexes by @mscroggs in #928
- Implement HHJ on tets by @mscroggs in #931
- HHJ available for triangles and tetrahedra by @anzil in #933
- Update finite_element.py, remove abs by @jmv2009 in #936
- Drop Python 3.9 support by @schnellerhase in #954
- Expand rationomial polyset by @mscroggs in #938
- Allow stable ABI builds and enable for binary wheels by @minrk in #952
- Fix bug in
permute_subentity_closurefor higher order finite elements by @mscroggs in #913 - Use default value shape for symmetric elements by @michalhabera in #885
- Add function that gives permutation to lexicographic ordering by @mscroggs in #924
- Use correct rationomials on pyramids by @mscroggs in #918
- Add dof reordering argument for different lagrange variants by @samuel0007 in #923
- Generalize sub-entity-jacobians by @jorgensd in #890
Other changes
- Remove custom branch of nanobind for Windows by @jhale in #857
- Bump basix version to 0.10 and simplify with scikit-build-core >=0.10 by @jhale in #855
- Move to pypi trusted publishing. by @jhale in #856
- Add dependabot by @jhale in #858
- Update sonarcloud.yml by @jhale in #865
- Update README.md by @jhale in #867
- Bump actions/github-script from 6 to 7 by @dependabot[bot] in #860
- Bump pypa/cibuildwheel from 2.21.1 to 2.21.3 by @dependabot[bot] in #862
- Bump docker/setup-qemu-action from 2 to 3 by @dependabot[bot] in #863
- defelement.com -> defelement.org by @mscroggs in #873
- Update mdspan by @garth-wells in #876
- Doc update and unpin Sphinx version by @garth-wells in #877
- Fix dll exclusions by @jhale in #878
- Fix dll exclusions (2) by @jhale in #880
- Fix small typo in tabulate demo by @schnellerhase in #884
- mdspan header update by @garth-wells in #889
- Fix typing + ensure that we run standard checks on a schedule. by @jorgensd in #897
- Add pedantic flag for wrapper build. by @garth-wells in #899
- OneAPI -Wall too strict, disable one flag by @jhale in #900
- Fix Basix hash for blocked 'UFL' elements by @garth-wells in #901
- Simplify mdspan namespace by @garth-wells in #902
- Simplify:
MDSPAN_IMPL_STANDARD_NAMESPACE->mdby @schnellerhase in #905 - Expose and enforce compile time configuration of mdspan by @schnellerhase in #903
- Skip test that uses JIT by @garth-wells in #910
- remove docstrings duplicated from base class by @mscroggs in #907
- when creating custom element, append empty lists if x and M are too short by @mscroggs in #911
- Pin nanobind version to 2.5.0 by @garth-wells in #915
- Unpin nanobind version by @garth-wells in #916
- warn if points defining custom element are outside cell by @mscroggs in #912
- Clang tidy support by @schnellerhase in #917
- Small correction comment demo_facet_integral.py by @ordinary-slim in #883
- update DefElement verification link by @mscroggs in #930
- update link in readme by @mscroggs in #932
- Update mdspan by @garth-wells in #939
- Pin scipy in dolfinx tests CI run by @schnellerhase in #942
- Fix for newly caught mypy errors by @schnellerhase in #944
- Remove duplicate stub by @schnellerhase in #946
- Add pyvista and networkx as demo dependencies by @schnellerhase in #950
- Bump actions/checkout from 4 to 5 by @dependabot[bot] in #949
- Bump actions/setup-java from 4 to 5 by @dependabot[bot] in #953
- Bump actions/download-artifact from 4 to 5 by @dependabot[bot] in #948
- Add Python 3.13 to CI by @schnellerhase in #956
- Bump actions/github-script from 7 to 8 by @dependabot[bot] in #958
- Bump actions/setup-python from 5 to 6 by @dependabot[bot] in #957
- Updates for Spack CI by @garth-wells in #959
New Contributors
- @dependabot[bot] made their first contribution in #860
- @ordinary-slim made their first contribution in #883
- @samuel0007 made their first contribution in #923
- @anzil made their first contribution in #933
- @jmv2009 made their first contribution in #936
Full Changelog: v0.9.0...v0.10.0
v0.9.0
This is a major release of Basix and users are advised to upgrade.
What's Changed
Features and API changes
- Expose subentity types to python for easy creation of elements on entities. by @jorgensd in #847
- dtype when creating elements by @mscroggs in #796
- dtype of enriched element by @mscroggs in #815
- Test arm64 Mac wheels by @jhale in #850
- Windows build by @jhale in #819
- Build Windows binary wheels and update wheel builder by @jhale in #849
- Remove ufcx_element_type by @mscroggs in #818
- Allow user to create symmetric quadrature element by @mscroggs in #821
- Use nanobind 2.0 typing stubgen by @garth-wells in #829
- Switch back to C++20 and use modern set_compile_features to set minimum C++ standard by @spraetor in #844
- Make degree 1 and 2 Lagrange on a pyramid not require a variant by @mscroggs in #834
- Quadrature rule on pyramids by @mscroggs in #835
- Add basix_hash method to get C++ hash of Basix elements by @mscroggs in #820
- Add permute_subentity_closure function by @mscroggs in #806
- DOF transformations: replace pull back of inverse with push forward by @mscroggs in #836
Other changes
- Remove version updater. by @jhale in #810
- Kebab case build-wheels.yml by @jhale in #813
- Remove commented code in CMake file by @garth-wells in #814
- Bump version. by @jhale in #816
- Remove caching of ufl elements by @mscroggs in #817
- Break system packages in DOLFINx integration test by @jhale in #824
- Windows: make runtime dependency install optional by @minrk in #822
- Mark all
nanobindenums asnb::is_arithmetic()for compatibility withnanobind2.x by @francesco-ballarin in #825 - Make runtime dependency install OFF by default by @jhale in #826
- DOLFINX CI updates by @garth-wells in #827
- Tweaks related to Windows DOLFINx build by @jhale in #830
- Enum and type updates by @garth-wells in #832
- Disable windows tests by @jhale in #833
- Update to std::ranges usage by @schnellerhase in #837
- Update mdspan by @schnellerhase in #840
- C++23 support by @schnellerhase in #838 (reverted)
- Update build-wheels.yml by @jhale in #843
- Re-enable Windows CI by @jhale in #845
- Correct cellname for point/vertex type for UFL by @jorgensd in #851
- Fix return type of sobolev-space in quadrature element by @jorgensd in #853
New Contributors
- @minrk made their first contribution in #822
- @schnellerhase made their first contribution in #837
- @spraetor made their first contribution in #844
Full Changelog: v0.8.0...v0.9.0
v0.8.0
What's Changed
- Switch from pybind11 to nanobind by @chrisrichardson in #676
- Update version to 0.8.0 by @jhale in #710
- use blocked element when creating a quadrature element with value shape by @mscroggs in #711
- Add Spack test to CI by @garth-wells in #712
- Update Spack test by @garth-wells in #713
- Update UFL element by @mscroggs in #703
- reset branches by @mscroggs in #714
- Remove
setup.pyby @garth-wells in #715 - Use scikit-build-core to handle minimums. by @jhale in #716
- Add CI workflow trigger by @garth-wells in #723
- Improve nanobind bindings and memory management by @garth-wells in #724
- Use absolute imports in place of relative imports by @garth-wells in #727
- Allow Spack ci to test specific Basix version by @garth-wells in #728
- Update install docs by @garth-wells in #720
- Fix hash and eq for basix.ufl elements by @conpierce8 in #718
- set gdim equal to tdim by default by @mscroggs in #729
- rename highest_degree and highest_complete_degree by @mscroggs in #731
- reset branches by @mscroggs in #732
- Throw error when trying to create BDM degree 0 by @mscroggs in #730
- implement embedded degrees for quadrature element by @mscroggs in #733
- add basix_map_type method by @mscroggs in #734
- remove unused functions by @mscroggs in #736
- Add name property to all enums by @chrisrichardson in #735
- Update wheel build action. by @jhale in #709
- Enable merge queue by @garth-wells in #737
- Update OMPI environment variables in DOLFINx integration for openmpi v5 by @francesco-ballarin in #739
- Rename dof transformation functions by @mscroggs in #738
- Reset branch name by @mscroggs in #740
- Add a
pip install --no-build-isolationtest by @garth-wells in #741 - Fix scikit-build-core version in
pyproject.tomlby @garth-wells in #745 - Use OpenBLAS in Redhat clone CI by @garth-wells in #747
- Remove Sphinx Makefile and unpin Sphinx by @jhale in #744
- More Python versions in wheels by @jhale in #742
- Update version updater script v2 by @jhale in #750
- Do not store
.doctreesbinary files on website by @francesco-ballarin in #751 - Fix Spack CI by @garth-wells in #753
- Update make_html for new website template by @mscroggs in #754
- Use lesstall header in web docs by @mscroggs in #755
- Use jekyll to make website header instead of hacky python code by @mscroggs in #756
- Add basix_element property to UFL element by @mscroggs in #757
- Reset branch names by @mscroggs in #758
- Add
overflow: scrollto stop sidebar colliding with content in web docs by @mscroggs in #761 - Add support for float32 and float64 elements from Python by @garth-wells in #759
- Property fix by @garth-wells in #762
- Add dtype property to FiniteElement by @garth-wells in #763
- Fix equality test for different float type elements by @garth-wells in #764
- Improve type hints by @garth-wells in #765
- Fix element hash and improve types by @garth-wells in #766
- Check that dof ordering is the same in element equality check by @mscroggs in #769
- Wrap functionality in Python with nicer typing and docs by @mscroggs in #767
- Remove vtk element by @mscroggs in #770
- Rename keyword argument from lvariant to lagrange_variant by @mscroggs in #771
- Drop
[email protected]in favor of[email protected]by @francesco-ballarin in #773 - Sonar CI update by @garth-wells in #775
- Switch to ruff linting by @jhale in #774
- Bump actions/{download-artifact,upload-artifact} to v4 by @francesco-ballarin in #777
- Remove packages from pyproject by @jhale in #743
- Add test_elements.py by @mscroggs in #778
- add wrap_element function to Basix.UFL by @mscroggs in #776
- Add Python 3.12 to CI by @garth-wells in #779
- Add create_tp_element function by @mscroggs in #780
- Reset branch names by @mscroggs in #781
- Use black formatting (via ruff) by @garth-wells in #783
- Improve debug build install instructions. by @jhale in #784
- Change to the Modified Gram Schmidt algorithm in orthogonalise (#679) by @ampdes in #785
- Fix Python version in
python/pyproject.tomlfile by @garth-wells in #786 - Remove gdim input to UFL elements by @mscroggs in #772
- Reset CI branches by @mscroggs in #788
- Improve docstrings and add copyright statements by @garth-wells in #787
- Fix sonar issues by @garth-wells in #789
- Correct polyset order in demo by @mscroggs in #790
- Ruff fixes by @garth-wells in #791
- Update
mdspan.hppby @garth-wells in #792 - Reset DOLFINx CI branch by @garth-wells in #793
- Add a hash functions to finite elements by @mscroggs in #782
- Update cibuildwheel action by @jhale in #798
- Update
nb::ndarrayconstructor in preparation of next nanobind release by @francesco-ballarin in #799 - Revise transformation names and add docs by @garth-wells in #802
- reset dolfinx branch by @mscroggs in #805
- replace
lru_cachewithcacheby @mscroggs in #803 - DOF transformation name updates by @garth-wells in #807
- Small Doxygen config updates by @garth-wells in #808
- Revert CI to DOLFINx main by @garth-wells in #809
New Contributors
- @conpierce8 made their first contribution in #718
- @ampdes made their first contribution in #785
Full Changelog: v0.7.0...v0.8.0
v0.7.0
This version of Basix was released alongside UFL 2023.2.0 and FFCx/DOLFINx v0.7.0 tags.
User facing changes
Iso elements
- Add iso macroelement on an interval by @mscroggs in #680
- Implement iso element on quadrilateral by @mscroggs in #683
- Add iso element on hexahedron by @mscroggs in #684
- Add iso element on a tetrahedron by @mscroggs in #688
DOF ordering
- Allow permuted dof layout for Lagrange elements by @chrisrichardson in #654
- Use dof ordering when generating tensor factors by @mscroggs in #695
UFL wrapper
- Fix degree method in UFL wrapper layer for mixed elements by @garth-wells in #636
- Fix symmetric tensors by @mscroggs in #647
- Rename ufl_wrapper -> ufl, and simplify functions in UFL wrapper by @mscroggs in #655
- Fix blocked element tables by @michalhabera in #662
- Move QuadratureElement and RealElement from ffcx to Basix by @mscroggs in #682
- Correct tabulate for blocked elements by @mscroggs in #698
- Add better warning when using * by @mscroggs in #701
- Remove rank input to element and blocked_element by @mscroggs in #708
Installation
- Test scikit-build-core and pyproject.toml for top-level install by @chrisrichardson in #673
- Enable Python 3.11 by @mscroggs in #690
Allowing multiple scalar types
- Template polyset over float type by @garth-wells in #660
- Support
floatanddoublein low-level functions by @garth-wells in #663 - Template
basix::FiniteElementover scalar type by @garth-wells in #664
Performance improvements
Other changes
- Update
mdspan.hppby @garth-wells in #632 - Run more tests on main by @jhale in #630
- Dev version bumps by @garth-wells in #635
- Fix typo in basix.sobolev_spaces module name by @francesco-ballarin in #638
- Do not run apt-get upgrade in CI by @garth-wells in #639
- Simplify constructors by @chrisrichardson in #641
- Fix Sobolev space for discontinuous elements by @garth-wells in #642
- Remove deprecated funcs by @chrisrichardson in #643
- Update python create element by @chrisrichardson in #644
- Simplify transformations by @chrisrichardson in #646
- Tweak UFL import by @mscroggs in #650
- Fix bug in N2E on tets: cells are 3D not 2D by @mscroggs in #653
- Cast scalar types for compatibility by @garth-wells in #656
- Reset branches in CI by @mscroggs in #657
- Use np.tile for blocked tabulation by @michalhabera in #659
- update docs and doc generating script by @mscroggs in #665
- Update mdspan by @garth-wells in #666
- Relax some floating point comparisons by @garth-wells in #670
- Reset FFCx and DOLFINx branches by @mscroggs in #681
- Seed random test by @mscroggs in #652
- Fix #685 by @mscroggs in #686
- Implement degree 0 to 2 macro polynomials on a triangle by @mscroggs in #687
- Fix compilation with gcc-13 (#678) by @rmsc in #691
- Consistency updates to Python docs by @garth-wells in #694
- mdspan update by @garth-wells in #699
- Reset DOLFINx branch to main by @garth-wells in #700
- Remove IrreducibleInt by @mscroggs in #702
- use gdim in default shape for an element with a rank by @mscroggs in #707
New Contributors
- @francesco-ballarin made their first contribution in #638
- @rmsc made their first contribution in #691
Full Changelog: v0.6.0...v0.7.0
v0.6.0
What's Changed
- Update version numbers to v0.5.2.dev0 by @jhale in #593
- Add Sobolev spaces by @mscroggs in #589
- reset branches to main by @mscroggs in #595
- Fix Sobolev space conversion by @mscroggs in #596
- Make "CG" work and use identity mapping for mixed elements whose subelements all use identity by @mscroggs in #597
- Add SonarCloud analysis by @jhale in #601
- use gdim as default for VectorElement (not tdim) by @mscroggs in #605
- Add deprecation warning when using "CG" by @mscroggs in #599
- Tidy up CI and packaging by @jhale in #609
- Don't run SonarCloud on external PRs. by @jhale in #613
- Try creating ARM MacOS wheels by @jhale in #390
- Bump version number due to Sobolev space API change. by @jhale in #614
- Remove unnecessary packages from pyproject by @jhale in #615
- Optimize num_sub_entities function by @tiagovla in #616
- Fix mypy (typing.Optional) by @mscroggs in #618
- Pass manifold cell information to base element of vector elements by @jorgensd in #617
- reenable mypy checks for Python 3.10 by @mscroggs in #619
- Fix CI compilers by @garth-wells in #622
- Run test in serial by @garth-wells in #623
- Include tensor element symmetry in its hash by @TTitscher in #620
- Add 'basix' string to element hash by @garth-wells in #624
- Test with Intel oneAPI and Intel Python. by @garth-wells in #625
- Fix OneAPI tests by @jhale in #629
- Bump cmake by @jorgensd in #627
- Fix oneAPI tests by @garth-wells in #631
New Contributors
- @tiagovla made their first contribution in #616
- @TTitscher made their first contribution in #620
Full Changelog: v0.5.1...v0.6.0
v0.5.1
Remove Python dependency from the CMake build for the C++ library
v0.5.0.post0
Users should prefer the tag v0.5.1.
This post-release fixed some errors in the Basix wheel build process.
The core Basix library is unaffected and users can use v0.5.0 or v0.5.0.post0 tags interchangeably.
Full Changelog: v0.5.0...v0.5.0.post0
v0.5.0
Users should prefer the tag v0.5.1.
What's Changed
- Fix PyPi wheel upload by @jhale in #482
- Update basix to 0.4.2.dev0 by @jhale in #487
- remove numpy version requirement by @mscroggs in #490
- Do not include
cblas.hby @garth-wells in #489 - Turn on mypy checks by @mscroggs in #491
- Add CPATH to get wheel build working on RedHat by @jhale in #488
- Remove xarray completely by @IgorBaratta in #494
- Put true in wrong place in wheel build, fix. by @jhale in #497
- Add workflow trigger to test dependents against specific versions by @garth-wells in #496
- Allow UFL and FFCx version to be set when triggering FFCx integration test by @garth-wells in #499
- FFCx CI fix(handle default case) by @garth-wells in #500
- Simplify Intel/MKL CI by @garth-wells in #498
- Allow specification of version in DOLFINx integration test by @garth-wells in #501
- Bump version to 0.4.3 by @jhale in #502
- Test version tweaks by @jhale in #503
- Orthogonalise polynomial sets by @mscroggs in #495
- Install fixes for new scikit-build by @garth-wells in #510
- remove "the" from JOSS paper by @mscroggs in #505
- remove extra {}s in reference in JOSS paper by @mscroggs in #511
- Add CI to test cmake install by @mscroggs in #509
- Transpose polysets by @mscroggs in #512
- Use mdspan in polyset by @chrisrichardson in #515
- Add Hermite elements by @mscroggs in #516
- remove ; by @mscroggs in #521
- add CITATION.cff by @mscroggs in #522
- Build D to the be the correct shape rather than transposing by @mscroggs in #520
- Document shapes of xtensors by @mscroggs in #518
- fix typos in custom element demo by @mscroggs in #523
- set language to "en" by @mscroggs in #529
- Correct typing: numpy.ndarray -> numpy.typing.NDArray by @mscroggs in #527
- Remove logging by @mscroggs in #528
- Transpose polynomial::tabulate by @mscroggs in #524
- Add Bernstein variant of Lagrange for simplices by @mscroggs in #533
- run C++ demos on CI by @mscroggs in #531
- Automatically generate docs.h by @mscroggs in #530
- Update
mdspan.hppby @garth-wells in #534 - Attempt at automatic typing for basix by @jhale in #526
- Run demos on more CI workflows by @mscroggs in #537
- Remove xtensor code for Lagrange elements by @garth-wells in #539
- Remove xtensor from BDM by @garth-wells in #540
- Remove more xtensor by @garth-wells in #541
- Remove xtensor from
basix::latticeby @garth-wells in #542 - make precompute return values clearer by @mscroggs in #544
- Add VectorElement, TensorElement, MixedElement, etc to UFL wrapper by @mscroggs in #535
- Reset ffcx branch by @mscroggs in #547
- Throw runtime error to avoid "may be used uninitialized" warnings by @mscroggs in #548
- Fix symmetric tensors by @mscroggs in #549
- Reset FFCx branch by @mscroggs in #550
- xtensor removal from polynomial code by @garth-wells in #546
- Reset DOLFINx branch by @garth-wells in #551
- Remove xtensor from moment code by @garth-wells in #552
- Remove xtensor from
mathnamespace by @garth-wells in #553 - Remove xtensor from dof-transform code by @garth-wells in #554
- Final removal of xtensor by @garth-wells in #555
- Reset DOLFINx branch for CI by @garth-wells in #557
- Simplify code in
polysetby @garth-wells in #558 - Fix overflow problem in matrix-matrix product heuristics by @garth-wells in #559
- Improve performance of dual matrix construction by @garth-wells in #561
- Some small optimisations when creating elements by @garth-wells in #562
- Require C++20 by @garth-wells in #563
- Revert DOLFINx CI branch back to main by @garth-wells in #564
- Skip orthogonalisation for Lagrange elements by @mscroggs in #565
- Make UFL interface consistent with UFL by @mscroggs in #566
- Only precompute matrices when they are not permutations by @mscroggs in #567
- Slightly faster
prepare_permutationby @mscroggs in #569 - Fix Sphinx version by @mscroggs in #573
- Update demo by @mscroggs in #571
- The permutation from an LU decomposition can be used instead of checking the eigenvalues/condition numbers by @mscroggs in #572
- Change image for DOLFINx integration test by @jhale in #576
- Simplify prepare_matrix and apply_matrix by @mscroggs in #577
- remove brackets around asserts by @mscroggs in #579
- Add
tensor product representationproperties to UFL element wrappers by @IgorBaratta in #560 - Implement enriched elements by @mscroggs in #574
- Add long description by @chrisrichardson in #581
Full Changelog: v0.4.2...v0.5.0
v0.4.2
Fixes build issues related to including cblas.h. Otherwise identical to v0.4.1.
Full Changelog: v0.4.1...v0.4.2
v0.4.1
What's Changed
- Update version numbers by @chrisrichardson in #450
- Add double contravariant map test by @mscroggs in #451
- Speed up sympy tests by @mscroggs in #448
- correct serendipity value shape by @mscroggs in #458
- Avoid manipulating
version.hin source directory by @garth-wells in #459 - Use blas for large matrix-matrix multiplications by @IgorBaratta in #453
- Remove TODO that I've already done by @mscroggs in #460
- Add Red Hat CI by @mscroggs in #463
- Fix redhat by @mscroggs in #465
- Add MacOS CI by @mscroggs in #466
- Use
Accelerate/Accelerate.hinclude directory for APPLE by @IgorBaratta in #467 - Remove assumption that degree == highest_degree by @mscroggs in #457
- FFCx and DOLFINx branches by @mscroggs in #470
- remove slow (48s) test by @mscroggs in #472
- add version updating utility by @mscroggs in #468
- Overload FiniteElement by @mscroggs in #473
- only push from one workflow by @mscroggs in #475
- Add == for custom element by @mscroggs in #474
- Fix installation error on mac by @mscroggs in #478
- Remove xarray in favor of xt::xtensor<double, 2> by @jorgensd in #476
- Add maybe unused to variables in assert by @jorgensd in #479
- Include summary from README in website docs by @mscroggs in #484
- Update joss paper by @mscroggs in #481
- Add functions to UFL wrapper by @mscroggs in #464
- Tweak JOSS paper and docs by @mscroggs in #486
Full Changelog: v0.4.0...v0.4.1