I modified the poisson example so it should give me some information on the FFCX compilation, but unfortunately, it does not. Any hints what I’m doing wrong?
#!/usr/bin/env python3
from mpi4py import MPI
from petsc4py import PETSc
import numpy as np
import ufl
from dolfinx.fem import Function, assemble_scalar, form, functionspace
from dolfinx.fem.petsc import LinearProblem
from dolfinx.io import XDMFFile
from dolfinx.mesh import create_unit_square
from ufl import dx, grad, inner
# Wavenumber
k0 = 9 * np.pi
# Approximation space polynomial degree
deg = 1
# Number of elements in each direction of the mesh
n_elem = 128
msh = create_unit_square(MPI.COMM_WORLD, n_elem, n_elem)
# Source amplitude
if np.issubdtype(PETSc.ScalarType, np.complexfloating): # type: ignore
A = PETSc.ScalarType(1 + 1j) # type: ignore
else:
A = 1
# Test and trial function space
V = functionspace(msh, ("Lagrange", deg))
# Define variational problem
u, v = ufl.TrialFunction(V), ufl.TestFunction(V)
f = Function(V)
f.interpolate(lambda x: A * k0**2 * np.cos(k0 * x[0]) * np.cos(k0 * x[1]))
a = inner(grad(u), grad(v)) * dx - k0**2 * inner(u, v) * dx
L = inner(f, v) * dx
# Compute solution
uh = Function(V)
uh.name = "u"
problem = LinearProblem(a, L, u=uh, petsc_options={"ksp_type": "preonly", "pc_type": "lu"}, form_compiler_options={"verbosity": 10})
problem.solve()
# Save solution in XDMF format (to be viewed in ParaView, for example)
with XDMFFile(
MPI.COMM_WORLD, "out_helmholtz/plane_wave.xdmf", "w", encoding=XDMFFile.Encoding.HDF5
) as file:
file.write_mesh(msh)
file.write_function(uh)
Also, is there a way to let me know whenever a compilation happens in this script, i.e. settings the form compiler option globally rather than at one particular form or problem? Ideally without creating a ffcx_options.json file. Btw, I’ve tried that also, and that did not work either.
ffcx version 0.8.0
dolfinx version 0.8.0
python version 3.12.2
MacOSX 14.5