PolyDiM
C++ library for POLYtopal DIscretization Methods
Loading...
Searching...
No Matches
IArray.hpp
Go to the documentation of this file.
1// _LICENSE_HEADER_
2//
3// Copyright (C) 2019 - 2025.
4// Terms register on the GPL-3.0 license.
5//
6// This file can be redistributed and/or modified under the license terms.
7//
8// See top level LICENSE file for more details.
9//
10// This file can be used citing references in CITATION.cff file.
11
12#ifndef __IArray_HPP
13#define __IArray_HPP
14
15#include "ISparseArray.hpp"
16#include <ostream>
17#include <vector>
18
19namespace Gedim
20{
22class IArray
23{
24 public:
25 virtual ~IArray()
26 {
27 }
28
30 virtual void Create() = 0;
31 virtual void Destroy() = 0;
34 virtual void SetSize(const unsigned int &numCols) = 0;
39 virtual void SetSizes(const unsigned int &numCols, const unsigned int &numLocalCols) = 0;
41 virtual unsigned int Size() const = 0;
43 virtual const double *Data() const = 0;
45 virtual double *Data() = 0;
47 virtual void Zeros() = 0;
49 virtual void Ones() = 0;
50 virtual void Constant(const double &c) = 0;
54 virtual double &operator[](const int &i) = 0;
58 virtual const double &operator[](const int &i) const = 0;
62 virtual void SetValue(const int &i, const double &val) = 0;
66 virtual void SetValues(const std::vector<int> &indices, const std::vector<double> &values) = 0;
67
68 virtual std::vector<double> GetValues(const std::vector<int> &indices = {}) const = 0;
69 virtual double GetValue(const int &i) const = 0;
70
74 virtual void AddValue(const int &i, const double &val) = 0;
78 virtual void AddValues(const std::vector<int> &indices, const std::vector<double> &values) = 0;
79
81 virtual void SumMultiplication(const ISparseArray &A, const IArray &w) = 0;
82
84 virtual void SubtractionMultiplication(const ISparseArray &A, const IArray &w) = 0;
85
87 virtual void Concatenate(const IArray &v, const IArray &w) = 0;
88
90 virtual double Norm() const = 0;
92 virtual double Dot(const IArray &v) const = 0;
93
95 virtual void Copy(const IArray &v) = 0;
96
98 virtual std::ostream &Print(std::ostream &output) const = 0;
99
105 virtual void ToBinaryFile(const std::string &filePath,
106 const unsigned int &dataSizeToWrite = 0,
107 const unsigned int &dataStartingPositionToWrite = 0,
108 const bool &append = false) const = 0;
109
110 virtual IArray &operator+=(const IArray &v) = 0;
111 virtual IArray &operator-=(const IArray &v) = 0;
112 virtual IArray &operator*=(const double &c) = 0;
113 virtual IArray &operator/=(const double &c) = 0;
114
119 inline friend std::ostream &operator<<(std::ostream &output, const IArray &b)
120 {
121 return b.Print(output);
122 }
124};
125} // namespace Gedim
126
127#endif // __IArray_HPP
Eigen column vector.
Definition Eigen_Array.hpp:23
Interface used for column double Array.
Definition IArray.hpp:23
virtual double Dot(const IArray &v) const =0
virtual void Ones()=0
Put one-values in the Array.
virtual void Copy(const IArray &v)=0
Copy the content of vector v inside this.
virtual void Destroy()=0
virtual void AddValues(const std::vector< int > &indices, const std::vector< double > &values)=0
Add values in the indices to the Array.
virtual void ToBinaryFile(const std::string &filePath, const unsigned int &dataSizeToWrite=0, const unsigned int &dataStartingPositionToWrite=0, const bool &append=false) const =0
Write array to binary file.
virtual double GetValue(const int &i) const =0
virtual const double & operator[](const int &i) const =0
const operator []
virtual ~IArray()
Definition IArray.hpp:25
virtual void SetSize(const unsigned int &numCols)=0
Set the size the Array. Resize a Array for Eigen application.
virtual void Concatenate(const IArray &v, const IArray &w)=0
Concatenate vectors, equivalent u<< v, w.
virtual IArray & operator*=(const double &c)=0
virtual double & operator[](const int &i)=0
operator []
virtual double * Data()=0
virtual IArray & operator/=(const double &c)=0
virtual void SumMultiplication(const ISparseArray &A, const IArray &w)=0
Multiplication of matrix and vector, equivalent to v += A * w.
virtual void Zeros()=0
Put zero-values in the Array.
virtual std::ostream & Print(std::ostream &output) const =0
Print the array.
virtual void AddValue(const int &i, const double &val)=0
Add value to the Array.
virtual const double * Data() const =0
virtual std::vector< double > GetValues(const std::vector< int > &indices={}) const =0
virtual unsigned int Size() const =0
virtual void SubtractionMultiplication(const ISparseArray &A, const IArray &w)=0
Multiplication of matrix and vector and sum to local vector, equivalent to v -= A * w.
virtual void SetSizes(const unsigned int &numCols, const unsigned int &numLocalCols)=0
Set the size the Array. Resize a Array for Eigen application.
virtual void SetValue(const int &i, const double &val)=0
Set the Array Value.
virtual void Create()=0
Matrix create call. Last call to complete the matrix structure.
virtual IArray & operator-=(const IArray &v)=0
virtual void Constant(const double &c)=0
virtual void SetValues(const std::vector< int > &indices, const std::vector< double > &values)=0
Set the Array Values.
virtual double Norm() const =0
virtual IArray & operator+=(const IArray &v)=0
Interface used for sparse Array of double.
Definition ISparseArray.hpp:25
friend std::ostream & operator<<(std::ostream &output, const IArray &b)
operator <<
Definition IArray.hpp:119
Definition Eigen_Array.cpp:22