Dear all, I am attempting to create an Expression which uses data from some text files. This is my code: from firedrake import * import numpy as np mesh = UnitSquareMesh(100,100) Q = FunctionSpace(mesh,'DG',0) file_prefix = 'perm600' class createData(Expression): def __init__(self): self.s = np.loadtxt(file_prefix+'_s') self.xs = np.loadtxt(file_prefix+'_xs') self.ys = np.loadtxt(file_prefix+'_ys') def eval(self, val, x): numerator = 0 denominator = 0 for i in range(0,600): numerator += self.s[i]/((self.xs[i]-x[0])**2+(self.ys[i]-x[1])**2) denominator += 1/((self.xs[i]-x[0])**2+(self.ys[i]-x[1])**2) ssum = numerator/denominator val[0] = 1e-12*exp(ssum) def value_shape(self): return (1,) u = Function(Q) u.interpolate(createData()) However, I get this error: Traceback (most recent call last): File "readData.py", line 25, in <module> u.interpolate(createData()) File "/home/justin/Software/firedrake/src/firedrake/firedrake/function.py", line 328, in interpolate return interpolation.interpolate(expression, self, subset=subset) File "/home/justin/Software/firedrake/src/firedrake/firedrake/interpolation.py", line 36, in interpolate return Interpolator(expr, V, subset=subset).interpolate() File "/home/justin/Software/firedrake/src/firedrake/firedrake/interpolation.py", line 56, in __init__ self.callable = make_interpolator(expr, V, subset) File "/home/justin/Software/firedrake/src/firedrake/firedrake/interpolation.py", line 116, in make_interpolator loops.append(_interpolator(V, f.dat, expr, subset)) File "/home/justin/Software/firedrake/src/firedrake/firedrake/interpolation.py", line 152, in _interpolator % (len(expr.ufl_shape), len(V.ufl_element().value_shape()))) RuntimeError: Rank mismatch: Expression rank 1, FunctionSpace rank 0 What's going on here? I know you guys generally recommend using UFL for interpolating expressions, but I am not sure how I would implement the above in a UFL way since I have to read data from a textfile. Any help appreciated :) Justin