code: def gradient_local(self, f, index):
          
          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
docs: 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
          ----------