21 #include "ns3/propagation-loss-model.h" 
   22 #include "ns3/jakes-propagation-loss-model.h" 
   23 #include "ns3/constant-position-mobility-model.h" 
   25 #include "ns3/config.h" 
   26 #include "ns3/command-line.h" 
   27 #include "ns3/string.h" 
   28 #include "ns3/boolean.h" 
   29 #include "ns3/double.h" 
   30 #include "ns3/pointer.h" 
   31 #include "ns3/gnuplot.h" 
   32 #include "ns3/simulator.h" 
   40 static double dround (
double number, 
double precision)
 
   45       number = floor (number + 0.5);
 
   49       number = ceil (number - 0.5);
 
   64   plot.AppendExtra (
"set ylabel 'rxPower (dBm)'");
 
   65   plot.AppendExtra (
"set key top right");
 
   67   double txPowerDbm = +20; 
 
   76     for (
double distance = 0.0; distance < 2500.0; distance += 10.0)
 
   78         b->SetPosition (Vector (distance, 0.0, 0.0));
 
   81         double rxPowerDbm = model->
CalcRxPower (txPowerDbm, a, b);
 
   83         dataset.
Add (distance, rxPowerDbm);
 
   90   std::ostringstream os;
 
   91   os << 
"txPower " << txPowerDbm << 
"dBm";
 
   94   plot.AddDataset (dataset);
 
  110   plot.AppendExtra (
"set ylabel 'rxPower (dBm)'");
 
  111   plot.AppendExtra (
"set zlabel 'Probability' offset 0,+10");
 
  112   plot.AppendExtra (
"set view 50, 120, 1.0, 1.0");
 
  113   plot.AppendExtra (
"set key top right");
 
  115   plot.AppendExtra (
"set ticslevel 0");
 
  116   plot.AppendExtra (
"set xtics offset -0.5,0");
 
  117   plot.AppendExtra (
"set ytics offset 0,-0.5");
 
  118   plot.AppendExtra (
"set xrange [100:]");
 
  120   double txPowerDbm = +20; 
 
  124   dataset.
SetStyle (
"with linespoints");
 
  125   dataset.
SetExtra (
"pointtype 3 pointsize 0.5");
 
  127   typedef std::map<double, unsigned int> rxPowerMapType;
 
  134     for (
double distance = 100.0; distance < 2500.0; distance += 100.0)
 
  136         b->SetPosition (Vector (distance, 0.0, 0.0));
 
  138         rxPowerMapType rxPowerMap;
 
  140         for (
unsigned int samp = 0; samp < samples; ++samp)
 
  143             double rxPowerDbm = model->
CalcRxPower (txPowerDbm, a, b);
 
  144             rxPowerDbm = 
dround (rxPowerDbm, 1.0);
 
  146             rxPowerMap[ rxPowerDbm ]++;
 
  152         for (rxPowerMapType::const_iterator i = rxPowerMap.begin ();
 
  153              i != rxPowerMap.end (); ++i)
 
  155             dataset.
Add (distance, i->first, (
double)i->second / (
double)samples);
 
  161   std::ostringstream os;
 
  162   os << 
"txPower " << txPowerDbm << 
"dBm";
 
  165   plot.AddDataset (dataset);
 
  174                          double distance = 100.0)
 
  182   plot.AppendExtra (
"set ylabel 'rxPower (dBm)'");
 
  183   plot.AppendExtra (
"set key center right");
 
  185   double txPowerDbm = +20; 
 
  193     b->SetPosition (Vector (distance, 0.0, 0.0));
 
  199         double rxPowerDbm = model->
CalcRxPower (txPowerDbm, a, b);
 
  209   std::ostringstream os;
 
  210   os << 
"txPower " << txPowerDbm << 
"dBm";
 
  213   plot.AddDataset (dataset);
 
  220 int main (
int argc, 
char *argv[])
 
  223   cmd.
Parse (argc, argv);
 
  231     plot.SetTitle (
"ns3::FriisPropagationLossModel (Default Parameters)");
 
  232     gnuplots.AddPlot (plot);
 
  240     plot.
