Ferrite.jl release announcements

Ferrite version 1.6.0

heat_adaptivity-dark

Refined mesh from heat equation with adaptive mesh refinement

We have just released Ferrite version 1.6.0, the biggest feature release since 1.0.0. The full list of changes can be found in CHANGELOG.md, but the main highlights are summarized below.

Adaptive mesh refinement

The biggest feature of this release is adaptive mesh refinement (AMR) for quadrilateral and hexahedral grids, based on a p4est-style forest of octrees. This is a pure Julia implementation of the p4est algorithms and not just a wrapper around the C library. This means that everything down to the octree data structures is accessible, extensible, and debuggable from Julia. This feature has been under development for a long time. The pull request (#780) was opened almost exactly three years ago and the implementation has been presented at our yearly FerriteCon both in 2023 and 2024. It is great to see it merged finally!

Note that the feature is marked experimental for now: the API may change in minor releases without following semantic versioning. To get started, see the new AMR topic guide, the tutorial on Heat equation with adaptive mesh refinement, and the example Linear elasticity with adaptive mesh refinement in the code gallery. Feedback from early adopters is very welcome!

Higher order elements

  • New interpolations Lagrange{RefTetrahedron, 3}, Lagrange{RefTetrahedron, 4}, and Lagrange{RefHexahedron, 3}. Supporting these required teaching the dof distribution to handle multiple nodal dofs on faces shared between cells by taking the relative orientation of the face into account.
  • New quadrature rule type :polyquad for RefTetrahedron supporting orders 1 to 10 (previously the maximum order was 5), with positive weights and points strictly inside the reference tetrahedron.

Export to the VTKHDF file format

The new VTKHDFGridFile is the counterpart of VTKGridFile for the HDF5-based VTKHDF file format, provided through a package extension that loads together with the new VTKHDF.jl package. It supports the same data functions as VTKGridFile (write_solution, write_cell_data, write_projection, …), but unlike the XML-based formats a whole simulation can be stored in a single file, with the grid written only once for time series on a fixed mesh.

Multi-threaded assembly without grid coloring

start_assemble(K, f; atomic = true) returns an assembler that accumulates into K and f using atomic additions. This makes it safe to assemble from multiple concurrent tasks without first partitioning the cells into independent sets (“grid coloring”), at the cost of some accumulation overhead. The how-to on multi-threaded assembly has been updated to show both approaches.

New tutorials and documentation improvements

  • New tutorial: Darcy flow using the H(div)-conforming Raviart-Thomas interpolations that were introduced in Ferrite 1.1.0.
  • New tutorial: Elastodynamics and modal analysis of a cantilever beam (mass matrix assembly, generalized eigenvalue problem, Rayleigh damping, and Newmark time integration).
  • Code blocks in the documentation now have line numbers, and individual lines can be selected and linked to, similar to code on GitHub, using the new DocumenterCodeBlocks package.
  • The figures and animations for the tutorials and code gallery are now rendered programmatically from the generated vtk output files (instead of via print screen from within ParaView) to give them a consistent look.
  • The overview page for the tutorials and code gallery has been made visually nicer.
  • Other figures in the documentation have also been improved, especially for dark mode.

FerriteCon 2026

Finally, a reminder that FerriteCon 2026, the fifth annual Ferrite user and developer conference, takes place on September 24 in Braunschweig, Germany, hosted by Technische Universität Braunschweig. Attendance is free, but registration is required (deadline September 18) and if you want to present something please submit a short abstract before August 28 (see the conference page for details). Talks will also be live-streamed and recorded for those who cannot attend in person. We hope to see you there!

Thanks to everyone that contributed!