A Discrete-Event Network Simulator
QKDNetSim v2.0 (NS-3 v3.41) @ (+)
API
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
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 
22 using namespace ns3;
23 
24 int
25 main(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.
Vector GetPosition() const
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.
Ptr< T > GetObject() const
Get a pointer to the requested aggregated Object.
Definition: object.h:471
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.
cmd
Definition: second.py:40
mobility
Definition: third.py:105