12#ifndef __Eigen_Array_HPP
13#define __Eigen_Array_HPP
21template <
typename Eigen_ArrayType = Eigen::VectorXd,
typename Eigen_SparseArrayType = Eigen::SparseMatrix<
double>>
25 Eigen_ArrayType _vector;
37 _vector = std::move(vector);
43 operator Eigen_ArrayType &()
47 operator const Eigen_ArrayType &()
const
55 inline const Eigen_ArrayType &
Cast(
const IArray &v)
const
66 inline void SetSize(
const unsigned int &numCols)
68 _vector.setZero(numCols);
70 inline void SetSizes(
const unsigned int &numCols,
const unsigned int & = 0)
75 inline unsigned int Size()
const
77 return _vector.size();
79 inline const double *
Data()
const
81 return _vector.data();
85 return _vector.data();
88 inline void SetValue(
const int &i,
const double &val)
92 void SetValues(
const std::vector<int> &indices,
const std::vector<double> &values);
93 inline void AddValue(
const int &i,
const double &val)
97 void AddValues(
const std::vector<int> &indices,
const std::vector<double> &values);
98 std::vector<double>
GetValues(
const std::vector<int> &indices = {})
const;
115 _vector.setConstant(c);
135 inline std::ostream &
Print(std::ostream &output)
const
137 return output << _vector.transpose();
164 sumResult._vector = _vector + other._vector;
171 sumResult._vector = _vector - other._vector;
178 sumResult._vector = other * _vector;
184 _vector = std::move(vector);
189 const unsigned int &dataSizeToWrite = 0,
190 const unsigned int &dataStartingPositionToWrite = 0,
191 const bool &append =
false)
const;
195 return _vector.norm();
200 return _vector.dot(
Cast(v));
Eigen column vector.
Definition Eigen_Array.hpp:23
Eigen_Array< Eigen_ArrayType, Eigen_SparseArrayType > operator*(const double &other) const
Definition Eigen_Array.hpp:175
void SetSizes(const unsigned int &numCols, const unsigned int &=0)
Set the size the Array. Resize a Array for Eigen application.
Definition Eigen_Array.hpp:70
void Zeros()
Put zero-values in the Array.
Definition Eigen_Array.hpp:105
std::ostream & Print(std::ostream &output) const
Print the array.
Definition Eigen_Array.hpp:135
const double * Data() const
Definition Eigen_Array.hpp:79
const Eigen_ArrayType & Cast(const IArray &v) const
Definition Eigen_Array.hpp:55
void SubtractionMultiplication(const ISparseArray &A, const IArray &w)
Multiplication of matrix and vector and sum to local vector, equivalent to v -= A * w.
Definition Eigen_Array.cpp:88
double Norm() const
Definition Eigen_Array.hpp:193
double Dot(const IArray &v) const
Definition Eigen_Array.hpp:198
Eigen_ArrayType & Cast(IArray &v)
Definition Eigen_Array.hpp:51
Eigen_Array(Eigen_ArrayType &&vector)
Definition Eigen_Array.hpp:35
void AddValue(const int &i, const double &val)
Add value to the Array.
Definition Eigen_Array.hpp:93
double * Data()
Definition Eigen_Array.hpp:83
double GetValue(const int &i) const
Definition Eigen_Array.hpp:100
void SetSize(const unsigned int &numCols)
Set the size the Array. Resize a Array for Eigen application.
Definition Eigen_Array.hpp:66
void SetValue(const int &i, const double &val)
Set the Array Value.
Definition Eigen_Array.hpp:88
IArray & operator+=(const IArray &v)
Definition Eigen_Array.hpp:140
std::vector< double > GetValues(const std::vector< int > &indices={}) const
Definition Eigen_Array.cpp:44
unsigned int Size() const
Definition Eigen_Array.hpp:75
IArray & operator-=(const IArray &v)
Definition Eigen_Array.hpp:145
void Destroy()
Definition Eigen_Array.hpp:63
void ToBinaryFile(const std::string &filePath, const unsigned int &dataSizeToWrite=0, const unsigned int &dataStartingPositionToWrite=0, const bool &append=false) const
Write array to binary file.
Definition Eigen_Array.cpp:111
void Create()
Matrix create call. Last call to complete the matrix structure.
Definition Eigen_Array.hpp:60
void Constant(const double &c)
Definition Eigen_Array.hpp:113
IArray & operator*=(const double &c)
Definition Eigen_Array.hpp:150
void AddValues(const std::vector< int > &indices, const std::vector< double > &values)
Add values in the indices to the Array.
Definition Eigen_Array.cpp:35
void SetValues(const std::vector< int > &indices, const std::vector< double > &values)
Set the Array Values.
Definition Eigen_Array.cpp:26
Eigen_Array< Eigen_ArrayType, Eigen_SparseArrayType > Segment(const unsigned int starter, const unsigned int numElements) const
Definition Eigen_Array.hpp:208
~Eigen_Array()
Definition Eigen_Array.hpp:39
Eigen_Array()
Definition Eigen_Array.hpp:28
void Concatenate(const IArray &v, const IArray &w)
Concatenate vectors, equivalent u<< v, w.
Definition Eigen_Array.hpp:130
void SumMultiplication(const ISparseArray &A, const IArray &w)
Multiplication of matrix and vector, equivalent to v += A * w.
Definition Eigen_Array.cpp:66
const double & operator[](const int &i) const
const operator []
Definition Eigen_Array.hpp:125
double & operator[](const int &i)
operator []
Definition Eigen_Array.hpp:121
Eigen_Array(const Eigen_ArrayType &vector)
Definition Eigen_Array.hpp:31
IArray & operator/=(const double &c)
Definition Eigen_Array.hpp:155
void Copy(const IArray &v)
Copy the content of vector v inside this.
Definition Eigen_Array.hpp:203
Eigen_Array< Eigen_ArrayType, Eigen_SparseArrayType > operator+(const Eigen_Array< Eigen_ArrayType, Eigen_SparseArrayType > &other) const
Definition Eigen_Array.hpp:161
void Ones()
Put one-values in the Array.
Definition Eigen_Array.hpp:109
Eigen_Array< Eigen_ArrayType, Eigen_SparseArrayType > & operator=(Eigen_ArrayType &&vector)
Definition Eigen_Array.hpp:182
Eigen_Array< Eigen_ArrayType, Eigen_SparseArrayType > operator-(const Eigen_Array< Eigen_ArrayType, Eigen_SparseArrayType > &other) const
Definition Eigen_Array.hpp:168
Interface used for column double Array.
Definition IArray.hpp:23
Interface used for sparse Array of double.
Definition ISparseArray.hpp:25
Definition Eigen_Array.cpp:22