File kernel/src/utils/SiconosAlgebra/SiconosVector.hpp#
Go to the source code of this file
-
union VECTOR_UBLAS_TYPE#
- #include <SiconosVector.hpp>
Union to gather all types of ublas vectors used in Siconos.
-
class SiconosVector : public std::enable_shared_from_this<SiconosVector>
- #include <SiconosVector.hpp>
Vectors of double.
(Interface to various types of Boost-Ublas vectors).
Two possible types: siconos::DENSE (default) and Siconos:SPARSE.
Public Types
-
typedef SiconosVectorIterator iterator
for iterator interface
-
typedef SiconosVectorConstIterator const_iterator
for iterator interface
Public Functions
-
SiconosVector()
Creates a zero-size vector.
-
SiconosVector(unsigned row, siconos::UBLAS_TYPE type = siconos::DENSE)
creates a vector, all components set to zero.
- Parameters:
row – the size of the vector
type – the type of vector (dense or sparse)
-
SiconosVector(unsigned row, double val, siconos::UBLAS_TYPE type = siconos::DENSE)
creates a vector and initializes its content with a single value
- Parameters:
row – size of the new vector
val – value to initialize its content
type – type of vector (dense or sparse)
-
SiconosVector(const std::vector<double> &vec, siconos::UBLAS_TYPE type = siconos::DENSE)
creates a dense vector from a copy of a stl vector.
- Parameters:
vec – vector to be copied
type – of the vector (dense or sparse)
-
SiconosVector(const SiconosVector &v)
copy constructor
- Parameters:
v – source vector to be copied
-
SiconosVector(const DenseVect &v)
creates a dense vector, with a copy.
- Parameters:
v – source vector (ublas dense)
-
SiconosVector(const SparseVect &v)
creates a sparse vector, with a copy.
- Parameters:
v – source vector (ublas sparse)
-
SiconosVector(const std::string &filename, bool is_ascii)
creates a vector from data in a file
- Parameters:
filename – file name (possibly with path)
is_ascii – file format (true if ascii, false if binary)
-
SiconosVector(const SiconosVector &v1, const SiconosVector &v2)
constructor from the concatenation of two vectors
- Parameters:
v1 – the first vector
v2 – the second vector
-
explicit SiconosVector(const BlockVector &input)
constructor from a BlockVector.
explicit to forbid implicit conversion/conversion constructor.
- Parameters:
input – source vector
-
~SiconosVector()
destructor
-
unsigned int size() const
get the vector size, ie the total number of (double) elements in the vector
- Returns:
unsigned int
-
inline siconos::UBLAS_TYPE num() const
Get the type number of the current vector.
- Returns:
an unsigned int
-
inline DenseVect *dense() const
get a pointer to the ublas embedded vector if it’s type is Dense
- Returns:
a DenseVect*
-
SparseVect *sparse() const
get a pointer to the ublas embedded vector if it’s type is Sparse
- Returns:
a SparseVect*
-
double *getArray() const
- Returns:
the array of double values of the vector
-
void zero()
sets all the values of the vector to 0.0
-
void resize(unsigned int size, bool preserve = true)
Resize the vector.
The existing elements may be preseved if specified.
- Parameters:
size – new size of the vector
preserve – true if the content of the vector must be preserved.
-
double normInf() const
- Returns:
the infinite norm of the vector
-
double norm2() const
- Returns:
the Euclidian norm of the vector
-
double vector_sum() const
- Returns:
the sum of all elements of the vector
-
void display(void) const
display vector content
-
void fill(double a)
set all values of the vector to input value.
- Parameters:
a – input value
-
std::string toString() const
- Returns:
the content of the vector as a string
-
iterator begin()
- Returns:
an iterator pointing to the first element in the vector.
-
const_iterator begin() const
- Returns:
an iterator pointing to the first element in the vector.
-
iterator end()
- Returns:
an iterator referring to the past-the-end element in the vector container.
-
const_iterator end() const
- Returns:
an iterator referring to the past-the-end element in the vector container.
-
operator std::vector<double>()
cast a SiconosVector into a std::vector<double> (performs copy)
-
double getValue(unsigned int i) const
Get a component of the vector.
- Parameters:
i – index of the required component
- Returns:
the component value
-
void setValue(unsigned int i, double value)
set a component of the vector
- Parameters:
i – index of the required component
value – of the component
-
double &operator()(unsigned int i)
get a component of the vector
- Parameters:
i – index of the required component
- Returns:
value of the component
-
double operator()(unsigned int i) const
get a component of the vector
- Parameters:
i – index of the required component
- Returns:
value of the component
-
void setBlock(unsigned int i, const SiconosVector &v)
set a sub-block of the current vector
- Parameters:
i – the beginning of the destination range
v – vector to be copied
-
void toBlock(SiconosVector &vOut, unsigned int sizeB, unsigned int startIn, unsigned int startOut) const
copy a part of the vector into another
- Parameters:
vOut – destination vector
sizeB – number of the elements to copy
startIn – the beginning of the range of elements to copy from
startOut – the beginning of the destination range
-
void addBlock(unsigned int i, const SiconosVector &v)
add the input vector to a sub-block of the current vector
- Parameters:
i – the beginning of the destination range
v – the source vector to be added
-
void subBlock(unsigned int i, const SiconosVector &v)
subtract the input vector to a sub-block of the current vector
- Parameters:
i – the beginning of the destination range
v – the source vector to be added
-
unsigned copyData(double *data) const
copy the vector into an array
- Parameters:
data – the memory where to copy the data
- Returns:
the number of element written (size of the vector)
-
SiconosVector &operator=(const SiconosVector &v)
operator =
- Parameters:
v – the vector to be copied
- Returns:
-
SiconosVector &operator=(const BlockVector &b)
operator =
- Parameters:
b – the vector to be copied
- Returns:
-
SiconosVector &operator=(const DenseVect &v)
operator =
- Parameters:
v – the vector to be copied
- Returns:
-
SiconosVector &operator=(const SparseVect &sp)
operator =
- Parameters:
sp – the vector to be copied
- Returns:
-
SiconosVector &operator=(const double *d)
operator =
- Parameters:
d – data to put the in vector
- Returns:
-
SiconosVector &operator+=(const SiconosVector &v)
operator +=
- Parameters:
v – the vector to add
- Returns:
-
SiconosVector &operator+=(const BlockVector &v)
operator +=
- Parameters:
v – the vector to add
- Returns:
-
SiconosVector &operator-=(const SiconosVector &v)
operator -=
- Parameters:
v – the vector to subtract
- Returns:
-
SiconosVector &operator-=(const BlockVector &v)
operator -=
- Parameters:
v – the vector to subtract
- Returns:
-
ACCEPT_NONVIRTUAL_VISITORS()#
Protected Functions
-
ACCEPT_SERIALIZATION(SiconosVector)#
Protected Attributes
-
bool _dense = true#
-
VECTOR_UBLAS_TYPE vect#
Union of pointers to the ublas vector type (dense or sparse)
Friends
- friend struct IsDense
- friend struct IsSparse
- friend struct IsBlock
- friend class TestDense
-
friend std::ostream &operator<<(std::ostream &os, const SiconosVector &sv)
send data of the vector to an ostream
- Parameters:
os – An output stream
sv – a SiconosVector
- Returns:
The same output stream
-
friend SiconosVector &operator*=(SiconosVector &v, const double &s)#
-
friend SiconosVector &operator/=(SiconosVector &v, const double &s)#
-
friend bool operator==(const SiconosVector&, const SiconosVector&)
A==B when (A-B).normInf()<tolerance.
- Parameters:
2 – SiconosVector
- Returns:
a boolean
-
friend SiconosVector operator*(double, const SiconosVector&)
multiplication of a vector by a scalar
- Parameters:
a – double
a – SiconosVector
- Returns:
-
friend SiconosVector operator*(const SiconosVector&, double)
multiplication of a vector by a double
- Parameters:
a – SiconosVector
a – double
- Returns:
-
friend SiconosVector operator/(const SiconosVector&, double)
division of the vector by a double
- Parameters:
a – SiconosVector
a – double
- Returns:
-
friend SiconosVector operator+(const SiconosVector&, const SiconosVector&)
Addition of two vectors.
- Parameters:
a – SiconosVector
a – SiconosVector
- Returns:
-
friend void add(const SiconosVector&, const SiconosVector&, SiconosVector&)
computes z = x + y
- Parameters:
x, a – SiconosVector, IN.
y, a – SiconosVector, IN.
z, a – SiconosVector, IN-OUT.
-
friend SiconosVector operator-(const SiconosVector&, const SiconosVector&)
Subtraction of two vectors.
- Parameters:
a – SiconosVector (x), IN.
a – SiconosVector (y), IN.
- Returns:
-
friend void sub(const SiconosVector&, const SiconosVector&, SiconosVector&)
computes z = x - y
- Parameters:
a – SiconosVector (x), IN.
a – SiconosVector (y), IN.
a – SiconosVector (z), IN-OUT.
-
friend void axpby(double, const SiconosVector&, double, SiconosVector&)
computes y = a*x + b*y with blas axpy.
- Parameters:
a, a – double.
x, a – SiconosVector , IN.
b, a – double.
y, a – SiconosVector , IN-OUT.
-
friend void axpy(double, const SiconosVector&, SiconosVector&)
computes y = a*x + y with blas axpy.
- Parameters:
a, a – double.
x, a – SiconosVector , IN.
y, a – SiconosVector , IN-OUT.
-
friend double inner_prod(const SiconosVector&, const SiconosVector&)
compute dot product m1.m2
- Parameters:
2 – SiconosVectors
- Returns:
a double
-
friend SimpleMatrix outer_prod(const SiconosVector&, const SiconosVector&)
compute the product m1 * trans(m2)
- Parameters:
2 – SiconosVectors
- Returns:
-
friend void scal(double, const SiconosVector&, SiconosVector&, bool)
multiplication of a vector by a scalar, y = a*x (init = true) or y += a*x (init = false)
- Parameters:
a – a double
x – [in] a SiconosVector
y – [inout] a SiconosVector
init – if true y = a*x else y += a*x (default = true)
-
friend void subscal(double, const SiconosVector&, SiconosVector&, const Index&, bool)
multiplication of a vector by a scalar, sub_y = a*sub_x (init = true) or sub_y += a*sub_x (init = false)
- Parameters:
a – a double
x – a SiconosVector (IN)
y – a SiconosVector (IN-OUT)
coord – an Index = [r0x r1x r0y r1y]; subX is the sub-vector of x, for row numbers between r0x and r1x-1. The same for y with riy.
init – if true sub_y = a*sub_x else sub_y += a*sub_x (default true)
-
friend void cross_product(const SiconosVector&, const SiconosVector&, SiconosVector&)
cross product
- Parameters:
V1 – a SiconosVector of dimention 3.
V2 – aSiconosVector of dimention 3.
VOUT – aSiconosVector of dimention 3, the resulting cross product between V1 and V2.
-
friend void abs_wise(const SiconosVector&, SiconosVector&)
get an absolute vector
- Parameters:
V – a SiconosVector (Input).
Vabs – a SiconosVector (Output)
-
friend void getMax(const SiconosVector&, double&, unsigned int&)
get maximal element of a vector
- Parameters:
1, a – SiconosVector (Input).
2, a – double variable giving the maximum element (Output).
3, an – unsigned int variable giving the position of the maximum element (Output)
-
friend void getMin(const SiconosVector&, double&, unsigned int&)
get minimum element of a vector
- Parameters:
1, a – SiconosVector (Input).
2, a – double variable giving the minimum element (Output).
3, an – unsigned int variable giving the position of the minimum element (Output)
-
typedef SiconosVectorIterator iterator
-
class TestDense#