|
A Discrete-Event Network Simulator
|
API
|
Go to the documentation of this file.
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);
67 double txPowerDbm = +20;
76 for (
double distance = 0.0; distance < 2500.0; distance += 10.0)
81 double rxPowerDbm = model->
CalcRxPower (txPowerDbm, a, b);
83 dataset.
Add (distance, rxPowerDbm);
90 std::ostringstream os;
91 os <<
"txPower " << txPowerDbm <<
"dBm";
111 plot.
AppendExtra (
"set zlabel 'Probability' offset 0,+10");
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)
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";
174 double distance = 100.0)
185 double txPowerDbm = +20;
199 double rxPowerDbm = model->
CalcRxPower (txPowerDbm, a, b);
209 std::ostringstream os;
210 os <<
"txPower " << txPowerDbm <<
"dBm";
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);
a simple class to group together multiple gnuplots into one file, e.g.
void SetStyle(enum Style style)
Parse command-line arguments.
static Time Now(void)
Return the current simulation virtual time.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
void Add(double x, double y, double z)
void SetPosition(const Vector &position)
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.
a simple class to generate gnuplot-ready plotting commands from a set of datasets.
Hold objects of type Ptr<T>.
void SetAttribute(std::string name, const AttributeValue &value)
Set a single attribute, raising fatal errors if unsuccessful.
Class to represent a 3D points plot.
static Gnuplot TestDeterministic(Ptr< PropagationLossModel > model)
void Add(double x, double y)
Class to represent a 2D points plot.
This class can be used to hold variables of floating point type such as 'double' or 'float'.
static void Stop(void)
Tell the Simulator the calling event should be the last one executed.
void SetNext(Ptr< PropagationLossModel > next)
Enables a chain of loss models to act on the signal.
Simulation virtual time values and global simulation resolution.
void AddDataset(const GnuplotDataset &dataset)
void SetStyle(const std::string &style)
static void Run(void)
Run the simulation.
Time Seconds(double value)
Construct a Time in the indicated unit.
static void Destroy(void)
Execute the events scheduled with ScheduleDestroy().
void SetTitle(const std::string &title)
Class to represent a 2D function expression plot.
void AddEmptyLine()
Add an empty line in the data output sequence.
void AppendExtra(const std::string &extra)
static Gnuplot TestDeterministicByTime(Ptr< PropagationLossModel > model, Time timeStep=Seconds(0.001), Time timeTotal=Seconds(1.0), double distance=100.0)
void SetExtra(const std::string &extra)
Add extra formatting parameters to this dataset.
void SetTitle(const std::string &title)
Change line title.
void SetDefault(std::string name, const AttributeValue &value)
static double dround(double number, double precision)
Round a double number to the given precision.
double GetSeconds(void) const
Get an approximation of the time stored in this instance in the indicated unit.
static Gnuplot TestProbabilistic(Ptr< PropagationLossModel > model, unsigned int samples=100000)