Skip to content

[BUG]: Symmetric spaces broken #2750

@jorgensd

Description

@jorgensd

How to reproduce the bug

Based on: https://fenicsproject.discourse.group/t/projection-of-function-to-mixed-variational-form-error-dolfinx/11878?u=dokken
but simplfied.
Removing symmetry=True resolves the error.

Minimal Example (Python)

from mpi4py import MPI
import ufl
import dolfinx
mesh = dolfinx.mesh.create_unit_square(MPI.COMM_WORLD, 10, 10)
P2 = ufl.TensorElement("CG",mesh.ufl_cell(),1, symmetry=True) # strain
P1 = ufl.VectorElement("CG",mesh.ufl_cell(),1)                 # displacement

MX = ufl.MixedElement([P1,P2])
W = dolfinx.fem.FunctionSpace(mesh,MX)
W_eps, _ = W.sub(1).collapse()
u = dolfinx.fem.Function(W_eps)
p = dolfinx.fem.Function(W)
uk, _ = ufl.split(p)
v = ufl.TestFunction(W_eps)
L = ufl.inner(ufl.grad(uk), v) * ufl.dx
dolfinx.fem.form(L)

Output (Python)

python3: can't open file '/root/shared/mwe123': [Errno 2] No such file or directory
root@20eb7ebf7e20:~/shared# python3 mwe123.py 
Traceback (most recent call last):
  File "/root/shared/mwe123.py", line 9, in <module>
    W = dolfinx.fem.FunctionSpace(mesh,MX)
  File "/usr/local/dolfinx-real/lib/python3.10/dist-packages/dolfinx/fem/function.py", line 519, in __init__
    (self._ufcx_element, self._ufcx_dofmap), module, code = jit.ffcx_jit(
  File "/usr/local/dolfinx-real/lib/python3.10/dist-packages/dolfinx/jit.py", line 55, in mpi_jit
    return local_jit(*args, **kwargs)
  File "/usr/local/dolfinx-real/lib/python3.10/dist-packages/dolfinx/jit.py", line 205, in ffcx_jit
    r = ffcx.codegeneration.jit.compile_elements([ufl_object], options=p_ffcx, **p_jit)
  File "/usr/local/lib/python3.10/dist-packages/ffcx/codegeneration/jit.py", line 117, in compile_elements
    ffcx.naming.compute_signature(elements, _compute_option_signature(p)
  File "/usr/local/lib/python3.10/dist-packages/ffcx/naming.py", line 35, in compute_signature
    object_signature += repr(convert_element(ufl_object))
  File "/usr/local/lib/python3.10/dist-packages/ffcx/element_interface.py", line 27, in convert_element
    return _cached_conversion(element)
  File "/usr/local/lib/python3.10/dist-packages/ffcx/element_interface.py", line 57, in _cached_conversion
    return basix.ufl.mixed_element([_cached_conversion(e) for e in element.sub_elements()])
  File "/usr/local/lib/python3.10/dist-packages/ffcx/element_interface.py", line 57, in <listcomp>
    return basix.ufl.mixed_element([_cached_conversion(e) for e in element.sub_elements()])
  File "/usr/local/lib/python3.10/dist-packages/ffcx/element_interface.py", line 54, in _cached_conversion
    return basix.ufl.blocked_element(_cached_conversion(element.sub_elements()[0]),
  File "/usr/local/lib/python3.10/dist-packages/basix/ufl.py", line 1492, in blocked_element
    shape = tuple(tdim for _ in range(rank))
TypeError: 'tuple' object cannot be interpreted as an integer

Version

main branch

DOLFINx git commit

200e94c

Installation

Using docker, docker run -ti -v $(pwd):/root/shared -w /root/shared --rm ghcr.io/fenics/dolfinx/dolfinx:nightly

Additional information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions