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 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< Vectorplus (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< VectorplusAx (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< Vectorminus (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< 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...
 
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...
 

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 30 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 33 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 55 of file Vector.cpp.

◆ Vector() [3/3]

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

Copy constructor.

Parameters
[in]otherThe Vector to copy.

Definition at line 88 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 251 of file Vector.h.

◆ distribute()

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.

Precondition
!distributed()
d_owns_data
Parameters
[in]local_dimdimension 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.

◆ distributed()

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

Returns true if the Vector is distributed.

Returns
True if the Vector is distributed.

Definition at line 240 of file Vector.h.

◆ gather()

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.

Precondition
distributed()
d_owns_data

Definition at line 486 of file Vector.cpp.

◆ inner_product()

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 196 of file Vector.cpp.

◆ 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 486 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 468 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 412 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 445 of file Vector.cpp.

◆ minus() [1/2]

std::unique_ptr<Vector> CAROM::Vector::minus ( const Vector other) const
inline

Subtracts other and this and returns the result.

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

Definition at line 402 of file Vector.h.

◆ minus() [2/2]

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 291 of file Vector.cpp.

◆ mult() [1/2]

std::unique_ptr<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 436 of file Vector.h.

◆ mult() [2/2]

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 309 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 216 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 223 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 230 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 517 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 501 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 153 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 128 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 137 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 146 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 117 of file Vector.cpp.

◆ plus() [1/2]

std::unique_ptr<Vector> CAROM::Vector::plus ( const Vector other) const
inline

Adds other and this and returns the result.

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

Definition at line 313 of file Vector.h.

◆ plus() [2/2]

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 240 of file Vector.cpp.

◆ plusAx() [1/2]

std::unique_ptr<Vector> CAROM::Vector::plusAx ( double  factor,
const Vector other 
) const
inline

Adds factor*other and this and returns the result.

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 349 of file Vector.h.

◆ plusAx() [2/2]

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 258 of file Vector.cpp.

◆ plusEqAx()

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

Adds factor*other to this.

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

Definition at line 277 of file Vector.cpp.

◆ 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 355 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 371 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 217 of file Vector.h.

◆ transform() [1/5]

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 175 of file Vector.cpp.

◆ transform() [2/5]

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 160 of file Vector.cpp.

◆ transform() [3/5]

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 185 of file Vector.cpp.

◆ transform() [4/5]

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 167 of file Vector.cpp.

◆ transform() [5/5]

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.

◆ 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 325 of file Vector.cpp.


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