A Discrete-Event Network Simulator
API
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 (NodeContainer::Iterator 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
73 Simulator::Destroy();
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.
Vector GetPosition() const
keep track of a set of node pointers.
std::vector< Ptr< Node > >::const_iterator Iterator
Node container iterator.
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.
Ptr< T > GetObject() const
Get a pointer to the requested aggregated Object.
Definition: object.h:471
Hold variables of type string.
Definition: string.h:42
Hold an unsigned integer type.
Definition: uinteger.h:45
Vector3D Vector
Vector alias typedef for compatibility with mobility models.
Definition: vector.h:324
#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.
cmd
Definition: second.py:33
mobility
Definition: third.py:96