OGS
LisVector.cpp
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) OpenGeoSys Community (opengeosys.org)
2// SPDX-License-Identifier: BSD-3-Clause
3
4#include "LisVector.h"
5
6#include "LisCheck.h"
7
8namespace MathLib
9{
10LisVector::LisVector(std::size_t length)
11{
12 lis_vector_create(0, &vec_);
13 lis_vector_set_size(vec_, 0, length);
14}
15
16LisVector::LisVector(std::size_t length, double* data)
17{
18 lis_vector_create(0, &vec_);
19 lis_vector_set_size(vec_, 0, length);
20 for (std::size_t i = 0; i < length; i++)
21 lis_vector_set_value(LIS_INS_VALUE, i, data[i], vec_);
22}
23
25{
26 lis_vector_duplicate(src.vec_, &vec_);
27 lis_vector_copy(src.vec_, vec_);
28}
29
31{
32 lis_vector_destroy(vec_);
33}
34
35std::size_t LisVector::size() const
36{
37 IndexType dummy;
39 int const ierr = lis_vector_get_size(vec_, &dummy, &size);
40 checkLisError(ierr);
41 assert(size >= 0); // For safe implicit conversion to std::size_t.
42 return size;
43}
44
45void LisVector::write(const std::string& filename) const
46{
47 lis_output_vector(vec_, LIS_FMT_PLAIN, const_cast<char*>(filename.c_str()));
48}
49
50} // namespace MathLib
LisVector(std::size_t length)
Definition LisVector.cpp:10
void write(const std::string &filename) const
printout this equation for debugging
Definition LisVector.cpp:45
virtual ~LisVector()
Definition LisVector.cpp:30
std::size_t size() const
return a vector length
Definition LisVector.cpp:35
LIS_VECTOR vec_
Definition LisVector.h:130
bool checkLisError(int err)
Definition LisCheck.h:20