DESERT 4.0.0
uwoptical-mpropagation.h
Go to the documentation of this file.
1//
2// Copyright (c) 2017 Regents of the SIGNET lab, University of Padova.
3// All rights reserved.
4//
5// Redistribution and use in source and binary forms, with or without
6// modification, are permitted provided that the following conditions
7// are met:
8// 1. Redistributions of source code must retain the above copyright
9// notice, this list of conditions and the following disclaimer.
10// 2. Redistributions in binary form must reproduce the above copyright
11// notice, this list of conditions and the following disclaimer in the
12// documentation and/or other materials provided with the distribution.
13// 3. Neither the name of the University of Padova (SIGNET lab) nor the
14// names of its contributors may be used to endorse or promote products
15// derived from this software without specific prior written permission.
16//
17// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
19// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
21// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
22// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
23// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
24// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
25// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
26// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
27// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28//
29
39#ifndef UWOPTICAL_MPROPAGATION_H
40#define UWOPTICAL_MPROPAGATION_H
41
42#include <iostream>
43#include <map>
44#include <mphy.h>
45#include <mpropagation.h>
46
47#define NOT_FOUND_C_VALUE -1
48#define NOT_VARIABLE_TEMPERATURE -20
49
50/*typedef ::std::map< double, double > LUT_c;*/
51typedef ::std::pair<double, double> c_temperat;
52typedef ::std::map<double, c_temperat> LUT_c;
53typedef LUT_c::iterator LUT_c_iter;
54
58class UwOpticalMPropagation : public MPropagation
59{
60public:
65
70 {
71 }
72
83 virtual int command(int, const char *const *);
84
93 virtual double getGain(Packet *p);
94
95 virtual void setWoss(bool flag);
96
104 double getTemperature(double depth);
105
113 double getBeta(Packet *p);
114
121 double getC(Packet *p = NULL);
122
129 bool isOmnidirectional();
130
132
133protected:
142 virtual double getLambertBeerGain(double d, double beta_);
143
147 virtual void initializeLUT();
148
157 double getWossOrientation(Position *src, Position *dest);
158
169 double linearInterpolator(
170 double x, double x1, double x2, double y1, double y2);
171
179 void updateC(double d);
180
193 double beta_, double min_depth_, double max_depth_);
194
195 double Ar_;
196 double At_;
197 double c_;
198 double theta_;
208};
209
210#endif /* UWOPTICAL_MPROPAGATION_H */
Definition uwoptical-mpropagation.h:59
virtual double getGain(Packet *p)
Definition uwoptical-mpropagation.cpp:270
bool variable_c_
Definition uwoptical-mpropagation.h:201
double theta_
Definition uwoptical-mpropagation.h:198
double linearInterpolator(double x, double x1, double x2, double y1, double y2)
Definition uwoptical-mpropagation.cpp:355
virtual ~UwOpticalMPropagation()
Definition uwoptical-mpropagation.h:69
char lut_token_separator_
Definition uwoptical-mpropagation.h:207
virtual double getLambertBeerGain(double d, double beta_)
Definition uwoptical-mpropagation.cpp:319
double getLambertBeerGain_variableC(double beta_, double min_depth_, double max_depth_)
Definition uwoptical-mpropagation.cpp:364
virtual void initializeLUT()
Definition uwoptical-mpropagation.cpp:329
bool omnidirectional_
Definition uwoptical-mpropagation.h:199
double getC(Packet *p=NULL)
Definition uwoptical-mpropagation.cpp:219
bool use_woss_
Definition uwoptical-mpropagation.h:203
double getWossOrientation(Position *src, Position *dest)
Definition uwoptical-mpropagation.cpp:174
virtual void setWoss(bool flag)
Definition uwoptical-mpropagation.cpp:147
double getTemperature(double depth)
Definition uwoptical-mpropagation.cpp:435
void updateC(double d)
Definition uwoptical-mpropagation.cpp:153
int debug_
Definition uwoptical-mpropagation.h:131
bool isOmnidirectional()
Definition uwoptical-mpropagation.cpp:213
double c_
Definition uwoptical-mpropagation.h:197
virtual int command(int, const char *const *)
Definition uwoptical-mpropagation.cpp:92
string lut_file_name_
Definition uwoptical-mpropagation.h:206
LUT_c lut_c_
Definition uwoptical-mpropagation.h:204
double getBeta(Packet *p)
Definition uwoptical-mpropagation.cpp:191
UwOpticalMPropagation()
Definition uwoptical-mpropagation.cpp:71
double At_
Definition uwoptical-mpropagation.h:196
double Ar_
Definition uwoptical-mpropagation.h:195
::std::pair< double, double > c_temperat
Definition uwoptical-mpropagation.h:51
::std::map< double, c_temperat > LUT_c
Definition uwoptical-mpropagation.h:52
LUT_c::iterator LUT_c_iter
Definition uwoptical-mpropagation.h:53