First of all, does your mesh consist of triangles or quadrilaterals?
Secondly, is your mesh uniform and structured (i.e. is it a RectangleMesh
with 100 x 100 cells?)
I would suggest something like:
from dolfin import *
import numpy as np
mesh = UnitSquareMesh(100, 100)
V = FunctionSpace(mesh, "DG", 0)
u = Function(V)
dx = 1/100
values = np.arange(100*100)
local_values = np.zeros_like(u.vector().get_local())
for cell in cells(mesh):
midpoint = cell.midpoint().array()
i = int(midpoint[0] // dx)
j = int(midpoint[1] // dx)
pos = i + (j+1)
local_values[cell.index()] = values[pos]
print(midpoint, i, j , pos)
u.vector().set_local(local_values)
File("u.pvd") << u