Announcement: scifem v0.24.0

In this release of scifem, we introduce topologically periodic meshes.
For the last 5 years, the only way (as far as I am aware) of making a mesh periodic has been through the DOLFINx_MPC library.
However, this approach has been limited to continuous Lagrange elements.
I’ve been working on fine-tuning an alternative solution for the last two years.
With our new approach, the periodic boundary becomes an interior facet of the grid, supporting dS integrals, and therefore DG and more exotic elements such as Raviart-Thomas and Nedelec elements.
The library supports creating these relations in multiple ways:

  1. Topological: Given a mesh, provide the global input node indices of the pairs that match.
  2. Geometrical: Given a mesh, create an indicator function that marks which nodes to remove, and a mapping function that maps them to their replacements.

In the online documentation you will find examples of both:

These features are supported for both the DOLFINx v0.11.0 release and main branch. The code is available on github: GitHub - scientificcomputing/scifem: Scientific finite element toolbox · GitHub, downloadable from pypi: scifem · PyPI and soon conda-forge.

Nice, the periodic_poisson example demonstrates it for a torus. Bonus marks if it can calculate on a Möbius strip, I guess it must be possible.

With the calculation in 2d I guess it’s not so simple to project the visualisation onto 3d. But would also give an interesting demonstration of interpolation of meshes and functions across dimensionalities if the interpolation to 3d could be done.

I guess it could, but I fear the RT spaces would be broken, as I saw issues with that when I worked on an actual mobious strip: ProximalGalerkin/examples/09_eikonal/eikonal_dolfinx.py at main · METHODS-Group/ProximalGalerkin · GitHub as it is a non orientable manifold.

That sort of makes sense that RT spaces could be a problem. But still interesting if Lagrange or DG elements are fine with them.