def value_shape(self):
return (1,)
Change (1,) to ()
Your function space Q is scalar (), while your expression is a 1D vector (1,). Change one of them to the other.
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/fun ction.py", line 328, in interpolate
return interpolation.interpolate(expression, self, subset=subset)
File "/home/justin/Software/firedrake/src/firedrake/firedrake/int erpolation.py", line 36, in interpolate
return Interpolator(expr, V, subset=subset).interpolate()
File "/home/justin/Software/firedrake/src/firedrake/firedrake/int erpolation.py", line 56, in __init__
self.callable = make_interpolator(expr, V, subset)
File "/home/justin/Software/firedrake/src/firedrake/firedrake/int erpolation.py", line 116, in make_interpolator
loops.append(_interpolator(V, f.dat, expr, subset))
File "/home/justin/Software/firedrake/src/firedrake/firedrake/int erpolation.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
_______________________________________________
firedrake mailing list
firedrake@imperial.ac.uk
https://mailman.ic.ac.uk/mailman/listinfo/firedrake