Skip to content
Snippets Groups Projects

H1SemiNorm: use smart pointer for matrix

Merged Ansgar Burchardt requested to merge h1seminorm-smart-pointer into master
1 file
+ 7
5
Compare changes
  • Side-by-side
  • Inline
@@ -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_;
};
};
Loading