A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
cost231-propagation-loss-model.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2007,2008, 2009 INRIA, UDcast
3 *
4 * SPDX-License-Identifier: GPL-2.0-only
5 *
6 * Author: Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
7 * <amine.ismail@udcast.com>
8 */
9
10#ifndef COST231_PROPAGATION_LOSS_MODEL_H
11#define COST231_PROPAGATION_LOSS_MODEL_H
12
14
15#include "ns3/nstime.h"
16
17namespace ns3
18{
19
20/**
21 * @ingroup propagation
22 *
23 * @brief The COST-Hata-Model is the most often cited of the COST 231 models.
24 *
25 * Also called the Hata Model PCS Extension, it is a radio propagation model
26 * that extends the Hata Model (which in turn is based on the Okumura Model)
27 * to cover a more elaborated range of frequencies. COST (COperation
28 * europ�enne dans le domaine de la recherche Scientifique et Technique)
29 * is a European Union Forum for cooperative scientific research which has
30 * developed this model accordingly to various experiments and researches.
31 * This model is applicable to urban areas. To further evaluate Path Loss
32 * in Suburban or Rural Quasi-open/Open Areas.
33 * Frequency: 1500 MHz to 2000 MHz
34 * Mobile Station Antenna Height: 1 up to 10m
35 * Base station Antenna Height: 30m to 200m
36 * Link Distance:up to 20 km
37 *
38 * @note Although the classical COST-231 model has been empirically validated
39 * in the 1500 MHz to 2000 MHz frequency range, the ns-3 implementation
40 * historically defaults to 2.3 GHz due to its original use in WiMAX studies.
41 * Users are advised to consciously select the carrier frequency appropriate
42 * for their scenario and to exercise caution when operating far outside the
43 * classical validity range.
44 */
45
47{
48 public:
49 /**
50 * @brief Get the type ID.
51 * @return the object TypeId
52 */
53 static TypeId GetTypeId();
55
56 // Delete copy constructor and assignment operator to avoid misuse
59
60 /**
61 * Get the propagation loss
62 * @param a the mobility model of the source
63 * @param b the mobility model of the destination
64 * @returns the propagation loss (in dBm)
65 */
67
68 /**
69 * Set the BS antenna height
70 * @param height BS antenna height [m]
71 */
72 void SetBSAntennaHeight(double height);
73 /**
74 * Set the SS antenna height
75 * @param height SS antenna height [m]
76 */
77 void SetSSAntennaHeight(double height);
78
79 /**
80 * Set the wavelength
81 * @param lambda the wavelength
82 */
83 void SetLambda(double lambda);
84 /**
85 * Set the wavelength
86 * @param frequency the signal frequency [Hz]
87 * @param speed the signal speed [m/s]
88 */
89 void SetLambda(double frequency, double speed);
90 /**
91 * Set the minimum model distance
92 * @param minDistance the minimum model distance
93 */
94 void SetMinDistance(double minDistance);
95 /**
96 * Get the BS antenna height
97 * @returns BS antenna height [m]
98 */
99 double GetBSAntennaHeight() const;
100 /**
101 * Get the SS antenna height
102 * @returns SS antenna height [m]
103 */
104 double GetSSAntennaHeight() const;
105 /**
106 * Get the minimum model distance
107 * @returns the minimum model distance
108 */
109 double GetMinDistance() const;
110 /**
111 * Get the wavelength
112 * @returns the wavelength
113 */
114 double GetLambda() const;
115 /**
116 * Get the shadowing value
117 * @returns the shadowing value
118 */
119 double GetShadowing() const;
120 /**
121 * Set the shadowing value
122 * @param shadowing the shadowing value
123 */
124 void SetShadowing(double shadowing);
125
126 private:
127 double DoCalcRxPower(double txPowerDbm,
129 Ptr<MobilityModel> b) const override;
130 int64_t DoAssignStreams(int64_t stream) override;
131
132 double m_BSAntennaHeight; //!< BS Antenna Height [m]
133 double m_SSAntennaHeight; //!< SS Antenna Height [m]
134 double m_lambda; //!< The wavelength
135 double m_minDistance; //!< minimum distance [m]
136 double m_frequency; //!< frequency [Hz]
137 double m_shadowing; //!< Shadowing loss [dB]
138};
139
140} // namespace ns3
141
142#endif /* COST231PROPAGATIONMODEL_H */
double GetShadowing() const
Get the shadowing value.
void SetShadowing(double shadowing)
Set the shadowing value.
double GetLambda() const
Get the wavelength.
void SetBSAntennaHeight(double height)
Set the BS antenna height.
int64_t DoAssignStreams(int64_t stream) override
Assign a fixed random variable stream number to the random variables used by this model.
Cost231PropagationLossModel(const Cost231PropagationLossModel &)=delete
double GetBSAntennaHeight() const
Get the BS antenna height.
double GetSSAntennaHeight() const
Get the SS antenna height.
double GetMinDistance() const
Get the minimum model distance.
void SetSSAntennaHeight(double height)
Set the SS antenna height.
void SetLambda(double lambda)
Set the wavelength.
void SetMinDistance(double minDistance)
Set the minimum model distance.
double GetLoss(Ptr< MobilityModel > a, Ptr< MobilityModel > b) const
Get the propagation loss.
double DoCalcRxPower(double txPowerDbm, Ptr< MobilityModel > a, Ptr< MobilityModel > b) const override
PropagationLossModel.
Cost231PropagationLossModel & operator=(const Cost231PropagationLossModel &)=delete
Smart pointer class similar to boost::intrusive_ptr.
Definition ptr.h:70
a unique identifier for an interface.
Definition type-id.h:50
Every class exported by the ns3 library is enclosed in the ns3 namespace.