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 {
22 lis_vector_set_value(LIS_INS_VALUE, i, data[i], vec_);
23 }
24}
25
27{
28 lis_vector_duplicate(src.vec_, &vec_);
29 lis_vector_copy(src.vec_, vec_);
30}
31
33{
34 lis_vector_destroy(vec_);
35}
36
37std::size_t LisVector::size() const
38{
39 IndexType dummy;
41 int const ierr = lis_vector_get_size(vec_, &dummy, &size);
42 checkLisError(ierr);
43 assert(size >= 0); // For safe implicit conversion to std::size_t.
44 return size;
45}
46
47void LisVector::write(const std::string& filename) const
48{
49 lis_output_vector(vec_, LIS_FMT_PLAIN, const_cast<char*>(filename.c_str()));
50}
51
52} // 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:47
virtual ~LisVector()
Definition LisVector.cpp:32
std::size_t size() const
return a vector length
Definition LisVector.cpp:37
LIS_VECTOR vec_
Definition LisVector.h:130
bool checkLisError(int err)
Definition LisCheck.h:20