src/devices/wifi/composite-propagation-loss-model.cc
author src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
Fri, 21 Mar 2008 04:51:36 +0100
changeset 2678 22aa62a108ed
child 2680 b6453d9420a5
permissions -rw-r--r--
Composite and Jakes propagation loss models.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2678
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
     1
/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
     2
/*
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
     3
 * Copyright (c) 2005,2006,2007 INRIA
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
     4
 *
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as 
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
     7
 * published by the Free Software Foundation;
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
     8
 *
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    12
 * GNU General Public License for more details.
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    13
 *
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    17
 *
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    18
 * Author: Federico Maguolo <maguolof@dei.unipd.it>
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    19
 */
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    20
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    21
#include "ns3/simulator.h"
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    22
#include "ns3/uinteger.h"
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    23
#include "ns3/double.h"
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    24
#include "ns3/random-variable.h"
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    25
#include "ns3/default-value.h"
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    26
#include "ns3/mobility-model.h"
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    27
#include "composite-propagation-loss-model.h"
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    28
#include <math.h>
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    29
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    30
namespace ns3 {
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    31
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    32
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    33
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    34
NS_OBJECT_ENSURE_REGISTERED (CompositePropagationLossModel);
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    35
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    36
TypeId
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    37
CompositePropagationLossModel::GetTypeId (void)
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    38
{
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    39
  static TypeId tid = TypeId ("ns3::CompositePropagationLossModel")
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    40
    .SetParent<PropagationLossModel> ()
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    41
    .AddConstructor<CompositePropagationLossModel> ()
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    42
    ;
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    43
  return tid;
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    44
}
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    45
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    46
CompositePropagationLossModel::CompositePropagationLossModel ()
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    47
{
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    48
  AddDefaults ();
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    49
}
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    50
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    51
CompositePropagationLossModel::~CompositePropagationLossModel ()
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    52
{}
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    53
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    54
void
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    55
CompositePropagationLossModel::AddDefaults ()
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    56
{}
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    57
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    58
void
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    59
CompositePropagationLossModel::AddPropagationLossModel (Ptr<PropagationLossModel> pl)
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    60
{
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    61
  m_propagationModels.push_back (pl);
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    62
}
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    63
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    64
double
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    65
CompositePropagationLossModel::GetLoss (Ptr<MobilityModel> a,
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    66
				        Ptr<MobilityModel> b) const
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    67
{
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    68
  double rxc = 0.0;
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    69
  for(PropagationModelList::const_iterator i = m_propagationModels.begin (); 
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    70
                                           i != m_propagationModels.end (); 
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    71
					   i++) {
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    72
    rxc += (*i)->GetLoss (a, b);
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    73
  }
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    74
  
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    75
  return rxc;
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    76
}
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    77
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    78
} // namespace ns3
22aa62a108ed Composite and Jakes propagation loss models.
src/devices/wifi/Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    79