39#ifndef UWPHYSICALROGERSMODEL_H
40#define UWPHYSICALROGERSMODEL_H
42#include <underwater-mpropagation.h>
75 virtual int command(
int,
const char *
const *);
78 virtual double getGain(Packet *p);
93 virtual double getAttenuation(
const double &_sound_speed_water_bottom,
94 const double &_distance,
const double &_frequency,
95 const double &_bottom_depth);
107 sqrt(pow((1 - pow(
get_N0(), 2)), 3));
161 getTheta_g(
const double &_bottom_depth,
const double &_distance)
const
163 return std::sqrt((1.7 * _bottom_depth) / (
getBeta() * _distance));
176 return std::sqrt((2 *
get_g()) / (_sound_speed_water_bottom));
191 const double &_frequency,
const double &_bottom_depth)
const
193 return (_sound_speed_water_bottom / (2 * _frequency * _bottom_depth));
206 double f2_ = pow(_frequency, 2);
209 if (_frequency >= 0.4)
210 return (0.11 * f2_ / (1.0 + f2_) + 44.0 * f2_ / (4100.0 + f2_) +
211 2.75e-4 * f2_ + 0.003) *
214 return (0.002 + 0.11 * f2_ / (1 + f2_) + 0.011 * f2_) *
218#if __cplusplus <= 199711L
const double getTheta_g_max(const double &_sound_speed_water_bottom) const
Maximum grazion angle for an RBR mode.
const double get_M0() const
Ratio between the density of the sediment and the density of the water.
double density_water
Water density (g/cm^3).
const double getTheta_c(const double &_sound_speed_water_bottom, const double &_frequency, const double &_bottom_depth) const
Cutoff angle of the lowest mode.
double density_sediment
Sediment density (g/cm^3).
static const double FROMDBPERKYARDTODMPERM
Conversion factor from dB/kyard to dB/m.
const double get_g() const
Magnitude of the negative sound speed profile.
const double get_Ks() const
Sediment attenuation coefficient (dB/(m*kHz))
virtual ~UnderwaterPhysicalRogersModel()
Destructor of UnderwaterMPhyBpskDb class.
double sound_speed_water_bottom
Speed of sound in water at the sea bottom level (m/s).
const double getBeta() const
Bottom loss (dB/rad) derived from the expression for the Rayleigh reflection coefficient for a two-fl...
double sound_speed_water_surface
Speed of sound in water at the sea surface level (m/s).
double getThorp(double _frequency)
Absorption coefficient calculated by using Thorp's equation.
double attenuation_coeff_sediment
Attenuation coefficient of the sediment (dB/(m*kHz)).
virtual double getAttenuation(const double &_sound_speed_water_bottom, const double &_distance, const double &_frequency, const double &_bottom_depth)
Attenuation of acoustic signal in underwater channel.
UnderwaterPhysicalRogersModel()
Constructor of UnderwaterMPhyBpskDb class.
virtual double getGain(Packet *p)
double bottom_depth
Water depth (m)
double sound_speed_sediment
Speed of sound in the sediment (m/s).
virtual int command(int, const char *const *)
TCL command interpreter.
const double get_N0() const
Ratio between the sound speed on sound at the surface and sound speed of sound in the sediment.
const double getTheta_g(const double &_bottom_depth, const double &_distance) const
Effective angle of the last mode striped.