A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
main-grid-topology.cc
Go to the documentation of this file.
1/*
2 * Copyright (c) 2006,2007 INRIA
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation;
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program; if not, write to the Free Software
15 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16 */
17
18#include "ns3/core-module.h"
19#include "ns3/mobility-module.h"
20#include "ns3/network-module.h"
21
22using namespace ns3;
23
24int
25main(int argc, char* argv[])
26{
27 CommandLine cmd(__FILE__);
28 cmd.Parse(argc, argv);
29
31
32 // create an array of empty nodes for testing purposes
33 nodes.Create(120);
34
36 // setup the grid itself: objects are laid out
37 // started from (-100,-100) with 20 objects per row,
38 // the x interval between each object is 5 meters
39 // and the y interval between each object is 20 meters
40 mobility.SetPositionAllocator("ns3::GridPositionAllocator",
41 "MinX",
42 DoubleValue(-100.0),
43 "MinY",
44 DoubleValue(-100.0),
45 "DeltaX",
46 DoubleValue(5.0),
47 "DeltaY",
48 DoubleValue(20.0),
49 "GridWidth",
50 UintegerValue(20),
51 "LayoutType",
52 StringValue("RowFirst"));
53 // each object will be attached a static position.
54 // i.e., once set by the "position allocator", the
55 // position will never change.
56 mobility.SetMobilityModel("ns3::ConstantPositionMobilityModel");
57
58 // finalize the setup by attaching to each object
59 // in the input array a position and initializing
60 // this position with the calculated coordinates.
61 mobility.Install(nodes);
62
63 // iterate our nodes and print their position.
64 for (auto j = nodes.Begin(); j != nodes.End(); ++j)
65 {
66 Ptr<Node> object = *j;
67 Ptr<MobilityModel> position = object->GetObject<MobilityModel>();
68 NS_ASSERT(position);
69 Vector pos = position->GetPosition();
70 std::cout << "x=" << pos.x << ", y=" << pos.y << ", z=" << pos.z << std::endl;
71 }
72
74 return 0;
75}
Parse command-line arguments.
Definition: command-line.h:232
This class can be used to hold variables of floating point type such as 'double' or 'float'.
Definition: double.h:42
Helper class used to assign positions and mobility models to nodes.
Keep track of the current position and velocity of an object.
keep track of a set of node pointers.
Iterator End() const
Get an iterator which indicates past-the-last Node in the container.
void Create(uint32_t n)
Create n nodes and append pointers to them to the end of this NodeContainer.
Iterator Begin() const
Get an iterator which refers to the first Node in the container.
Smart pointer class similar to boost::intrusive_ptr.
Definition: ptr.h:77
static void Destroy()
Execute the events scheduled with ScheduleDestroy().
Definition: simulator.cc:142
Hold variables of type string.
Definition: string.h:56
Hold an unsigned integer type.
Definition: uinteger.h:45
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file,...
Definition: assert.h:66
NodeContainer nodes
Every class exported by the ns3 library is enclosed in the ns3 namespace.
ns cmd
Definition: second.py:40
ns mobility
Definition: third.py:105