A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
buildings-pathloss-profiler.cc
Go to the documentation of this file.
1/*
2 * Copyright (c) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
3 *
4 * SPDX-License-Identifier: GPL-2.0-only
5 *
6 * Author: Marco Miozzo <marco.miozzo@cttc.es>
7 */
8
9#include "ns3/buildings-helper.h"
10#include "ns3/config-store.h"
11#include "ns3/constant-position-mobility-model.h"
12#include "ns3/core-module.h"
13#include "ns3/hybrid-buildings-propagation-loss-model.h"
14#include "ns3/mobility-module.h"
15#include "ns3/network-module.h"
16
17#include <iomanip>
18#include <string>
19#include <vector>
20
21using namespace ns3;
22using std::vector;
23
24int
25main(int argc, char* argv[])
26{
27 double hEnb = 30.0;
28 double hUe = 1.0;
29 bool enbIndoor = false;
30 bool ueIndoor = false;
32
33 cmd.AddValue("hEnb", "Height of the eNB", hEnb);
34 cmd.AddValue("hUe", "Height of UE", hUe);
35 cmd.AddValue("enbIndoor", "Boolean for eNB Indoor/Outdoor selection", enbIndoor);
36 cmd.AddValue("ueIndoor", "Boolean for UE Indoor/Outdoor selection", ueIndoor);
37 cmd.Parse(argc, argv);
38
41
42 // parse again so you can override default values from the command line
43 cmd.Parse(argc, argv);
44
45 std::ofstream outFile;
46 outFile.open("buildings-pathloss-profiler.out");
47 if (!outFile.is_open())
48 {
49 NS_FATAL_ERROR("Can't open output file");
50 }
51
53 mmEnb->SetPosition(Vector(0.0, 0.0, hEnb));
54 if (enbIndoor)
55 {
56 Ptr<Building> building1 = CreateObject<Building>(-2, 2, -2, 2, 0.0, 20.0);
57 building1->SetBuildingType(Building::Residential);
59 }
60
62 mmEnb->AggregateObject(buildingInfoEnb); // operation usually done by BuildingsHelper::Install
63 buildingInfoEnb->MakeConsistent(mmEnb);
64
67 // cancel shadowing effect
68 propagationLossModel->SetAttribute("ShadowSigmaOutdoor", DoubleValue(0.0));
69 propagationLossModel->SetAttribute("ShadowSigmaIndoor", DoubleValue(0.0));
70 propagationLossModel->SetAttribute("ShadowSigmaExtWalls", DoubleValue(0.0));
71
72 // propagationLossModel->SetAttribute ("Los2NlosThr", DoubleValue (1550.0));
73
74 // for (uint8_t i = 0; i < 23; i++)
75 for (uint32_t i = 1; i < 2300; i++)
76 {
78 mmUe->SetPosition(Vector(i, 0.0, hUe));
80 mmUe->AggregateObject(buildingInfoUe); // operation usually done by BuildingsHelper::Install
81 buildingInfoUe->MakeConsistent(mmUe);
82 double loss = propagationLossModel->GetLoss(mmEnb, mmUe);
83 outFile << i << "\t" << loss << std::endl;
84 }
85
87
88 return 0;
89}
@ ConcreteWithWindows
Definition building.h:58
Parse command-line arguments.
Introspection did not find any typical Config paths.
void ConfigureDefaults()
Configure the default values.
This class can be used to hold variables of floating point type such as 'double' or 'float'.
Definition double.h:31
Smart pointer class similar to boost::intrusive_ptr.
Definition ptr.h:66
static void Destroy()
Execute the events scheduled with ScheduleDestroy().
Definition simulator.cc:131
#define NS_FATAL_ERROR(msg)
Report a fatal error with a message and terminate.
Ptr< T > Create(Ts &&... args)
Create class instances by constructors with varying numbers of arguments and return them by Ptr.
Definition ptr.h:436
Every class exported by the ns3 library is enclosed in the ns3 namespace.