...
 
Commits (2)
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include <dune/common/fmatrix.hh> #include <dune/common/fmatrix.hh>
#include <dune/istl/bcrsmatrix.hh> #include <dune/istl/bcrsmatrix.hh>
#include <dune/solvers/common/wrapownshare.hh>
#include "norm.hh" #include "norm.hh"
//! Specialisation of the EnergyNorm class to identity blocks //! Specialisation of the EnergyNorm class to identity blocks
...@@ -23,12 +24,13 @@ public: ...@@ -23,12 +24,13 @@ public:
/** \brief The type used for the result */ /** \brief The type used for the result */
using typename Base::field_type; using typename Base::field_type;
H1SemiNorm() : matrix_(NULL) {} H1SemiNorm() = default;
H1SemiNorm(const MatrixType& matrix) template<typename Matrix>
: matrix_(&matrix) H1SemiNorm(Matrix&& matrix)
: matrix_(Dune::Solvers::wrap_own_share<const MatrixType>(std::forward<Matrix>(matrix)))
{ {
assert(matrix.N() == matrix.M()); assert(matrix_->N() == matrix_->M());
} }
//! Compute the norm of the difference of two vectors //! Compute the norm of the difference of two vectors
...@@ -77,7 +79,7 @@ public: ...@@ -77,7 +79,7 @@ public:
return std::sqrt(sum); return std::sqrt(sum);
} }
const MatrixType* matrix_; std::shared_ptr<const MatrixType> matrix_;
}; };
......