World Ocean Simulation System (WOSS) library
woss::Pressure Class Reference

Complex attenuated pressure class. More...

#include <pressure-definitions.h>

Collaboration diagram for woss::Pressure:
Collaboration graph

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 &copy)=default
 Pressure (Pressure &&tmp)=default
virtual ~Pressure ()=default
virtual std::unique_ptr< Pressurecreate (double real=0.0, double imag=0.0) const
virtual std::unique_ptr< Pressurecreate (const std::complex< double > &complex_press) const
virtual std::unique_ptr< Pressurecreate (const TimeArr &time_arr) const
virtual std::unique_ptr< Pressureclone () 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)
Pressureoperator= (const Pressure &copy)=default
Pressureoperator= (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)
Pressureoperator+= (Pressure &left, const Pressure &right)
Pressureoperator-= (Pressure &left, const Pressure &right)
Pressureoperator/= (Pressure &left, const Pressure &right)
Pressureoperator*= (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)

Detailed Description

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

Constructor & Destructor Documentation

◆ Pressure() [1/5]

Pressure::Pressure ( double real = 0.0,
double imag = 0.0 )

Pressure constructor

Parameters
realreal part
imagimaginary part

References complex_pressure, imag(), and real().

Referenced by operator!=, operator*, operator*=, operator+, operator+=, operator-, operator-=, operator/, operator/=, operator<<, operator=(), operator=(), operator==, Pressure(), Pressure(), and sqrt().

Here is the call graph for this function:

◆ Pressure() [2/5]

Pressure::Pressure ( const std::complex< double > & complex_press)

Pressure constructor

Parameters
complex_presscomplex<double> value

References complex_pressure.

◆ Pressure() [3/5]

Pressure::Pressure ( const TimeArr & time_arr)
explicit

Constructs a Pressure from a TimeArr

Parameters
time_arrvalid TimeArr const reference

References complex_pressure, createNotValid(), and woss::TimeArr::isValid().

Here is the call graph for this function:

◆ Pressure() [4/5]

woss::Pressure::Pressure ( const Pressure & copy)
default

References Pressure().

Here is the call graph for this function:

◆ Pressure() [5/5]

woss::Pressure::Pressure ( Pressure && tmp)
default

References Pressure().

Here is the call graph for this function:

◆ ~Pressure()

virtual woss::Pressure::~Pressure ( )
virtualdefault

Member Function Documentation

◆ abs()

double woss::Pressure::abs ( ) const
inline

Gets the absolute value

Returns
double absolute value

References complex_pressure.

Referenced by getTxLossDb(), and WossUnitTest::testPressure().

◆ checkAttenuation()

bool Pressure::checkAttenuation ( double distance,
double frequency )
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

Parameters
distancedistance value in meters
frequencyfrequency value in hertz
Returns
true if correction was applied, false otherwise

References complex_pressure, debug, getAttenuation(), and phase().

Referenced by woss::TimeArr::checkPressureAttenuation().

Here is the call graph for this function:

◆ clear()

void woss::Pressure::clear ( )
inline

References complex_pressure.

◆ clone()

virtual std::unique_ptr< Pressure > woss::Pressure::clone ( ) const
inlinevirtual

Pressure virtual factory method

Returns
std::unique_ptr to a heap-created copy of this instance

Referenced by WossUnitTest::testPressure().

◆ create() [1/3]

virtual std::unique_ptr< Pressure > woss::Pressure::create ( const std::complex< double > & complex_press) const
inlinevirtual

Pressure virtual factory method

Parameters
complex_presscomplex<double> value
Returns
std::unique_ptr to a heap-created Pressure object

◆ create() [2/3]

virtual std::unique_ptr< Pressure > woss::Pressure::create ( const TimeArr & time_arr) const
inlinevirtual

Pressure virtual factory method

Parameters
time_arrvalid TimeArr const reference
Returns
std::unique_ptr to a heap-created Pressure object

◆ create() [3/3]

virtual std::unique_ptr< Pressure > woss::Pressure::create ( double real = 0.0,
double imag = 0.0 ) const
inlinevirtual

Pressure virtual factory method

Parameters
realreal part
imagimaginary part
Returns
a std::unique_ptr to a heap-created Pressure object

References imag(), and real().

Referenced by WossUnitTest::testPressure().

Here is the call graph for this function:

◆ createArray()

virtual std::unique_ptr< Pressure[]> woss::Pressure::createArray ( unsigned int array_size) const
inlinevirtual

Pressure virtual factory method

Parameters
array_sizesize of array
Returns
std::unique_ptr to a heap-created array of size array_size

Referenced by WossUnitTest::testPressure().

◆ createNotValid()

◆ getAttenuation()

double Pressure::getAttenuation ( double dist,
double freq ) const
protectedvirtual

Gets the linear acoustic attenuation incurred at given frequency along the given distance

Parameters
distdistance in meters
freqfrequency in hertz
Returns
linear attenuation

References getThorpAtt().

Referenced by checkAttenuation().

Here is the call graph for this function:

◆ getThorpAtt()

double Pressure::getThorpAtt ( double frequency) const
constexprprotected

Gets the acoustic attenuation (in db re uPa / m ) given by Thorp absorption process incurred at given frequency

Parameters
freqfrequency in hertz
Returns
attenuation in db re uPa / m

Referenced by getAttenuation().

◆ getTxLossDb() [1/2]

double woss::Pressure::getTxLossDb ( ) const
inline

Returns the Transmission Loss measured in db

Returns
the Transmission Loss [db]

References abs(), complex_pressure, and isValid().

