From 1b415dbfe7ed9b75f582fa757be6cc1b6dfd59e8 Mon Sep 17 00:00:00 2001 From: Henrik Finsberg Date: Tue, 29 Sep 2026 11:19:09 +0000 Subject: [PATCH] Pass gdim to FiniteElement constructor for DOLFINx > 0.11 DOLFINx now requires the geometric dimension when constructing a cpp FiniteElement. Try the new signature first and fall back to the older ones. Co-Authored-By: Claude Opus 5.5 --- src/io4dolfinx/readers.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/io4dolfinx/readers.py b/src/io4dolfinx/readers.py index 85408dc..fb85a74 100644 --- a/src/io4dolfinx/readers.py +++ b/src/io4dolfinx/readers.py @@ -392,9 +392,22 @@ def create_geometry_function_space(mesh: dolfinx.mesh.Mesh, N: int) -> dolfinx.f else: raise RuntimeError(f"Unsupported type {ufl_el.dtype}") try: - cpp_el = _fe_constructor(ufl_el.basix_element._e, block_shape=value_shape, symmetric=False) + # DOLFINx > 0.11 requires the geometric dimension of the mesh + cpp_el = _fe_constructor( + ufl_el.basix_element._e, + gdim=mesh.geometry.dim, + block_shape=value_shape, + symmetric=False, + ) except TypeError: - cpp_el = _fe_constructor(ufl_el.basix_element._e, block_size=N, symmetric=False) # type: ignore[call-overload] + try: + cpp_el = _fe_constructor( # type: ignore[call-overload] + ufl_el.basix_element._e, + block_shape=value_shape, + symmetric=False, + ) + except TypeError: + cpp_el = _fe_constructor(ufl_el.basix_element._e, block_size=N, symmetric=False) # type: ignore[call-overload] dof_layout = dolfinx.cpp.fem.create_element_dof_layout(cpp_el, []) cpp_dofmap = dolfinx.cpp.fem.DofMap(dof_layout, compat.cpp_index_map(geom_imap), N, adj_list, N)