33#ifndef PRESSURE_DEFINITIONS_H
34#define PRESSURE_DEFINITIONS_H
67 Pressure(
const std::complex<double>& complex_press );
87 virtual std::unique_ptr<Pressure>
create(
double real = 0.0,
double imag = 0.0 )
const {
return std::make_unique<Pressure>(
real,
imag ); }
94 virtual std::unique_ptr<Pressure>
create(
const std::complex<double>& complex_press )
const {
return std::make_unique<Pressure>( complex_press ); }
101 virtual std::unique_ptr<Pressure>
create(
const TimeArr& time_arr )
const {
return std::make_unique<Pressure>( time_arr ); }
107 virtual std::unique_ptr<Pressure>
clone()
const {
return std::make_unique<Pressure>(*
this); }
114 virtual std::unique_ptr<Pressure[]>
createArray(
unsigned int array_size )
const {
return std::make_unique<Pressure[]>(array_size); }
126 static constexpr std::complex<double>
createNotValid() {
return( std::complex<double>( HUGE_VAL, HUGE_VAL ) ); }
170 static constexpr double getTxLossDb(
const std::complex<double>& val ) {
171 if ( val == std::complex<double>( HUGE_VAL, HUGE_VAL ) )
173 else if( val == std::complex<double>( 0.0, 0.0 ) )
176 return( -20.0 * log10( std::abs(val) ) );
189 return ( -20.0 * log10(
abs() ));
325 constexpr double getThorpAtt(
double frequency )
const;
332 if ( &left == &right )
338 if ( &left == &right )
Complex attenuated pressure class.
Definition pressure-definitions.h:52
friend const Pressure operator+(const Pressure &left, const Pressure &right)
Definition pressure-definitions.h:343
friend std::ostream & operator<<(std::ostream &os, const Pressure &instance)
Definition pressure-definitions.h:380
Pressure & operator=(Pressure &&tmp)=default
friend const Pressure operator*(const Pressure &left, const Pressure &right)
Definition pressure-definitions.h:355
virtual std::unique_ptr< Pressure[]> createArray(unsigned int array_size) const
Definition pressure-definitions.h:114
friend Pressure & operator+=(Pressure &left, const Pressure &right)
Definition pressure-definitions.h:360
virtual std::unique_ptr< Pressure > create(double real=0.0, double imag=0.0) const
Definition pressure-definitions.h:87
static void setDebug(bool flag)
Definition pressure-definitions.h:206
static bool debug
Definition pressure-definitions.h:305
virtual std::unique_ptr< Pressure > create(const std::complex< double > &complex_press) const
Definition pressure-definitions.h:94
Pressure sqrt() const
Definition pressure-definitions.h:158
Pressure(Pressure &&tmp)=default
friend Pressure & operator/=(Pressure &left, const Pressure &right)
Definition pressure-definitions.h:370
std::complex< double > complex_pressure
Definition pressure-definitions.h:310
friend Pressure & operator*=(Pressure &left, const Pressure &right)
Definition pressure-definitions.h:375
static constexpr double getTxLossDb(const std::complex< double > &val)
Definition pressure-definitions.h:170
virtual bool isValid() const
Definition pressure-definitions.h:164
friend const Pressure operator-(const Pressure &left, const Pressure &right)
Definition pressure-definitions.h:347
friend bool operator!=(const Pressure &left, const Pressure &right)
Definition pressure-definitions.h:337
Pressure(const Pressure ©)=default
constexpr double getThorpAtt(double frequency) const
Definition pressure-definitions.cpp:99
friend const Pressure operator/(const Pressure &left, const Pressure &right)
Definition pressure-definitions.h:351
double real() const
Definition pressure-definitions.h:134
double abs() const
Definition pressure-definitions.h:146
double phase() const
Definition pressure-definitions.h:152
virtual std::unique_ptr< Pressure > create(const TimeArr &time_arr) const
Definition pressure-definitions.h:101
virtual ~Pressure()=default
virtual bool checkAttenuation(double distance, double frequency)
Definition pressure-definitions.cpp:67
friend bool operator==(const Pressure &left, const Pressure &right)
Definition pressure-definitions.h:331
void clear()
Definition pressure-definitions.h:128
virtual double getAttenuation(double dist, double freq) const
Definition pressure-definitions.cpp:84
friend Pressure & operator-=(Pressure &left, const Pressure &right)
Definition pressure-definitions.h:365
double imag() const
Definition pressure-definitions.h:140
virtual std::unique_ptr< Pressure > clone() const
Definition pressure-definitions.h:107
double getTxLossDb() const
Definition pressure-definitions.h:183
Pressure & operator=(const Pressure ©)=default
static constexpr std::complex< double > createNotValid()
Definition pressure-definitions.h:126
Channel power delay profile class.
Definition time-arrival-definitions.h:70
Definition ac-toolbox-arr-asc-reader.h:44
bool operator!=(const Altimetry &left, const Altimetry &right)
Definition altimetry-definitions.h:833
std::ostream & operator<<(std::ostream &os, const Altimetry &instance)
Definition altimetry-definitions.h:812
Altimetry & operator*=(Altimetry &left, double right)
Definition altimetry-definitions.cpp:346
const Altimetry operator/(const Altimetry &left, const double right)
Definition altimetry-definitions.cpp:264
bool operator==(const Altimetry &left, const Altimetry &right)
Definition altimetry-definitions.h:826
Altimetry & operator+=(Altimetry &left, const Altimetry &right)
Definition altimetry-definitions.cpp:306
const Altimetry operator+(const Altimetry &left, const Altimetry &right)
Definition altimetry-definitions.cpp:236
const Altimetry operator*(const Altimetry &left, const double right)
Definition altimetry-definitions.cpp:271
Altimetry & operator-=(Altimetry &left, const Altimetry &right)
Definition altimetry-definitions.cpp:314
const Altimetry operator-(const Altimetry &left, const Altimetry &right)
Definition altimetry-definitions.cpp:243
Altimetry & operator/=(Altimetry &left, double right)
Definition altimetry-definitions.cpp:338