...
Description | Symbol | Type | Unit | Comments |
Variation | Variation in path loss takes into account the uncertainty of building design, furniture, room size, etc. | |||
General environment | Environment of the propagation: urban, rural, suburban | |||
Propagation environment | Environment of the propagation: Below roof, Above roof (used for standard deviation calculations) ONLY USED IF VARIATION OPTION IS CHECKED | |||
Wall loss(indoor - indoor) | Scalar | dB | ||
Wall loss std dev (indoor - indoor) | Scalar | dB | ||
Loss between adjacent floor | Scalar | dB | ||
Empirical parameters: | b | This parameter is used for the necessary corrections to be performed in the local environments if the transmitter and receiver are located in the same building in order to apply the correct wall attenuation between them. The snippet of code below this table indicates the exact calculation performed within SEAMCAT. | ||
Size of the room | droom | Scalar | m | |
Height of each floor | hfloor | Scalar | m |
Method in SEAMCAT to perform corrections to the local environments, depending on the location of the transmitter and receiver (i.e. within the same building or in different buildings):
Code Block |
---|
protected static LocalEnvCorrections localEnvCorrections(LocalEnvCorrections localEnvironmentCorrections,LinkResult linkResult, |
double
double floorHeight,double roomSize, double wiLoss, double floorLoss, double empiricalParam, double wiStdDev) |
{ //LocalEnvCorrections result = new LocalEnvCorrections(0, localEnvironmentCorrections.rStdDev); |
LocalEnvironmentResult rxEnv =
LocalEnvironmentResult rxEnv = linkResult.rxAntenna().getLocalEnvironment(); |
LocalEnvironmentResult txEnv =
LocalEnvironmentResult txEnv = linkResult.txAntenna().getLocalEnvironment(); |
// CAUTION : do NOT permute the order of the |
if (
tests if ( rxEnv.getEnvironment() == Indoor && txEnv.getEnvironment() == Indoor) |
if (
{ if ( linkResult.isTxRxInSameBuilding() ) |
{ // Transmitter and receiver are located in the same |
building // specific calculation : replaces standard |
double rK;rK = Math.abs(
calculation double rK; rK = Math.abs( Math.floor(linkResult.txAntenna().getHeight()/ floorHeight) |
- Math.floor(linkResult.rxAntenna().getHeight()/ floorHeight) |
);double d1 =
); double d1 = linkResult.txAntenna().getHeight() - linkResult.rxAntenna().getHeight(); |
double realDistance =
double realDistance = Math.sqrt( (d1*d1) + (linkResult.getTxRxDistance()*linkResult.getTxRxDistance()) ); |
localEnvironmentCorrections.rMedianLoss = -27.6 |
+ 20.0
*
+ 20.0 * Math.log10(1000 * realDistance) |
+ 20.0
*
+ 20.0 * Math.log10(linkResult.getFrequency()) |
+
+ Math.floor(1000 * linkResult.getTxRxDistance() / roomSize) |
* wiLoss
+
* wiLoss + Math.pow(rK, |
((rK + 2.0) / (rK + 1.0) - empiricalParam)) |
* floorLoss;
* floorLoss; localEnvironmentCorrections.rStdDev = wiStdDev; |
} else {
// Transmitter and receiver are located in different buildings
// Calculation is similar to indoor-outdoor case with doubled
// corrections
localEnvironmentCorrections.rMedianLoss +=
} else { // Transmitter and receiver are located in different buildings // Calculation is similar to indoor-outdoor case with doubled // corrections localEnvironmentCorrections.rMedianLoss += rxEnv.getWallLoss() + txEnv.getWallLoss(); |
localEnvironmentCorrections.rStdDev = |
.sqrt(
localEnvironmentCorrections.rStdDev * localEnvironmentCorrections.rStdDev +
Math .sqrt( localEnvironmentCorrections.rStdDev * localEnvironmentCorrections.rStdDev + ((txEnv.getWallLossStdDev() * txEnv.getWallLossStdDev()) |
+ (rxEnv.getWallLossStdDev() * rxEnv.getWallLossStdDev()))); |
}
} else if
} } else if (rxEnv.getEnvironment() == Indoor && txEnv.getEnvironment() == Outdoor) |
{ localEnvironmentCorrections.rMedianLoss += rxEnv.getWallLoss(); |
localEnvironmentCorrections.rStdDev = Math.sqrt(localEnvironmentCorrections.rStdDev * localEnvironmentCorrections.rStdDev |
+ rxEnv.getWallLossStdDev() * rxEnv.getWallLossStdDev()); |
} else if
} else if (rxEnv.getEnvironment() == Outdoor && txEnv.getEnvironment() == Indoor) |
{ localEnvironmentCorrections.rMedianLoss += txEnv.getWallLoss(); |
localEnvironmentCorrections.rStdDev = Math.sqrt(localEnvironmentCorrections.rStdDev * localEnvironmentCorrections.rStdDev |
+ txEnv.getWallLossStdDev()*txEnv.getWallLossStdDev()); |
}
// outdoor outdoor => no correction
return localEnvironmentCorrections;
}
}
// outdoor outdoor => no correction
return localEnvironmentCorrections;
}
|