diff --git a/MathLib/LinAlg/Lis/LisVector.cpp b/MathLib/LinAlg/Lis/LisVector.cpp index 7965f654679b99054e52fa2048d423da016c5acf..4b176e74d65d8e48e197bb4471d1cf91f3d1961c 100644 --- a/MathLib/LinAlg/Lis/LisVector.cpp +++ b/MathLib/LinAlg/Lis/LisVector.cpp @@ -13,19 +13,18 @@ */ #include "LisVector.h" +#include "LisCheck.h" namespace MathLib { LisVector::LisVector(std::size_t length) -: _length(length) { lis_vector_create(0, &_vec); lis_vector_set_size(_vec, 0, length); } LisVector::LisVector(LisVector const &src) -: _length(src.size()) { lis_vector_duplicate(src._vec, &_vec); lis_vector_copy(src._vec, _vec); @@ -58,6 +57,15 @@ LisVector& LisVector::operator= (double v) return *this; } +std::size_t LisVector::size() const +{ + LIS_INT dummy; + LIS_INT size; + int const ierr = lis_vector_get_size(_vec, &dummy, &size); + checkLisError(ierr); + return size; +} + void LisVector::write (const std::string &filename) const { lis_output_vector(_vec, LIS_FMT_PLAIN, const_cast<char*>(filename.c_str())); diff --git a/MathLib/LinAlg/Lis/LisVector.h b/MathLib/LinAlg/Lis/LisVector.h index b8a258cebb696c0e2883f7fcdbf755b485cba4b2..99c8c25b351de1a0c03ab238eda4c2d046acceb9 100644 --- a/MathLib/LinAlg/Lis/LisVector.h +++ b/MathLib/LinAlg/Lis/LisVector.h @@ -45,13 +45,13 @@ public: virtual ~LisVector(); /// return a vector length - std::size_t size() const {return _length;}; + std::size_t size() const; /// return a start index of the active data range std::size_t getRangeBegin() const { return 0;} /// return an end index of the active data range - std::size_t getRangeEnd() const { return _length; } + std::size_t getRangeEnd() const { return this->size(); } /// set all values in this vector LisVector& operator= (double v); @@ -103,7 +103,6 @@ public: } } private: - std::size_t const _length; LIS_VECTOR _vec; };