author | Marco Miozzo <marco.miozzo@cttc.es> |
Mon, 03 Jun 2013 17:01:52 +0200 | |
changeset 10080 | 1b36e2276e15 |
parent 9014 | 9bcea2a55b9b |
child 10081 | f0879d02aafd |
permissions | -rw-r--r-- |
8184
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
1 |
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ |
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
2 |
/* |
8734
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
8643
diff
changeset
|
3 |
* Copyright (c) 2011, 2012 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC) |
8184
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
4 |
* |
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
5 |
* This program is free software; you can redistribute it and/or modify |
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
6 |
* it under the terms of the GNU General Public License version 2 as |
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
7 |
* published by the Free Software Foundation; |
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
8 |
* |
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
9 |
* This program is distributed in the hope that it will be useful, |
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
10 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
11 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
12 |
* GNU General Public License for more details. |
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
13 |
* |
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
14 |
* You should have received a copy of the GNU General Public License |
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
15 |
* along with this program; if not, write to the Free Software |
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
16 |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
17 |
* |
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
18 |
* Author: Marco Miozzo <marco.miozzo@cttc.es> |
8734
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
8643
diff
changeset
|
19 |
* Nicola Baldo <nbaldo@cttc.es> |
8184
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
20 |
* |
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
21 |
*/ |
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
22 |
|
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
23 |
#ifndef BUILDINGS_PROPAGATION_LOSS_MODEL_H_ |
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
24 |
#define BUILDINGS_PROPAGATION_LOSS_MODEL_H_ |
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
25 |
|
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
26 |
#include "ns3/nstime.h" |
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
27 |
#include "ns3/propagation-loss-model.h" |
8985
7752dc4ce7e9
Replace src/buildings and src/propagation usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents:
8734
diff
changeset
|
28 |
#include "ns3/random-variable-stream.h" |
8185
34b4d9b91019
Include pathloss models into BuildingsPropagationLossModel: Okumura Hata, ITU-R P.1411, ITU-R P.1238 and wall penetration loss
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8184
diff
changeset
|
29 |
#include <ns3/building.h> |
34b4d9b91019
Include pathloss models into BuildingsPropagationLossModel: Okumura Hata, ITU-R P.1411, ITU-R P.1238 and wall penetration loss
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8184
diff
changeset
|
30 |
#include <ns3/buildings-mobility-model.h> |
8184
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
31 |
|
8216
e16fcf31809f
Shadowing model introduced in BuildingPathlossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8208
diff
changeset
|
32 |
|
8184
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
33 |
namespace ns3 { |
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
34 |
|
8216
e16fcf31809f
Shadowing model introduced in BuildingPathlossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8208
diff
changeset
|
35 |
class ShadowingLossModel; |
e16fcf31809f
Shadowing model introduced in BuildingPathlossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8208
diff
changeset
|
36 |
class JakesFadingLossModel; |
8332 | 37 |
|
8184
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
38 |
/** |
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
39 |
* \ingroup propagation |
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
40 |
* |
8734
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
8643
diff
changeset
|
41 |
* This model provides means for simulating the following propagation |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
8643
diff
changeset
|
42 |
* phenomena in the presence of buildings: |
8184
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
43 |
* |
8734
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
8643
diff
changeset
|
44 |
* - shadowing (indoor, outdoor) |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
8643
diff
changeset
|
45 |
* - external wall penetration loss |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
8643
diff
changeset
|
46 |
* - internal wall penetration loss |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
8643
diff
changeset
|
47 |
* |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
8643
diff
changeset
|
48 |
* The distance-dependent component of propagation loss is deferred |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
8643
diff
changeset
|
49 |
* to derived classes which are expected to implement the GetLoss method. |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
8643
diff
changeset
|
50 |
* |
10080
1b36e2276e15
Move from BuildingsMobilityModel to BuildingMobilityInfo source, tests and examples
Marco Miozzo <marco.miozzo@cttc.es>
parents:
9014
diff
changeset
|
51 |
* \warning This model works only when MobilityBuildingInfo is aggreegated |
1b36e2276e15
Move from BuildingsMobilityModel to BuildingMobilityInfo source, tests and examples
Marco Miozzo <marco.miozzo@cttc.es>
parents:
9014
diff
changeset
|
52 |
* to the mobility model |
8184
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
53 |
* |
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
54 |
*/ |
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
55 |
|
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
56 |
class BuildingsPropagationLossModel : public PropagationLossModel |
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
57 |
{ |
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
58 |
|
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
59 |
public: |
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
60 |
static TypeId GetTypeId (void); |
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
61 |
|
9014
9bcea2a55b9b
remove static random variable from buildings module
Tom Henderson <tomh@tomh.org>
parents:
8985
diff
changeset
|
62 |
BuildingsPropagationLossModel (); |
8184
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
63 |
/** |
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
64 |
* \param a the mobility model of the source |
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
65 |
* \param b the mobility model of the destination |
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
66 |
* \returns the propagation loss (in dBm) |
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
67 |
*/ |
8643
3c7d21485f21
Update BuildingPropagationLossModel for working in Hybrid and Simple modes
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8636
diff
changeset
|
68 |
virtual double GetLoss (Ptr<MobilityModel> a, Ptr<MobilityModel> b) const = 0; |
8332 | 69 |
|
8734
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
8643
diff
changeset
|
70 |
// inherited from PropagationLossModel |
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
8643
diff
changeset
|
71 |
virtual double DoCalcRxPower (double txPowerDbm, Ptr<MobilityModel> a, Ptr<MobilityModel> b) const; |
8332 | 72 |
|
8643
3c7d21485f21
Update BuildingPropagationLossModel for working in Hybrid and Simple modes
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8636
diff
changeset
|
73 |
protected: |
10080
1b36e2276e15
Move from BuildingsMobilityModel to BuildingMobilityInfo source, tests and examples
Marco Miozzo <marco.miozzo@cttc.es>
parents:
9014
diff
changeset
|
74 |
double ExternalWallLoss (Ptr<MobilityBuildingInfo> a) const; |
1b36e2276e15
Move from BuildingsMobilityModel to BuildingMobilityInfo source, tests and examples
Marco Miozzo <marco.miozzo@cttc.es>
parents:
9014
diff
changeset
|
75 |
double HeightLoss (Ptr<MobilityBuildingInfo> n) const; |
1b36e2276e15
Move from BuildingsMobilityModel to BuildingMobilityInfo source, tests and examples
Marco Miozzo <marco.miozzo@cttc.es>
parents:
9014
diff
changeset
|
76 |
double InternalWallsLoss (Ptr<MobilityBuildingInfo> a, Ptr<MobilityBuildingInfo> b) const; |
8643
3c7d21485f21
Update BuildingPropagationLossModel for working in Hybrid and Simple modes
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8636
diff
changeset
|
77 |
|
8734
403c6e61d201
decouple most propagation models from buildings module
Nicola Baldo <nbaldo@cttc.es>
parents:
8643
diff
changeset
|
78 |
double GetShadowing (Ptr<MobilityModel> a, Ptr<MobilityModel> b) const; |
8332 | 79 |
|
8636
555a0a67af36
BuildingsPropagationLossModel: added internal wall loss
Nicola Baldo <nbaldo@cttc.es>
parents:
8577
diff
changeset
|
80 |
double m_lossInternalWall; // in meters |
8332 | 81 |
|
8636
555a0a67af36
BuildingsPropagationLossModel: added internal wall loss
Nicola Baldo <nbaldo@cttc.es>
parents:
8577
diff
changeset
|
82 |
|
8577
48bd78934632
faster implementation of shadowing in BuildingsPropagationLossModel
Nicola Baldo <nbaldo@cttc.es>
parents:
8332
diff
changeset
|
83 |
class ShadowingLoss |
8332 | 84 |
{ |
8577
48bd78934632
faster implementation of shadowing in BuildingsPropagationLossModel
Nicola Baldo <nbaldo@cttc.es>
parents:
8332
diff
changeset
|
85 |
public: |
48bd78934632
faster implementation of shadowing in BuildingsPropagationLossModel
Nicola Baldo <nbaldo@cttc.es>
parents:
8332
diff
changeset
|
86 |
ShadowingLoss (); |
9014
9bcea2a55b9b
remove static random variable from buildings module
Tom Henderson <tomh@tomh.org>
parents:
8985
diff
changeset
|
87 |
ShadowingLoss (double shadowingValue, Ptr<MobilityModel> receiver); |
8577
48bd78934632
faster implementation of shadowing in BuildingsPropagationLossModel
Nicola Baldo <nbaldo@cttc.es>
parents:
8332
diff
changeset
|
88 |
double GetLoss () const; |
48bd78934632
faster implementation of shadowing in BuildingsPropagationLossModel
Nicola Baldo <nbaldo@cttc.es>
parents:
8332
diff
changeset
|
89 |
Ptr<MobilityModel> GetReceiver (void) const; |
8643
3c7d21485f21
Update BuildingPropagationLossModel for working in Hybrid and Simple modes
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8636
diff
changeset
|
90 |
protected: |
9014
9bcea2a55b9b
remove static random variable from buildings module
Tom Henderson <tomh@tomh.org>
parents:
8985
diff
changeset
|
91 |
double m_shadowingValue; |
8577
48bd78934632
faster implementation of shadowing in BuildingsPropagationLossModel
Nicola Baldo <nbaldo@cttc.es>
parents:
8332
diff
changeset
|
92 |
Ptr<MobilityModel> m_receiver; |
8216
e16fcf31809f
Shadowing model introduced in BuildingPathlossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8208
diff
changeset
|
93 |
}; |
8577
48bd78934632
faster implementation of shadowing in BuildingsPropagationLossModel
Nicola Baldo <nbaldo@cttc.es>
parents:
8332
diff
changeset
|
94 |
|
48bd78934632
faster implementation of shadowing in BuildingsPropagationLossModel
Nicola Baldo <nbaldo@cttc.es>
parents:
8332
diff
changeset
|
95 |
mutable std::map<Ptr<MobilityModel>, std::map<Ptr<MobilityModel>, ShadowingLoss> > m_shadowingLossMap; |
10080
1b36e2276e15
Move from BuildingsMobilityModel to BuildingMobilityInfo source, tests and examples
Marco Miozzo <marco.miozzo@cttc.es>
parents:
9014
diff
changeset
|
96 |
double EvaluateSigma (Ptr<MobilityBuildingInfo> a, Ptr<MobilityBuildingInfo> b) const; |
8332 | 97 |
|
98 |
||
8216
e16fcf31809f
Shadowing model introduced in BuildingPathlossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8208
diff
changeset
|
99 |
double m_shadowingSigmaExtWalls; |
e16fcf31809f
Shadowing model introduced in BuildingPathlossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8208
diff
changeset
|
100 |
double m_shadowingSigmaOutdoor; |
e16fcf31809f
Shadowing model introduced in BuildingPathlossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8208
diff
changeset
|
101 |
double m_shadowingSigmaIndoor; |
9014
9bcea2a55b9b
remove static random variable from buildings module
Tom Henderson <tomh@tomh.org>
parents:
8985
diff
changeset
|
102 |
Ptr<NormalRandomVariable> m_randVariable; |
8184
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
103 |
|
8985
7752dc4ce7e9
Replace src/buildings and src/propagation usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents:
8734
diff
changeset
|
104 |
virtual int64_t DoAssignStreams (int64_t stream); |
8184
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
105 |
}; |
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
106 |
|
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
107 |
} |
b2d61f172004
Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff
changeset
|
108 |
|
8643
3c7d21485f21
Update BuildingPropagationLossModel for working in Hybrid and Simple modes
Marco Miozzo <marco.miozzo@cttc.es>
parents:
8636
diff
changeset
|
109 |
#endif /* BUILDINGS_PROPAGATION_LOSS_MODEL_H_ */ |