/************************************************************************************ * Copyright (C) 2008 by Politehnica University of Bucharest and Rutgers University * All rights reserved. * Refer to LICENSE for terms and conditions of use. ***********************************************************************************/ //Petroaca - shadowing propagation model class ; it receives the parameters from the transmitter and it calculates the received power package vnsim.network.propagation; import java.util.*; import vnsim.map.object.Globals; public class Shadowing { //distance at which the reference power received is calcualted private static double referenceDistance=Globals.REFERENCE_DISTANCE; private static double pathLossExp=Globals.PATH_LOSS_EXPONENT_URBAN; private static double shadowingDeviation=Globals.SHADOWING_DEVIATION; private static long seed=Globals.RANDOM_SEED; private static Random randVar=new Random(seed); //returns the received power of the frame in DBm public static double getPr(double Pt,double R,boolean withObstruction) { if(Pt<=0.0 || R<=0.0) return -1; if(withObstruction) pathLossExp=Globals.PATH_LOSS_EXPONENT_URBAN; else pathLossExp=Globals.PATH_LOSS_EXPONENT_FREE; //calculate the receiving power at reference distance double Pr0=FreeSpace.getPr(Pt,referenceDistance); //calculate average power loss predicted by path loss model double averageP= -10.0 * pathLossExp * Math.log10(R/referenceDistance); //get the power loss by adding a random variable double powerLoss= averageP + randVar.nextDouble()*shadowingDeviation; //calculate the received power double Pr= Pr0 * Math.pow(10.0, powerLoss/10.0); return Pr; } }