A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
hybrid-buildings-propagation-loss-model.h
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 * Nicola Baldo <nbaldo@cttc.es>
8 *
9 */
10
11#ifndef HYBRID_BUILDINGS_PROPAGATION_LOSS_MODEL_H_
12#define HYBRID_BUILDINGS_PROPAGATION_LOSS_MODEL_H_
13
15
16#include <ns3/propagation-environment.h>
17
18namespace ns3
19{
20
21class OkumuraHataPropagationLossModel;
22class ItuR1411LosPropagationLossModel;
23class ItuR1411NlosOverRooftopPropagationLossModel;
24class ItuR1238PropagationLossModel;
25class Kun2600MhzPropagationLossModel;
26
27/**
28 * \ingroup buildings
29 * \ingroup propagation
30 *
31 * \brief The HybridBuildingsPropagationModel is a compound of different models able to evaluate
32 * the pathloss from 200 to 2600 MHz, in different environments and with buildings (i.e., indoor and
33 * outdoor communications).
34 *
35 * This model includes Hata model, COST231, ITU-R P.1411 (short range
36 * communications), ITU-R P.1238 (indoor communications), which are combined in order
37 * to be able to evaluate the pathloss under different scenarios, in detail:
38 * - Environments: urban, suburban, open-areas;
39 * - frequency: from 200 uo to 2600 MHz
40 * - short range communications vs long range communications
41 * - Node position respect to buildings: indoor, outdoor and hybrid (indoor <-> outdoor)
42 * - Building penetretation loss
43 * - floors, etc...
44 *
45 * \warning This model works only with MobilityBuildingInfo
46 *
47 */
48
50{
51 public:
52 /**
53 * \brief Get the type ID.
54 * \return The object TypeId.
55 */
56 static TypeId GetTypeId();
59
60 /**
61 * set the environment type
62 *
63 * \param env
64 */
66
67 /**
68 * set the size of the city
69 *
70 * \param size
71 */
72 void SetCitySize(CitySize size);
73
74 /**
75 * set the propagation frequency
76 *
77 * \param freq
78 */
79 void SetFrequency(double freq);
80
81 /**
82 * set the rooftop height
83 *
84 * \param rooftopHeight
85 */
86 void SetRooftopHeight(double rooftopHeight);
87
88 /**
89 * \brief Compute the path loss according to the nodes position
90 * using the appropriate model.
91 *
92 * \param a the mobility model of the source
93 * \param b the mobility model of the destination
94 * \returns the propagation loss (in dBm)
95 */
96 double GetLoss(Ptr<MobilityModel> a, Ptr<MobilityModel> b) const override;
97
98 private:
99 /**
100 * Compute the path loss using either OkumuraHataPropagationLossModel
101 * or Kun2600MhzPropagationLossModel.
102 *
103 * \param a The mobility model of the source.
104 * \param b The mobility model of the destination.
105 * \returns the propagation loss (in dBm).
106 */
108 /**
109 * Compute the path loss using either ItuR1411LosPropagationLossModel or
110 * ItuR1411NlosOverRooftopPropagationLossModel.
111 *
112 * \param a The mobility model of the source.
113 * \param b The mobility model of the destination.
114 * \returns the propagation loss (in dBm).
115 */
117 /**
118 * Compute the path loss using ItuR1238PropagationLossModel.
119 *
120 * \param a The mobility model of the source.
121 * \param b The mobility model of the destination.
122 * \returns the propagation loss (in dBm).
123 */
125
126 /// OkumuraHataPropagationLossModel
128 /// ItuR1411LosPropagationLossModel
130 /// ItuR1411NlosOverRooftopPropagationLossModel
132 /// ItuR1238PropagationLossModel
134 /// Kun2600MhzPropagationLossModel
136
137 double m_itu1411NlosThreshold; ///< in meters (switch Los -> NLoS)
138 double m_rooftopHeight; ///< Roof Height (in meters)
139 double m_frequency; ///< Operation frequency
140};
141
142} // namespace ns3
143
144#endif /* HYBRID_BUILDINGS_PROPAGATION_LOSS_MODEL_H_ */
This model provides means for simulating the following propagation phenomena in the presence of build...
The HybridBuildingsPropagationModel is a compound of different models able to evaluate the pathloss f...
void SetCitySize(CitySize size)
set the size of the city
double OkumuraHata(Ptr< MobilityModel > a, Ptr< MobilityModel > b) const
Compute the path loss using either OkumuraHataPropagationLossModel or Kun2600MhzPropagationLossModel.
Ptr< ItuR1411NlosOverRooftopPropagationLossModel > m_ituR1411NlosOverRooftop
ItuR1411NlosOverRooftopPropagationLossModel.
void SetFrequency(double freq)
set the propagation frequency
void SetRooftopHeight(double rooftopHeight)
set the rooftop height
Ptr< ItuR1411LosPropagationLossModel > m_ituR1411Los
ItuR1411LosPropagationLossModel.
double ItuR1411(Ptr< MobilityModel > a, Ptr< MobilityModel > b) const
Compute the path loss using either ItuR1411LosPropagationLossModel or ItuR1411NlosOverRooftopPropagat...
Ptr< Kun2600MhzPropagationLossModel > m_kun2600Mhz
Kun2600MhzPropagationLossModel.
double ItuR1238(Ptr< MobilityModel > a, Ptr< MobilityModel > b) const
Compute the path loss using ItuR1238PropagationLossModel.
Ptr< OkumuraHataPropagationLossModel > m_okumuraHata
OkumuraHataPropagationLossModel.
void SetEnvironment(EnvironmentType env)
set the environment type
double GetLoss(Ptr< MobilityModel > a, Ptr< MobilityModel > b) const override
Compute the path loss according to the nodes position using the appropriate model.
Ptr< ItuR1238PropagationLossModel > m_ituR1238
ItuR1238PropagationLossModel.
Smart pointer class similar to boost::intrusive_ptr.
a unique identifier for an interface.
Definition type-id.h:48
EnvironmentType
The type of propagation environment.
CitySize
The size of the city in which propagation takes place.
Every class exported by the ns3 library is enclosed in the ns3 namespace.