|
libROM
v1.0
Data-driven physical simulation library
|
#include <Vector.h>
Public Member Functions | |
| Vector (int dim, bool distributed) | |
| Constructor creating a Vector with uninitialized values. More... | |
| Vector (double *vec, int dim, bool distributed, bool copy_data=true) | |
| Constructor in which the Vector is given its initial values. More... | |
| Vector (const Vector &other) | |
| Copy constructor. More... | |
| ~Vector () | |
| Destructor. | |
| Vector & | operator= (const Vector &rhs) |
| Assignment operator. More... | |
| Vector & | operator+= (const Vector &rhs) |
| Addition operator. More... | |
| Vector & | operator-= (const Vector &rhs) |
| Subtraction operator. More... | |
| Vector & | operator= (const double &a) |
| Equal operator. More... | |
| Vector & | operator*= (const double &a) |
| Scaling operator. More... | |
| Vector & | transform (std::function< void(const int size, double *vector)> transformer) |
| Transform the vector using a supplied function. More... | |
| void | transform (Vector &result, std::function< void(const int size, double *vector)> transformer) const |
| Transform a vector using a supplied function and store the results in another vector. More... | |
| void | transform (Vector *&result, std::function< void(const int size, double *vector)> transformer) const |
| Transform a vector using a supplied function and store the results in another vector. More... | |
| Vector & | transform (std::function< void(const int size, double *origVector, double *resultVector)> transformer) |
| Transform the vector using a supplied function. More... | |
| void | transform (Vector &result, std::function< void(const int size, double *origVector, double *resultVector)> transformer) const |
| Transform a vector using a supplied function and store the results in another vector. More... | |
| void | setSize (int dim) |
| Sets the length of the vector and reallocates storage if needed. All values are initialized to zero. More... | |
| bool | distributed () const |
| Returns true if the Vector is distributed. More... | |
| int | dim () const |
| Returns the dimension of the Vector on this processor. More... | |
| double | inner_product (const Vector &other) const |
| Inner product, reference form. More... | |
| double | norm () const |
| Form the norm of this. More... | |
| double | norm2 () const |
| Form the squared norm of this. More... | |
| double | normalize () |
| Normalizes the Vector and returns its norm. More... | |
| std::unique_ptr< Vector > | plus (const Vector &other) const |
| Adds other and this and returns the result. More... | |
| void | plus (const Vector &other, Vector &result) const |
| Adds other and this and fills result with the answer. More... | |
| std::unique_ptr< Vector > | plusAx (double factor, const Vector &other) const |
| Adds factor*other and this and returns the result. More... | |
| void | plusAx (double factor, const Vector &other, Vector &result) const |
| Adds factor*other and this and fills result with the answer. More... | |
| void | plusEqAx (double factor, const Vector &other) |
| Adds factor*other to this. More... | |
| std::unique_ptr< Vector > | minus (const Vector &other) const |
| Subtracts other and this and returns the result. More... | |
| void | minus (const Vector &other, Vector &result) const |
| Subtracts other and this and fills result with the answer. More... | |
| std::unique_ptr< Vector > | mult (double factor) const |
| Multiplies this by the supplied constant and returns the result. More... | |
| void | mult (double factor, Vector &result) const |
| Multiplies this by the supplied constant and fills result with the answer. More... | |
| const double & | item (int i) const |
| Const Vector member access. More... | |
| double & | item (int i) |
| Non-const Vector member access. More... | |
| const double & | operator() (int i) const |
| Const Vector member access. More... | |
| double & | operator() (int i) |
| Non-const Vector member access. More... | |
| void | print (const char *prefix) const |
| print Vector into (a) ascii file(s). More... | |
| void | write (const std::string &base_file_name) |
| write Vector into (a) HDF file(s). More... | |
| void | read (const std::string &base_file_name) |
| read Vector from (a) HDF file(s). More... | |
| void | local_read (const std::string &base_file_name, int rank) |
| read read a single rank of a distributed Vector from (a) HDF file(s). More... | |
| double * | getData () const |
| Get the vector data as a pointer. | |
| double | localMin (int nmax=0) |
| Compute the local minimum of this. More... | |
| void | distribute (const int local_dim) |
| Distribute this vector among MPI processes, based on the specified local dimension. This becomes distributed after this function is executed. More... | |
| void | gather () |
| Gather all the distributed elements among MPI processes. This becomes not distributed after this function is executed. The data is identical on all processes after the operation. More... | |
Class Vector is a simple vector class in which the dimensions may be distributed across multiple processes. This class supports only the basic operations that are needed by the SVD library.
| CAROM::Vector::Vector | ( | int | dim, |
| bool | distributed | ||
| ) |
Constructor creating a Vector with uninitialized values.
| [in] | dim | When undistributed, the total dimension of the Vector. When distributed, the part of the total dimension of the Vector on this processor. |
| [in] | distributed | If true the dimensions of the Vector are spread over all processors. |
Definition at line 33 of file Vector.cpp.
| CAROM::Vector::Vector | ( | double * | vec, |
| int | dim, | ||
| bool | distributed, | ||
| bool | copy_data = true |
||
| ) |
Constructor in which the Vector is given its initial values.
| [in] | vec | The initial values of the Vector. |
| [in] | dim | When undistributed, the total dimension of the Vector. When distributed, the part of the total dimension of the Vector on this processor. |
| [in] | distributed | If true the dimensions of the Vector are spread over all processors. |
| [in] | copy_data | If true the vector allocates its own storage and copies the contents of vec into its own storage. Otherwise it uses vec as its storage. |
Definition at line 55 of file Vector.cpp.
| CAROM::Vector::Vector | ( | const Vector & | other | ) |
|
inline |
| void CAROM::Vector::distribute | ( | const int | local_dim | ) |
Distribute this vector among MPI processes, based on the specified local dimension. This becomes distributed after this function is executed.
| [in] | local_dim | dimension for local MPI rank. Its sum over all processes should be the same as the current dimension. |
Definition at line 460 of file Vector.cpp.
|
inline |
| void CAROM::Vector::gather | ( | ) |
Gather all the distributed elements among MPI processes. This becomes not distributed after this function is executed. The data is identical on all processes after the operation.
Definition at line 486 of file Vector.cpp.
| double CAROM::Vector::inner_product | ( | const Vector & | other | ) | const |
Inner product, reference form.
For distributed Vectors this is a parallel operation.
| [in] | other | The Vector to form the inner product with this. |
Definition at line 196 of file Vector.cpp.
|
inline |
|
inline |
| void CAROM::Vector::local_read | ( | const std::string & | base_file_name, |
| int | rank | ||
| ) |
read read a single rank of a distributed Vector from (a) HDF file(s).
| [in] | base_file_name | The base part of the file name. |
| [in] | rank | The rank to read from. |
Definition at line 412 of file Vector.cpp.
| double CAROM::Vector::localMin | ( | int | nmax = 0 | ) |
Compute the local minimum of this.
| [in] | nmax | If positive, use only the first nmax entries of this. |
Definition at line 445 of file Vector.cpp.
Subtracts other and this and returns the result.
| [in] | other | The other subtrahand. |
Subtracts other and this and fills result with the answer.
Result will be resized appropriately.
| [in] | other | The other subtrahend. |
| [out] | result | this - other |
Definition at line 291 of file Vector.cpp.
|
inline |
| void CAROM::Vector::mult | ( | double | factor, |
| Vector & | result | ||
| ) | const |
Multiplies this by the supplied constant and fills result with the answer.
| [in] | factor | Factor to multiply by. |
| [out] | result | factor*this |
Definition at line 309 of file Vector.cpp.
| double CAROM::Vector::norm | ( | ) | const |
Form the norm of this.
For a distributed Vector this is a parallel operation.
Definition at line 216 of file Vector.cpp.
| double CAROM::Vector::norm2 | ( | ) | const |
Form the squared norm of this.
For a distributed Vector this is a parallel operation.
Definition at line 223 of file Vector.cpp.
| double CAROM::Vector::normalize | ( | ) |
Normalizes the Vector and returns its norm.
For a distributed Vector this is a parallel operation.
Definition at line 230 of file Vector.cpp.
|
inline |
|
inline |
| Vector & CAROM::Vector::operator*= | ( | const double & | a | ) |
Scaling operator.
| [in] | a | The double precision number by which every Vector entry should be scaled. |
Definition at line 153 of file Vector.cpp.
Addition operator.
| [in] | rhs | The Vector to add to this. |
Definition at line 128 of file Vector.cpp.
Subtraction operator.
| [in] | rhs | The Vector to subtract from this. |
Definition at line 137 of file Vector.cpp.
| Vector & CAROM::Vector::operator= | ( | const double & | a | ) |
Equal operator.
| [in] | a | The double precision number to which every Vector entry should be set. |
Definition at line 146 of file Vector.cpp.
Assignment operator.
| [in] | rhs | The Vector to assign to this. |
Definition at line 117 of file Vector.cpp.
Adds other and this and returns the result.
| [in] | other | The other summand. |
Adds other and this and fills result with the answer.
Result will be resized appropriately.
| [in] | other | The other summand. |
| [out] | result | this + other |
Definition at line 240 of file Vector.cpp.
Adds factor*other and this and returns the result.
| [in] | factor | Multiplicative factor applied to other. |
| [in] | other | The other summand. |
Adds factor*other and this and fills result with the answer.
Result will be resized appropriately.
| [in] | factor | Multiplicative factor applied to other. |
| [in] | other | The other summand. |
| [out] | result | this + factor*other |
Definition at line 258 of file Vector.cpp.
| void CAROM::Vector::plusEqAx | ( | double | factor, |
| const Vector & | other | ||
| ) |
Adds factor*other to this.
| [in] | factor | Multiplicative factor applied to other. |
| [in] | other | The other summand. |
Definition at line 277 of file Vector.cpp.
| void CAROM::Vector::print | ( | const char * | prefix | ) | const |
print Vector into (a) ascii file(s).
| [in] | prefix | The name of the prefix of the file name. |
Definition at line 355 of file Vector.cpp.
| void CAROM::Vector::read | ( | const std::string & | base_file_name | ) |
read Vector from (a) HDF file(s).
| [in] | base_file_name | The base part of the file name. |
Definition at line 371 of file Vector.cpp.
|
inline |
| Vector & CAROM::Vector::transform | ( | std::function< void(const int size, double *origVector, double *resultVector)> | transformer | ) |
Transform the vector using a supplied function.
| [in] | transformer | A transformer function which takes in as input a size and transforms the origVector and stores the result in resultVector. |
Definition at line 175 of file Vector.cpp.
| Vector & CAROM::Vector::transform | ( | std::function< void(const int size, double *vector)> | transformer | ) |
Transform the vector using a supplied function.
| [in] | transformer | A transformer function which takes in as input a size and a vector. |
Definition at line 160 of file Vector.cpp.
| void CAROM::Vector::transform | ( | Vector & | result, |
| std::function< void(const int size, double *origVector, double *resultVector)> | transformer | ||
| ) | const |
Transform a vector using a supplied function and store the results in another vector.
| [out] | result | A vector which will store the transformed result. |
| [in] | transformer | A transformer function which takes in as input a size and transforms the origVector and stores the result in resultVector. |
Definition at line 185 of file Vector.cpp.
| void CAROM::Vector::transform | ( | Vector & | result, |
| std::function< void(const int size, double *vector)> | transformer | ||
| ) | const |
Transform a vector using a supplied function and store the results in another vector.
| [out] | result | A vector which will store the transformed result. |
| [in] | transformer | A transformer function which takes in as input a size and transforms the vector. |
Definition at line 167 of file Vector.cpp.
| void CAROM::Vector::transform | ( | Vector *& | result, |
| std::function< void(const int size, double *vector)> | transformer | ||
| ) | const |
Transform a vector using a supplied function and store the results in another vector.
| [out] | result | A vector which will store the transformed result. |
| [in] | transformer | A transformer function which takes in as input a size and transforms the vector. |
| void CAROM::Vector::write | ( | const std::string & | base_file_name | ) |
write Vector into (a) HDF file(s).
| [in] | base_file_name | The base part of the file name. |
Definition at line 325 of file Vector.cpp.