Dear Firedrakers,
I’ve encountered an issue in my code where it won’t allow me to interpolate anything containing a reference to a defined FacetNormal onto a Function. Here is a snippet of code where I purposefully tried to put the bare minimum required
 to get the error:
H1 = VectorFunctionSpace(mesh,’CG’,1,5)
x0,x1,x2 = SpatialCoordinate(mesh)
nu = FacetNormal(mesh)
h = interpolate(as_vector([nu[0],0,0,0,0]),H1)
If I try to run this, I get the following traceback:
  File "/home/andrewh/firedrake/firedrake/src/firedrake/firedrake/function.py", line 353, in interpolate
    return interpolation.interpolate(expression, self, subset=subset)
  File "/home/andrewh/firedrake/firedrake/src/firedrake/firedrake/interpolation.py", line 36, in interpolate
    return Interpolator(expr, V, subset=subset, access=access).interpolate()
  File "/home/andrewh/firedrake/firedrake/src/firedrake/firedrake/interpolation.py", line 58, in __init__
    self.callable, arguments = make_interpolator(expr, V, subset, access)
  File "/home/andrewh/firedrake/firedrake/src/firedrake/firedrake/interpolation.py", line 163, in make_interpolator
    loops.extend(_interpolator(V, tensor, expr, subset, arguments, access))
  File "</home/andrewh/firedrake/firedrake/lib/python3.6/site-packages/decorator.py:decorator-gen-22>", line 2, in _interpolator
  File "/home/andrewh/firedrake/firedrake/src/firedrake/firedrake/utils.py", line 64, in wrapper
    return f(*args, **kwargs)
  File "/home/andrewh/firedrake/firedrake/src/firedrake/firedrake/interpolation.py", line 214, in _interpolator
    ast, oriented, needs_cell_sizes, coefficients, _ = compile_ufl_kernel(expr, to_pts, coords, coffee=False)
  File "/home/andrewh/firedrake/firedrake/src/tsfc/tsfc/driver.py", line 338, in compile_expression_at_points
    ir, = fem.compile_ufl(expression, point_sum=False, **config)
  File "/home/andrewh/firedrake/firedrake/src/tsfc/tsfc/fem.py", line 645, in compile_ufl
    result = map_expr_dags(context.translator, expressions)
  File "/home/andrewh/firedrake/firedrake/src/ufl/ufl/corealg/map_dag.py", line 73, in map_expr_dags
    r = handlers[v._ufl_typecode_](v)
  File "/home/andrewh/firedrake/firedrake/src/tsfc/tsfc/ufl_utils.py", line 144, in _modified_terminal
    return self.modified_terminal(o)
  File "/home/andrewh/firedrake/firedrake/src/tsfc/tsfc/fem.py", line 303, in modified_terminal
    return translate(mt.terminal, mt, self.context)
  File "/usr/lib/python3.6/functools.py", line 807, in wrapper
    return dispatch(args[0].__class__)(*args, **kw)
  File "/home/andrewh/firedrake/firedrake/src/tsfc/tsfc/fem.py", line 379, in translate_reference_normal
    return ctx.entity_selector(callback, mt.restriction)
  File "/home/andrewh/firedrake/firedrake/src/tsfc/tsfc/fem.py", line 98, in entity_selector
    return callback(self.entity_ids[0])
  File "/home/andrewh/firedrake/firedrake/src/tsfc/tsfc/fem.py", line 377, in callback
    n = ctx.fiat_cell.compute_reference_normal(ctx.integration_dim, facet_i)
  File "/home/andrewh/firedrake/firedrake/src/fiat/FIAT/reference_element.py", line 387, in compute_reference_normal
    assert facet_dim == self.get_spatial_dimension() - 1
AssertionError
Anyone know what could be the problem here? Any help would be much appreciated.
-AH