5G-LENA  nr-v3.0-29-g83cc959
The 5G/NR module for the ns-3 simulator
beamforming-vector.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_BEAMFORMING_VECTOR_H_
8 #define SRC_NR_MODEL_BEAMFORMING_VECTOR_H_
9 
10 #include "beam-id.h"
11 
12 #include <ns3/mobility-model.h>
13 #include <ns3/uniform-planar-array.h>
14 
15 namespace ns3
16 {
17 
29 typedef std::pair<PhasedArrayModel::ComplexVector, BeamId> BeamformingVector;
30 
31 typedef std::pair<BeamformingVector, BeamformingVector> BeamformingVectorPair;
32 
39 PhasedArrayModel::ComplexVector CreateQuasiOmniBfv(const Ptr<const UniformPlanarArray>& antenna);
40 
49 PhasedArrayModel::ComplexVector CreateDirectionalBfv(const Ptr<const UniformPlanarArray>& antenna,
50  uint16_t sector,
51  double elevation);
52 
61 PhasedArrayModel::ComplexVector CreateDirectionalBfvAz(const Ptr<const UniformPlanarArray>& antenna,
62  double azimuth,
63  double zenith);
64 
73 PhasedArrayModel::ComplexVector CreateDirectPathBfv(const Ptr<MobilityModel>& a,
74  const Ptr<MobilityModel>& b,
75  const Ptr<const UniformPlanarArray>& antenna);
76 
77 } // namespace ns3
78 
79 #endif /* SRC_NR_MODEL_BEAMFORMING_VECTOR_H_ */
std::pair< PhasedArrayModel::ComplexVector, BeamId > BeamformingVector
Physical representation of a beam.
PhasedArrayModel::ComplexVector CreateDirectionalBfvAz(const Ptr< const UniformPlanarArray > &antenna, double azimuth, double zenith)
Creates a beamforming vector for a given azimuth and zenith.
PhasedArrayModel::ComplexVector CreateQuasiOmniBfv(const Ptr< const UniformPlanarArray > &antenna)
Create a quasi omni beamforming vector.
PhasedArrayModel::ComplexVector CreateDirectionalBfv(const Ptr< const UniformPlanarArray > &antenna, uint16_t sector, double elevation)
Creates a beamforming vector for a given sector and elevation.