22 #include "ns3/double.h"
46 .AddAttribute (
"Wind",
"Wind speed in m/s.",
49 MakeDoubleChecker<double> (0))
50 .AddAttribute (
"Shipping",
"Shipping contribution to noise between 0 and 1.",
53 MakeDoubleChecker<double> (0,1))
63 double turb, wind, ship, thermal;
64 double turbDb, windDb, shipDb, thermalDb, noiseDb;
66 turbDb = 17.0 - 30.0 * std::log10 (fKhz);
67 turb = std::pow (10.0, turbDb * 0.1);
69 shipDb = 40.0 + 20.0 * (
m_shipping - 0.5) + 26.0 * std::log10 (fKhz) - 60.0 * std::log10 (fKhz + 0.03);
70 ship = std::pow (10.0, (shipDb * 0.1));
72 windDb = 50.0 + 7.5 * std::pow (
m_wind, 0.5) + 20.0 * std::log10 (fKhz) - 40.0 * std::log10 (fKhz + 0.4);
73 wind = std::pow (10.0, windDb * 0.1);
75 thermalDb = -15 + 20 * std::log10 (fKhz);
76 thermal = std::pow (10, thermalDb * 0.1);
78 noiseDb = 10 * std::log10 (turb + ship + wind + thermal);
Standard ambient acoustic noise model.
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
double m_shipping
Shipping contribution to noise between 0 and 1.
double m_wind
Wind speed in m/s.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
static TypeId GetTypeId(void)
Register this type.
UAN Noise Model base class.
virtual double GetNoiseDbHz(double fKhz) const
Compute the noise power at a given frequency.
Ptr< const AttributeAccessor > MakeDoubleAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method...
virtual ~UanNoiseModelDefault()
Dummy destructor, DoDispose.
This class can be used to hold variables of floating point type such as 'double' or 'float'...
a unique identifier for an interface.
TypeId SetParent(TypeId tid)
Set the parent TypeId.
UanNoiseModelDefault()
Default constructor.