32#ifndef TIME_ARRIVAL_DEFINITIONS_H
33#define TIME_ARRIVAL_DEFINITIONS_H
49 using TimeArrMap = std::map < PDouble , std::complex<double> >;
58 static constexpr inline double TIMEARR_CUSTOM_DELAY_PRECISION = (1.0e-7);
62 static constexpr inline int TIMEARR_PRESSURE_CONVERSION_DELAY = (-INT_MAX);
78 TimeArr(
long double custom_delay_prec = TIMEARR_CUSTOM_DELAY_PRECISION );
85 TimeArr(
TimeArrMap& map,
long double custom_delay_prec = TIMEARR_CUSTOM_DELAY_PRECISION );
93 explicit TimeArr(
const Pressure& pressure,
double delay = TIMEARR_PRESSURE_CONVERSION_DELAY,
long double custom_delay_prec = TIMEARR_CUSTOM_DELAY_PRECISION );
105 virtual operator std::complex<double>()
const;
112 virtual std::unique_ptr<TimeArr>
create(
long double custom_delay_prec = TIMEARR_CUSTOM_DELAY_PRECISION )
const {
return std::make_unique<TimeArr>(custom_delay_prec); }
120 virtual std::unique_ptr<TimeArr>
create(
TimeArrMap& map,
long double custom_delay_prec = TIMEARR_CUSTOM_DELAY_PRECISION )
const {
121 return std::make_unique<TimeArr>( map, custom_delay_prec); }
130 virtual std::unique_ptr<TimeArr>
create(
const Pressure& pressure,
double delay = TIMEARR_PRESSURE_CONVERSION_DELAY,
long double custom_delay_prec = TIMEARR_CUSTOM_DELAY_PRECISION )
const {
131 return std::make_unique<TimeArr>(pressure, delay, custom_delay_prec ); }
137 virtual std::unique_ptr<TimeArr>
clone()
const {
return std::make_unique<TimeArr>(*
this); }
144 virtual std::unique_ptr<TimeArr[]>
createArray(
unsigned int array_size )
const {
return std::make_unique<TimeArr[]>(array_size); }
210 virtual std::unique_ptr<TimeArr>
crop(
double time_start,
double time_end )
const;
547 assert( delay >= 0.0 );
549 time_arr_map.emplace( std::make_pair( delay, pressure ) );
556 assert( delay >= 0.0 );
560 time_arr_map.emplace( std::make_pair( delay, pressure ) );
562 it->second += std::complex<double>( pressure );
568 <<
"; max time_arr = " << instance.
time_arr_map.rbegin()->first
574 if ( &left == &right )
580 if ( &left == &right )
Custom precision long double class.
Definition custom-precision-double.h:58
Complex attenuated pressure class.
Definition pressure-definitions.h:52
virtual bool isValid() const
Definition pressure-definitions.h:164
double getTxLossDb() const
Definition pressure-definitions.h:183
static constexpr std::complex< double > createNotValid()
Definition pressure-definitions.h:126
Channel power delay profile class.
Definition time-arrival-definitions.h:70
friend const TimeArr operator-(const double left, const TimeArr &right)
friend const TimeArr operator+(const TimeArr &left, const TimeArr &right)
TimeArrCIt findValue(double delay) const
Definition time-arrival-definitions.h:178
TimeArrCIt begin() const
Definition time-arrival-definitions.h:225
TimeArrCIt end() const
Definition time-arrival-definitions.h:231
TimeArr(const TimeArr ©)=default
TimeArrCIt lowerBoundTxLoss(double threshold_db) const
Definition time-arrival-definitions.cpp:99
TimeArr & insertValue(double delay, const Pressure &pressure)
Definition time-arrival-definitions.h:545
friend TimeArr & operator+=(TimeArr &left, const TimeArr &right)
friend const TimeArr operator*(const double left, const TimeArr &right)
TimeArrCRIt rend() const
Definition time-arrival-definitions.h:243
friend const TimeArr operator+(const TimeArr &left, const double right)
double getMaxDelayValue() const
Definition time-arrival-definitions.h:294
virtual std::unique_ptr< TimeArr > create(TimeArrMap &map, long double custom_delay_prec=TIMEARR_CUSTOM_DELAY_PRECISION) const
Definition time-arrival-definitions.h:120
friend TimeArr & operator-=(TimeArr &left, double right)
virtual std::unique_ptr< TimeArr > create(long double custom_delay_prec=TIMEARR_CUSTOM_DELAY_PRECISION) const
Definition time-arrival-definitions.h:112
TimeArrCIt at(const int i) const
Definition time-arrival-definitions.cpp:86
friend const TimeArr operator-(const TimeArr &left, const TimeArr &right)
static TimeArrMap & createNotValid()
Definition time-arrival-definitions.h:531
friend TimeArr & operator/=(TimeArr &left, double right)
TimeArr & setDelayPrecision(long double precision)
Definition time-arrival-definitions.cpp:117
virtual bool isConvertedFromPressure() const
Definition time-arrival-definitions.h:318
virtual ~TimeArr()=default
friend const TimeArr operator-(const TimeArr &left, const double right)
virtual std::unique_ptr< TimeArr[]> createArray(unsigned int array_size) const
Definition time-arrival-definitions.h:144
double getMinDelayValue() const
Definition time-arrival-definitions.h:300
TimeArr & eraseValue(double delay)
Definition time-arrival-definitions.h:185
friend TimeArr & operator+=(TimeArr &left, double right)
virtual bool isValid() const
Definition time-arrival-definitions.cpp:77
virtual std::unique_ptr< TimeArr > create(const Pressure &pressure, double delay=TIMEARR_PRESSURE_CONVERSION_DELAY, long double custom_delay_prec=TIMEARR_CUSTOM_DELAY_PRECISION) const
Definition time-arrival-definitions.h:130
friend const TimeArr operator/(const double left, const TimeArr &right)
static void setDebug(bool flag)
Definition time-arrival-definitions.h:288
friend bool operator!=(const TimeArr &left, const TimeArr &right)
Definition time-arrival-definitions.h:579
virtual std::unique_ptr< TimeArr > crop(double time_start, double time_end) const
Definition time-arrival-definitions.cpp:172
static bool debug
Definition time-arrival-definitions.h:481
long double delay_precision
Definition time-arrival-definitions.h:486
friend const TimeArr operator*(const TimeArr &left, const double right)
TimeArr & operator=(const TimeArr ©)=default
friend TimeArr & operator-=(TimeArr &left, const TimeArr &right)
friend const TimeArr operator+(const double left, const TimeArr &right)
friend std::ostream & operator<<(std::ostream &os, const TimeArr &instance)
Definition time-arrival-definitions.h:565
static TimeArrMap & createImpulse()
Definition time-arrival-definitions.h:538
virtual std::unique_ptr< TimeArr > incoherentSumSample(double time_delay) const
Definition time-arrival-definitions.cpp:155
virtual std::unique_ptr< TimeArr > clone() const
Definition time-arrival-definitions.h:137
TimeArr(TimeArr &&tmp)=default
friend const TimeArr operator/(const TimeArr &left, const double right)
TimeArrCRIt rbegin() const
Definition time-arrival-definitions.h:237
friend TimeArr & operator*=(TimeArr &left, double right)
virtual bool checkPressureAttenuation(double distance, double frequency)
Definition time-arrival-definitions.cpp:129
bool empty() const
Definition time-arrival-definitions.h:269
virtual std::unique_ptr< TimeArr > coherentSumSample(double time_delay) const
Definition time-arrival-definitions.cpp:142
int size() const
Definition time-arrival-definitions.h:263
void clear()
Definition time-arrival-definitions.h:274
long double getDelayPrecision() const
Definition time-arrival-definitions.h:306
friend bool operator==(const TimeArr &left, const TimeArr &right)
Definition time-arrival-definitions.h:573
TimeArrMap time_arr_map
Definition time-arrival-definitions.h:491
TimeArr & operator=(TimeArr &&tmp)=default
void sumValue(double delay, const Pressure &pressure)
Definition time-arrival-definitions.h:554
Provides the interface for the woss::PDouble class.
Definition ac-toolbox-arr-asc-reader.h:44
TimeArrMap::reverse_iterator TimeArrRIt
Definition time-arrival-definitions.h:52
bool operator!=(const Altimetry &left, const Altimetry &right)
Definition altimetry-definitions.h:833
TimeArrMap::iterator TimeArrIt
Definition time-arrival-definitions.h:50
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
std::map< PDouble, std::complex< double > > TimeArrMap
Definition time-arrival-definitions.h:49
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
TimeArrMap::const_iterator TimeArrCIt
Definition time-arrival-definitions.h:51
Altimetry & operator+=(Altimetry &left, const Altimetry &right)
Definition altimetry-definitions.cpp:306
TimeArrMap::const_reverse_iterator TimeArrCRIt
Definition time-arrival-definitions.h:53
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
Definitions and library for woss::Pressure class.