Hi Henrik,

Let's assume that you have some function mydata(X) which takes as input a npoints * gdim array, where npoints is the number of points at which I need your data values, and gdim is the geometric dimension of the mesh. mydata(X) returns a npoints long vector of the scalar values of mydata evaluated at the points provided. Presumably mydata works by interpolating your external data source, but the precise details are beyond Firedrake's scope.

Let's further assume that the Firedrake FunctionSpace into which you wish to interpolate is scalar valued (although this procedure can be extended to vector or tensor valued fields). We'll call that FunctionSpace variable fs.

# First, grab the mesh.
m = fs.ufl_domain()

# Now make the VectorFunctionSpace corresponding to fs.
vfs = VectorFunctionSpace(m, fs.ufl_element())

# Next, interpolate the coordinates onto the nodes of vfs.
X = interpolate(m.coordinates, vfs)

# Make an output function.
f = Function(fs)

# Use the external data function to interpolate the values of f.
f.dat.data[:] = mydata(X.dat.data_ro)

That's it. This will also work in parallel, as the interpolation will occur on each process, and Firedrake will take care of the halo updates before the next operation using f.

Regards,

David



On Thu, 6 Apr 2017 at 11:04 Buesing, Henrik <HBuesing@eonerc.rwth-aachen.de> wrote:

Dear all,

 

I would like to assign a different value for every cell for one of the coefficients of my pde.

I have read all the values for my current discretization with numpy.genfromtxt into a variable. I also have the coefficient Function available.

How can I assign now the values to the Function?

Thank you!

Henrik

 

--

Dipl.-Math. Henrik Büsing

Institute for Applied Geophysics and Geothermal Energy

E.ON Energy Research Center

RWTH Aachen University

------------------------------------------------------

Mathieustr. 10            |    Tel +49 (0)241 80 49907

52074 Aachen, Germany     |    Fax +49 (0)241 80 49889

------------------------------------------------------

http://www.eonerc.rwth-aachen.de/GGE

hbuesing@eonerc.rwth-aachen.de

------------------------------------------------------

 

--
Dr David Ham
Department of Mathematics
Imperial College London