libROM  v1.0
Data-driven physical simulation library
Public Member Functions | List of all members
CAROM::Vector Class Reference

#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.
 
Vectoroperator= (const Vector &rhs)
 Assignment operator. More...
 
Vectoroperator+= (const Vector &rhs)
 Addition operator. More...
 
Vectoroperator-= (const Vector &rhs)
 Subtraction operator. More...
 
Vectoroperator= (const double &a)
 Equal operator. More...
 
Vectoroperator*= (const double &a)
 Scaling operator. More...
 
Vectortransform (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...
 
Vectortransform (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 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 inner_product (const Vector *other) const
 Inner product, pointer version. 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...
 
Vectorplus (const Vector &other) const
 Adds other and this and returns the result, reference version. More...
 
Vectorplus (const Vector *other) const
 Adds other and this and returns the result, pointer version. More...
 
void plus (const Vector &other, Vector *&result) const
 Adds other and this and fills result with the answer. More...
 
void plus (const Vector &other, Vector &result) const
 Adds other and this and fills result with the answer. More...
 
VectorplusAx (double factor, const Vector &other)
 Adds factor*other and this and returns the result, reference version. More...
 
VectorplusAx (double factor, const Vector *other)
 Adds factor*other and this and returns the result, pointer version. More...
 
void plusAx (double factor, const Vector &other, Vector *&result) const
 Adds factor*other and this and fills result with the answer. 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, reference version. More...
 
void plusEqAx (double factor, const Vector *other)
 Adds factor*other to this, pointer version. More...
 
Vectorminus (const Vector &other) const
 Subtracts other and this and returns the result, reference version. More...
 
Vectorminus (const Vector *other) const
 Subtracts other and this and returns the result, pointer version. More...
 
void minus (const Vector &other, Vector *&result) const
 Subtracts other and this and fills result with the answer. More...
 
void minus (const Vector &other, Vector &result) const
 Subtracts other and this and fills result with the answer. More...
 
Vectormult (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...
 
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...
 

Detailed Description

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.

Definition at line 29 of file Vector.h.

Constructor & Destructor Documentation

◆ Vector() [1/3]

CAROM::Vector::Vector ( int  dim,
bool  distributed 
)

Constructor creating a Vector with uninitialized values.

Precondition
dim > 0
Parameters
[in]dimWhen undistributed, the total dimension of the Vector. When distributed, the part of the total dimension of the Vector on this processor.
[in]distributedIf true the dimensions of the Vector are spread over all processors.

Definition at line 32 of file Vector.cpp.

◆ Vector() [2/3]

CAROM::Vector::Vector ( double *  vec,
int  dim,
bool  distributed,
bool  copy_data = true 
)

Constructor in which the Vector is given its initial values.

Precondition
vec != 0
dim > 0
Parameters
[in]vecThe initial values of the Vector.
[in]dimWhen undistributed, the total dimension of the Vector. When distributed, the part of the total dimension of the Vector on this processor.
[in]distributedIf true the dimensions of the Vector are spread over all processors.
[in]copy_dataIf 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 52 of file Vector.cpp.

◆ Vector() [3/3]

CAROM::Vector::Vector ( const Vector other)

Copy constructor.

Parameters
[in]otherThe Vector to copy.

Definition at line 83 of file Vector.cpp.

Member Function Documentation

◆ dim()

int CAROM::Vector::dim ( ) const
inline

Returns the dimension of the Vector on this processor.

Returns
The part of the Vector's dimension on this processor.

Definition at line 266 of file Vector.h.

◆ distributed()

bool CAROM::Vector::distributed ( ) const
inline

Returns true if the Vector is distributed.

Returns
True if the Vector is distributed.

Definition at line 255 of file Vector.h.

◆ inner_product() [1/2]

double CAROM::Vector::inner_product ( const Vector other) const

Inner product, reference form.

For distributed Vectors this is a parallel operation.

Precondition
dim() == other.dim()
distributed() == other.distributed()
Parameters
[in]otherThe Vector to form the inner product with this.
Returns
The inner product of this and other.

Definition at line 222 of file Vector.cpp.

◆ inner_product() [2/2]

double CAROM::Vector::inner_product ( const Vector other) const
inline

Inner product, pointer version.

For distributed Vectors this is a parallel operation.

Precondition
other != 0
dim() == other->dim()
distributed() == other->distributed()
Parameters
[in]otherThe Vector to form the inner product with this.
Returns
The inner product of this and other.

Definition at line 301 of file Vector.h.

◆ item() [1/2]

double& CAROM::Vector::item ( int  i)
inline

Non-const Vector member access.

Allows constructs of the form vec[i] = val;

Precondition
(0 <= i) && (i < dim())
Parameters
[in]iThe component of the Vector on this processor requested.
Returns
The requested component of the Vector on this processor.

Definition at line 675 of file Vector.h.

◆ item() [2/2]

const double& CAROM::Vector::item ( int  i) const
inline

Const Vector member access.

Precondition
(0 <= i) && (i < dim())
Parameters
[in]iThe component of the Vector on this processor requested.
Returns
The requested component of the Vector on this processor.

Definition at line 656 of file Vector.h.

◆ local_read()

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).

Parameters
[in]base_file_nameThe base part of the file name.
[in]rankThe rank to read from.

Definition at line 533 of file Vector.cpp.

◆ localMin()

double CAROM::Vector::localMin ( int  nmax = 0)

Compute the local minimum of this.

Parameters
[in]nmaxIf positive, use only the first nmax entries of this.
Returns
The local minimum of this.

Definition at line 566 of file Vector.cpp.

◆ minus() [1/4]

Vector* CAROM::Vector::minus ( const Vector other) const
inline

Subtracts other and this and returns the result, reference version.

Precondition
distributed() == other.distributed()
dim() == other.dim()
Parameters
[in]otherThe other subtrahand.
Returns
this - other

Definition at line 538 of file Vector.h.

◆ minus() [2/4]

void CAROM::Vector::minus ( const Vector other,
Vector result 
) const

Subtracts other and this and fills result with the answer.

Result will be resized appropriately.

Precondition
result.distributed() == distributed()
distributed() == other.distributed()
dim() == other.dim()
Parameters
[in]otherThe other subtrahend.
[out]resultthis - other

Definition at line 390 of file Vector.cpp.

◆ minus() [3/4]

void CAROM::Vector::minus ( const Vector other,
Vector *&  result 
) const

Subtracts other and this and fills result with the answer.

Result will be allocated if unallocated or resized appropriately if already allocated.

Precondition
result == 0 || result->distributed() == distributed()
distributed() == other.distributed()
dim() == other.dim()
Parameters
[in]otherThe other subtrahend.
[out]resultthis - other

Definition at line 366 of file Vector.cpp.

◆ minus() [4/4]

Vector* CAROM::Vector::minus ( const Vector other) const
inline

Subtracts other and this and returns the result, pointer version.

Precondition
other != 0
distributed() == other->distributed()
dim() == other->dim()
Parameters
[in]otherThe other subtrahand.
Returns
this - other

Definition at line 559 of file Vector.h.

◆ mult() [1/3]

Vector* CAROM::Vector::mult ( double  factor) const
inline

Multiplies this by the supplied constant and returns the result.

Parameters
[in]factorFactor to multiply by.
Returns
factor*this

Definition at line 610 of file Vector.h.

◆ mult() [2/3]

void CAROM::Vector::mult ( double  factor,
Vector result 
) const

Multiplies this by the supplied constant and fills result with the answer.

Precondition
result.distributed() == distributed()
Parameters
[in]factorFactor to multiply by.
[out]resultfactor*this

Definition at line 430 of file Vector.cpp.

◆ mult() [3/3]

void CAROM::Vector::mult ( double  factor,
Vector *&  result 
) const

Multiplies this by the supplied constant and fills result with the answer.

Precondition
result == 0 || result->distributed() == distributed()
Parameters
[in]factorFactor to multiply by.
[out]resultfactor*this

Definition at line 408 of file Vector.cpp.

◆ norm()

double CAROM::Vector::norm ( ) const

Form the norm of this.

For a distributed Vector this is a parallel operation.

Returns
The norm of this.

Definition at line 242 of file Vector.cpp.

◆ norm2()

double CAROM::Vector::norm2 ( ) const

Form the squared norm of this.

For a distributed Vector this is a parallel operation.

Returns
The squared norm of this.

Definition at line 249 of file Vector.cpp.

◆ normalize()

double CAROM::Vector::normalize ( )

Normalizes the Vector and returns its norm.

For a distributed Vector this is a parallel operation.

Returns
The norm of this.

Definition at line 256 of file Vector.cpp.

◆ operator()() [1/2]

double& CAROM::Vector::operator() ( int  i)
inline

Non-const Vector member access.

Allows constructs of the form vec[i] = val;

Precondition
(0 <= i) && (i < dim())
Parameters
[in]iThe component of the Vector on this processor requested.
Returns
The requested component of the Vector on this processor.

Definition at line 707 of file Vector.h.

◆ operator()() [2/2]

const double& CAROM::Vector::operator() ( int  i) const
inline

Const Vector member access.

Precondition
(0 <= i) && (i < dim())
Parameters
[in]iThe component of the Vector on this processor requested.
Returns
The requested component of the Vector on this processor.

Definition at line 691 of file Vector.h.

◆ operator*=()

Vector & CAROM::Vector::operator*= ( const double &  a)

Scaling operator.

Parameters
[in]aThe double precision number by which every Vector entry should be scaled.
Returns
This with every element of the Vector scaled by a.

Definition at line 146 of file Vector.cpp.

◆ operator+=()

Vector & CAROM::Vector::operator+= ( const Vector rhs)

Addition operator.

Parameters
[in]rhsThe Vector to add to this.
Returns
This after rhs has been added to it.

Definition at line 121 of file Vector.cpp.

◆ operator-=()

Vector & CAROM::Vector::operator-= ( const Vector rhs)

Subtraction operator.

Parameters
[in]rhsThe Vector to subtract from this.
Returns
This after rhs has been subtracted from it.

Definition at line 130 of file Vector.cpp.

◆ operator=() [1/2]

Vector & CAROM::Vector::operator= ( const double &  a)

Equal operator.

Parameters
[in]aThe double precision number to which every Vector entry should be set.
Returns
This with every element of the Vector set to a.

Definition at line 139 of file Vector.cpp.

◆ operator=() [2/2]

Vector & CAROM::Vector::operator= ( const Vector rhs)

Assignment operator.

Parameters
[in]rhsThe Vector to assign to this.
Returns
This after rhs has been assigned to it.

Definition at line 110 of file Vector.cpp.

◆ plus() [1/4]

Vector* CAROM::Vector::plus ( const Vector other) const
inline

Adds other and this and returns the result, reference version.

Precondition
distributed() == other.distributed()
dim() == other.dim()
Parameters
[in]otherThe other summand.
Returns
this + other

Definition at line 349 of file Vector.h.

◆ plus() [2/4]

void CAROM::Vector::plus ( const Vector other,
Vector result 
) const

Adds other and this and fills result with the answer.

Result will be resized appropriately.

Precondition
result.distributed() == distributed()
distributed() == other.distributed()
dim() == other.dim()
Parameters
[in]otherThe other summand.
[out]resultthis + other

Definition at line 290 of file Vector.cpp.

◆ plus() [3/4]

void CAROM::Vector::plus ( const Vector other,
Vector *&  result 
) const

Adds other and this and fills result with the answer.

Result will be allocated if unallocated or resized appropriately if already allocated.

Precondition
result == 0 || result->distributed() == distributed()
distributed() == other.distributed()
dim() == other.dim()
Parameters
[in]otherThe other summand.
[out]resultthis + other

Definition at line 266 of file Vector.cpp.

◆ plus() [4/4]

Vector* CAROM::Vector::plus ( const Vector other) const
inline

Adds other and this and returns the result, pointer version.

Precondition
other != 0
distributed() == other->distributed()
dim() == other->dim()
Parameters
[in]otherThe other summand.
Returns
this + other

Definition at line 369 of file Vector.h.

◆ plusAx() [1/4]

Vector* CAROM::Vector::plusAx ( double  factor,
const Vector other 
)
inline

Adds factor*other and this and returns the result, reference version.

Precondition
distributed() == other.distributed()
dim() == other.dim()
Parameters
[in]factorMultiplicative factor applied to other.
[in]otherThe other summand.
Returns
this + factor*other

Definition at line 424 of file Vector.h.

◆ plusAx() [2/4]

void CAROM::Vector::plusAx ( double  factor,
const Vector other,
Vector result 
) const

Adds factor*other and this and fills result with the answer.

Result will be resized appropriately.

Precondition
result.distributed() == distributed()
distributed() == other.distributed()
dim() == other.dim()
Parameters
[in]factorMultiplicative factor applied to other.
[in]otherThe other summand.
[out]resultthis + factor*other

Definition at line 333 of file Vector.cpp.

◆ plusAx() [3/4]

void CAROM::Vector::plusAx ( double  factor,
const Vector other,
Vector *&  result 
) const

Adds factor*other and this and fills result with the answer.

Result will be allocated if unallocated or resized appropriately if already allocated.

Precondition
result == 0 || result->distributed() == distributed()
distributed() == other.distributed()
dim() == other.dim()
Parameters
[in]factorMultiplicative factor applied to other.
[in]otherThe other summand.
[out]resultthis + factor*other

Definition at line 308 of file Vector.cpp.

◆ plusAx() [4/4]

Vector* CAROM::Vector::plusAx ( double  factor,
const Vector other 
)
inline

Adds factor*other and this and returns the result, pointer version.

Precondition
distributed() == other->distributed()
dim() == other->dim()
Parameters
[in]factorMultiplicative factor applied to other.
[in]otherThe other summand.
Returns
this + factor*other

Definition at line 446 of file Vector.h.

◆ plusEqAx() [1/2]

void CAROM::Vector::plusEqAx ( double  factor,
const Vector other 
)

Adds factor*other to this, reference version.

Precondition
distributed() == other.distributed()
dim() == other.dim()
Parameters
[in]factorMultiplicative factor applied to other.
[in]otherThe other summand.

Definition at line 352 of file Vector.cpp.

◆ plusEqAx() [2/2]

void CAROM::Vector::plusEqAx ( double  factor,
const Vector other 
)
inline

Adds factor*other to this, pointer version.

Precondition
other != 0
distributed() == other->distributed()
dim() == other->dim()
Parameters
[in]factorMultiplicative factor applied to other.
[in]otherThe other summand.

Definition at line 518 of file Vector.h.

◆ print()

void CAROM::Vector::print ( const char *  prefix) const

print Vector into (a) ascii file(s).

Parameters
[in]prefixThe name of the prefix of the file name.

Definition at line 476 of file Vector.cpp.

◆ read()

void CAROM::Vector::read ( const std::string &  base_file_name)

read Vector from (a) HDF file(s).

Parameters
[in]base_file_nameThe base part of the file name.

Definition at line 492 of file Vector.cpp.

◆ setSize()

void CAROM::Vector::setSize ( int  dim)
inline

Sets the length of the vector and reallocates storage if needed. All values are initialized to zero.

Parameters
[in]dimWhen undistributed, the total dimension of the Vector. When distributed, the part of the total dimension of the Vector on this processor.

Definition at line 231 of file Vector.h.

◆ transform() [1/6]

Vector & CAROM::Vector::transform ( std::function< void(const int size, double *origVector, double *resultVector)>  transformer)

Transform the vector using a supplied function.

Parameters
[in]transformerA transformer function which takes in as input a size and transforms the origVector and stores the result in resultVector.
Returns
The newly transformed vector.

Definition at line 183 of file Vector.cpp.

◆ transform() [2/6]

Vector & CAROM::Vector::transform ( std::function< void(const int size, double *vector)>  transformer)

Transform the vector using a supplied function.

Parameters
[in]transformerA transformer function which takes in as input a size and a vector.
Returns
The newly transformed vector.

Definition at line 153 of file Vector.cpp.

◆ transform() [3/6]

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.

Parameters
[out]resultA vector which will store the transformed result.
[in]transformerA transformer function which takes in as input a size and transforms the origVector and stores the result in resultVector.

Definition at line 193 of file Vector.cpp.

◆ transform() [4/6]

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.

Parameters
[out]resultA vector which will store the transformed result.
[in]transformerA transformer function which takes in as input a size and transforms the vector.

Definition at line 160 of file Vector.cpp.

◆ transform() [5/6]

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.

Parameters
[out]resultA vector which will store the transformed result.
[in]transformerA transformer function which takes in as input a size and transforms the origVector and stores the result in resultVector.

Definition at line 204 of file Vector.cpp.

◆ transform() [6/6]

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.

Parameters
[out]resultA vector which will store the transformed result.
[in]transformerA transformer function which takes in as input a size and transforms the vector.

Definition at line 168 of file Vector.cpp.

◆ write()

void CAROM::Vector::write ( const std::string &  base_file_name)

write Vector into (a) HDF file(s).

Parameters
[in]base_file_nameThe base part of the file name.

Definition at line 446 of file Vector.cpp.


The documentation for this class was generated from the following files: