12#ifndef __PETSc_Array_HPP
13#define __PETSc_Array_HPP
15#include "Gedim_Macro.hpp"
27template <
typename PETSc_ArrayType = Vec,
typename PETSc_SparseArrayType = Mat>
class PETSc_Array final :
public IArray
42 _vector = std::move(
vector);
76 unsigned int Size()
const;
77 const double *
Data()
const
79 throw std::runtime_error(
"unimplemented method");
83 throw std::runtime_error(
"unimplemented method");
87 void SetValues(
const std::vector<int> &
indices,
const std::vector<double> &values);
89 void AddValues(
const std::vector<int> &
indices,
const std::vector<double> &values);
110 throw std::runtime_error(
"unimplemented method");
115 throw std::runtime_error(
"unimplemented method");
118 inline void Concatenate(
const IArray &,
const IArray &)
120 throw std::runtime_error(
"unimplemented method");
123 inline double GetValue(
const int &i)
const
127 return static_cast<double>(value);
155 throw std::runtime_error(
"unimplemented method");
160 throw std::runtime_error(
"unimplemented method");
165 throw std::runtime_error(
"unimplemented method");
170 throw std::runtime_error(
"unimplemented method");
173 void ToBinaryFile(
const std::string &,
const unsigned int & = 0,
const unsigned int & = 0,
const bool & =
false)
const
175 throw std::runtime_error(
"unimplemented method");
180 double Dot(
const IArray &
v)
const;
182 inline void Copy(
const IArray &
v)
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
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
void AddValue(const int &i, const double &val)
Add value to the Array.
Definition Eigen_Array.hpp:93
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()
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
double & operator[](const int &i)
operator []
Definition Eigen_Array.hpp:121
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
Definition Eigen_Array.cpp:22