def interpolator(self, point_values): """ Given a self.nsd dimension array point_values with values at each grid point, this method returns a function for interpolating the scalar field defined by point_values at an arbitrary point. 2D Example: given a filled array point_values[i,j], compute interpolator = grid.interpolator(point_values) v = interpolator(0.1243, 9.231) # interpolate point_values >>> g=UniformBoxGrid(x=(0,2), nx=2, y=(-1,1), ny=2) >>> g UniformBoxGrid(x=(0,2), nx=2, y=(-1,1), ny=2) >>> def f(x,y): return 2+2*x-y >>> f=g.vectorized_eval(f) >>> f array([[ 3., 2., 1.], [ 5., 4., 3.], [ 7., 6., 5.]]) >>> i=g.interpolator(f) >>> i(0.1,0.234) # interpolate (not a grid point) 1.9660000000000002 >>> f(0.1,0.234) # exact answer 1.9660000000000002 """ args = self.coor args.append(point_values) # make use of wrap2callable, which applies ScientificPython return wrap2callable(args)
def continuous(self): if not hasattr(self, 'x') and hasattr(self, 'y'): self.discrete() from scitools.numpyutils import wrap2callable self.g = wrap2callable((self.y, self.x)) return self.g