Bug fixes, multi-core support, Improved diffraction model
This commit is contained in:
Cloud-RF
2014-08-14 22:22:50 +01:00
parent 6d38e363e5
commit c7fc5903a7
4 changed files with 1428 additions and 215 deletions

View File

@@ -1,4 +1,19 @@
Signal Server 1.3.8 changelog
Signal Server changelog
v2.23 - 14 August 2014
Improved diffraction model to work only for dips deeper than 20m and not to exaggerate result by an arbitrary figure (3)
Fixed false 'frequency too low' error message for FSPL model which was intended for Hata models only.
v2.22 -
Fixed LOS not outputting bounds
v2.2 -
Made .dot output opt in to save some disk space
Changed version number to line 1 of main.cpp instead of buried in code in two places.
v2.1 -
Added experimental dual core support with -haf
Requires double the RAM
v1.3.8 - 16 Jan 2014
Added Free Space Path Loss model (with optional diffraction)

View File

@@ -37,17 +37,18 @@ compromise for increased speed which adds a realistic diffraction effect.
double ked(double freq, double elev[], double rxh, double dkm){
double obh,obd,rxobaoi=0,d;
obh=0;
obd=0;
obh=0; // Obstacle height
obd=0; // Obstacle distance
dkm=dkm*1000; // KM to metres
// walk along path
for(int n=2;n<(dkm/elev[1]);n++){
d = (n-2)*elev[1]; // no of points * delta = km
//Find dip(s)
if(elev[n] > 0 && elev[n]<(obh+10)){
if(elev[n]<(obh+20)){
// Angle from Rx point to obstacle
rxobaoi = incidenceAngle((obh-(elev[n]+rxh)),d-obd);
@@ -65,7 +66,7 @@ dkm=dkm*1000; // KM to metres
}
if(rxobaoi >= 0){
return (rxobaoi * 3) / (300/freq); // Exaggerate diffraction angle and divide by wavelength (m)
return rxobaoi / (300/freq); // Diffraction angle divided by wavelength (m)
}else{
return 0;
}

18
itm.cpp
View File

@@ -1204,7 +1204,7 @@ void point_to_point(double elev[], double tht_m, double rht_m, double eps_dielec
double zc, zr;
double eno, enso, q;
long ja, jb, i, np;
double dkm, xkm;
//double dkm, xkm;
double fs;
prop.hg[0]=tht_m;
@@ -1216,8 +1216,8 @@ void point_to_point(double elev[], double tht_m, double rht_m, double eps_dielec
zc=qerfi(conf);
zr=qerfi(rel);
np=(long)elev[0]; //number of points
dkm=(elev[1]*elev[0])/1000.0; // total distance in km. elev[1]=90(m) (default)
xkm=elev[1]/1000.0; // distance between points in km
//dkm=(elev[1]*elev[0])/1000.0; // total distance in km. elev[1]=90(m) (default)
//xkm=elev[1]/1000.0; // distance between points in km
eno=eno_ns_surfref;
enso=0.0;
q=enso;
@@ -1295,7 +1295,7 @@ void point_to_pointMDH (double elev[], double tht_m, double rht_m, double eps_di
double ztime, zloc, zconf;
double eno, enso, q;
long ja, jb, i, np;
double dkm, xkm;
//double dkm, xkm;
double fs;
propmode=-1; // mode is undefined
@@ -1310,8 +1310,8 @@ void point_to_pointMDH (double elev[], double tht_m, double rht_m, double eps_di
zconf=qerfi(confpct);
np=(long)elev[0];
dkm=(elev[1]*elev[0])/1000.0;
xkm=elev[1]/1000.0;
//dkm=(elev[1]*elev[0])/1000.0;
//xkm=elev[1]/1000.0;
eno=eno_ns_surfref;
enso=0.0;
q=enso;
@@ -1382,7 +1382,7 @@ void point_to_pointDH (double elev[], double tht_m, double rht_m, double eps_die
double zc, zr;
double eno, enso, q;
long ja, jb, i, np;
double dkm, xkm;
//double dkm, xkm;
double fs;
prop.hg[0]=tht_m;
@@ -1394,8 +1394,8 @@ void point_to_pointDH (double elev[], double tht_m, double rht_m, double eps_die
zc=qerfi(conf);
zr=qerfi(rel);
np=(long)elev[0];
dkm=(elev[1]*elev[0])/1000.0;
xkm=elev[1]/1000.0;
//dkm=(elev[1]*elev[0])/1000.0;
//xkm=elev[1]/1000.0;
eno=eno_ns_surfref;
enso=0.0;
q=enso;

1457
main.cpp

File diff suppressed because it is too large Load Diff