author | Vedran Mileti? <rivanvx@gmail.com> |
Sat, 01 Sep 2012 20:57:21 +0200 | |
changeset 9063 | 32755d0516f4 |
parent 8985 | 7752dc4ce7e9 |
child 10410 | 4d4eb8097fa3 |
permissions | -rw-r--r-- |
8734
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
1 |
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
2 |
/* |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
3 |
* Copyright (c) 2011, 2012 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC) |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
4 |
* |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
5 |
* This program is free software; you can redistribute it and/or modify |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
6 |
* it under the terms of the GNU General Public License version 2 as |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
7 |
* published by the Free Software Foundation; |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
8 |
* |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
9 |
* This program is distributed in the hope that it will be useful, |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
10 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
11 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
12 |
* GNU General Public License for more details. |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
13 |
* |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
14 |
* You should have received a copy of the GNU General Public License |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
15 |
* along with this program; if not, write to the Free Software |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
16 |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
17 |
* |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
18 |
* Author: Marco Miozzo <marco.miozzo@cttc.es>, |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
19 |
* Nicola Baldo <nbaldo@cttc.es> |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
20 |
* |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
21 |
*/ |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
22 |
#include "ns3/log.h" |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
23 |
#include "ns3/double.h" |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
24 |
#include "ns3/enum.h" |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
25 |
#include "ns3/mobility-model.h" |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
26 |
#include <cmath> |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
27 |
|
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
28 |
#include "itu-r-1411-nlos-over-rooftop-propagation-loss-model.h" |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
29 |
|
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
30 |
NS_LOG_COMPONENT_DEFINE ("ItuR1411NlosOverRooftopPropagationLossModel"); |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
31 |
|
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
32 |
namespace ns3 { |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
33 |
|
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
34 |
NS_OBJECT_ENSURE_REGISTERED (ItuR1411NlosOverRooftopPropagationLossModel); |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
35 |
|
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
36 |
|
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
37 |
TypeId |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
38 |
ItuR1411NlosOverRooftopPropagationLossModel::GetTypeId (void) |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
39 |
{ |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
40 |
static TypeId tid = TypeId ("ns3::ItuR1411NlosOverRooftopPropagationLossModel") |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
41 |
|
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
42 |
.SetParent<PropagationLossModel> () |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
43 |
|
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
44 |
.AddAttribute ("Frequency", |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
45 |
"The Frequency (default is 2.106 GHz).", |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
46 |
DoubleValue (2160e6), |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
47 |
MakeDoubleAccessor (&ItuR1411NlosOverRooftopPropagationLossModel::SetFrequency), |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
48 |
MakeDoubleChecker<double> ()) |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
49 |
|
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
50 |
|
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
51 |
.AddAttribute ("Environment", |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
52 |
"Environment Scenario", |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
53 |
EnumValue (UrbanEnvironment), |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
54 |
MakeEnumAccessor (&ItuR1411NlosOverRooftopPropagationLossModel::m_environment), |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
55 |
MakeEnumChecker (UrbanEnvironment, "Urban", |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
56 |
SubUrbanEnvironment, "SubUrban", |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
57 |
OpenAreasEnvironment, "OpenAreas")) |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
58 |
|
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
59 |
.AddAttribute ("CitySize", |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
60 |
"Dimension of the city", |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
61 |
EnumValue (LargeCity), |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
62 |
MakeEnumAccessor (&ItuR1411NlosOverRooftopPropagationLossModel::m_citySize), |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
63 |
MakeEnumChecker (SmallCity, "Small", |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
64 |
MediumCity, "Medium", |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
65 |
LargeCity, "Large")) |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
66 |
|
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
67 |
.AddAttribute ("RooftopLevel", |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
68 |
"The height of the rooftop level in meters", |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
69 |
DoubleValue (20.0), |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
70 |
MakeDoubleAccessor (&ItuR1411NlosOverRooftopPropagationLossModel::m_rooftopHeight), |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
71 |
MakeDoubleChecker<double> (0.0, 90.0)) |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
72 |
|
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
73 |
.AddAttribute ("StreetsOrientation", |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
74 |
"The orientation of streets in degrees [0,90] with respect to the direction of propagation", |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
75 |
DoubleValue (45.0), |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
76 |
MakeDoubleAccessor (&ItuR1411NlosOverRooftopPropagationLossModel::m_streetsOrientation), |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
77 |
MakeDoubleChecker<double> (0.0, 90.0)) |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
78 |
|
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
79 |
.AddAttribute ("StreetsWidth", |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
80 |
"The width of streets", |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
81 |
DoubleValue (20.0), |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
82 |
MakeDoubleAccessor (&ItuR1411NlosOverRooftopPropagationLossModel::m_streetsWidth), |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
83 |
MakeDoubleChecker<double> (0.0, 1000.0)) |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
84 |
|
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
85 |
.AddAttribute ("BuildingsExtend", |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
86 |
"The distance over which the buildings extend", |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
87 |
DoubleValue (80.0), |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
88 |
MakeDoubleAccessor (&ItuR1411NlosOverRooftopPropagationLossModel::m_buildingsExtend), |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
89 |
MakeDoubleChecker<double> ()) |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
90 |
|
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
91 |
.AddAttribute ("BuildingSeparation", |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
92 |
"The separation between buildings", |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
93 |
DoubleValue (50.0), |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
94 |
MakeDoubleAccessor (&ItuR1411NlosOverRooftopPropagationLossModel::m_buildingSeparation), |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
95 |
MakeDoubleChecker<double> ()); |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
96 |
|
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
97 |
return tid; |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
98 |
} |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
99 |
|
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
100 |
|
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
101 |
double |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
102 |
ItuR1411NlosOverRooftopPropagationLossModel::GetLoss (Ptr<MobilityModel> a, Ptr<MobilityModel> b) const |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
103 |
{ |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
104 |
NS_LOG_FUNCTION (this << a << b); |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
105 |
double Lori = 0.0; |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
106 |
double fmhz = m_frequency / 1e6; |
8735
b4a468ff2aad
revised buildings+propagation after review by Pavel http://codereview.appspot.com/5728062/
Nicola Baldo <nbaldo@cttc.es>
parents:
8734
diff
changeset
|
107 |
|
b4a468ff2aad
revised buildings+propagation after review by Pavel http://codereview.appspot.com/5728062/
Nicola Baldo <nbaldo@cttc.es>
parents:
8734
diff
changeset
|
108 |
NS_ASSERT_MSG (((m_streetsOrientation >= 0) && (m_streetsOrientation <= 90)), |
b4a468ff2aad
revised buildings+propagation after review by Pavel http://codereview.appspot.com/5728062/
Nicola Baldo <nbaldo@cttc.es>
parents:
8734
diff
changeset
|
109 |
" Street Orientation must be in [0,90]"); |
b4a468ff2aad
revised buildings+propagation after review by Pavel http://codereview.appspot.com/5728062/
Nicola Baldo <nbaldo@cttc.es>
parents:
8734
diff
changeset
|
110 |
if (m_streetsOrientation < 35) |
8734
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
111 |
{ |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
112 |
Lori = -10.0 + 0.354 * m_streetsOrientation; |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
113 |
} |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
114 |
else if ((m_streetsOrientation >= 35)&&(m_streetsOrientation < 55)) |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
115 |
{ |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
116 |
Lori = 2.5 + 0.075 * (m_streetsOrientation - 35); |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
117 |
} |
8735
b4a468ff2aad
revised buildings+propagation after review by Pavel http://codereview.appspot.com/5728062/
Nicola Baldo <nbaldo@cttc.es>
parents:
8734
diff
changeset
|
118 |
else // m_streetsOrientation >= 55 |
8734
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
119 |
{ |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
120 |
Lori = 2.5 + 0.075 * (m_streetsOrientation - 55); |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
121 |
} |
8735
b4a468ff2aad
revised buildings+propagation after review by Pavel http://codereview.appspot.com/5728062/
Nicola Baldo <nbaldo@cttc.es>
parents:
8734
diff
changeset
|
122 |
|
8734
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
123 |
double distance = a->GetDistanceFrom (b); |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
124 |
double hb = (a->GetPosition ().z > b->GetPosition ().z ? a->GetPosition ().z : b->GetPosition ().z); |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
125 |
double hm = (a->GetPosition ().z < b->GetPosition ().z ? a->GetPosition ().z : b->GetPosition ().z); |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
126 |
NS_ASSERT_MSG (hm > 0 && hb > 0, "nodes' height must be greater then 0"); |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
127 |
double Dhb = hb - m_rooftopHeight; |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
128 |
double ds = (m_lambda * distance * distance) / (Dhb * Dhb); |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
129 |
double Lmsd = 0.0; |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
130 |
NS_LOG_LOGIC (this << " build " << m_buildingsExtend << " ds " << ds << " roof " << m_rooftopHeight << " hb " << hb << " lambda " << m_lambda); |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
131 |
if (ds < m_buildingsExtend) |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
132 |
{ |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
133 |
double Lbsh = 0.0; |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
134 |
double ka = 0.0; |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
135 |
double kd = 0.0; |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
136 |
double kf = 0.0; |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
137 |
if (hb > m_rooftopHeight) |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
138 |
{ |
9063
32755d0516f4
Bug 1237 - code cleanups related to includes
Vedran Mileti? <rivanvx@gmail.com>
parents:
8985
diff
changeset
|
139 |
Lbsh = -18 * std::log10 (1 + Dhb); |
8734
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
140 |
ka = (fmhz > 2000 ? 71.4 : 54.0); |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
141 |
kd = 18.0; |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
142 |
} |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
143 |
else |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
144 |
{ |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
145 |
Lbsh = 0; |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
146 |
kd = 18.0 - 15 * Dhb / a->GetPosition ().z; |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
147 |
if (distance < 500) |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
148 |
{ |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
149 |
ka = 54.0 - 1.6 * Dhb * distance / 1000; |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
150 |
} |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
151 |
else |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
152 |
{ |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
153 |
ka = 54.0 - 0.8 * Dhb; |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
154 |
} |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
155 |
} |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
156 |
if (fmhz > 2000) |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
157 |
{ |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
158 |
kf = -8; |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
159 |
} |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
160 |
else if ((m_environment == UrbanEnvironment)&&(m_citySize == LargeCity)) |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
161 |
{ |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
162 |
kf = -4 + 0.7 * (fmhz / 925.0 - 1); |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
163 |
} |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
164 |
else |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
165 |
{ |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
166 |
kf = -4 + 1.5 * (fmhz / 925.0 - 1); |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
167 |
} |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
168 |
|
9063
32755d0516f4
Bug 1237 - code cleanups related to includes
Vedran Mileti? <rivanvx@gmail.com>
parents:
8985
diff
changeset
|
169 |
Lmsd = Lbsh + ka + kd * std::log10 (distance / 1000.0) + kf * std::log10 (fmhz) - 9.0 * std::log10 (m_buildingSeparation); |
8734
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
170 |
} |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
171 |
else |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
172 |
{ |
9063
32755d0516f4
Bug 1237 - code cleanups related to includes
Vedran Mileti? <rivanvx@gmail.com>
parents:
8985
diff
changeset
|
173 |
double theta = std::atan (Dhb / m_buildingSeparation); |
32755d0516f4
Bug 1237 - code cleanups related to includes
Vedran Mileti? <rivanvx@gmail.com>
parents:
8985
diff
changeset
|
174 |
double rho = std::sqrt (Dhb * Dhb + m_buildingSeparation * m_buildingSeparation); |
8734
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
175 |
double Qm = 0.0; |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
176 |
if ((hb > m_rooftopHeight - 1.0) && (hb < m_rooftopHeight + 1.0)) |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
177 |
{ |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
178 |
Qm = m_buildingSeparation / distance; |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
179 |
} |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
180 |
else if (hb > m_rooftopHeight) |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
181 |
{ |
9063
32755d0516f4
Bug 1237 - code cleanups related to includes
Vedran Mileti? <rivanvx@gmail.com>
parents:
8985
diff
changeset
|
182 |
Qm = 2.35 * pow (Dhb / distance * std::sqrt (m_buildingSeparation / m_lambda), 0.9); |
8734
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
183 |
} |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
184 |
else |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
185 |
{ |
9063
32755d0516f4
Bug 1237 - code cleanups related to includes
Vedran Mileti? <rivanvx@gmail.com>
parents:
8985
diff
changeset
|
186 |
Qm = m_buildingSeparation / (2 * M_PI * distance) * std::sqrt (m_lambda / rho) * (1 / theta - (1 / (2 * M_PI + theta))); |
8734
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
187 |
} |
9063
32755d0516f4
Bug 1237 - code cleanups related to includes
Vedran Mileti? <rivanvx@gmail.com>
parents:
8985
diff
changeset
|
188 |
Lmsd = -10 * std::log10 (Qm * Qm); |
8734
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
189 |
} |
9063
32755d0516f4
Bug 1237 - code cleanups related to includes
Vedran Mileti? <rivanvx@gmail.com>
parents:
8985
diff
changeset
|
190 |
double Lbf = 32.4 + 20 * std::log10 (distance / 1000) + 20 * std::log10 (fmhz); |
8734
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
191 |
double Dhm = m_rooftopHeight - hm; |
9063
32755d0516f4
Bug 1237 - code cleanups related to includes
Vedran Mileti? <rivanvx@gmail.com>
parents:
8985
diff
changeset
|
192 |
double Lrts = -8.2 - 10 * std::log10 (m_streetsWidth) + 10 * std::log10 (fmhz) + 20 * std::log10 (Dhm) + Lori; |
8734
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
193 |
NS_LOG_LOGIC (this << " Lbf " << Lbf << " Lrts " << Lrts << " Dhm" << Dhm << " Lmsd " << Lmsd); |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
194 |
double loss = 0.0; |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
195 |
if (Lrts + Lmsd > 0) |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
196 |
{ |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
197 |
loss = Lbf + Lrts + Lmsd; |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
198 |
} |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
199 |
else |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
200 |
{ |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
201 |
loss = Lbf; |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
202 |
} |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
203 |
return loss; |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
204 |
} |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
205 |
|
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
206 |
|
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
207 |
void |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
208 |
ItuR1411NlosOverRooftopPropagationLossModel::SetFrequency (double freq) |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
209 |
{ |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
210 |
m_frequency = freq; |
8744
5ee0d10aa9bd
correct light speed in ITU-R porpagation models
Nicola Baldo <nbaldo@cttc.es>
parents:
8735
diff
changeset
|
211 |
m_lambda = 299792458.0 / freq; |
8734
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
212 |
} |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
213 |
|
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
214 |
|
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
215 |
double |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
216 |
ItuR1411NlosOverRooftopPropagationLossModel::DoCalcRxPower (double txPowerDbm, |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
217 |
Ptr<MobilityModel> a, |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
218 |
Ptr<MobilityModel> b) const |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
219 |
{ |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
220 |
return (txPowerDbm - GetLoss (a, b)); |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
221 |
} |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
222 |
|
8985
7752dc4ce7e9
Replace src/buildings and src/propagation usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents:
8744
diff
changeset
|
223 |
int64_t |
7752dc4ce7e9
Replace src/buildings and src/propagation usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents:
8744
diff
changeset
|
224 |
ItuR1411NlosOverRooftopPropagationLossModel::DoAssignStreams (int64_t stream) |
7752dc4ce7e9
Replace src/buildings and src/propagation usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents:
8744
diff
changeset
|
225 |
{ |
7752dc4ce7e9
Replace src/buildings and src/propagation usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents:
8744
diff
changeset
|
226 |
return 0; |
7752dc4ce7e9
Replace src/buildings and src/propagation usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents:
8744
diff
changeset
|
227 |
} |
7752dc4ce7e9
Replace src/buildings and src/propagation usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents:
8744
diff
changeset
|
228 |
|
8734
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
229 |
|
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
diff
changeset
|
230 |
} // namespace ns3 |