Referenced by WossMPropagation::computeGain(), woss::ArrAscResReader::getArrAscFile(), woss::ArrBinResReader::getArrBinFile(), woss::TimeArr::lowerBoundTxLoss(), woss::TimeArr::operator<<, and WossChannelModule::schedulePacketCopies().

Here is the call graph for this function:

◆ getTxLossDb() [2/2]

constexpr double woss::Pressure::getTxLossDb ( const std::complex< double > & val)
inlinestaticconstexpr

Returns the Transmission Loss measured in db

Returns
the Transmission Loss [db]

Referenced by woss::ShdResReader::getShdFile(), woss::TimeArr::lowerBoundTxLoss(), operator<<, and WossUnitTest::testPressure().

◆ imag()

double woss::Pressure::imag ( ) const
inline

Gets the imaginary part

Returns
double imaginary part

References complex_pressure.

Referenced by create(), Pressure(), and WossUnitTest::testPressure().

◆ isValid()

virtual bool woss::Pressure::isValid ( ) const
inlinevirtual

Checks the validity of complex pressure provided

Returns
true if complex pressure is valid, false otherwise

References complex_pressure.

Referenced by getTxLossDb(), woss::TimeArr::insertValue(), woss::TimeArr::sumValue(), and woss::TimeArr::TimeArr().

◆ operator std::complex< double >()

woss::Pressure::operator std::complex< double > ( ) const
inline

complex<double> operator for implicit casting

Returns
a copy of complex_pressure

References complex_pressure.

◆ operator=() [1/2]

Pressure & woss::Pressure::operator= ( const Pressure & copy)
default

References Pressure().

Here is the call graph for this function:

◆ operator=() [2/2]

Pressure & woss::Pressure::operator= ( Pressure && tmp)
default

References Pressure().

Here is the call graph for this function:

◆ phase()

double woss::Pressure::phase ( ) const
inline

Gets the phase (arg) value

Returns
double phase (arg) value

References complex_pressure.

Referenced by checkAttenuation().

◆ real()

double woss::Pressure::real ( ) const
inline

Gets the real part

Returns
double real part

References complex_pressure.

Referenced by create(), Pressure(), and WossUnitTest::testPressure().

◆ setDebug()

void woss::Pressure::setDebug ( bool flag)
inlinestatic

Sets debug for the whole class

Parameters
flagdebug value

References debug.

◆ sqrt()

Pressure woss::Pressure::sqrt ( ) const
inline

Gets the square root of a complex number

Returns
double square root value

References complex_pressure, and Pressure().

Here is the call graph for this function:

◆ operator!=

bool operator!= ( const Pressure & left,
const Pressure & right )
friend

Inequality operator

Parameters
leftleft operand const reference
rightright operand const reference
Returns
true if left != right, false otherwise

References complex_pressure, and Pressure().

◆ operator*

const Pressure operator* ( const Pressure & left,
const Pressure & right )
friend

Multiplication operator

Parameters
leftleft operand const reference
rightright operand const reference
Returns
a new const instance holding the operation result

References complex_pressure, and Pressure().

◆ operator*=

Pressure & operator*= ( Pressure & left,
const Pressure & right )
friend

Compound assignment multiplication operator

Parameters
leftleft operand reference
rightright operand const reference
Returns
left reference after the operation

References complex_pressure, and Pressure().

◆ operator+

const Pressure operator+ ( const Pressure & left,
const Pressure & right )
friend

Sum operator

Parameters
leftleft operand const reference
rightright operand const reference
Returns
a new const instance holding the operation result

References complex_pressure, and Pressure().

◆ operator+=

Pressure & operator+= ( Pressure & left,
const Pressure & right )
friend

Compound assignment sum operator

Parameters
leftleft operand reference
rightright operand const reference
Returns
left reference after the operation

References complex_pressure, and Pressure().

◆ operator-

const Pressure operator- ( const Pressure & left,
const Pressure & right )
friend

Subtraction operator

Parameters
leftleft operand const reference
rightright operand const reference
Returns
a new const instance holding the operation result

References complex_pressure, and Pressure().

◆ operator-=

Pressure & operator-= ( Pressure & left,
const Pressure & right )
friend

Compound assignment subtraction operator

Parameters
leftleft operand reference
rightright operand const reference
Returns
left reference after the operation

References complex_pressure, and Pressure().

◆ operator/

const Pressure operator/ ( const Pressure & left,
const Pressure & right )
friend

Division operator

Parameters
leftleft operand const reference
rightright operand const reference
Returns
a new const instance holding the operation result

References complex_pressure, and Pressure().

◆ operator/=

Pressure & operator/= ( Pressure & left,
const Pressure & right )
friend

Compound assignment division operator

Parameters
leftleft operand reference
rightright operand const reference
Returns
left reference after the operation

References complex_pressure, and Pressure().

◆ operator<<

std::ostream & operator<< ( std::ostream & os,
const Pressure & instance )
friend

<< operator

Parameters
osleft operand ostream reference
instanceright operand const Pressure reference
Returns
os reference after the operation

References complex_pressure, getTxLossDb(), and Pressure().

◆ operator==

bool operator== ( const Pressure & left,
const Pressure & right )
friend

Equality operator

Parameters
leftleft operand const reference
rightright operand const reference
Returns
true if left == right, false otherwise

References complex_pressure, and Pressure().

Member Data Documentation

◆ complex_pressure

◆ debug

bool Pressure::debug = false
staticprotected

Debug flag

Referenced by checkAttenuation(), and setDebug().


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