src/buildings/model/hybrid-buildings-propagation-loss-model.cc
author Marco Miozzo <marco.miozzo@cttc.es>
Mon, 20 Feb 2012 15:54:44 +0100
changeset 8644 83faaf37b22c
child 8651 c333744c3ee1
child 8655 e65a91fb929f
permissions -rw-r--r--
Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8644
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
     1
/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
     2
/*
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
     3
 * Copyright (c) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
     4
 *
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
     7
 * published by the Free Software Foundation;
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
     8
 *
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    12
 * GNU General Public License for more details.
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    13
 *
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    17
 *
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    18
 * Author: Marco Miozzo  <marco.miozzo@cttc.es>
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    19
 * 
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    20
 */
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    21
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    22
#include "ns3/propagation-loss-model.h"
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    23
#include "ns3/log.h"
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    24
#include "ns3/mobility-model.h"
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    25
#include "ns3/double.h"
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    26
#include "ns3/pointer.h"
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    27
#include <math.h>
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    28
#include "hybrid-buildings-propagation-loss-model.h"
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    29
#include "ns3/buildings-mobility-model.h"
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    30
#include "ns3/enum.h"
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    31
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    32
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    33
NS_LOG_COMPONENT_DEFINE ("HybridBuildingsPropagationLossModel");
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    34
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    35
namespace ns3 {
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    36
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    37
NS_OBJECT_ENSURE_REGISTERED (HybridBuildingsPropagationLossModel);
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    38
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    39
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    40
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    41
HybridBuildingsPropagationLossModel::HybridBuildingsPropagationLossModel ()
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    42
  : BuildingsPropagationLossModel ()
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    43
{
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    44
}
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    45
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    46
HybridBuildingsPropagationLossModel::~HybridBuildingsPropagationLossModel ()
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    47
{
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    48
}
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    49
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    50
TypeId
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    51
HybridBuildingsPropagationLossModel::GetTypeId (void)
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    52
{
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    53
  static TypeId tid = TypeId ("ns3::HybridBuildingsPropagationLossModel")
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    54
  
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    55
  .SetParent<BuildingsPropagationLossModel> ()
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    56
  
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    57
  .AddConstructor<HybridBuildingsPropagationLossModel> ();
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    58
  
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    59
  return tid;
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    60
}
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    61
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    62
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    63
double
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    64
HybridBuildingsPropagationLossModel::GetLoss (Ptr<MobilityModel> a, Ptr<MobilityModel> b) const
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    65
{
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    66
  NS_ASSERT_MSG ((a->GetPosition ().z > 0) && (b->GetPosition ().z > 0), "HybridBuildingsPropagationLossModel does not support underground nodes (placed at z < 0)");
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    67
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    68
  
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    69
  double distance = a->GetDistanceFrom (b);
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    70
  if (distance <= m_minDistance)
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    71
    {
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    72
      return 0.0;
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    73
    }
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    74
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    75
  // get the BuildingsMobilityModel pointers
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    76
  Ptr<BuildingsMobilityModel> a1 = DynamicCast<BuildingsMobilityModel> (a);
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    77
  Ptr<BuildingsMobilityModel> b1 = DynamicCast<BuildingsMobilityModel> (b);
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    78
  NS_ASSERT_MSG ((a1 != 0) && (b1 != 0), "HybridBuildingsPropagationLossModel only works with BuildingsMobilityModel");
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    79
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    80
  double loss = 0.0;
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    81
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    82
  if (a1->IsOutdoor ())
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    83
    {
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    84
      if (b1->IsOutdoor ())
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    85
        {
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    86
          if (distance > 1000)
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    87
            {
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    88
              NS_LOG_INFO (this << a1->GetPosition ().z << b1->GetPosition ().z << m_rooftopHeight);
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    89
              if ((a1->GetPosition ().z < m_rooftopHeight)
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    90
                  && (b1->GetPosition ().z < m_rooftopHeight))
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    91
                {
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    92
                  // ITU limit in distance (i.e., < 2000 for small cells)
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    93
                  if (distance < m_itu1411DistanceThreshold)
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    94
                    {
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    95
                      // short range communication
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    96
                      loss = ItuR1411 (a1, b1);
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    97
                      NS_LOG_INFO (this << " 0-0 (>1000): down rooftop -> ITUR1411 : " << loss);
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    98
                    }
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    99
                  else
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   100
                    {
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   101
                      // out of bound
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   102
                      loss = std::numeric_limits<double>::infinity ();
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   103
                      NS_LOG_INFO (this << " 0-0 (>2000): down rooftop -> Infinity (out of bound) : " << loss);
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   104
                    }
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   105
                }
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   106
              else
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   107
                {
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   108
                  // Over the rooftop tranmission -> Okumura Hata
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   109
                  loss = OkumuraHata (a1, b1);
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   110
                  NS_LOG_INFO (this << " O-O (>1000): Over the rooftop -> OH : " << loss);
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   111
                }
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   112
            }
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   113
          else
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   114
            {
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   115
              // short range outdoor communication
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   116
              loss = ItuR1411 (a1, b1);
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   117
              NS_LOG_INFO (this << " 0-0 (<1000) Street canyon -> ITUR1411 : " << loss);
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   118
            }
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   119
        }
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   120
      else
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   121
        {
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   122
          // b indoor
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   123
          if (distance > 1000)
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   124
            {
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   125
              if ((a1->GetPosition ().z < m_rooftopHeight)
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   126
                  && (b1->GetPosition ().z < m_rooftopHeight))
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   127
                {
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   128
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   129
                  // ITU limit in distance (i.e., < 2000 for small cells)
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   130
                  if (distance < m_itu1411DistanceThreshold)
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   131
                    {
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   132
                      // short range communication
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   133
                      loss = ItuR1411 (a1, b1) + ExternalWallLoss (b1) + HeightLoss (a1);
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   134
                      NS_LOG_INFO (this << " 0-I (>1000): down rooftop -> ITUR1411 : " << loss);
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   135
                    }
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   136
                  else
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   137
                    {
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   138
                      // out of bound
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   139
                      loss = std::numeric_limits<double>::infinity ();
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   140
                      NS_LOG_INFO (this << " 0-I (>2000): down rooftop -> ITUR1411 : " << loss);
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   141
                    }
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   142
                }
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   143
              else
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   144
                {
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   145
                  // Over the rooftop tranmission -> Okumura Hata
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   146
                  loss = OkumuraHata (a1, b1) + ExternalWallLoss (b1);
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   147
                  NS_LOG_INFO (this << " O-I (>1000): Over the rooftop -> OH : " << loss);
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   148
                }
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   149
            }
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   150
          else
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   151
            {
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   152
              loss = ItuR1411 (a1, b1) + ExternalWallLoss (b1) + HeightLoss (b1);
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   153
              NS_LOG_INFO (this << " 0-I (<1000) ITUR1411 + BEL : " << loss);
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   154
            }
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   155
        } // end b1->isIndoor ()
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   156
    }
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   157
  else
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   158
    {
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   159
      // a is indoor
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   160
      if (b1->IsIndoor ())
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   161
        {
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   162
          if (a1->GetBuilding () == b1->GetBuilding ())
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   163
            {
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   164
              // nodes are in same building -> indoor communication ITU-R P.1238
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   165
              loss = ItuR1238 (a1, b1) + InternalWallsLoss (a1, b1);;
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   166
              NS_LOG_INFO (this << " I-I (same building) ITUR1238 : " << loss);
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   167
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   168
            }
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   169
          else
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   170
            {
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   171
              // nodes are in different buildings
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   172
              loss = ItuR1411 (a1, b1) + ExternalWallLoss (a1) + ExternalWallLoss (b1);
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   173
              NS_LOG_INFO (this << " I-I (different) ITUR1238 + 2*BEL : " << loss);
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   174
            }
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   175
        }
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   176
      else
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   177
        {
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   178
          // b is outdoor
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   179
          if (distance > 1000)
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   180
            {
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   181
              if ((a1->GetPosition ().z < m_rooftopHeight)
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   182
                  && (b1->GetPosition ().z < m_rooftopHeight))
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   183
                {
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   184
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   185
                  // ITU limit in distance (i.e., < 2000 for small cells)
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   186
                  if (distance < m_itu1411DistanceThreshold)
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   187
                    {
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   188
                      // short range communication
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   189
                      loss = ItuR1411 (a1, b1) + ExternalWallLoss (a1) + HeightLoss (a1);
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   190
                      NS_LOG_INFO (this << " I-O (>1000): down rooftop -> ITUR1411 : " << loss);
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   191
                    }
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   192
                  else
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   193
                    {
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   194
                      // out of bound
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   195
                      loss = std::numeric_limits<double>::infinity ();
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   196
                      NS_LOG_INFO (this << " I-O (>2000): down rooftop -> ITUR1411 : " << loss);
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   197
                    }
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   198
                }
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   199
              else
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   200
                {
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   201
                  // above rooftop -> OH
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   202
                  loss = OkumuraHata (a1, b1) + ExternalWallLoss (a1) + HeightLoss (a1);
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   203
                  NS_LOG_INFO (this << " =I-O (>1000) over rooftop OH + BEL + HG: " << loss);
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   204
                }
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   205
            }
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   206
          else
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   207
            {
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   208
              loss = ItuR1411 (a1, b1) + ExternalWallLoss (a1)  + HeightLoss (a1);
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   209
              NS_LOG_INFO (this << " I-O (<1000)  ITUR1411 + BEL + HG: " << loss);
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   210
            }
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   211
        } // end b1->IsIndoor ()
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   212
    } // end a1->IsOutdoor ()
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   213
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   214
  return loss;
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   215
}
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   216
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   217
83faaf37b22c Add missing files of Hybrid and Simple BuildingsPropagationLossModel
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   218
} // namespace ns3