V0.9.0 of DOLFINx

We are proud to release v0.9.0 of DOLFINx.
The release includes the following highlights:

  • Mixed dimensional assembly
  • Simpler constructions of block forms with ufl.MixedFunctionSpace and ufl.extract_blocks
  • Data-independent form compilation with dolfinx.fem.compile_form
  • Native Windows compatibility

Full release notes with examples are available at: https://fenicsproject.org/blog/v0.9.0/

9 Likes

@dokken
The update sounds great and all, but it seems like it is not enrolled on the Ubuntu PPA. Is that on suppose?
On the website it says ‘Latest update 23 weeks ago’
Is it coming anytime soon?

kind regards,
Jan

As this is in the middle of teaching at most universities, our Debian maintainers (@francesco-ballarin and @dparsons) haven’t had the bandwidth to make them.

They will be created once they have time.

Quote from Drew on the status a week ago:

Debian is in the middle of upgrading to OpenMPI 5, so it may be a little longer before deb packages are ready.

2 Likes

Update on debian packaging.

On top of being the middle of the teaching semester for us (@francesco-ballarin and @dparsons), and of top of the (big) upgrade to OpenMPI 5 being under way, we have now identified an issue related to the packaging of a dependency of spdlog, the new logging library dependency introduced in dolfinx 0.9.

Due to the combination of these three factors you may expect the prepration of the deb packages to take a bit more time than usual. We will share an ETA as soon as we have it.

In Mixed Dimensional Assembly we have

V = dolfinx.fem.functionspace(domain, ("Lagrange", 1))

but in Simple constructions of block forms we have

V = dolfinx.fem.FunctionSpace(domain, ("Lagrange", 2))
Q = dolfinx.fem.FunctionSpace(submesh, ("Lagrange", 1))

which in 0.8.0 was no longer the canonical way of doing it. Is there a preference for the latter in the latter’s context?

I am not sure I follow your question.
As you can see in the updated DOLFINx demos:

the new syntax with ufl.MixedFunctionSpace simplifies the user requirements.

You can of course split your problem into explicit blocks (that being for mixed dimensional problems or for standard blocked problems, as those covered in the link above), and work as one would do in DOLFINx v0.8.0. There is no harm or performance penalty in doing so.

In some cases this might be required; i.e. if you want to create a preconditioning matrix consisting of only some of the integrals from your full form.

The reason for having ufl.MixedFunctionSpace and ufl.extract_blocks available to the user, is that it really simplifies the amount of code required for non-linear problems, or problems where you have more than two spaces, where the construction of the block matrix and block vector is tedious by hand.

I think that his point is that in the snippet at “Simpler construction of block forms” there is dolfinx.fem.FunctionSpace with the capital letters. I guess it’s a typo, we moved to the free function named with lower case letters.

yes that was my question. Which constructor to use for the function spaces? FunctionSpace or functionspace? And why we take different approaches here for different contexts. If it’s just a typo then ok, that’s the answer. I guess lower case is the right one then.

That was a typo. Correction at:

FEniCSx 0.9.0 is now available on the FEniCS PPA for ubuntu 24.10, 24.04 and 22.04.