From f89fc01b47be8e24ec2d70a63ee91a8022c40019 Mon Sep 17 00:00:00 2001 From: renchao_lu <renchao.lu@gmail.com> Date: Thu, 4 Jun 2020 11:10:11 +0200 Subject: [PATCH] [MathLib] Add a new ctor for EigenVector. --- MathLib/LinAlg/MatrixVectorTraits.cpp | 5 +++++ MathLib/LinAlg/MatrixVectorTraits.h | 17 ++++++++++------- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/MathLib/LinAlg/MatrixVectorTraits.cpp b/MathLib/LinAlg/MatrixVectorTraits.cpp index cac6b4f51f1..e2f1ce8a17e 100644 --- a/MathLib/LinAlg/MatrixVectorTraits.cpp +++ b/MathLib/LinAlg/MatrixVectorTraits.cpp @@ -139,6 +139,11 @@ newInstance(MatrixSpecifications const& spec) return std::make_unique<EigenVector>(spec.nrows); } +std::unique_ptr<EigenVector> MatrixVectorTraits<EigenVector>::newInstance( + Eigen::SparseMatrix<double>::Index const length) +{ + return std::make_unique<EigenVector>(length); +} } // namespace MathLib #endif // defined(OGS_USE_EIGEN) diff --git a/MathLib/LinAlg/MatrixVectorTraits.h b/MathLib/LinAlg/MatrixVectorTraits.h index 608dce16719..4e6f2737b5a 100644 --- a/MathLib/LinAlg/MatrixVectorTraits.h +++ b/MathLib/LinAlg/MatrixVectorTraits.h @@ -19,15 +19,18 @@ template<typename Matrix> struct MatrixVectorTraits; } -#define SPECIALIZE_MATRIX_VECTOR_TRAITS(MATVEC, IDX) \ - template<> struct MatrixVectorTraits<MATVEC> { \ - using Index = IDX; \ - static std::unique_ptr<MATVEC> newInstance(); \ - static std::unique_ptr<MATVEC> newInstance(MATVEC const& A); \ - static std::unique_ptr<MATVEC> newInstance(MatrixSpecifications const& spec); \ +#define SPECIALIZE_MATRIX_VECTOR_TRAITS(MATVEC, IDX) \ + template <> \ + struct MatrixVectorTraits<MATVEC> \ + { \ + using Index = IDX; \ + static std::unique_ptr<MATVEC> newInstance(); \ + static std::unique_ptr<MATVEC> newInstance(MATVEC const& A); \ + static std::unique_ptr<MATVEC> newInstance( \ + MatrixSpecifications const& spec); \ + static std::unique_ptr<MATVEC> newInstance(Index const length); \ }; - #ifdef USE_PETSC #include "MathLib/LinAlg/PETSc/PETScMatrix.h" -- GitLab