# Error creating forms from ufl.extract\_blocks

**URL:** <https://fenicsproject.discourse.group/t/error-creating-forms-from-ufl-extract-blocks/17840>\
**Category:** Errors\
**Tags:** dolfinx\
**Created:** [June 25, 2025, 8:42pm UTC](https://fenicsproject.discourse.group/t/error-creating-forms-from-ufl-extract-blocks/17840 "2025-06-25T20:42:18Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![JuanJoZP](https://yyz2.discourse-cdn.com/free1/user_avatar/fenicsproject.discourse.group/juanjozp/32/8258_2.png) [@JuanJoZP](https://fenicsproject.discourse.group/u/JuanJoZP)\
**Post date:** [June 25, 2025, 8:42pm UTC](https://fenicsproject.discourse.group/t/error-creating-forms-from-ufl-extract-blocks/17840/1 "2025-06-25T20:42:19Z")

</div>

Hi.

Im using dolfinx version 0.9.0 on a docker container, trying to compile the forms for the block system arising from the navier-stokes equations results in an unexpected error.

Here is the MWE:

```python
from petsc4py import PETSc
from mpi4py import MPI
from basix.ufl import element, mixed_element
from dolfinx.mesh import create_unit_square
from dolfinx.fem import (
    Constant,
    Function,
    functionspace,
    form,
)
from ufl import (
    dx,
    ds,
    dot,
    inner,
    nabla_grad,
    div,
    TestFunctions,
    split,
    sym,
    Identity,
    extract_blocks,
)

mesh = create_unit_square(MPI.COMM_WORLD, 32, 32)
dt = Constant(mesh, PETSc.ScalarType(1 / 200))
rho = Constant(mesh, PETSc.ScalarType(1))
mu = Constant(mesh, PETSc.ScalarType(1))
f = Constant(mesh, PETSc.ScalarType((0.0, 0.0)))
h = Constant(mesh, PETSc.ScalarType((0.0, 0.0)))

element_velocity = element(
    "Lagrange",
    mesh.topology.cell_name(),
    1,
    shape=(2,),
)
element_pressure = element("Lagrange", mesh.topology.cell_name(), 1)
element_mixed = mixed_element([element_velocity, element_pressure])

W = functionspace(mesh, element_mixed)
v, q = TestFunctions(W)

w_sol = Function(W)
u_sol, p_sol = split(w_sol)

w_prev = Function(W)
u_prev, p_prev = split(w_prev)

def epsilon(u):
    return sym(nabla_grad(u))

def sigma(u, p, mu):
    return 2 * mu * sym(nabla_grad(u)) - p * Identity(len(u))

F = rho * inner(v, (u_sol - u_prev) / dt) * dx
F += rho * dot(v, dot(u_sol, nabla_grad(u_sol))) * dx
F -= inner(v, rho * f) * dx
F += inner(epsilon(v), sigma(u_sol, p_sol, mu)) * dx
F -= inner(v, h) * ds
F += inner(q, div(u_sol)) * dx

F_form = form(extract_blocks(F))

```

The error:

```auto
Traceback (most recent call last):
  File "/root/shared/mwe.py", line 68, in <module>
    F_form = form(extract_blocks(F))
             ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/dolfinx-real/lib/python3.12/dist-packages/dolfinx/fem/forms.py", line 337, in form
    return _create_form(form)
           ^^^^^^^^^^^^^^^^^^
  File "/usr/local/dolfinx-real/lib/python3.12/dist-packages/dolfinx/fem/forms.py", line 333, in _create_form
    return list(map(lambda sub_form: _create_form(sub_form), form))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/dolfinx-real/lib/python3.12/dist-packages/dolfinx/fem/forms.py", line 333, in <lambda>
    return list(map(lambda sub_form: _create_form(sub_form), form))
                                     ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/dolfinx-real/lib/python3.12/dist-packages/dolfinx/fem/forms.py", line 333, in _create_form
    return list(map(lambda sub_form: _create_form(sub_form), form))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/dolfinx-real/lib/python3.12/dist-packages/dolfinx/fem/forms.py", line 333, in <lambda>
    return list(map(lambda sub_form: _create_form(sub_form), form))
                                     ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/dolfinx-real/lib/python3.12/dist-packages/dolfinx/fem/forms.py", line 331, in _create_form
    return _form(form)
           ^^^^^^^^^^^
  File "/usr/local/dolfinx-real/lib/python3.12/dist-packages/dolfinx/fem/forms.py", line 259, in _form
    V = [arg.ufl_function_space()._cpp_object for arg in form.arguments()]
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'FunctionSpace' object has no attribute '_cpp_object'

```

---

<div class="post-metadata">

**Author:** ![dokken](https://yyz2.discourse-cdn.com/free1/user_avatar/fenicsproject.discourse.group/dokken/32/1560_2.png) [@dokken](https://fenicsproject.discourse.group/u/dokken)\
**Post date:** [June 25, 2025, 10:01pm UTC](https://fenicsproject.discourse.group/t/error-creating-forms-from-ufl-extract-blocks/17840/2 "2025-06-25T22:01:28Z")

</div>

`ufl.extract_block` is supposed to be used together with `ufl.MixedFunctionSpace`, not a `mixed_element`. See: [FEniCS release notes | FEniCS Project](https://fenicsproject.org/blog/v0.9.0/#extract-blocks) for details.
