Return the gradient at a specified node.

        This routine employs a local method, in which values depend only on nearby
        data points, to compute an estimated gradient at a node.

        gradient_local() is more efficient than gradient() only if it is unnecessary
        to compute gradients at all of the nodes. Both routines have similar accuracy.

        Parameters
        ----------

def gradient_local(self, f, index):
        """
        Return the gradient at a specified node.

        This routine employs a local method, in which values depend only on nearby
        data points, to compute an estimated gradient at a node.

        gradient_local() is more efficient than gradient() only if it is unnecessary
        to compute gradients at all of the nodes. Both routines have similar accuracy.

        Parameters
        ----------
        """
        if f.size != self.npoints:
            raise ValueError('f should be the same size as mesh')

        f = self._shuffle_field(f)


        gradX, gradY, l = _srfpack.gradl(index + 1, self._x, self._y, f,\
                                         self.lst, self.lptr, self.lend)

        return gradX, gradY