forked from ExternalVendorCode/Signal-Server
2.44
This commit is contained in:
36
.txt
36
.txt
@@ -2,25 +2,25 @@
|
|||||||
--==[ Path Profile Analysis ]==--
|
--==[ Path Profile Analysis ]==--
|
||||||
|
|
||||||
Transmitter site: Tx
|
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
|
Ground elevation: 0.00 meters AMSL
|
||||||
Antenna height: 36.00 meters AGL / 36.00 meters AMSL
|
Antenna height: 30.00 meters AGL / 30.00 meters AMSL
|
||||||
Distance to Rx: 1.00 kilometers
|
Distance to Rx: 5.00 kilometers
|
||||||
Azimuth to Rx: 91.27 degrees
|
Azimuth to Rx: 89.97 degrees
|
||||||
Depression angle to Rx: -1.5004 degrees
|
Depression angle to Rx: -0.3433 degrees
|
||||||
Receiver site: Rx
|
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
|
Ground elevation: 0.00 meters AMSL
|
||||||
Antenna height: 10.00 meters AGL / 10.00 meters AMSL
|
Antenna height: 2.00 meters AGL / 2.00 meters AMSL
|
||||||
Distance to Tx: 1.00 kilometers
|
Distance to Tx: 5.00 kilometers
|
||||||
Azimuth to Tx: 271.29 degrees
|
Azimuth to Tx: 270.03 degrees
|
||||||
Elevation angle to Tx: +1.4914 degrees
|
Elevation angle to Tx: +0.2984 degrees
|
||||||
Longley-Rice path calculation parameters used in this analysis:
|
Longley-Rice path calculation parameters used in this analysis:
|
||||||
|
|
||||||
Earth's Dielectric Constant: 15.000
|
Earth's Dielectric Constant: 15.000
|
||||||
Earth's Conductivity: 0.005 Siemens/meter
|
Earth's Conductivity: 0.005 Siemens/meter
|
||||||
Atmospheric Bending Constant (N-units): 301.000 ppm
|
Atmospheric Bending Constant (N-units): 301.000 ppm
|
||||||
Frequency: 900.000 MHz
|
Frequency: 5900.000 MHz
|
||||||
Radio Climate: 5 (Continental Temperate)
|
Radio Climate: 5 (Continental Temperate)
|
||||||
Polarisation: 1 (Vertical)
|
Polarisation: 1 (Vertical)
|
||||||
Fraction of Situations: 50.0%
|
Fraction of Situations: 50.0%
|
||||||
@@ -30,17 +30,3 @@ Fraction of Time: 50.0%
|
|||||||
|
|
||||||
Summary for the link between Tx and Rx:
|
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.
|
|
||||||
|
@@ -1,5 +1,9 @@
|
|||||||
SIGNAL SERVER CHANGE LOG
|
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
|
2.43 - 06 Mar 2015
|
||||||
Improved model error handling
|
Improved model error handling
|
||||||
Tweaked params for Ericsson model and inverted environment variables to match rest
|
Tweaked params for Ericsson model and inverted environment variables to match rest
|
||||||
|
1
build.sh
1
build.sh
@@ -3,4 +3,5 @@
|
|||||||
rm -f signalserver
|
rm -f signalserver
|
||||||
rm -f signalserverHD
|
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 -o signalserver
|
||||||
|
g++ -Wall -O3 -s -lm -fomit-frame-pointer itwom3.0.cpp models.cpp main.cpp -DHD -o signalserverHD
|
||||||
./signalserver
|
./signalserver
|
||||||
|
103
main.cpp
103
main.cpp
@@ -1,4 +1,4 @@
|
|||||||
double version=2.43;
|
double version=2.44;
|
||||||
/****************************************************************************\
|
/****************************************************************************\
|
||||||
* Signal Server: Server optimised SPLAT! by Alex Farrant *
|
* 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 */
|
/* Receiver */
|
||||||
|
|
||||||
fprintf(fd2,"Receiver site: %s\n",destination.name);
|
fprintf(fd2,"\nReceiver site: %s\n",destination.name);
|
||||||
|
|
||||||
if (destination.lat>=0.0)
|
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)
|
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 Dielectric Constant: %.3lf\n",LR.eps_dielect);
|
||||||
fprintf(fd2,"Earth's Conductivity: %.3lf Siemens/meter\n",LR.sgm_conductivity);
|
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);
|
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," (%+.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)
|
if (patterndB!=0.0)
|
||||||
fprintf(fd2,"%s antenna pattern towards %s: %.3f (%.2f dB)\n", source.name, destination.name, pattern, patterndB);
|
fprintf(fd2,"%s antenna pattern towards %s: %.3f (%.2f dB)\n", source.name, destination.name, pattern, patterndB);
|
||||||
@@ -4241,7 +4286,7 @@ void PathReport(struct site source, struct site destination, char *name, char gr
|
|||||||
dkm=(elev[1]*elev[0])/1000; // km
|
dkm=(elev[1]*elev[0])/1000; // km
|
||||||
txelev=elev[2]+(source.alt*METERS_PER_FOOT);
|
txelev=elev[2]+(source.alt*METERS_PER_FOOT);
|
||||||
|
|
||||||
switch (propmodel)
|
switch (propmodel)
|
||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
// Longley Rice ITM
|
// Longley Rice ITM
|
||||||
@@ -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,"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)
|
if (free_space_loss!=0.0)
|
||||||
fprintf(fd2,"Attenuation due to terrain shielding: %.2f dB\n",loss-free_space_loss);
|
fprintf(fd2,"Attenuation due to terrain shielding: %.2f dB\n",loss-free_space_loss);
|
||||||
@@ -4362,35 +4407,35 @@ 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,"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);
|
fprintf(fd2,"Longley-Rice model error number: %d",errnum);
|
||||||
|
|
||||||
switch (errnum)
|
switch (errnum)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
fprintf(fd2," (No error)\n");
|
fprintf(fd2," (No error)\n");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
fprintf(fd2,"\n Warning: Some parameters are nearly out of range.\n");
|
fprintf(fd2,"\n Warning: Some parameters are nearly out of range.\n");
|
||||||
fprintf(fd2," Results should be used with caution.\n");
|
fprintf(fd2," Results should be used with caution.\n");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
fprintf(fd2,"\n Note: Default parameters have been substituted for impossible ones.\n");
|
fprintf(fd2,"\n Note: Default parameters have been substituted for impossible ones.\n");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 3:
|
case 3:
|
||||||
fprintf(fd2,"\n Warning: A combination of parameters is out of range.\n");
|
fprintf(fd2,"\n Warning: A combination of parameters is out of range.\n");
|
||||||
fprintf(fd2," Results are probably invalid.\n");
|
fprintf(fd2," Results are probably invalid.\n");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
fprintf(fd2,"\n Warning: Some parameters are out of range.\n");
|
fprintf(fd2,"\n Warning: Some parameters are out of range.\n");
|
||||||
fprintf(fd2," Results are probably invalid.\n");
|
fprintf(fd2," Results are probably invalid.\n");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fprintf(fd2,"\n%s\n\n",dashes);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ObstructionAnalysis(source, destination, LR.frq_mhz, fd2);
|
ObstructionAnalysis(source, destination, LR.frq_mhz, fd2);
|
||||||
|
37
modeltest.py
Normal file
37
modeltest.py
Normal 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
|
BIN
signalserver
BIN
signalserver
Binary file not shown.
BIN
signalserverHD
Executable file
BIN
signalserverHD
Executable file
Binary file not shown.
Reference in New Issue
Block a user