OpenStudio:utilities
Loading...
Searching...
No Matches
openstudio::OSQuantityVector Class Reference

#include <OSQuantityVector.hpp>

Public Member Functions

Constructors and Destructors
 OSQuantityVector (const Unit &units=Unit())
 
 OSQuantityVector (const Unit &units, unsigned n, double value=0.0)
 
 OSQuantityVector (const Unit &units, const std::vector< double > &values)
 
 OSQuantityVector (const std::vector< Quantity > &values)
 
 OSQuantityVector (const OSQuantityVector &other)
 
OSQuantityVectoroperator= (const OSQuantityVector &other)
 
Getters and Queries
Unit units () const
 Returns a clone of this object's units.
 
UnitSystem system () const
 
Scale scale () const
 
std::vector< Quantityquantities () const
 Creates a vector of separate quantities.
 
std::vector< double > values () const
 Returns the underlying values of this OSQuantityVector.
 
Quantity getQuantity (unsigned i) const
 
bool empty () const
 Return value is equivalent to values().empty().
 
unsigned size () const
 Return value is equivalent to values().size().
 
Setters
bool setScale (int scaleExponent)
 Sets the scale to the one registered in ScaleFactory for 10^scaleExponent.
 
bool setScale (const std::string &scaleAbbreviation)
 Sets the scale to the one registered in ScaleFactory under scaleAbbreviation.
 
void push_back (Quantity q)
 Pushes q onto this vector if possible, otherwise throws.
 
void pop_back ()
 Removes the last value in this OSQuantityVector.
 
void resize (unsigned n, double value=0.0)
 Changes the size of this OSQuantityVector to n, using value to fill in any newly created elements as necessary.
 
void clear ()
 Empties all values out of this OSQuantityVector.
 
Temperature Methods

Quantities that have units of temperature need several extra functions to distinguish between absolute and relative measures.

bool isTemperature () const
 Returns true if units().optionalCast<TemperatureUnit>().
 
bool isAbsolute () const
 Throws if !units().optionalCast<TemperatureUnit>().
 
bool isRelative () const
 Throws if !units().optionalCast<TemperatureUnit>().
 
void setAsAbsolute ()
 Set temperature as absolute.
 
void setAsRelative ()
 Set temperature as relative.
 
IP Methods
void lbmToLbf ()
 Conversions for pounds mass to pounds force.
 
void lbfToLbm ()
 Conversions for pounds mass to pounds force.
 

Related Symbols

(Note that these are not member symbols.)

OSQuantityVector convert (const OSQuantityVector &original, const Unit &targetUnits)
 Non-member function that uses just two calls to QuantityConverter to convert an entire OSQuantityVector.
 
OSQuantityVector convert (const OSQuantityVector &original, UnitSystem sys)
 Non-member function that uses just two calls to QuantityConverter to convert an entire OSQuantityVector.
 
Quantity dot (OSQuantityVector lVector, const OSQuantityVector &rVector)
 
bool operator!= (const OSQuantityVector &lVector, const OSQuantityVector &rVector)
 
OSQuantityVector operator* (const OSQuantityVector &lVector, const Quantity &rQuantity)
 
OSQuantityVector operator* (const OSQuantityVector &lVector, double d)
 
OSQuantityVector operator* (const Quantity &lQuantity, const OSQuantityVector &rVector)
 
OSQuantityVector operator* (double d, const OSQuantityVector &rVector)
 
OSQuantityVector operator+ (const OSQuantityVector &lVector, const OSQuantityVector &rVector)
 
OSQuantityVector operator+ (const OSQuantityVector &lVector, const Quantity &rQuantity)
 
OSQuantityVector operator+ (const Quantity &lQuantity, const OSQuantityVector &rVector)
 
OSQuantityVector operator- (const OSQuantityVector &lVector, const OSQuantityVector &rVector)
 
OSQuantityVector operator- (const OSQuantityVector &lVector, const Quantity &rQuantity)
 
OSQuantityVector operator- (const OSQuantityVector &rVector)
 
OSQuantityVector operator- (const Quantity &lQuantity, const OSQuantityVector &rVector)
 
OSQuantityVector operator/ (const OSQuantityVector &lVector, const Quantity &rQuantity)
 
OSQuantityVector operator/ (const OSQuantityVector &lVector, double d)
 
bool operator== (const OSQuantityVector &lVector, const OSQuantityVector &rVector)
 

Mathematical Operators

OSQuantityVectoroperator+= (OSQuantityVector rVector)
 Adds rVector to this vector, if possible.
 
OSQuantityVectoroperator+= (Quantity rQuantity)
 Adds rQuantity to this vector element-wise, if possible.
 
OSQuantityVectoroperator-= (OSQuantityVector rVector)
 Subtracts rVector from this vector, if possible.
 
