Skip to content

Python for ITU P.368 : Ground-wave propagation curves for frequencies between 10 kHz and 30 MHz

License

Notifications You must be signed in to change notification settings

Cloud-RF/python-grwave

 
 

Repository files navigation

https://travis-ci.org/scivision/python-grwave.svg?branch=master https://coveralls.io/repos/github/scivision/python-grwave/badge.svg?branch=master

Python for ITU P.368: Ground-wave propagation curves for frequencies between 10 kHz and 30 MHz

Original code

data/fs.png

This also compiles the Fortran code using gfortran:

python -m pip install -e .
python RunGRwave.py

This makes a very simple simulation plot, automatically feeding the parameters into GRWAVE from Python. No files are used, just io.StringIO.

For modeling communications circuits, signal strength is just one part of a complex system. You must also includes dominant factors such as:

  • ITU-R P.372 Radio circuit noise
  • ITU-R F.1487 Ionospheric circuit simultation. Even if you only want groundwave, the ionospheric path in general interferes with the groundwave path.

grwave.for is written in a way that's not easy to switch to taking Python input directly. Instead we convert variables to StringIO in the format grwave expects. Likewise, output is to StringIO and parsed.

ANS: [R] The refractivity of the troposphere at the surface of
the earth in N-units. Default ANS= 315
HSCALE:[R] The scale height of the troposphere in kilometres.
Default HSCALE = 7.35.
IPOLRN:[I] A code number for the polarization. It has a value
of 1 for vertical polarization and a value of 2 for horizontal polarization. Default IPOLRN = 1.
FREQ: [R] The frequency in MHz.
Default FREQ = 1.0.
EPSLON:[R] The relative permittivity of the surface of the earth.
Default EPSLON = 70.0 (sea).
SIGMA:[R] The conductivity of the surface of the earth in S/m.
Default SIGMA = 5.0 (sea).
DMIN: [R] The minimum range in kilometres.
Default DMIN = 10.0.
DMAX: [R] The maximum range in kilometres.
Default DMAX = 200.0.
DSTEP:[R] The range step. See LOGLIN for further explanation.
Default DSTEP = 10.0.
LOGLIN:[I] If LOGLIN = 0 then DSTEP, the range step is

added to the range in geometrical and extended flat earth calculation regions and subtracted in the residue series regions. If LOGLIN = 1 then the new distance is computed by multiplying or dividing the previous distance by DSTEP. In this case, DSTEP is chosen to give a fixed number of points per logarithmic decade. If N points per logarithmic decade are desired, DSTEP is equal to 10 to the power (1/N). Default LOGLIN = 0.

[Note: In the residue series region, the calculations begin at DMAX and proceed inward to the transition to the flat earth or geometrical region. In these two regions, the calculations begin at DMIN and proceed outward to the transition point. In the form distributed, GRWAVE allows a maximum of 100 points in the residue region and 100 points in the flat earth region. These limits may be expanded by compiling the source code after modification of the appropriate dimension statements.]

IG: [I] If IG = -1 or 0, the field is calculated at long
distances using the residue series formulation. If IG = 0 or 1, the field is calculated at short distances using the geometric optics or extended flat earth formulation. Default IG = 0.
JHT: [I] A variable which determines which combination of
receiver antenna heights (HR(LR) LR=1,JR) and transmitter heights (HT(LT) LT=1,JT) is used in computing the field. If JHT=1, all possible combinations of pairs are used. If JHT=2, JR must equal JT and the field is calculated for specific pairs of heights [HR(1),HT(1)], [HR(2),HT(2)], .......[HR(JR),HT(JT)]. If JHT=3, JR must equal JT. Then LR is varied from 1 to LR while LT is varied from LR to LT. If the two arrays HR and HT are identical, this excludes those combinations that can be found by reciprocity. Default JHT = 1
HRR: [R] An array of of up to 20 receiver heights in metres.
The number of points, JR is determined by the program by counting the number of heights entered. Default JR =1 ; HR(1)=100.0
HTT: [R] An array of of up to 20 transmitter heights in metres.
The number of points, JT is determined by the program by counting the number of heights entered. Default JT =1 ; HT(1)=100.0
GO: A keyword used to indicate that the user has entered
all variables and that the calculation of the field should proceed.

Serious use of this would involve incremental runs with conductivity. To start I just assume FCC uniform conductivity.

World conductivity & permittivity atlas.

About

Python for ITU P.368 : Ground-wave propagation curves for frequencies between 10 kHz and 30 MHz

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Fortran 53.6%
  • Visual Basic .NET 38.1%
  • Roff 6.5%
  • Python 1.8%