A Discrete-Event Network Simulator
Home
Tutorials ▼
English
Documentation ▼
Installation
Manual
Models
Contributing
Wiki
Development ▼
API Docs
Issue Tracker
Merge Requests
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
14
namespace
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
*/
22
class
ThreeGppAntennaModel
:
public
AntennaModel
23
{
24
public
:
25
/**
26
* The different antenna radiation patterns defined in ITU-R M.2412.
27
*/
28
enum class
RadiationPattern
29
{
30
OUTDOOR
,
31
INDOOR
32
};
33
34
ThreeGppAntennaModel
();
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
*/
97
void
SetOutdoorAntennaPattern
();
98
99
/**
100
* Set the radiation pattern for Indoor Hotspot - eMBB, Table 8-7 in Report ITU-R M.2412
101
*/
102
void
SetIndoorAntennaPattern
();
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
antenna-model.h
ns3::Angles
Class holding the azimuth and inclination angles of spherical coordinates.
Definition
angles.h:107
ns3::AntennaModel::AntennaModel
AntennaModel()
Definition
antenna-model.cc:22
ns3::ThreeGppAntennaModel::m_geMax
double m_geMax
maximum directional gain of the antenna element (G_{E,max}) [dBi]
Definition
three-gpp-antenna-model.h:110
ns3::ThreeGppAntennaModel::GetAntennaElementGain
double GetAntennaElementGain() const
Get the maximum directional gain of the antenna element.
Definition
three-gpp-antenna-model.cc:129
ns3::ThreeGppAntennaModel::RadiationPattern
RadiationPattern
The different antenna radiation patterns defined in ITU-R M.2412.
Definition
three-gpp-antenna-model.h:29
ns3::ThreeGppAntennaModel::RadiationPattern::INDOOR
@ INDOOR
Definition
three-gpp-antenna-model.h:31
ns3::ThreeGppAntennaModel::RadiationPattern::OUTDOOR
@ OUTDOOR
Definition
three-gpp-antenna-model.h:30
ns3::ThreeGppAntennaModel::GetTypeId
static TypeId GetTypeId()
Get the type ID.
Definition
three-gpp-antenna-model.cc:25
ns3::ThreeGppAntennaModel::ThreeGppAntennaModel
ThreeGppAntennaModel()
Definition
three-gpp-antenna-model.cc:45
ns3::ThreeGppAntennaModel::~ThreeGppAntennaModel
~ThreeGppAntennaModel() override
Definition
three-gpp-antenna-model.cc:57
ns3::ThreeGppAntennaModel::m_radiationPattern
RadiationPattern m_radiationPattern
current antenna radiation pattern
Definition
three-gpp-antenna-model.h:111
ns3::ThreeGppAntennaModel::m_horizontalBeamwidthDegrees
double m_horizontalBeamwidthDegrees
beamwidth in the horizontal direction [deg]
Definition
three-gpp-antenna-model.h:106
ns3::ThreeGppAntennaModel::GetVerticalBeamwidth
double GetVerticalBeamwidth() const
Get the vertical beamwidth of the antenna element.
Definition
three-gpp-antenna-model.cc:62
ns3::ThreeGppAntennaModel::SetIndoorAntennaPattern
void SetIndoorAntennaPattern()
Set the radiation pattern for Indoor Hotspot - eMBB, Table 8-7 in Report ITU-R M.2412.
Definition
three-gpp-antenna-model.cc:107
ns3::ThreeGppAntennaModel::GetHorizontalBeamwidth
double GetHorizontalBeamwidth() const
Get the horizontal beamwidth of the antenna element.
Definition
three-gpp-antenna-model.cc:68
ns3::ThreeGppAntennaModel::SetRadiationPattern
void SetRadiationPattern(RadiationPattern pattern)
Set the antenna radiation pattern.
Definition
three-gpp-antenna-model.cc:74
ns3::ThreeGppAntennaModel::m_verticalBeamwidthDegrees
double m_verticalBeamwidthDegrees
beamwidth in the vertical direction [deg]
Definition
three-gpp-antenna-model.h:104
ns3::ThreeGppAntennaModel::GetGainDb
double GetGainDb(Angles a) override
this method is expected to be re-implemented by each antenna model
Definition
three-gpp-antenna-model.cc:135
ns3::ThreeGppAntennaModel::SetOutdoorAntennaPattern
void SetOutdoorAntennaPattern()
Set the radiation pattern Dense Urban – eMBB, Rural – eMBB, Urban Macro – mMTC, and Urban Macro - URL...
Definition
three-gpp-antenna-model.cc:97
ns3::ThreeGppAntennaModel::GetRadiationPattern
RadiationPattern GetRadiationPattern() const
Get the antenna radiation pattern.
Definition
three-gpp-antenna-model.cc:91
ns3::ThreeGppAntennaModel::m_aMax
double m_aMax
maximum attenuation (A_{max}) [dB]
Definition
three-gpp-antenna-model.h:108
ns3::ThreeGppAntennaModel::DoInitialize
void DoInitialize() override
Initialize() implementation.
Definition
three-gpp-antenna-model.cc:51
ns3::ThreeGppAntennaModel::GetMaxAttenuation
double GetMaxAttenuation() const
Get the maximum attenuation of the antenna element.
Definition
three-gpp-antenna-model.cc:123
ns3::ThreeGppAntennaModel::GetSlaV
double GetSlaV() const
Get the side-lobe attenuation in the vertical direction of the antenna element.
Definition
three-gpp-antenna-model.cc:117
ns3::ThreeGppAntennaModel::m_slaV
double m_slaV
side-lobe attenuation in the vertical direction (SLA_V) [dB]
Definition
three-gpp-antenna-model.h:109
ns3::TypeId
a unique identifier for an interface.
Definition
type-id.h:49
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
src
antenna
model
three-gpp-antenna-model.h
Generated on Wed Jun 11 2025 13:15:26 for ns-3 by
1.13.2