OSQuantityVectoroperator-= (Quantity rQuantity)
 Subtracts rQuantity from this vector element-wise, if possible.
 
OSQuantityVectoroperator*= (const Quantity &rQuantity)
 Multiplies all values of this vector by rQuantity.
 
OSQuantityVectoroperator/= (const Quantity &rQuantity)
 Divides all values of this vector by rQuantity.
 
OSQuantityVectoroperator*= (double d)
 Multiplies all values of this vector by d.
 
OSQuantityVectoroperator/= (double d)
 Divides all values of this vector by d.
 

Detailed Description

Represents a vector of quantities all with the same units.

Provides performance improvements over directly operating on std::vector<Quantity>. The constructors and assignment operator ensure that this class behaves as "plain old data" (POD) by cloning any units information (to avoid multiple objects pointing to the exact same unit data).

Constructor & Destructor Documentation

◆ OSQuantityVector() [1/5]

openstudio::OSQuantityVector::OSQuantityVector ( const Unit & units = Unit())
explicit

◆ OSQuantityVector() [2/5]

openstudio::OSQuantityVector::OSQuantityVector ( const Unit & units,
unsigned n,
double value = 0.0 )

◆ OSQuantityVector() [3/5]

openstudio::OSQuantityVector::OSQuantityVector ( const Unit & units,
const std::vector< double > & values )

◆ OSQuantityVector() [4/5]

openstudio::OSQuantityVector::OSQuantityVector ( const std::vector< Quantity > & values)
explicit

◆ OSQuantityVector() [5/5]

openstudio::OSQuantityVector::OSQuantityVector ( const OSQuantityVector & other)

Member Function Documentation

◆ clear()

void openstudio::OSQuantityVector::clear ( )

Empties all values out of this OSQuantityVector.

Postcondition
{size() == 0u}
{empty()}

◆ empty()

bool openstudio::OSQuantityVector::empty ( ) const

Return value is equivalent to values().empty().

◆ getQuantity()

Quantity openstudio::OSQuantityVector::getQuantity ( unsigned i) const

◆ isAbsolute()

bool openstudio::OSQuantityVector::isAbsolute ( ) const

Throws if !units().optionalCast<TemperatureUnit>().

◆ isRelative()

bool openstudio::OSQuantityVector::isRelative ( ) const

Throws if !units().optionalCast<TemperatureUnit>().

◆ isTemperature()

bool openstudio::OSQuantityVector::isTemperature ( ) const

Returns true if units().optionalCast<TemperatureUnit>().

◆ lbfToLbm()

void openstudio::OSQuantityVector::lbfToLbm ( )

Conversions for pounds mass to pounds force.

These functions will throw if !units().optionalCast<IPUnit>().

Postcondition
{units().baseUnitExponent("lbf") == 0}

◆ lbmToLbf()

void openstudio::OSQuantityVector::lbmToLbf ( )

Conversions for pounds mass to pounds force.

These functions will throw if !units().optionalCast<IPUnit>().

Postcondition
{units().baseUnitExponent("lbm") == 0}

◆ operator*=() [1/2]

OSQuantityVector & openstudio::OSQuantityVector::operator*= ( const Quantity & rQuantity)

Multiplies all values of this vector by rQuantity.

◆ operator*=() [2/2]

OSQuantityVector & openstudio::OSQuantityVector::operator*= ( double d)

Multiplies all values of this vector by d.

◆ operator+=() [1/2]

OSQuantityVector & openstudio::OSQuantityVector::operator+= ( OSQuantityVector rVector)

Adds rVector to this vector, if possible.

Throws if vectors are of different size or units are different.

◆ operator+=() [2/2]

OSQuantityVector & openstudio::OSQuantityVector::operator+= ( Quantity rQuantity)

Adds rQuantity to this vector element-wise, if possible.

Throws if units are different.

◆ operator-=() [1/2]

OSQuantityVector & openstudio::OSQuantityVector::operator-= ( OSQuantityVector rVector)

Subtracts rVector from this vector, if possible.

Throws if vectors are of different size or units are different.

◆ operator-=() [2/2]

OSQuantityVector & openstudio::OSQuantityVector::operator-= ( Quantity rQuantity)

Subtracts rQuantity from this vector element-wise, if possible.

Throws if units are different.

◆ operator/=() [1/2]

OSQuantityVector & openstudio::OSQuantityVector::operator/= ( const Quantity & rQuantity)

Divides all values of this vector by rQuantity.

◆ operator/=() [2/2]

OSQuantityVector & openstudio::OSQuantityVector::operator/= ( double d)

Divides all values of this vector by d.

◆ operator=()

OSQuantityVector & openstudio::OSQuantityVector::operator= ( const OSQuantityVector & other)

