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/string.h" 
   27 #include "ns3/boolean.h" 
   28 #include "ns3/double.h" 
   29 #include "ns3/pointer.h" 
   30 #include "ns3/gnuplot.h" 
   31 #include "ns3/simulator.h" 
   39 static double dround (
double number, 
double precision)
 
   44       number = floor (number + 0.5);
 
   48       number = ceil (number - 0.5);
 
   63   plot.AppendExtra (
"set ylabel 'rxPower (dBm)'");
 
   64   plot.AppendExtra (
"set key top right");
 
   66   double txPowerDbm = +20; 
 
   75     for (
double distance = 0.0; distance < 2500.0; distance += 10.0)
 
   77         b->SetPosition (Vector (distance, 0.0, 0.0));
 
   80         double rxPowerDbm = model->
CalcRxPower (txPowerDbm, a, b);
 
   82         dataset.
Add (distance, rxPowerDbm);
 
   89   std::ostringstream os;
 
   90   os << 
"txPower " << txPowerDbm << 
"dBm";
 
   93   plot.AddDataset (dataset);
 
  109   plot.AppendExtra (
"set ylabel 'rxPower (dBm)'");
 
  110   plot.AppendExtra (
"set zlabel 'Probability' offset 0,+10");
 
  111   plot.AppendExtra (
"set view 50, 120, 1.0, 1.0");
 
  112   plot.AppendExtra (
"set key top right");
 
  114   plot.AppendExtra (
"set ticslevel 0");
 
  115   plot.AppendExtra (
"set xtics offset -0.5,0");
 
  116   plot.AppendExtra (
"set ytics offset 0,-0.5");
 
  117   plot.AppendExtra (
"set xrange [100:]");
 
  119   double txPowerDbm = +20; 
 
  123   dataset.
SetStyle (
"with linespoints");
 
  124   dataset.
SetExtra (
"pointtype 3 pointsize 0.5");
 
  126   typedef std::map<double, unsigned int> rxPowerMapType;
 
  133     for (
double distance = 100.0; distance < 2500.0; distance += 100.0)
 
  135         b->SetPosition (Vector (distance, 0.0, 0.0));
 
  137         rxPowerMapType rxPowerMap;
 
  139         for (
unsigned int samp = 0; samp < samples; ++samp)
 
  142             double rxPowerDbm = model->
CalcRxPower (txPowerDbm, a, b);
 
  143             rxPowerDbm = 
dround (rxPowerDbm, 1.0);
 
  145             rxPowerMap[ rxPowerDbm ]++;
 
  151         for (rxPowerMapType::const_iterator i = rxPowerMap.begin ();
 
  152              i != rxPowerMap.end (); ++i)
 
  154             dataset.
Add (distance, i->first, (
double)i->second / (
double)samples);
 
  160   std::ostringstream os;
 
  161   os << 
"txPower " << txPowerDbm << 
"dBm";
 
  164   plot.AddDataset (dataset);
 
  173                          double distance = 100.0)
 
  181   plot.AppendExtra (
"set ylabel 'rxPower (dBm)'");
 
  182   plot.AppendExtra (
"set key center right");
 
  184   double txPowerDbm = +20; 
 
  192     b->SetPosition (Vector (distance, 0.0, 0.0));
 
  198         double rxPowerDbm = model->
CalcRxPower (txPowerDbm, a, b);
 
  208   std::ostringstream os;
 
  209   os << 
"txPower " << txPowerDbm << 
"dBm";
 
  212   plot.AddDataset (dataset);
 
  219 int main (
int argc, 
char *argv[])
 
  227     plot.SetTitle (
"ns3::FriisPropagationLossModel (Default Parameters)");
 
  228     gnuplots.AddPlot (plot);
 
  236     plot.
SetTitle (
"ns3::LogDistancePropagationLossModel (Exponent = 2.5)");
 
  237     gnuplots.AddPlot (plot);
 
  246     plot.
SetTitle (
"ns3::RandomPropagationLossModel with Exponential Distribution");
 
  247     gnuplots.AddPlot (plot);
 
  257     plot.
SetTitle (
"ns3::JakesPropagationLossModel (with 477.9 Hz shift and 1 millisec resolution)");
 
  258     gnuplots.AddPlot (plot);
 
  268     plot.
SetTitle (
"ns3::JakesPropagationLossModel (with 477.9 Hz shift and 0.1 millisec resolution)");
 
  269     gnuplots.AddPlot (plot);
 
  276     plot.SetTitle (
"ns3::ThreeLogDistancePropagationLossModel (Defaults)");
 
  277     gnuplots.AddPlot (plot);
 
  288     plot.
SetTitle (
"ns3::ThreeLogDistancePropagationLossModel (Exponents 1.0, 3.0 and 10.0)");
 
  289     gnuplots.AddPlot (plot);
 
  296     plot.SetTitle (
"ns3::NakagamiPropagationLossModel (Default Parameters)");
 
  297     gnuplots.AddPlot (plot);
 
  307     plot.
SetTitle (
"ns3::ThreeLogDistancePropagationLossModel and ns3::NakagamiPropagationLossModel (Default Parameters)");
 
  308     gnuplots.AddPlot (plot);
 
  311   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 PropagatinLossModel(s) chained to the current one...
 
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. 
 
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.