Nevermind, I fixed it by adding this line under __init__

self._user_args = []

Code works now. Thanks again for the help

Justin

On Wed, Oct 12, 2016 at 4:38 AM, Justin Chang <jychang48@gmail.com> wrote:
I tried that, but I now 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 166, in _interpolator
    kernel, oriented, coefficients = compile_python_kernel(expr, to_pts, to_element, V, coords)
  File "/home/justin/Software/firedrake/src/firedrake/firedrake/interpolation.py", line 310, in compile_python_kernel
    for _, arg in expression._user_args:
AttributeError: 'createData' object has no attribute '_user_args'


Here's my code and text files

Thanks,
Justin

On Wed, Oct 12, 2016 at 4:36 AM, Homolya, Miklós <m.homolya14@imperial.ac.uk> wrote:

def value_shape(self):
    return (1,)

Change (1,) to ()




On Wed, Oct 12, 2016 at 10:35 AM +0100, "Justin Chang" <jychang48@gmail.com> wrote:

How do I make the expression return a scalar?

On Wed, Oct 12, 2016 at 4:28 AM, Homolya, Miklós <m.homolya14@imperial.ac.uk> wrote:

Your function space Q is scalar (), while your expression is a 1D vector (1,). Change one of them to the other.




On Wed, Oct 12, 2016 at 10:05 AM +0100, "Justin Chang" <jychang48@gmail.com> wrote:

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

_______________________________________________
firedrake mailing list
firedrake@imperial.ac.uk
https://mailman.ic.ac.uk/mailman/listinfo/firedrake



_______________________________________________
firedrake mailing list
firedrake@imperial.ac.uk
https://mailman.ic.ac.uk/mailman/listinfo/firedrake