33#ifndef WOSS_TRANSDUCER_DEFINITIONS_H
34#define WOSS_TRANSDUCER_DEFINITIONS_H
50 static constexpr inline double BEAM_PATTERN_CUSTOM_BEAM_PRECISION = (1.0);
52 static constexpr inline double CONDUCTANCE_CUSTOM_FREQUENCY_PRECISION = (1.0);
54 static constexpr inline double TVR_CUSTOM_FREQUENCY_PRECISION = (1.0);
56 static constexpr inline double OCV_CUSTOM_FREQUENCY_PRECISION = (1.0);
58 static constexpr inline double TRANSDUCER_NOT_SET = (-1000);
74 using BPMRIter = BeamPowerMap::reverse_iterator;
76 using BPMCRIter = BeamPowerMap::const_reverse_iterator;
82 using CMIter = ConductanceMap::iterator;
83 using CMRIter = ConductanceMap::reverse_iterator;
84 using CMCIter = ConductanceMap::const_iterator;
85 using CMCRIter = ConductanceMap::const_reverse_iterator;
90 using TVRMap = std::map< PDouble, double >;
99 using OCVMap = std::map< PDouble, double >;
114 Transducer(
long double beam_precision = BEAM_PATTERN_CUSTOM_BEAM_PRECISION,
long double conduct_precison = CONDUCTANCE_CUSTOM_FREQUENCY_PRECISION,
148 virtual std::unique_ptr<Transducer>
create(
long double beam_precision = BEAM_PATTERN_CUSTOM_BEAM_PRECISION,
long double conduct_precison = CONDUCTANCE_CUSTOM_FREQUENCY_PRECISION,
149 long double tvr_precision = TVR_CUSTOM_FREQUENCY_PRECISION,
long double ocv_precision = OCV_CUSTOM_FREQUENCY_PRECISION )
const;
170 virtual std::unique_ptr<Transducer>
clone()
const;
206 virtual double getSPL(
double frequency,
double power )
const;
213 double getMaxSPL(
double frequency )
const;
417 bool tvr_insert(
double frequency,
double tvr );
503 bool ocv_insert(
double frequency,
double ocv );
594 virtual bool import( std::istream& stream_in );
611 bool writeVertBeamPattern( std::ostream& stream_out,
const CoordZ& tx,
const CoordZ& rx,
double init_bearing,
double vert_rot = 0,
double horiz_rot = 0,
double mult_costant = 1,
double add_costant = 0 )
const;
618 bool writeSPL( std::ostream& stream_out,
double frequency_step,
double power )
const;
625 virtual bool write( std::ostream& stream_out )
const;
632 virtual bool writeBinary( std::fstream& file_out )
const;
900 virtual double getValue(
double frequency,
const std::map< PDouble, double >& map,
long double precision,
bool use_linear =
false,
double costant = 20.0 )
const;
929 virtual bool import( std::istream& stream_in, std::map< PDouble, double >& map,
long double precision,
bool is_angle = false );
939 virtual bool importBinary( std::fstream& file_in, std::map< PDouble, double >& map,
long double precision,
bool is_angle =
false );
947 virtual bool write( std::ostream& stream_out,
const std::map< PDouble, double >& map )
const;
955 virtual bool writeBinary( std::fstream& file_out,
const std::map< PDouble, double >& map )
const;
1099 / ( std::pow( std::abs(impedance), 2.0 ) ) ) ).second;
1109 / ( std::pow( std::abs(impedance), 2.0 ) ) ;
1169 return tvr_map.find(frequency);
1224 return ocv_map.find(frequency);
1294 if ( &left == &right )
1301 if ( &left == &right )
1308 if ( !instance.
write( os ) ) os.setstate( std::ios_base::failbit );
1313 if ( !instance.
import( is ) ) is.setstate( std::ios_base::failbit );
3D-Coordinates (lat, long, depth) class definitions and functions library
Definition coordinates-definitions.h:384
Custom precision long double class.
Definition custom-precision-double.h:58
Transducer class.
Definition transducer-definitions.h:65
Transducer & operator=(Transducer &&tmp)=default
virtual Transducer & setBeamPrecision(long double prec)
Definition transducer-definitions.cpp:127
Transducer & beampattern_sum(double value)
Definition transducer-definitions.h:1027
double getDutyCycle() const
Definition transducer-definitions.h:1002
Transducer & ocv_clear()
Definition transducer-definitions.h:1240
Transducer & beampattern_clear()
Definition transducer-definitions.h:1064
TVRMCRIter tvr_rbegin() const
Definition transducer-definitions.h:1198
double getMaxSPL(double frequency) const
Definition transducer-definitions.h:1018
BPMCIter beampattern_begin() const
Definition transducer-definitions.h:1069
virtual const std::string & getSymmetryString() const
Definition transducer-definitions.cpp:183
virtual double getPowerFromSPL(double frequency, double spl) const
Definition transducer-definitions.cpp:330
Transducer(Transducer &&tmp)=default
double max_power
Definition transducer-definitions.h:834
int conductance_size() const
Definition transducer-definitions.h:1122
BeamPowerMap::const_iterator BPMCIter
Definition transducer-definitions.h:75
Transducer & beampattern_erase(double angle)
Definition transducer-definitions.h:1051
friend bool operator==(const Transducer &left, const Transducer &right)
Definition transducer-definitions.h:1293
virtual double normalizeAngle(double angle) const
Definition transducer-definitions.cpp:886
friend std::ostream & operator<<(std::ostream &os, const Transducer &instance)
Definition transducer-definitions.h:1307
ConductanceMap::const_reverse_iterator CMCRIter
Definition transducer-definitions.h:85
double duty_cycle
Definition transducer-definitions.h:839
long double getBeamPrecision() const
Definition transducer-definitions.h:1277
TVRMCIter tvr_begin() const
Definition transducer-definitions.h:1190
bool writeSPL(std::ostream &stream_out, double frequency_step, double power) const
Definition transducer-definitions.cpp:633
TVRMCIter tvr_lower_bound(double frequency) const
Definition transducer-definitions.h:1206
Transducer & ocv_erase(double frequency)
Definition transducer-definitions.h:1227
virtual bool importBinary(std::fstream &stream_in)
Definition transducer-definitions.cpp:392
TVRMCIter tvr_upper_bound(double frequency) const
Definition transducer-definitions.h:1210
BPMCRIter beampattern_rbegin() const
Definition transducer-definitions.h:1077
virtual std::unique_ptr< Transducer > clone() const
Definition transducer-definitions.cpp:115
bool ocv_empty() const
Definition transducer-definitions.h:1236
Transducer & conductance_clear()
Definition transducer-definitions.h:1130
virtual Transducer & setTVRPrecision(long double prec)
Definition transducer-definitions.cpp:169
OCVMCRIter ocv_rbegin() const
Definition transducer-definitions.h:1253
BPMCRIter beampattern_rend() const
Definition transducer-definitions.h:1081
Transducer & conductance_replace(double frequency, double conductance)
Definition transducer-definitions.h:1102
ConductanceMap::iterator CMIter
Definition transducer-definitions.h:82
Transducer & setResonanceFrequency(double frequency)
Definition transducer-definitions.h:974
Transducer(const Transducer ©)=default
ConductanceMap::const_iterator CMCIter
Definition transducer-definitions.h:84
BPMCIter beampattern_lower_bound(double angle) const
Definition transducer-definitions.h:1085
double getMaxPower() const
Definition transducer-definitions.h:998
std::map< PDouble, double > BeamPowerMap
Definition transducer-definitions.h:72
OCVMap::reverse_iterator OCVMRIter
Definition transducer-definitions.h:101
CMCIter conductance_upper_bound(double frequency) const
Definition transducer-definitions.h:1155
TVRMap::const_iterator TVRMCIter
Definition transducer-definitions.h:93
long double beam_precision
Definition transducer-definitions.h:844
virtual ~Transducer()=default
virtual bool isValid() const
Definition transducer-definitions.cpp:120
ConductanceMap::reverse_iterator CMRIter
Definition transducer-definitions.h:83
Transducer & clearAll()
Definition transducer-definitions.h:1269
double resonance_frequency
Definition transducer-definitions.h:824
bool has_conical_symmetry
Definition transducer-definitions.h:819
bool hasToroidalSymmetry() const
Definition transducer-definitions.h:989
long double conductance_precision
Definition transducer-definitions.h:849
virtual bool import(std::istream &stream_in)
Definition transducer-definitions.cpp:346
virtual Transducer & setConductancePrecision(long double prec)
Definition transducer-definitions.cpp:155
OCVMCIter ocv_upper_bound(double frequency) const
Definition transducer-definitions.h:1265
ConductanceMap conductance_map
Definition transducer-definitions.h:874
Transducer & setTypeName(const std::string &name)
Definition transducer-definitions.h:984
BeamPowerMap::iterator BPMIter
Definition transducer-definitions.h:73
Transducer & setBandwith3dB(double frequency)
Definition transducer-definitions.h:979
Transducer & beampattern_rotate(double angle)
Definition transducer-definitions.h:1022
CMCRIter conductance_rend() const
Definition transducer-definitions.h:1147
TVRMCRIter tvr_rend() const
Definition transducer-definitions.h:1202
bool conductance_insert(double frequency, double conductance)
Definition transducer-definitions.h:1093
friend std::ostream & operator>>(std::istream &is, const Transducer &instance)
virtual double getSPL(double frequency, double power) const
Definition transducer-definitions.cpp:314
std::map< PDouble, double > ConductanceMap
Definition transducer-definitions.h:81
virtual std::unique_ptr< Transducer > create(long double beam_precision=BEAM_PATTERN_CUSTOM_BEAM_PRECISION, long double conduct_precison=CONDUCTANCE_CUSTOM_FREQUENCY_PRECISION, long double tvr_precision=TVR_CUSTOM_FREQUENCY_PRECISION, long double ocv_precision=OCV_CUSTOM_FREQUENCY_PRECISION) const
Definition transducer-definitions.cpp:105
CMCIter conductance_lower_bound(double frequency) const
Definition transducer-definitions.h:1151
Transducer & ocv_replace(double frequency, double ocv)
Definition transducer-definitions.h:1218
CMCIter conductance_find(double frequency) const
Definition transducer-definitions.h:1113
BPMCIter beampattern_find(double angle) const
Definition transducer-definitions.h:1047
BeamPowerMap::reverse_iterator BPMRIter
Definition transducer-definitions.h:74
OCVMCRIter ocv_rend() const
Definition transducer-definitions.h:1257
BPMCIter beampattern_upper_bound(double angle) const
Definition transducer-definitions.h:1089
TVRMCIter tvr_end() const
Definition transducer-definitions.h:1194
BeamPowerMap::const_reverse_iterator BPMCRIter
Definition transducer-definitions.h:76
TVRMap::const_reverse_iterator TVRMCRIter
Definition transducer-definitions.h:94
bool writeVertBeamPattern(std::ostream &stream_out, const CoordZ &tx, const CoordZ &rx, double init_bearing, double vert_rot=0, double horiz_rot=0, double mult_costant=1, double add_costant=0) const
Definition transducer-definitions.cpp:654
TVRMap::reverse_iterator TVRMRIter
Definition transducer-definitions.h:92
int ocv_size() const
Definition transducer-definitions.h:1232
double getResonanceFrequency() const
Definition transducer-definitions.h:1006
Transducer & conductance_erase(double frequency)
Definition transducer-definitions.h:1117
OCVMap::iterator OCVMIter
Definition transducer-definitions.h:100
TVRMap::iterator TVRMIter
Definition transducer-definitions.h:91
OCVMap ocv_map
Definition transducer-definitions.h:884
int beampattern_size() const
Definition transducer-definitions.h:1056
bool ocv_insert(double frequency, double ocv)
Definition transducer-definitions.h:1214
virtual bool writeBinary(std::fstream &file_out) const
Definition transducer-definitions.cpp:489
long double getConductancePrecision() const
Definition transducer-definitions.h:1281
bool beampattern_empty() const
Definition transducer-definitions.h:1060
OCVMap::const_reverse_iterator OCVMCRIter
Definition transducer-definitions.h:103
Transducer & operator=(const Transducer ©)=default
OCVMCIter ocv_end() const
Definition transducer-definitions.h:1249
int tvr_size() const
Definition transducer-definitions.h:1177
virtual double getValue(double frequency, const std::map< PDouble, double > &map, long double precision, bool use_linear=false, double costant=20.0) const
Definition transducer-definitions.cpp:256
OCVMCIter ocv_begin() const
Definition transducer-definitions.h:1245
CMCIter conductance_begin() const
Definition transducer-definitions.h:1135
OCVMCIter ocv_lower_bound(double frequency) const
Definition transducer-definitions.h:1261
Transducer & tvr_replace(double frequency, double tvr)
Definition transducer-definitions.h:1163
Transducer & setDutyCycle(double cycle)
Definition transducer-definitions.h:969
Transducer & tvr_clear()
Definition transducer-definitions.h:1185
double bandwith_3db
Definition transducer-definitions.h:829
long double ocv_precision
Definition transducer-definitions.h:859
OCVMap::const_iterator OCVMCIter
Definition transducer-definitions.h:102
long double getTVRPrecision() const
Definition transducer-definitions.h:1285
CMCIter conductance_end() const
Definition transducer-definitions.h:1139
std::map< PDouble, double > OCVMap
Definition transducer-definitions.h:99
virtual bool write(std::ostream &stream_out) const
Definition transducer-definitions.cpp:454
static void setDebug(bool flag)
Definition transducer-definitions.h:803
Transducer & setMaxPower(double power)
Definition transducer-definitions.h:964
friend bool operator!=(const Transducer &left, const Transducer &right)
Definition transducer-definitions.h:1300
long double getOCVPrecision() const
Definition transducer-definitions.h:1289
BPMCIter beampattern_end() const
Definition transducer-definitions.h:1073
bool tvr_empty() const
Definition transducer-definitions.h:1181
TVRMap tvr_map
Definition transducer-definitions.h:879
double getBandwith3dB() const
Definition transducer-definitions.h:1010
bool beampattern_insert(double angle, double power)
Definition transducer-definitions.h:1037
CMCRIter conductance_rbegin() const
Definition transducer-definitions.h:1143
bool hasConicalSymmetry() const
Definition transducer-definitions.h:994
static bool debug
Definition transducer-definitions.h:814
TVRMCIter tvr_find(double frequency) const
Definition transducer-definitions.h:1168
Transducer & beampattern_replace(double angle, double power)
Definition transducer-definitions.h:1041
virtual Transducer & setOCVPrecision(long double prec)
Definition transducer-definitions.cpp:141
std::map< PDouble, double > TVRMap
Definition transducer-definitions.h:90
std::string getTypeName() const
Definition transducer-definitions.h:1014
BeamPowerMap beam_power_map
Definition transducer-definitions.h:869
long double tvr_precision
Definition transducer-definitions.h:854
bool tvr_insert(double frequency, double tvr)
Definition transducer-definitions.h:1159
Transducer & beampattern_multiply(double value)
Definition transducer-definitions.h:1032
static const std::string toroidal_string
Definition transducer-definitions.h:809
bool conductance_empty() const
Definition transducer-definitions.h:1126
Transducer & tvr_erase(double frequency)
Definition transducer-definitions.h:1172
static const std::string conical_string
Definition transducer-definitions.h:807
std::string type_name
Definition transducer-definitions.h:864
OCVMCIter ocv_find(double frequency) const
Definition transducer-definitions.h:1223
Provides the interface for the woss::PDouble class.
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
bool operator==(const Altimetry &left, const Altimetry &right)
Definition altimetry-definitions.h:826
std::istream & operator>>(std::istream &is, PDouble &instance)
Definition custom-precision-double.h:426