This commit is contained in:
alex
2015-03-25 20:38:47 +00:00
parent 0c4ff44a6e
commit d2233ddb43
7 changed files with 127 additions and 54 deletions

36
.txt
View File

@@ -2,25 +2,25 @@
--==[ Path Profile Analysis ]==--
Transmitter site: Tx
Site location: 51.8648 North / 2.2022 West
Site location: 50.0000 North / 350.0000 West
Ground elevation: 0.00 meters AMSL
Antenna height: 36.00 meters AGL / 36.00 meters AMSL
Distance to Rx: 1.00 kilometers
Azimuth to Rx: 91.27 degrees
Depression angle to Rx: -1.5004 degrees
Antenna height: 30.00 meters AGL / 30.00 meters AMSL
Distance to Rx: 5.00 kilometers
Azimuth to Rx: 89.97 degrees
Depression angle to Rx: -0.3433 degrees
Receiver site: Rx
Site location: 51.8646 North / 2.1877 West
Site location: 50.0000 North / 349.9300 West
Ground elevation: 0.00 meters AMSL
Antenna height: 10.00 meters AGL / 10.00 meters AMSL
Distance to Tx: 1.00 kilometers
Azimuth to Tx: 271.29 degrees
Elevation angle to Tx: +1.4914 degrees
Antenna height: 2.00 meters AGL / 2.00 meters AMSL
Distance to Tx: 5.00 kilometers
Azimuth to Tx: 270.03 degrees
Elevation angle to Tx: +0.2984 degrees
Longley-Rice path calculation parameters used in this analysis:
Earth's Dielectric Constant: 15.000
Earth's Conductivity: 0.005 Siemens/meter
Atmospheric Bending Constant (N-units): 301.000 ppm
Frequency: 900.000 MHz
Frequency: 5900.000 MHz
Radio Climate: 5 (Continental Temperate)
Polarisation: 1 (Vertical)
Fraction of Situations: 50.0%
@@ -30,17 +30,3 @@ Fraction of Time: 50.0%
Summary for the link between Tx and Rx:
Free space path loss: 91.52 dB
Longley-Rice path loss: 92.83 dB
Attenuation due to terrain shielding: 1.32 dB
Mode of propagation:
Longley-Rice model error number: 0 (No error)
No obstructions to LOS path due to terrain were detected
The first Fresnel zone is clear.
60% of the first Fresnel zone is clear.

View File

@@ -1,5 +1,9 @@
SIGNAL SERVER CHANGE LOG
2.44 - 25 Mar 2015
Improved PPA text report to list other prop models
Added HD mode to build script
2.43 - 06 Mar 2015
Improved model error handling
Tweaked params for Ericsson model and inverted environment variables to match rest

View File

@@ -3,4 +3,5 @@
rm -f signalserver
rm -f signalserverHD
g++ -Wall -O3 -s -lm -fomit-frame-pointer itwom3.0.cpp models.cpp main.cpp -o signalserver
g++ -Wall -O3 -s -lm -fomit-frame-pointer itwom3.0.cpp models.cpp main.cpp -DHD -o signalserverHD
./signalserver

View File