SetTitle (
"ns3::LogDistancePropagationLossModel (Exponent = 2.5)");
 
  241     gnuplots.AddPlot (plot);
 
  250     plot.
SetTitle (
"ns3::RandomPropagationLossModel with Exponential Distribution");
 
  251     gnuplots.AddPlot (plot);
 
  261     plot.
SetTitle (
"ns3::JakesPropagationLossModel (with 477.9 Hz shift and 1 millisec resolution)");
 
  262     gnuplots.AddPlot (plot);
 
  272     plot.
SetTitle (
"ns3::JakesPropagationLossModel (with 477.9 Hz shift and 0.1 millisec resolution)");
 
  273     gnuplots.AddPlot (plot);
 
  280     plot.SetTitle (
"ns3::ThreeLogDistancePropagationLossModel (Defaults)");
 
  281     gnuplots.AddPlot (plot);
 
  292     plot.
SetTitle (
"ns3::ThreeLogDistancePropagationLossModel (Exponents 1.0, 3.0 and 10.0)");
 
  293     gnuplots.AddPlot (plot);
 
  300     plot.SetTitle (
"ns3::NakagamiPropagationLossModel (Default Parameters)");
 
  301     gnuplots.AddPlot (plot);
 
  311     plot.
SetTitle (
"ns3::ThreeLogDistancePropagationLossModel and ns3::NakagamiPropagationLossModel (Default Parameters)");
 
  312     gnuplots.AddPlot (plot);
 
  315   gnuplots.GenerateOutput (std::cout);
 
void AppendExtra(const std::string &extra)
 
Simulation virtual time values and global simulation resolution. 
 
Class to represent a 3D points plot. 
 
Class to represent a 2D points plot. 
 
void SetNext(Ptr< PropagationLossModel > next)
Enables a chain of loss models to act on the signal. 
 
void SetTitle(const std::string &title)
Change line title. 
 
void Add(double x, double y, double z)
 
static void Run(void)
Run the simulation. 
 
static double dround(double number, double precision)
Round a double number to the given precision. 
 
void SetExtra(const std::string &extra)
Add extra formatting parameters to this dataset. 
 
double GetSeconds(void) const 
Get an approximation of the time stored in this instance in the indicated unit. 
 
a simple class to generate gnuplot-ready plotting commands from a set of datasets. 
 
a simple class to group together multiple gnuplots into one file, e.g. 
 
void SetTitle(const std::string &title)
 
void AddEmptyLine()
Add an empty line in the data output sequence. 
 
static Gnuplot TestDeterministicByTime(Ptr< PropagationLossModel > model, Time timeStep=Seconds(0.001), Time timeTotal=Seconds(1.0), double distance=100.0)
 
void Add(double x, double y)
 
double CalcRxPower(double txPowerDbm, Ptr< MobilityModel > a, Ptr< MobilityModel > b) const 
Returns the Rx Power taking into account all the PropagationLossModel(s) chained to the current one...
 
Parse command-line arguments. 
 
static void Destroy(void)
Execute the events scheduled with ScheduleDestroy(). 
 
static Gnuplot TestProbabilistic(Ptr< PropagationLossModel > model, unsigned int samples=100000)
 
Every class exported by the ns3 library is enclosed in the ns3 namespace. 
 
Hold objects of type Ptr. 
 
void SetStyle(enum Style style)
 
static Time Now(void)
Return the current simulation virtual time. 
 
void SetPosition(const Vector &position)
 
void SetStyle(const std::string &style)
 
static Gnuplot TestDeterministic(Ptr< PropagationLossModel > model)
 
static void Stop(void)
Tell the Simulator the calling event should be the last one executed. 
 
Time Seconds(double value)
Construct a Time in the indicated unit. 
 
void SetDefault(std::string name, const AttributeValue &value)
 
Class to represent a 2D function expression plot. 
 
void Parse(int argc, char *argv[])
Parse the program arguments. 
 
This class can be used to hold variables of floating point type such as 'double' or 'float'...
 
void SetAttribute(std::string name, const AttributeValue &value)
Set a single attribute, raising fatal errors if unsuccessful.