From 8ca59dff0ef1b5bae677d679ebce8edec376cca4 Mon Sep 17 00:00:00 2001 From: Felix Schindler <felix.schindler@wwu.de> Date: Thu, 3 Dec 2020 17:39:13 +0100 Subject: [PATCH] [operators.matrix] fix factories, use smaller stencil when possible --- dune/gdt/operators/matrix.hh | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/dune/gdt/operators/matrix.hh b/dune/gdt/operators/matrix.hh index c79b5f2e6..b576acf20 100644 --- a/dune/gdt/operators/matrix.hh +++ b/dune/gdt/operators/matrix.hh @@ -674,13 +674,13 @@ auto make_matrix_operator(const AssemblyGridViewType& assembly_grid_view, } // ... make_matrix_operator(...) -template <class GV, size_t s_r, size_t s_rC, class F, size_t r_r, size_t r_rC> -auto make_matrix_operator(const SpaceInterface<GV, r_r, r_rC, F>& space, +template <class GV, size_t r, size_t rC, class F> +auto make_matrix_operator(const SpaceInterface<GV, r, rC, F>& space, const XT::LA::SparsityPatternDefault& pattern, const std::string& logging_prefix = "") { using M = XT::LA::IstlRowMajorSparseMatrix<F>; - return MatrixOperator<GV, s_r, s_rC, r_r, r_rC, F, M, GV, GV>( + return MatrixOperator<GV, r, rC, r, rC, F, M, GV, GV>( space.grid_view(), space, space, new M(space.mapper().size(), space.mapper().size(), pattern), logging_prefix); } @@ -691,13 +691,13 @@ auto make_matrix_operator(const SpaceInterface<GV, r_r, r_rC, F>& space, auto op = make_matrix_operator<MatrixType>(space, pattern); \endcode */ -template <class MatrixType, class GV, size_t s_r, size_t s_rC, class F, size_t r_r, size_t r_rC> -auto make_matrix_operator(const SpaceInterface<GV, r_r, r_rC, F>& space, +template <class MatrixType, class GV, size_t r, size_t rC, class F> +auto make_matrix_operator(const SpaceInterface<GV, r, rC, F>& space, const XT::LA::SparsityPatternDefault& pattern, const std::string& logging_prefix = "") { static_assert(XT::LA::is_matrix<MatrixType>::value, ""); - return MatrixOperator<GV, s_r, s_rC, r_r, r_rC, F, MatrixType, GV, GV>( + return MatrixOperator<GV, r, rC, r, rC, F, MatrixType, GV, GV>( space.grid_view(), space, space, @@ -715,7 +715,7 @@ template <class AssemblyGridViewType, class SGV, size_t s_r, size_t s_rC, class auto make_matrix_operator(const AssemblyGridViewType& assembly_grid_view, const SpaceInterface<SGV, s_r, s_rC, F>& source_space, const SpaceInterface<RGV, r_r, r_rC, F>& range_space, - const Stencil stencil = Stencil::element_and_intersection, + const Stencil stencil = Stencil::automatic, const std::string& logging_prefix = "") { using M = XT::LA::IstlRowMajorSparseMatrix<F>; @@ -748,7 +748,7 @@ template <class MatrixType, auto make_matrix_operator(const AssemblyGridViewType& assembly_grid_view, const SpaceInterface<SGV, s_r, s_rC, F>& source_space, const SpaceInterface<RGV, r_r, r_rC, F>& range_space, - const Stencil stencil = Stencil::element_and_intersection, + const Stencil stencil = Stencil::automatic, const std::string& logging_prefix = "") { static_assert(XT::LA::is_matrix<MatrixType>::value, ""); @@ -763,13 +763,13 @@ auto make_matrix_operator(const AssemblyGridViewType& assembly_grid_view, } // ... make_matrix_operator(...) -template <class GV, size_t s_r, size_t s_rC, class F, size_t r_r, size_t r_rC> -auto make_matrix_operator(const SpaceInterface<GV, r_r, r_rC, F>& space, - const Stencil stencil = Stencil::element_and_intersection, +template <class GV, size_t r, size_t rC, class F> +auto make_matrix_operator(const SpaceInterface<GV, r, rC, F>& space, + const Stencil stencil = Stencil::automatic, const std::string& logging_prefix = "") { using M = XT::LA::IstlRowMajorSparseMatrix<F>; - return MatrixOperator<GV, s_r, s_rC, r_r, r_rC, F, M, GV, GV>( + return MatrixOperator<GV, r, rC, r, rC, F, M, GV, GV>( space.grid_view(), space, space, @@ -784,13 +784,13 @@ auto make_matrix_operator(const SpaceInterface<GV, r_r, r_rC, F>& space, auto op = make_matrix_operator<MatrixType>(space, stencil); \endcode */ -template <class MatrixType, class GV, size_t s_r, size_t s_rC, class F, size_t r_r, size_t r_rC> -auto make_matrix_operator(const SpaceInterface<GV, r_r, r_rC, F>& space, - const Stencil stencil = Stencil::element_and_intersection, +template <class MatrixType, class GV, size_t r, size_t rC, class F> +auto make_matrix_operator(const SpaceInterface<GV, r, rC, F>& space, + const Stencil stencil = Stencil::automatic, const std::string& logging_prefix = "") { static_assert(XT::LA::is_matrix<MatrixType>::value, ""); - return MatrixOperator<GV, s_r, s_rC, r_r, r_rC, F, MatrixType, GV, GV>( + return MatrixOperator<GV, r, rC, r, rC, F, MatrixType, GV, GV>( space.grid_view(), space, space, -- GitLab