5G-LENA nr-v3.0-32-g83aee33
The 5G/NR module for the ns-3 simulator
Loading...
Searching...
No Matches
ideal-beamforming-algorithm.h
1/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
2
3// Copyright (c) 2020 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
4//
5// SPDX-License-Identifier: GPL-2.0-only
6
7#ifndef SRC_NR_MODEL_IDEAL_BEAMFORMING_ALGORITHM_H_
8#define SRC_NR_MODEL_IDEAL_BEAMFORMING_ALGORITHM_H_
9
10#include "beam-id.h"
11#include "beamforming-vector.h"
12
13#include <ns3/object.h>
14
15namespace ns3
16{
17
18class SpectrumModel;
19class SpectrumValue;
20class NrGnbNetDevice;
21class NrUeNetDevice;
22class NrSpectrumPhy;
23
34class IdealBeamformingAlgorithm : public Object
35{
36 public:
41 static TypeId GetTypeId();
42
48 virtual BeamformingVectorPair GetBeamformingVectors(
49 const Ptr<NrSpectrumPhy>& gnbSpectrumPhy,
50 const Ptr<NrSpectrumPhy>& ueSpectrumPhy) const = 0;
51};
52
58{
59 public:
64 static TypeId GetTypeId();
65
69 double GetBeamSearchAngleStep() const;
70
74 void SetBeamSearchAngleStep(double beamSearchAngleStep);
75
80
84 ~CellScanBeamforming() override = default;
85
93 BeamformingVectorPair GetBeamformingVectors(
94 const Ptr<NrSpectrumPhy>& gnbSpectrumPhy,
95 const Ptr<NrSpectrumPhy>& ueSpectrumPhy) const override;
96
97 private:
98 double m_beamSearchAngleStep{30};
99};
100
106{
107 public:
112 static TypeId GetTypeId();
113
118
123
131 BeamformingVectorPair GetBeamformingVectors(
132 const Ptr<NrSpectrumPhy>& gnbSpectrumPhy,
133 const Ptr<NrSpectrumPhy>& ueSpectrumPhy) const override;
134
135 private:
136 std::vector<double> m_azimuth{-56.25, -33.75, -11.25, 11.25, 33.75, 56.25};
137 std::vector<double> m_zenith{112.5, 157.5};
138};
139
145{
146 public:
151 static TypeId GetTypeId();
152
156 double GetBeamSearchAngleStep() const;
157
161 void SetBeamSearchAngleStep(double beamSearchAngleStep);
162
167
171 ~CellScanQuasiOmniBeamforming() override = default;
172
179 BeamformingVectorPair GetBeamformingVectors(
180 const Ptr<NrSpectrumPhy>& gnbSpectrumPhy,
181 const Ptr<NrSpectrumPhy>& ueSpectrumPhy) const override;
182
183 private:
184 double m_beamSearchAngleStep{30};
185};
186
192{
193 public:
198 static TypeId GetTypeId();
199
207 BeamformingVectorPair GetBeamformingVectors(
208 const Ptr<NrSpectrumPhy>& gnbSpectrumPhy,
209 const Ptr<NrSpectrumPhy>& ueSpectrumPhy) const override;
210};
211
217{
218 public:
223 static TypeId GetTypeId();
224
233 BeamformingVectorPair GetBeamformingVectors(
234 const Ptr<NrSpectrumPhy>& gnbSpectrumPhy,
235 const Ptr<NrSpectrumPhy>& ueSpectrumPhy) const override;
236};
237
243{
244 public:
249 static TypeId GetTypeId();
250
260 BeamformingVectorPair GetBeamformingVectors(
261 const Ptr<NrSpectrumPhy>& gnbSpectrumPhy,
262 const Ptr<NrSpectrumPhy>& ueSpectrumPhy) const override;
263};
264
273{
274 public:
279 static TypeId GetTypeId();
280
289 BeamformingVectorPair GetBeamformingVectors(
290 const Ptr<NrSpectrumPhy>& gnbSpectrumPhy,
291 const Ptr<NrSpectrumPhy>& ueSpectrumPhy) const override;
292};
293
294} // namespace ns3
295#endif
The CellScanBeamformingAzimuthZenith class.
BeamformingVectorPair GetBeamformingVectors(const Ptr< NrSpectrumPhy > &gnbSpectrumPhy, const Ptr< NrSpectrumPhy > &ueSpectrumPhy) const override
Function that generates the beamforming vectors for a pair of communicating devices by using cell sca...
CellScanBeamformingAzimuthZenith()=default
constructor
~CellScanBeamformingAzimuthZenith() override=default
destructor
The CellScanBeamforming class.
void SetBeamSearchAngleStep(double beamSearchAngleStep)
Sets the value of BeamSearchAngleStep attribute.
~CellScanBeamforming() override=default
destructor
BeamformingVectorPair GetBeamformingVectors(const Ptr< NrSpectrumPhy > &gnbSpectrumPhy, const Ptr< NrSpectrumPhy > &ueSpectrumPhy) const override
Function that generates the beamforming vectors for a pair of communicating devices by using cell sca...
static TypeId GetTypeId()
Get the type id.
CellScanBeamforming()=default
constructor
The CellScanQuasiOmniBeamforming class.
void SetBeamSearchAngleStep(double beamSearchAngleStep)
Sets the value of BeamSearchAngleStep attribute.
BeamformingVectorPair GetBeamformingVectors(const Ptr< NrSpectrumPhy > &gnbSpectrumPhy, const Ptr< NrSpectrumPhy > &ueSpectrumPhy) const override
Function that generates the beamforming vectors for a pair of communicating devices by using cell sca...
static TypeId GetTypeId()
Get the type id.
~CellScanQuasiOmniBeamforming() override=default
destructor
CellScanQuasiOmniBeamforming()=default
constructor
The DirectPathBeamforming class.
BeamformingVectorPair GetBeamformingVectors(const Ptr< NrSpectrumPhy > &gnbSpectrumPhy, const Ptr< NrSpectrumPhy > &ueSpectrumPhy) const override
Function that generates the beamforming vectors for a pair of communicating devices by using the dire...
static TypeId GetTypeId()
Get the type id.
The QuasiOmniDirectPathBeamforming class.
BeamformingVectorPair GetBeamformingVectors(const Ptr< NrSpectrumPhy > &gnbSpectrumPhy, const Ptr< NrSpectrumPhy > &ueSpectrumPhy) const override
Function that generates the beamforming vectors for a pair of communicating devices by using the dire...
Generate "Ideal" beamforming vectors.
static TypeId GetTypeId()
Get the type id.
virtual BeamformingVectorPair GetBeamformingVectors(const Ptr< NrSpectrumPhy > &gnbSpectrumPhy, const Ptr< NrSpectrumPhy > &ueSpectrumPhy) const =0
Function that generates the beamforming vectors for a pair of communicating devices.
The OptimalCovMatrixBeamforming class not implemented yet. TODO The idea was to port one of the initi...
static TypeId GetTypeId()
Get the type id.
BeamformingVectorPair GetBeamformingVectors(const Ptr< NrSpectrumPhy > &gnbSpectrumPhy, const Ptr< NrSpectrumPhy > &ueSpectrumPhy) const override
Function that generates the beamforming vectors for a pair of communicating devices by using the dire...
The QuasiOmniDirectPathBeamforming class.
BeamformingVectorPair GetBeamformingVectors(const Ptr< NrSpectrumPhy > &gnbSpectrumPhy, const Ptr< NrSpectrumPhy > &ueSpectrumPhy) const override
Function that generates the beamforming vectors for a pair of communicating devices by using the quas...