Error interpolating dot product of vectors

Hi,

I need dot product of two vectors but I cannot work out fem.Expression for it. I will appreciate if someone could fix it for me. The MWE below reproduces the issue in second-last line:

import dolfinx, ufl, mpi4py

mesh = dolfinx.mesh.create_unit_square(mpi4py.MPI.COMM_WORLD, nx=10, ny=10)

fem_order = 2
Omega = dolfinx.fem.functionspace(mesh, ("N1curl", fem_order, (mesh.geometry.dim,)))

u_sol = dolfinx.fem.Function(Omega)
n = ufl.FacetNormal(mesh)
n_3d = ufl.as_vector((n[0], 0, n[1]))

def curl_2d(u):
    return ufl.as_vector((0, u[0].dx(1) -u[1].dx(0), 0))

U_sol_3d = ufl.as_vector((u_sol[0], 0, u_sol[1]))
# H_sol_3d = curl_2d(u_sol)/(1j*k0_param*Z0)
H_sol_3d = curl_2d(u_sol)
S_poynting_3d = 1/2*ufl.real(ufl.cross(U_sol_3d, ufl.conj(H_sol_3d)))

# vector poynting flux - works
Omega_cg_vec = dolfinx.fem.functionspace(mesh, ("CG", fem_order, (3, )))
S_sol = dolfinx.fem.Function(Omega_cg_vec)
S_poynting_expr = dolfinx.fem.Expression(S_poynting_3d, Omega_cg_vec.element.interpolation_points())
S_sol.interpolate(S_poynting_expr)

# scalar product of poynting flux with surface normal - does not work
Omega_cg = dolfinx.fem.functionspace(mesh, ("CG", fem_order))
S_sol_out = dolfinx.fem.Function(Omega_cg)
S_poynting_out_expr = dolfinx.fem.Expression(ufl.dot(S_poynting_3d, n_3d), Omega_cg.element.interpolation_points()) # error
S_sol_out.interpolate(S_poynting_out_expr)

I think I might have figured the mistake now. I am trying to do dot product of a field with a facet normal vector which is defined or at least meaningful only on facets. In that case I should be able to solve the actual problem because I need it at the facet after all.