virtual void apply(const NumericVector<Real> & x, NumericVector<Real> & y) override { y.pointwise_mult(_diag_inverse, x); }
void TensorShellMatrix<T>::get_diagonal (NumericVector<T>& dest) const { dest.pointwise_mult(_v,_w); }