|
World Ocean Simulation System (WOSS) library
|
Complex attenuated pressure class. More...
#include <pressure-definitions.h>

Public Member Functions | |
| Pressure (double real=0.0, double imag=0.0) | |
| Pressure (const std::complex< double > &complex_press) | |
| Pressure (const TimeArr &time_arr) | |
| Pressure (const Pressure ©)=default | |
| Pressure (Pressure &&tmp)=default | |
| virtual | ~Pressure ()=default |
| virtual std::unique_ptr< Pressure > | create (double real=0.0, double imag=0.0) const |
| virtual std::unique_ptr< Pressure > | create (const std::complex< double > &complex_press) const |
| virtual std::unique_ptr< Pressure > | create (const TimeArr &time_arr) const |
| virtual std::unique_ptr< Pressure > | clone () const |
| virtual std::unique_ptr< Pressure[]> | createArray (unsigned int array_size) const |
| operator std::complex< double > () const | |
| void | clear () |
| double | real () const |
| double | imag () const |
| double | abs () const |
| double | phase () const |
| Pressure | sqrt () const |
| virtual bool | isValid () const |
| double | getTxLossDb () const |
| virtual bool | checkAttenuation (double distance, double frequency) |
| Pressure & | operator= (const Pressure ©)=default |
| Pressure & | operator= (Pressure &&tmp)=default |
Static Public Member Functions | |
| static constexpr std::complex< double > | createNotValid () |
| static constexpr double | getTxLossDb (const std::complex< double > &val) |
| static void | setDebug (bool flag) |
Protected Member Functions | |
| virtual double | getAttenuation (double dist, double freq) const |
| constexpr double | getThorpAtt (double frequency) const |
Protected Attributes | |
| std::complex< double > | complex_pressure |
Static Protected Attributes | |
| static bool | debug = false |
Friends | |
| const Pressure | operator+ (const Pressure &left, const Pressure &right) |
| const Pressure | operator- (const Pressure &left, const Pressure &right) |
| const Pressure | operator/ (const Pressure &left, const Pressure &right) |
| const Pressure | operator* (const Pressure &left, const Pressure &right) |
| Pressure & | operator+= (Pressure &left, const Pressure &right) |
| Pressure & | operator-= (Pressure &left, const Pressure &right) |
| Pressure & | operator/= (Pressure &left, const Pressure &right) |
| Pressure & | operator*= (Pressure &left, const Pressure &right) |
| bool | operator== (const Pressure &left, const Pressure &right) |
| bool | operator!= (const Pressure &left, const Pressure &right) |
| std::ostream & | operator<< (std::ostream &os, const Pressure &instance) |
Complex attenuated pressure class.
The Pressure class stores a complex<double> acoustic pressure value for attenuation purposes. Pressure values are adimensional: complex pressure represented has to be considered in conjunction with transmitted pressure. Pressure also provides full arithmetic capability and a attenuation coherency check
| Pressure::Pressure | ( | double | real = 0.0, |
| double | imag = 0.0 |
||
| ) |
Pressure constructor
| real | real part |
| imag | imaginary part |
| Pressure::Pressure | ( | const std::complex< double > & | complex_press | ) |
Pressure constructor
| complex_press | complex<double> value |
|
explicit |
Constructs a Pressure from a TimeArr
| time_arr | valid TimeArr const reference |
References complex_pressure, createNotValid(), and woss::TimeArr::isValid().

|
default |
|
default |
|
virtualdefault |
|
inline |
Gets the absolute value
References complex_pressure.
Referenced by getTxLossDb().
|
virtual |
Checks if the attuenuation provided by the complex pressure is truly an attenuation, e.g. if abs < 1. If not, replace the pressure with the attenuation provided by Thorp absorption process at given frequency along the given distance
| distance | distance value in meters |
| frequency | frequency value in hertz |
References complex_pressure, debug, getAttenuation(), and phase().
Referenced by woss::TimeArr::checkPressureAttenuation().

|
inline |
References complex_pressure.
|
inlinevirtual |
Pressure virtual factory method
|
inlinevirtual |
|
inlinevirtual |
|
inlinevirtual |
Pressure virtual factory method
| array_size | size of array |
|
inlinestaticconstexpr |
Creates an instance not valid
Referenced by woss::TimeArr::createNotValid(), woss::WossManagerResDb::dbGetPressure(), woss::WossDbManager::getPressure(), woss::ResPressureTxtDb::getValue(), woss::WossManager::getWossPressure(), woss::TimeArr::isValid(), Pressure(), woss::ArrAscResReader::readAvgPressure(), woss::ArrBinResReader::readAvgPressure(), woss::ShdResReader::readAvgPressure(), woss::ResPressureTxtDb::readMap(), woss::ShdResReader::readPressure(), woss::ShdResReader::readTimeArr(), and woss::TimeArr::TimeArr().
|
protectedvirtual |
Gets the linear acoustic attenuation incurred at given frequency along the given distance
| dist | distance in meters |
| freq | frequency in hertz |
References getThorpAtt().
Referenced by checkAttenuation().

|
constexprprotected |
Gets the acoustic attenuation (in db re uPa / m ) given by Thorp absorption process incurred at given frequency
| freq | frequency in hertz |
Referenced by getAttenuation().
|
inline |
Returns the Transmission Loss measured in db
References abs(), complex_pressure, and isValid().
Referenced by WossMPropagation::computeGain(), woss::ArrAscResReader::getArrAscFile(), woss::ArrBinResReader::getArrBinFile(), woss::ShdResReader::getShdFile(), woss::TimeArr::lowerBoundTxLoss(), and WossChannelModule::schedulePacketCopies().

|
inlinestaticconstexpr |
Returns the Transmission Loss measured in db
|
inline |
Gets the imaginary part
References complex_pressure.
Referenced by create().
|
inlinevirtual |
Checks the validity of complex pressure provided
References complex_pressure.
Referenced by getTxLossDb(), woss::TimeArr::insertValue(), woss::TimeArr::sumValue(), and woss::TimeArr::TimeArr().
|
inline |
complex<double> operator for implicit casting
References complex_pressure.
|
inline |
Gets the phase (arg) value
References complex_pressure.
Referenced by checkAttenuation().
|
inline |
|
inlinestatic |
|
inline |
Gets the square root of a complex number
References complex_pressure.
Inequality operator
| left | left operand const reference |
| right | right operand const reference |
Multiplication operator
| left | left operand const reference |
| right | right operand const reference |
Compound assignment multiplication operator
| left | left operand reference |
| right | right operand const reference |
Sum operator
| left | left operand const reference |
| right | right operand const reference |
Compound assignment sum operator
| left | left operand reference |
| right | right operand const reference |
Subtraction operator
| left | left operand const reference |
| right | right operand const reference |
Compound assignment subtraction operator
| left | left operand reference |
| right | right operand const reference |
Division operator
| left | left operand const reference |
| right | right operand const reference |
Compound assignment division operator
| left | left operand reference |
| right | right operand const reference |
|
friend |
<< operator
| os | left operand ostream reference |
| instance | right operand const Pressure reference |
Equality operator
| left | left operand const reference |
| right | right operand const reference |
|
protected |
Complex acoustic pressure
Referenced by abs(), checkAttenuation(), clear(), getTxLossDb(), imag(), isValid(), operator std::complex< double >(), phase(), Pressure(), real(), and sqrt().
|
staticprotected |
Debug flag
Referenced by checkAttenuation(), and setDebug().