A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
three-gpp-antenna-model.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2020 University of Padova, Dep. of Information Engineering, SIGNET lab.
3 *
4 * SPDX-License-Identifier: GPL-2.0-only
5 */
6
7#ifndef THREE_GPP_ANTENNA_MODEL_H
8#define THREE_GPP_ANTENNA_MODEL_H
9
10#include "antenna-model.h"
11
12#include "ns3/object.h"
13
14namespace ns3
15{
16
17/**
18 * @brief Antenna model based on a parabolic approximation of the main lobe radiation pattern.
19 *
20 * This class implements the parabolic model as described in 3GPP TR 38.901 v15.0.0
21 */
23{
24 public:
25 /**
26 * The different antenna radiation patterns defined in ITU-R M.2412.
27 */
29 {
30 OUTDOOR,
31 INDOOR
32 };
33
35 ~ThreeGppAntennaModel() override;
36
37 /**
38 * @brief Get the type ID.
39 * @return The object TypeId.
40 */
41 static TypeId GetTypeId();
42
43 // inherited from AntennaModel
44 double GetGainDb(Angles a) override;
45
46 /**
47 * Get the vertical beamwidth of the antenna element.
48 * @return the vertical beamwidth in degrees
49 */
50 double GetVerticalBeamwidth() const;
51
52 /**
53 * Get the horizontal beamwidth of the antenna element.
54 * @return the horizontal beamwidth in degrees
55 */
56 double GetHorizontalBeamwidth() const;
57
58 /**
59 * Set the antenna radiation pattern
60 * @param pattern the antenna radiation pattern to used
61 */
62 void SetRadiationPattern(RadiationPattern pattern);
63
64 /**
65 * Get the antenna radiation pattern
66 * @return the radiation pattern of the antenna
67 */
68 RadiationPattern GetRadiationPattern() const;
69
70 /**
71 * Get the side-lobe attenuation in the vertical direction of the antenna element.
72 * @return side-lobe attenuation in the vertical direction in dB
73 */
74 double GetSlaV() const;
75
76 /**
77 * Get the maximum attenuation of the antenna element.
78 * @return the maximum attenuation in dB
79 */
80 double GetMaxAttenuation() const;
81
82 /**
83 * Get the maximum directional gain of the antenna element.
84 * @return the maximum directional gain in dBi
85 */
86 double GetAntennaElementGain() const;
87
88 private:
89 // Inherited from Object.
90 // Waits for the attribute values to be set before setting the radiation pattern values
91 void DoInitialize() override;
92
93 /**
94 * Set the radiation pattern Dense Urban – eMBB, Rural – eMBB, Urban Macro – mMTC, and Urban
95 * Macro - URLLC, Table 8-6 in Report ITU-R M.2412
96 */
98
99 /**
100 * Set the radiation pattern for Indoor Hotspot - eMBB, Table 8-7 in Report ITU-R M.2412
101 */
103
104 double m_verticalBeamwidthDegrees; //!< beamwidth in the vertical direction \f$(\theta_{3dB})\f$
105 //!< [deg]
106 double m_horizontalBeamwidthDegrees; //!< beamwidth in the horizontal direction
107 //!< \f$(\phi_{3dB})\f$ [deg]
108 double m_aMax; //!< maximum attenuation (A_{max}) [dB]
109 double m_slaV; //!< side-lobe attenuation in the vertical direction (SLA_V) [dB]
110 double m_geMax; //!< maximum directional gain of the antenna element (G_{E,max}) [dBi]
111 RadiationPattern m_radiationPattern; //!< current antenna radiation pattern
112};
113
114} // namespace ns3
115
116#endif // THREE_GPP_ANTENNA_MODEL_H
Class holding the azimuth and inclination angles of spherical coordinates.
Definition angles.h:107
interface for antenna radiation pattern models
Antenna model based on a parabolic approximation of the main lobe radiation pattern.
double m_geMax
maximum directional gain of the antenna element (G_{E,max}) [dBi]
double GetAntennaElementGain() const
Get the maximum directional gain of the antenna element.
RadiationPattern
The different antenna radiation patterns defined in ITU-R M.2412.
static TypeId GetTypeId()
Get the type ID.
RadiationPattern m_radiationPattern
current antenna radiation pattern
double m_horizontalBeamwidthDegrees
beamwidth in the horizontal direction [deg]
double GetVerticalBeamwidth() const
Get the vertical beamwidth of the antenna element.
void SetIndoorAntennaPattern()
Set the radiation pattern for Indoor Hotspot - eMBB, Table 8-7 in Report ITU-R M.2412.
double GetHorizontalBeamwidth() const
Get the horizontal beamwidth of the antenna element.
void SetRadiationPattern(RadiationPattern pattern)
Set the antenna radiation pattern.
double m_verticalBeamwidthDegrees
beamwidth in the vertical direction [deg]
double GetGainDb(Angles a) override
this method is expected to be re-implemented by each antenna model
void SetOutdoorAntennaPattern()
Set the radiation pattern Dense Urban – eMBB, Rural – eMBB, Urban Macro – mMTC, and Urban Macro - URL...
RadiationPattern GetRadiationPattern() const
Get the antenna radiation pattern.
double m_aMax
maximum attenuation (A_{max}) [dB]
void DoInitialize() override
Initialize() implementation.
double GetMaxAttenuation() const
Get the maximum attenuation of the antenna element.
double GetSlaV() const
Get the side-lobe attenuation in the vertical direction of the antenna element.
double m_slaV
side-lobe attenuation in the vertical direction (SLA_V) [dB]
a unique identifier for an interface.
Definition type-id.h:49
Every class exported by the ns3 library is enclosed in the ns3 namespace.