AttributeError: 'Form' object has no attribute '_cpp_object' for the bilinear form assembly

from dolfinx.fem import FunctionSpace, assemble_matrix
from dolfinx import mesh
from ufl import dx, grad, inner, TestFunction, TrialFunction
from mpi4py import MPI
import dolfinx
print(dolfinx.__version__)

# Your existing code
rho=7847
kappa=0.83
domain = mesh.create_unit_square(MPI.COMM_WORLD, 8, 8, mesh.CellType.quadrilateral)

# Define function space
V = FunctionSpace(domain, ("CG", 1))

# Define variational problem
u = TrialFunction(V)
v = TestFunction(V)
a = inner(grad(u), grad(v))*dx

# Assemble bilinear form
A = assemble_matrix(a)
A.assemble()

# Convert the matrix to a dense format and print it
A_dense = A.getDiagonal().getArray()
print(A_dense)
0.7.2
Traceback (most recent call last):
  File "/home/prusso/dolfinx-hello/Untitled-1.py", line 22, in <module>
    A = assemble_matrix(a)
        ^^^^^^^^^^^^^^^^^^
  File "/home/prusso/spack/var/spack/environments/fenicsx-env/.spack-env/view/lib/python3.11/functools.py", line 909, in wrapper
    return dispatch(args[0].__class__)(*args, **kw)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/prusso/spack/var/spack/environments/fenicsx-env/.spack-env/view/lib/python3.11/site-packages/dolfinx/fem/assemble.py", line 243, in assemble_matrix
    A: la.MatrixCSR = create_matrix(a, block_mode)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/prusso/spack/var/spack/environments/fenicsx-env/.spack-env/view/lib/python3.11/site-packages/dolfinx/fem/assemble.py", line 102, in create_matrix
    sp = dolfinx.fem.create_sparsity_pattern(a)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/prusso/spack/var/spack/environments/fenicsx-env/.spack-env/view/lib/python3.11/site-packages/dolfinx/fem/__init__.py", line 38, in create_sparsity_pattern
    return _create_sparsity_pattern(a._cpp_object)
                                    ^^^^^^^^^^^^^
AttributeError: 'Form' object has no attribute '_cpp_object'

Is there a way to get things to assemble and print out for the bi-linear form?

should be

A = assemble_matrix(dolfinx.fem.form(a))
4 Likes