From c91c3078b7047bad589910490c61467caef811dc Mon Sep 17 00:00:00 2001 From: Dmitri Naumov <dmitri.naumov@ufz.de> Date: Tue, 30 Jul 2013 17:42:02 +0200 Subject: [PATCH] New add() function for global matrices using RowColumnIndices. --- MathLib/LinAlg/Dense/GlobalDenseMatrix.h | 10 ++++++++++ MathLib/LinAlg/Lis/LisMatrix.h | 11 +++++++++++ 2 files changed, 21 insertions(+) diff --git a/MathLib/LinAlg/Dense/GlobalDenseMatrix.h b/MathLib/LinAlg/Dense/GlobalDenseMatrix.h index 35d3d656054..7272c9888b8 100644 --- a/MathLib/LinAlg/Dense/GlobalDenseMatrix.h +++ b/MathLib/LinAlg/Dense/GlobalDenseMatrix.h @@ -20,6 +20,8 @@ #include "DenseMatrix.h" #include "DenseVector.h" +#include "MathLib/LinAlg/RowColumnIndices.h" + namespace MathLib { @@ -80,6 +82,14 @@ public: this->add(row_pos, row_pos, sub_matrix, fkt); } + template<class T_DENSE_MATRIX> + void add(RowColumnIndices<IDX_TYPE> const& indices, + const T_DENSE_MATRIX &sub_matrix, + FP_TYPE fkt = static_cast<FP_TYPE>(1.0)) + { + this->add(indices.rows, indices.columns, sub_matrix, fkt); + } + template<class T_DENSE_MATRIX> void add(std::vector<IDX_TYPE> const& row_pos, std::vector<IDX_TYPE> const& col_pos, const T_DENSE_MATRIX &sub_matrix, diff --git a/MathLib/LinAlg/Lis/LisMatrix.h b/MathLib/LinAlg/Lis/LisMatrix.h index 415a4a5d627..8fbcb06eedc 100644 --- a/MathLib/LinAlg/Lis/LisMatrix.h +++ b/MathLib/LinAlg/Lis/LisMatrix.h @@ -19,6 +19,8 @@ #include <cmath> #include <vector> +#include "MathLib/LinAlg/RowColumnIndices.h" + #include "lis.h" #include "LisOption.h" @@ -92,6 +94,15 @@ public: this->add(row_pos, row_pos, sub_matrix, fkt); } + /// Add sub-matrix at positions given by \c indices. + template<class T_DENSE_MATRIX> + void add(RowColumnIndices<std::size_t> const& indices, + const T_DENSE_MATRIX &sub_matrix, + double fkt = 1.0) + { + this->add(indices.rows, indices.columns, sub_matrix, fkt); + } + /// template <class T_DENSE_MATRIX> void add(std::vector<std::size_t> const& row_pos, -- GitLab