template<class Function>
struct nu : std::unary_function<point,tensor> {
  tensor operator() (const point& grad_u) const {
    Float x2 = norm2 (grad_u);
    Float a = f(x2);
    Float b = 2*f.derivative(x2);
    tensor value;
    for (size_t i = 0; i < d; i++) {
      value(i,i)   = a + b*grad_u[i]*grad_u[i];
      for (size_t j = 0; j < i; j++)
        value(j,i) = value(i,j) = b*grad_u[i]*grad_u[j];
    }
    return value;
  }
  nu (const Function& f1, size_t d1) : f(f1), d(d1) {}
  Function f;
  size_t   d;
};