◆ pop_back()

void openstudio::OSQuantityVector::pop_back ( )

Removes the last value in this OSQuantityVector.

◆ push_back()

void openstudio::OSQuantityVector::push_back ( Quantity q)

Pushes q onto this vector if possible, otherwise throws.

◆ quantities()

std::vector< Quantity > openstudio::OSQuantityVector::quantities ( ) const

Creates a vector of separate quantities.

Note that it is better to do mathematical operations and convert units using OSOptionalQuantity. Only use this method once the values and units of this OSOptionalQuantity are fixed.

◆ resize()

void openstudio::OSQuantityVector::resize ( unsigned n,
double value = 0.0 )

Changes the size of this OSQuantityVector to n, using value to fill in any newly created elements as necessary.

Postcondition
{size() == n}

◆ scale()

Scale openstudio::OSQuantityVector::scale ( ) const

◆ setAsAbsolute()

void openstudio::OSQuantityVector::setAsAbsolute ( )

Set temperature as absolute.

Throws if !units().optionalCast<TemperatureUnit>().

Postcondition
{isAbsolute()}

◆ setAsRelative()

void openstudio::OSQuantityVector::setAsRelative ( )

Set temperature as relative.

Throws if !units().optionalCast<TemperatureUnit>().

Postcondition
{isRelative()}

◆ setScale() [1/2]

bool openstudio::OSQuantityVector::setScale ( const std::string & scaleAbbreviation)

Sets the scale to the one registered in ScaleFactory under scaleAbbreviation.

◆ setScale() [2/2]

bool openstudio::OSQuantityVector::setScale ( int scaleExponent)

Sets the scale to the one registered in ScaleFactory for 10^scaleExponent.

◆ size()

unsigned openstudio::OSQuantityVector::size ( ) const

Return value is equivalent to values().size().

◆ system()

UnitSystem openstudio::OSQuantityVector::system ( ) const

◆ units()

Unit openstudio::OSQuantityVector::units ( ) const

Returns a clone of this object's units.

◆ values()

std::vector< double > openstudio::OSQuantityVector::values ( ) const

Returns the underlying values of this OSQuantityVector.

Friends And Related Symbol Documentation

◆ convert() [1/2]

OSQuantityVector convert ( const OSQuantityVector & original,
const Unit & targetUnits )
related

Non-member function that uses just two calls to QuantityConverter to convert an entire OSQuantityVector.

◆ convert() [2/2]

OSQuantityVector convert ( const OSQuantityVector & original,
UnitSystem sys )
related

Non-member function that uses just two calls to QuantityConverter to convert an entire OSQuantityVector.

◆ dot()

Quantity dot ( OSQuantityVector lVector,
const OSQuantityVector & rVector )
related

◆ operator!=()

bool operator!= ( const OSQuantityVector & lVector,
const OSQuantityVector & rVector )
related

◆ operator*() [1/4]

OSQuantityVector operator* ( const OSQuantityVector & lVector,
const Quantity & rQuantity )
related

◆ operator*() [2/4]

OSQuantityVector operator* ( const OSQuantityVector & lVector,
double d )
related

◆ operator*() [3/4]

OSQuantityVector operator* ( const Quantity & lQuantity,
const OSQuantityVector & rVector )
related

◆ operator*() [4/4]

OSQuantityVector operator* ( double d,
const OSQuantityVector & rVector )
related

◆ operator+() [1/3]

OSQuantityVector operator+ ( const OSQuantityVector & lVector,
const OSQuantityVector & rVector )
related

◆ operator+() [2/3]

OSQuantityVector operator+ ( const OSQuantityVector & lVector,
const Quantity & rQuantity )
related

◆ operator+() [3/3]

OSQuantityVector operator+ ( const Quantity & lQuantity,
const OSQuantityVector & rVector )
related

◆ operator-() [1/4]

OSQuantityVector operator- ( const OSQuantityVector & lVector,
const OSQuantityVector & rVector )
related

◆ operator-() [2/4]

OSQuantityVector operator- ( const OSQuantityVector & lVector,
const Quantity & rQuantity )
related

◆ operator-() [3/4]

OSQuantityVector operator- ( const OSQuantityVector & rVector)
related

◆ operator-() [4/4]

OSQuantityVector operator- ( const Quantity & lQuantity,
const OSQuantityVector & rVector )
related

◆ operator/() [1/2]

OSQuantityVector operator/ ( const OSQuantityVector & lVector,
const Quantity & rQuantity )
related

◆ operator/() [2/2]

OSQuantityVector operator/ ( const OSQuantityVector & lVector,
double d )
related

◆ operator==()

bool operator== ( const OSQuantityVector & lVector,
const OSQuantityVector & rVector )
related