src/propagation/model/buildings-propagation-loss-model.cc
author Marco Miozzo <marco.miozzo@cttc.es>
Wed, 13 Jul 2011 17:34:48 +0200
changeset 8197 d30c889fb0c2
parent 8195 62266d17165d
child 8199 c4a088b91ec8
permissions -rw-r--r--
Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
/*
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
     3
 * Copyright (c) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
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>
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    19
 * 
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
#include "ns3/propagation-loss-model.h"
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    23
#include "ns3/log.h"
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    24
#include "ns3/mobility-model.h"
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    25
#include "ns3/double.h"
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    26
#include "ns3/pointer.h"
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    27
#include <math.h>
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    28
#include "buildings-propagation-loss-model.h"
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    29
#include "ns3/buildings-mobility-model.h"
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    30
8187
92c99a893aa2 Add StoneBlocks external walls penetration model
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8185
diff changeset
    31
NS_LOG_COMPONENT_DEFINE ("BuildingsPropagationLossModel");
92c99a893aa2 Add StoneBlocks external walls penetration model
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8185
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
8187
92c99a893aa2 Add StoneBlocks external walls penetration model
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8185
diff changeset
    35
8184
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    36
NS_OBJECT_ENSURE_REGISTERED (BuildingsPropagationLossModel);
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    37
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    38
TypeId
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    39
BuildingsPropagationLossModel::GetTypeId (void)
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    40
{
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    41
  static TypeId tid = TypeId ("ns3::BuildingsPropagationLossModel")
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    42
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    43
    .SetParent<PropagationLossModel> ()
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    44
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    45
    .AddConstructor<BuildingsPropagationLossModel> ()
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    46
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    47
    .AddAttribute ("Lambda",
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    48
                   "The wavelength  (default is 2.3 GHz at 300 000 km/s).",
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    49
                   DoubleValue (300000000.0 / 2.3e9),
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    50
                   MakeDoubleAccessor (&BuildingsPropagationLossModel::m_lambda),
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    51
                   MakeDoubleChecker<double> ())
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    52
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    53
    .AddAttribute ("Frequency",
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    54
                   "The Frequency  (default is 2.3 GHz).",
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    55
                   DoubleValue (2.3e9),
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    56
                   MakeDoubleAccessor (&BuildingsPropagationLossModel::m_frequency),
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    57
                   MakeDoubleChecker<double> ())
8193
4aa1c097a00e LtePathlossModelTestSuite on-going work
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8192
diff changeset
    58
                   
4aa1c097a00e LtePathlossModelTestSuite on-going work
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8192
diff changeset
    59
    .AddAttribute ("RooftopLevel",
4aa1c097a00e LtePathlossModelTestSuite on-going work
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8192
diff changeset
    60
                  " The height of the rooftop [m].",
4aa1c097a00e LtePathlossModelTestSuite on-going work
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8192
diff changeset
    61
                  DoubleValue (30.0),
8197
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
    62
                  MakeDoubleAccessor (&BuildingsPropagationLossModel::m_rooftopHeight),
8193
4aa1c097a00e LtePathlossModelTestSuite on-going work
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8192
diff changeset
    63
                  MakeDoubleChecker<double> ())
4aa1c097a00e LtePathlossModelTestSuite on-going work
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8192
diff changeset
    64
                   
8184
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    65
    .AddAttribute ("MinDistance",
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    66
                   "The distance under which the propagation model refuses to give results (m) ",
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    67
                   DoubleValue (0.5),
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    68
                   MakeDoubleAccessor (&BuildingsPropagationLossModel::SetMinDistance, &BuildingsPropagationLossModel::GetMinDistance),
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    69
                   MakeDoubleChecker<double> ());
8193
4aa1c097a00e LtePathlossModelTestSuite on-going work
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8192
diff changeset
    70
    
8184
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    71
  return tid;
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    72
}
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    73
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    74
BuildingsPropagationLossModel::BuildingsPropagationLossModel () :
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    75
  C (0),
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    76
  m_environment (Urban),
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    77
  m_citySize (Large)
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    78
{
8187
92c99a893aa2 Add StoneBlocks external walls penetration model
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8185
diff changeset
    79
  NS_LOG_INFO (this << " BuildingsPropagationLossModel");
8184
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    80
}
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    81
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    82
void
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    83
BuildingsPropagationLossModel::SetLambda (double frequency, double speed)
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    84
{
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    85
  m_lambda = speed / frequency;
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    86
  m_frequency = frequency;
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    87
}
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    88
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    89
void
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    90
BuildingsPropagationLossModel::SetLambda (double lambda)
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    91
{
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    92
  m_lambda = lambda;
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    93
  m_frequency = 300000000 / lambda;
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    94
}
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    95
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    96
double
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    97
BuildingsPropagationLossModel::GetLambda (void) const
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    98
{
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    99
  return m_lambda;
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   100
}
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   101
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   102
void
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   103
BuildingsPropagationLossModel::SetMinDistance (double minDistance)
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   104
{
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   105
  m_minDistance = minDistance;
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
double
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   108
BuildingsPropagationLossModel::GetMinDistance (void) const
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   109
{
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   110
  return m_minDistance;
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   111
}
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   112
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   113
void
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   114
BuildingsPropagationLossModel::SetEnvironment (Environment env)
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   115
{
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   116
  m_environment = env;
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   117
}
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   118
BuildingsPropagationLossModel::Environment
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   119
BuildingsPropagationLossModel::GetEnvironment (void) const
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   120
{
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   121
  return m_environment;
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   122
}
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   123
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   124
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   125
double
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
   126
BuildingsPropagationLossModel::OkumuraHata (Ptr<BuildingsMobilityModel> a, Ptr<BuildingsMobilityModel> b) const
8184
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   127
{
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   128
  // Hp: a is the rooftop antenna (from GetLoss logic)
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   129
  double loss = 0.0;
8193
4aa1c097a00e LtePathlossModelTestSuite on-going work
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8192
diff changeset
   130
  if (m_frequency<=1.500e9)
8184
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   131
    {
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   132
      // standard Okumura Hata (from wikipedia)
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   133
      double log_f = log10 (m_frequency);
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   134
      double log_aHeight = 13.82 * log10 (a->GetPosition ().z);
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   135
      double log_bHeight = 0.0;
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   136
      if (m_citySize == Large)
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   137
        {
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   138
          if (m_frequency<200)
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   139
            {
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   140
              log_bHeight = 8.29 * pow (log10 (1.54 * b->GetPosition ().z), 2) -  1.1;
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   141
            }
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   142
          else
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   143
            {
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   144
              log_bHeight = 3.2 * pow (log10 (11.75 * b->GetPosition ().z), 2) - 4.97;
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   145
            }
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   146
        }
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   147
      else
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   148
        {
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   149
          log_bHeight = 0.8 + (1.1*log10(m_frequency) - 0.7)*b->GetPosition ().z - 1.56*log10(m_frequency);
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   150
        }
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   151
      
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   152
      loss = 69.55 + (26.16 * log_f) - log_aHeight + (((44.9 - (6.55 * log_f) ))*log10 (a->GetDistanceFrom (b))) - log_bHeight;
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   153
      
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   154
      if (m_environment == SubUrban)
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   155
        {
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   156
          loss += 2 * (pow(log10 (m_frequency / 28), 2)) - 5.4;
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   157
        }
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   158
      else if (m_environment == OpenAreas)
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   159
        {
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   160
          loss += -4.70*pow(log10(m_frequency),2) + 18.33*log10(m_frequency) - 40.94;
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   161
        }
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   162
          
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   163
    }
8193
4aa1c097a00e LtePathlossModelTestSuite on-going work
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8192
diff changeset
   164
  else if (m_frequency <= 2.170e9) // max 3GPP freq EUTRA band #1
8184
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   165
    {
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   166
      // COST 231 Okumura model
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   167
      double log_f = log10 (m_frequency);
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   168
      double log_aHeight = 13.83 * log10 (a->GetPosition ().z);
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   169
      double log_bHeight = 0.0;
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   170
      if (m_citySize == Large)
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   171
        {
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   172
          log_bHeight = 3.2 * pow ((log10(11.75 * b->GetPosition ().z)),2);
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   173
        }
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   174
      else
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   175
        {
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   176
          log_bHeight = 1.1*log10(m_frequency) - 0.7*b->GetPosition ().z - (1.56*log10(m_frequency) - 0.8);
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   177
        }
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   178
      
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   179
      loss = 46.3 + (33.9 * log_f) - log_aHeight + (((44.9 - (6.55 * log_f) ))*log10 (a->GetDistanceFrom (b))) - log_bHeight;
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   180
    }
8193
4aa1c097a00e LtePathlossModelTestSuite on-going work
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8192
diff changeset
   181
  else if (m_frequency <= 2.690e9) // max 3GPP freq EUTRA band #1
8184
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   182
    {
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   183
      // Empirical model from
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   184
      // "Path Loss Models for Suburban Scenario at 2.3GHz, 2.6GHz and 3.5GHz"
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   185
      // Sun Kun, Wang Ping, Li Yingze
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   186
      // Antennas, Propagation and EM Theory, 2008. ISAPE 2008. 8th International Symposium on 
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   187
      loss = 36 + 26*log10(a->GetDistanceFrom (b));
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   188
    }
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   189
      
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   190
  return (loss);
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   191
}
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   192
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   193
8197
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   194
8184
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   195
double
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
   196
BuildingsPropagationLossModel::ItuR1411 (Ptr<BuildingsMobilityModel> a, Ptr<BuildingsMobilityModel> b) const
8184
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   197
{
8197
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   198
  return (ItuR1411Los (a,b));
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   199
}
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   200
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   201
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   202
double
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   203
BuildingsPropagationLossModel::ItuR1411Los (Ptr<BuildingsMobilityModel> a, Ptr<BuildingsMobilityModel> b) const
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   204
{
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
   205
  double dist = a->GetDistanceFrom (b);
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
   206
  double lossLow = 0.0;
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
   207
  double lossUp = 0.0;
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
   208
  double pi = 3.141592653589793;
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
   209
  double Lbp = 20*log10(m_lambda*m_lambda/(8*pi*a->GetPosition ().z*b->GetPosition ().z));
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
   210
  double Rbp = (4 * a->GetPosition ().z * b->GetPosition ().z) / m_lambda;
8197
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   211
  //   NS_LOG_INFO (this << " Lbp " << Lbp << " Rbp " << Rbp);
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
   212
  if (dist <= Rbp)
8197
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   213
  {
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   214
    lossLow = Lbp + 20*log10(dist/Rbp);
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   215
    lossUp = Lbp + 20 + 25*log10(dist/Rbp);
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   216
  }
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
   217
  else
8197
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   218
  {
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   219
    lossLow = Lbp + 40*log10(dist/Rbp);
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   220
    lossUp = Lbp + 20 + 40*log10(dist/Rbp);
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   221
  }
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
   222
  
8193
4aa1c097a00e LtePathlossModelTestSuite on-going work
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8192
diff changeset
   223
  double loss = (lossUp + lossLow) / 2;
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
   224
  
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
   225
  return (loss);
8184
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   226
}
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   227
8197
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   228
double
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   229
BuildingsPropagationLossModel::ItuR1411Nlos (Ptr<BuildingsMobilityModel> a, Ptr<BuildingsMobilityModel> b) const
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   230
{
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   231
  if ((a->GetPosition ().z>m_rooftopHeight) || (b->GetPosition ().z>m_rooftopHeight))
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   232
  {
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   233
    return (ItuR1411NlosOverRooftop (a,b));
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   234
  }
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   235
  else
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   236
  {
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   237
    return (ItuR1411NlosStreetCanyons (a,b));
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   238
  }
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   239
}
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   240
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   241
double
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   242
BuildingsPropagationLossModel::ItuR1411NlosOverRooftop (Ptr<BuildingsMobilityModel> a, Ptr<BuildingsMobilityModel> b) const
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   243
{
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   244
  double Lori = 0.0;
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   245
  if ((m_streetsOrientation>=0)&&(m_streetsOrientation<35))
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   246
    {
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   247
      Lori = -10.0 + 0.354*m_streetsOrientation;
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   248
    }
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   249
  else if ((m_streetsOrientation>=35)&&(m_streetsOrientation<55))
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   250
    {
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   251
      Lori = 2.5 + 0.075*m_streetsOrientation;
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   252
    }
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   253
  else if ((m_streetsOrientation>=55)&&(m_streetsOrientation<90))
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   254
    {
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   255
      Lori = 2.5 + 0.075*m_streetsOrientation;
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   256
    }
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   257
  else
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   258
    {
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   259
      NS_LOG_ERROR (this << " Street Orientation must be in [0,90]");
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   260
    }
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   261
    
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   262
  double Lrts = -8.2 -10*log10(m_streetsWidth) + 20*log10(m_rooftopHeight - b->GetPosition ().z) + Lori;
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   263
  double distance = a->GetDistanceFrom (b);
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   264
  double Dhb = a->GetPosition ().z - m_rooftopHeight;
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   265
  double ds = (m_lambda * distance * distance) / (Dhb * Dhb);
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   266
  double Lmsd = 0.0;
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   267
  double pi = 3.141592653589793;
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   268
  if (ds < m_buildingsExtend)
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   269
    {
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   270
      double Lbsh = 0.0;
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   271
      double ka = 0.0;
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   272
      double kd = 0.0;
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   273
      double kf = 0.0;
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   274
      if ((a->GetPosition ().z > m_rooftopHeight) || (b->GetPosition ().z > m_rooftopHeight))
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   275
        {
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   276
          Lbsh = -18*log10(1+Dhb);
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   277
          ka = 54.0;
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   278
          kd = 18.0;
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   279
        }
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   280
      else 
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   281
        {
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   282
          Lbsh = 0;
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   283
          kd = 18.0 - 15*Dhb/a->GetPosition ().z;
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   284
          if (distance <500)
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   285
            {
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   286
              ka = 54.0 - 1.6*Dhb*distance/1000;
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   287
            }
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   288
            else
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   289
            {
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   290
              ka = 54.0 - 0.8*Dhb;
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   291
            }
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   292
        }
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   293
      if ((m_environment==Urban)&&(m_citySize==Large))
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   294
        {
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   295
          kf = 0.7*(m_frequency/925.0 -1);
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   296
        }
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   297
      else
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   298
        {
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   299
          kf = 1.5*(m_frequency/925.0 -1);
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   300
        }
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   301
      Lmsd = Lbsh + ka + kd*log10(distance/1000.0) + kf*log10(m_frequency) -9.0*log10(m_buildingSeparation); // CHECK last d (it's "b" in ITU)
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   302
    }
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   303
  else
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   304
    {
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   305
      double theta = atan (Dhb/m_buildingSeparation);
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   306
      double rho = sqrt(Dhb*Dhb+m_buildingSeparation*m_buildingSeparation);
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   307
      double hb = a->GetPosition ().z;
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   308
      double Qm = 0.0;
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   309
      if ((hb > m_rooftopHeight -1.0) && (hb < m_rooftopHeight + 1.0))
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   310
        {
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   311
          Qm = m_buildingSeparation / distance;
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   312
        }
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   313
      else if (hb > m_rooftopHeight)
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   314
        {
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   315
          Qm = 2.35*pow(Dhb/distance*sqrt(m_buildingSeparation/m_lambda), 0.9);
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   316
        }
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   317
      else
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   318
        {
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   319
          Qm = m_buildingSeparation/(2*pi*distance)*sqrt(m_lambda/rho)*(1/theta-(1/(2*pi+theta)));
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   320
        }
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   321
        
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   322
      Lmsd = -10*log10(Qm*Qm);
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   323
    }
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   324
  double Lbf = 32.4 + 20*log10(distance/1000) + 20*log10(m_frequency);
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   325
  
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   326
  double loss = 0.0;
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   327
  if (Lrts + Lmsd > 0)
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   328
    {
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   329
      loss = Lbf + Lrts + Lmsd;
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   330
    }
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   331
  else
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   332
    {
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   333
      loss = Lbf;
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   334
    }
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   335
  return (loss);
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   336
}
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   337
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   338
double
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   339
BuildingsPropagationLossModel::ItuR1411NlosStreetCanyons (Ptr<BuildingsMobilityModel> a, Ptr<BuildingsMobilityModel> b) const
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   340
{
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   341
  
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   342
  return (0.0);
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   343
}
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   344
8184
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   345
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   346
double
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
   347
BuildingsPropagationLossModel::ItuR1238 (Ptr<BuildingsMobilityModel> a, Ptr<BuildingsMobilityModel> b) const
8184
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   348
{
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
   349
  double N = 0.0;
8195
62266d17165d Add floor penetration loss in ITUP1238 model of BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8193
diff changeset
   350
  int n = abs (a->GetFloorNumber () - b->GetFloorNumber ());
62266d17165d Add floor penetration loss in ITUP1238 model of BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8193
diff changeset
   351
  NS_LOG_INFO (this << " A floor " << (uint16_t)a->GetFloorNumber () << " B floor " << (uint16_t)b->GetFloorNumber () << " n " << n);
62266d17165d Add floor penetration loss in ITUP1238 model of BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8193
diff changeset
   352
  double Lf = 0.0;
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
   353
  Ptr<Building> aBuilding = a->GetBuilding ();
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
   354
  if (aBuilding->GetBuildingType () == Building::Residential)
8197
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   355
  {
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   356
    N = 28;
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   357
    Lf = 4 * n;
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   358
  }
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
   359
  else if (aBuilding->GetBuildingType () == Building::Office)
8197
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   360
  {
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   361
    N = 30;
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   362
    Lf = 15 + (4 * (n-1));
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   363
  }
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
   364
  else if (aBuilding->GetBuildingType () == Building::Commercial)
8197
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   365
  {
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   366
    N = 22;
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   367
    Lf = 6 + (3 * (n-1));
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   368
  }
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
   369
  else
8197
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   370
  {
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   371
    NS_LOG_ERROR (this << " Unkwnon Wall Type");
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   372
  }
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   373
  
8195
62266d17165d Add floor penetration loss in ITUP1238 model of BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8193
diff changeset
   374
  double loss = 20*log10(m_frequency) + N*log10(a->GetDistanceFrom (b)) + Lf - 28.0;
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
   375
  
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
   376
  return (loss);
8184
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   377
}
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   378
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   379
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   380
double
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
   381
BuildingsPropagationLossModel::BEWPL (Ptr<BuildingsMobilityModel> a) const
8184
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   382
{
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
   383
  double loss = 0.0;
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
   384
  Ptr<Building> aBuilding = a->GetBuilding ();
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
   385
  if (aBuilding->GetExtWallsType () == Building::Wood)
8187
92c99a893aa2 Add StoneBlocks external walls penetration model
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8185
diff changeset
   386
    {
92c99a893aa2 Add StoneBlocks external walls penetration model
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8185
diff changeset
   387
      loss = 4;
92c99a893aa2 Add StoneBlocks external walls penetration model
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8185
diff changeset
   388
    }
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
   389
  else if (aBuilding->GetExtWallsType () == Building::ConcreteWithWindows)
8187
92c99a893aa2 Add StoneBlocks external walls penetration model
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8185
diff changeset
   390
    {
92c99a893aa2 Add StoneBlocks external walls penetration model
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8185
diff changeset
   391
      loss = 7;
92c99a893aa2 Add StoneBlocks external walls penetration model
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8185
diff changeset
   392
    }
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
   393
  else if (aBuilding->GetExtWallsType () == Building::ConcreteWithoutWindows)
8187
92c99a893aa2 Add StoneBlocks external walls penetration model
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8185
diff changeset
   394
    {
92c99a893aa2 Add StoneBlocks external walls penetration model
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8185
diff changeset
   395
      loss = 10; // 10 ~ 20 dB
92c99a893aa2 Add StoneBlocks external walls penetration model
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8185
diff changeset
   396
    }
92c99a893aa2 Add StoneBlocks external walls penetration model
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8185
diff changeset
   397
  else if (aBuilding->GetExtWallsType () == Building::StoneBlocks)
92c99a893aa2 Add StoneBlocks external walls penetration model
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8185
diff changeset
   398
    {
92c99a893aa2 Add StoneBlocks external walls penetration model
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8185
diff changeset
   399
      loss = 12;
92c99a893aa2 Add StoneBlocks external walls penetration model
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8185
diff changeset
   400
    }
92c99a893aa2 Add StoneBlocks external walls penetration model
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8185
diff changeset
   401
  
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
   402
    
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
   403
  return (loss);
8184
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   404
}
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   405
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   406
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   407
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   408
double
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   409
BuildingsPropagationLossModel::GetLoss (Ptr<MobilityModel> a, Ptr<MobilityModel> b) const
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   410
{
8187
92c99a893aa2 Add StoneBlocks external walls penetration model
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8185
diff changeset
   411
  
8184
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   412
  double distance = a->GetDistanceFrom (b);
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   413
  if (distance <= m_minDistance)
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   414
    {
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   415
      return 0.0;
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   416
    }
8192
0d4ca39493cb LtePathlossModelTestSuite first draft (compile and run)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8190
diff changeset
   417
8184
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   418
  // get the BuildingsMobilityModel pointers
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   419
  Ptr<BuildingsMobilityModel> a1 = DynamicCast<BuildingsMobilityModel> (a);
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   420
  Ptr<BuildingsMobilityModel> b1 = DynamicCast<BuildingsMobilityModel> (b);
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   421
  
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   422
  double loss = 0.0;
8197
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   423
  NS_LOG_INFO (this << " rooftop " << m_rooftopHeight);
8184
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   424
  
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   425
  if (a1->IsOutdoor ())
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   426
    {
8192
0d4ca39493cb LtePathlossModelTestSuite first draft (compile and run)
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8190
diff changeset
   427
      if (b1->IsOutdoor ())
8184
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   428
        {
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   429
          if (distance > 1000)
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   430
            {
8197
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   431
              if ((a1->GetPosition ().z > m_rooftopHeight)
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   432
                || (b1->GetPosition ().z > m_rooftopHeight))
8184
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   433
                {
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   434
                  // Over the rooftop tranmission -> Okumura Hata
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   435
                  loss = OkumuraHata (a1, b1);
8193
4aa1c097a00e LtePathlossModelTestSuite on-going work
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8192
diff changeset
   436
                  NS_LOG_INFO (this << " O-O (>1000): Over the rooftop -> OH : " << loss);
8184
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   437
                }
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   438
              else
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   439
                {
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   440
                  // TODO put a limit in distance (i.e., < 2000 for small cells)
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   441
                  
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   442
                  // short range outdoor communication within street canyon
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   443
                  loss = ItuR1411 (a1, b1);
8193
4aa1c097a00e LtePathlossModelTestSuite on-going work
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8192
diff changeset
   444
                  NS_LOG_INFO (this << " 0-0 (>1000): down rooftop -> ITUR1411 : " << loss);
8184
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   445
                }
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   446
            }
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   447
          else
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   448
            {
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   449
              // short range outdoor communication within street canyon
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   450
              loss = ItuR1411 (a1, b1);
8193
4aa1c097a00e LtePathlossModelTestSuite on-going work
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8192
diff changeset
   451
              NS_LOG_INFO (this << " 0-0 (<1000) Street canyon -> ITUR1411 : " << loss);
8184
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   452
            }
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   453
        }
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   454
      else
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   455
        {
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   456
          // b indoor
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   457
          if (distance > 1000)
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   458
            {
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   459
              loss = OkumuraHata (a1, b1) + BEWPL(b1);
8193
4aa1c097a00e LtePathlossModelTestSuite on-going work
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8192
diff changeset
   460
              NS_LOG_INFO (this << " 0-I (>1000) OH + BEL : " << loss);
8184
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   461
            }
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   462
          else
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   463
            {
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   464
              loss = ItuR1411 (a1, b1) + BEWPL(b1);
8193
4aa1c097a00e LtePathlossModelTestSuite on-going work
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8192
diff changeset
   465
              NS_LOG_INFO (this << " 0-I (<1000) ITUR1411 + BEL : " << loss);
8184
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   466
            }
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   467
        } // end b1->isIndoor ()
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   468
    }
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   469
  else
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   470
    {
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   471
      // a is indoor
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   472
      if (b1->IsIndoor ())
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   473
        {
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   474
          if (a1->GetBuilding () == b1->GetBuilding ())
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   475
            {
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   476
                // nodes are in same building -> indoor communication ITU-R P.1238
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   477
                loss = ItuR1238 (a1, b1);
8195
62266d17165d Add floor penetration loss in ITUP1238 model of BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8193
diff changeset
   478
                NS_LOG_INFO (this << " I-I (same building) ITUR1238 : " << loss);
8193
4aa1c097a00e LtePathlossModelTestSuite on-going work
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8192
diff changeset
   479
                
8184
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   480
            }
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   481
          else
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   482
            {
8193
4aa1c097a00e LtePathlossModelTestSuite on-going work
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8192
diff changeset
   483
              // nodes are in different buildings
8184
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   484
              loss = ItuR1411 (a1, b1) + BEWPL(a1) + BEWPL(b1);
8195
62266d17165d Add floor penetration loss in ITUP1238 model of BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8193
diff changeset
   485
              NS_LOG_INFO (this << " I-I (different) ITUR1238 + 2*BEL : " << loss);
8184
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   486
            }
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   487
        }
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   488
      else
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   489
        {
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   490
          // b is outdoor
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   491
          if (distance > 1000)
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   492
            {
8197
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   493
              if ((a1->GetPosition ().z > m_rooftopHeight)
d30c889fb0c2 Add NLOS over rooftops propagation model to BuildingsPropagationLossModel class
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8195
diff changeset
   494
                || (b1->GetPosition ().z > m_rooftopHeight))
8184
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   495
                {
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   496
                  loss = OkumuraHata (a1, b1) + BEWPL(a1);
8193
4aa1c097a00e LtePathlossModelTestSuite on-going work
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8192
diff changeset
   497
                  NS_LOG_INFO (this << " I-0 (>1000) over rooftop OH + BEL : " << loss);
8184
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   498
                }
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   499
              else
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   500
                {
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   501
                  loss = ItuR1411 (a1, b1) + BEWPL(a1);
8193
4aa1c097a00e LtePathlossModelTestSuite on-going work
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8192
diff changeset
   502
                  NS_LOG_INFO (this << " I-0 (>1000) down rooftop ITUR1411 + BEL : " << loss);
8184
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   503
                }
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   504
            }
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   505
          else
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   506
            {
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   507
              loss = ItuR1411 (a1, b1) + BEWPL(a1);
8193
4aa1c097a00e LtePathlossModelTestSuite on-going work
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8192
diff changeset
   508
              NS_LOG_INFO (this << " I-0 (<1000)  ITUR1411 + BEL : " << loss);
8184
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   509
            }
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   510
        } // end b1->IsIndoor ()
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   511
    } // end a1->IsOutdoor ()
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   512
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   513
  return (loss);
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   514
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   515
}
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   516
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   517
double
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   518
BuildingsPropagationLossModel::DoCalcRxPower (double txPowerDbm, Ptr<MobilityModel> a, Ptr<MobilityModel> b) const
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   519
{
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   520
  return txPowerDbm + GetLoss (a, b);
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   521
}
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   522
b2d61f172004 Add Building class, BuildingMobilityModel and BuildingPropagationModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   523
} // namespace ns3