@@ -1,4 +1,4 @@
double version=2.43;
double version=2.44;
/****************************************************************************\
* Signal Server: Server optimised SPLAT! by Alex Farrant *
******************************************************************************
@@ -4003,7 +4003,7 @@ void PathReport(struct site source, struct site destination, char *name, char gr
/* Receiver */
fprintf(fd2,"Receiver site: %s\n",destination.name);
fprintf(fd2,"\nReceiver site: %s\n",destination.name);
if (destination.lat>=0.0)
{
@@ -4058,7 +4058,53 @@ void PathReport(struct site source, struct site destination, char *name, char gr
if (LR.frq_mhz>0.0)
{
fprintf(fd2,"Longley-Rice path calculation parameters used in this analysis:\n\n");
fprintf(fd2,"\nPropagation model: ");
switch (propmodel)
{
case 1:
fprintf(fd2,"Irregular Terrain Model\n");
break;
case 2:
fprintf(fd2,"Line of sight\n");
break;
case 3:
fprintf(fd2,"Okumura-Hata\n");
break;
case 4:
fprintf(fd2,"ECC33 (ITU-R P.529)\n");
break;
case 5:
fprintf(fd2,"Stanford University Interim\n");
break;
case 6:
fprintf(fd2,"COST231-Hata\n");
break;
case 7:
fprintf(fd2,"Free space path loss (ITU-R.525)\n");
break;
case 8:
fprintf(fd2,"ITWOM 3.0\n");
break;
case 9:
fprintf(fd2,"Ericsson\n");
break;
}
fprintf(fd2,"Model sub-type: ");
switch (pmenv)
{
case 1:
fprintf(fd2,"City / Conservative\n");
break;
case 2:
fprintf(fd2,"Suburban / Average\n");
break;
case 3:
fprintf(fd2,"Rural / Optimistic\n");
break;
}
fprintf(fd2,"Earth's Dielectric Constant: %.3lf\n",LR.eps_dielect);
fprintf(fd2,"Earth's Conductivity: %.3lf Siemens/meter\n",LR.sgm_conductivity);
fprintf(fd2,"Atmospheric Bending Constant (N-units): %.3lf ppm\n",LR.eno_ns_surfref);
@@ -4151,9 +4197,8 @@ void PathReport(struct site source, struct site destination, char *name, char gr
fprintf(fd2," (%+.2f dBm)\n",dBm);
}
fprintf(fd2,"\n%s\n\n",dashes);
fprintf(fd2,"Summary for the link between %s and %s:\n\n",source.name, destination.name);
fprintf(fd2,"\nSummary for the link between %s and %s:\n\n",source.name, destination.name);
if (patterndB!=0.0)
fprintf(fd2,"%s antenna pattern towards %s: %.3f (%.2f dB)\n", source.name, destination.name, pattern, patterndB);
@@ -4332,7 +4377,7 @@ void PathReport(struct site source, struct site destination, char *name, char gr
fprintf(fd2,"Free space path loss: %.2f dB\n",free_space_loss);
}
fprintf(fd2,"Longley-Rice path loss: %.2f dB\n",loss);
fprintf(fd2,"Computed path loss: %.2f dB\n",loss);
if (free_space_loss!=0.0)
fprintf(fd2,"Attenuation due to terrain shielding: %.2f dB\n",loss-free_space_loss);
@@ -4362,7 +4407,7 @@ void PathReport(struct site source, struct site destination, char *name, char gr
fprintf(fd2,"Voltage across 75 ohm dipole at %s: %.2f uV (%.2f dBuV)\n",destination.name,voltage,20.0*log10(voltage));
}
fprintf(fd2,"Mode of propagation: %s\n",strmode);
if(propmodel==1){
fprintf(fd2,"Longley-Rice model error number: %d",errnum);
switch (errnum)
@@ -4389,8 +4434,8 @@ void PathReport(struct site source, struct site destination, char *name, char gr
fprintf(fd2,"\n Warning: Some parameters are out of range.\n");
fprintf(fd2," Results are probably invalid.\n");
}
}
fprintf(fd2,"\n%s\n\n",dashes);
}
ObstructionAnalysis(source, destination, LR.frq_mhz, fd2);

37
modeltest.py Normal file
View File

@@ -0,0 +1,37 @@
from math import sin, cos, asin, sqrt, degrees, radians
import os, sys
Earth_radius_km = 6371.0
RADIUS = Earth_radius_km
def dist2degs(lat, lon, km):
dlat = km / RADIUS
dlon = asin(sin(dlat) / cos(radians(lat)))
return degrees(dlon)
lat=50
lon=10
pm=sys.argv[1]
pe=sys.argv[2]
erp=sys.argv[3]
f=int(sys.argv[4])
rad=int(sys.argv[5])
for km in range(1,31):
rlo = lon+dist2degs(lat,lon,rad);
cmd = "./signalserver -m -lat "+str(lat)+" -lon "+str(lon)+" -rla "+str(lat)+" -rlo "+str(rlo)+" -txh 30 -rxh 2 -f "+str(f)+" -pm "+pm+" -pe "+pe+" -res 1200"
out = os.popen(cmd).read().split("\n")
#print out
try:
db = out[1]
dbm = out[2]
dbuv = out[3]
except:
db = 0
dbm = 0
dbuv = 0
#print str(rad)+"km, "+str(f)+"MHz = "+str(db)
print str(db)+",",
f=f+200

Binary file not shown.

BIN
signalserverHD Executable file

Binary file not shown.