This code repository contains a python software implementation of Recommendation ITU-R P.2001-6 with a general purpose wide-range terrestrial propagation model in the frequency range 30 MHz to 50 GHz.
The package can be downloaded and installed using:
python -m pip install "git+https://github.com/eeveetza/Py2001/#egg=Py2001"
and imported as follows
from Py2001 import P2001
This is a translation of the original reference MATLAB/Octave implementation of this Recommendation approved by ITU-R Working Party 3M and published by Study Group 3 on ITU-R SG 3 Software, Data, and Validation Web Page.
| File/Folder | Description |
|---|---|
/src/Py2001/P2001.py |
python implementation of Recommendation ITU-R P.2001 |
/src/Py2001/initiate_digital_maps.py |
python script that processes the ITU-R maps and generates the necessary .npz file. It needs to be run prior to using this software implementation. For details, see Integrating ITU Digital Products. |
/tests/validateP2001.py |
python script used to validate the implementation of Recommendation ITU-R P.2001 in P2001.bt_loss() |
/tests/validation_profiles/ |
Folder containing a set of terrain profiles and inputs for validation of software implementations of this Recommendation |
This software uses ITU digital products that are integral part of Recommendations. These products must not be reproduced or distributed without explicit written permission from the ITU.
-
Download and extract the required maps to
./src/Py2001/maps:- From ITU-R P.2001-6:
DN_Median.txt,DN_SubSlope.txt,DN_SupSlope.txt,dndz_01.txtEsarain_Mt_v5.txt,Esarain_Pr6_v5.txt,Esarain_Beta_v5.txtFoEs0.1.txt,FoEs01.txt,FoEs10.txt,FoEs50.txth0.txt,surfwv_50_fixed.txt,TropoClim.txt
- From ITU-R P.2001-6:
-
Run the script
initiate_digital_maps.pyto generate the necessary fileP2001.npz.
- Ensure all files are placed in
./src/Py2001/mapsbefore running the script. - The script processes the maps, which are critical for the software’s functionality.
- The resulting
*.npzfile is placed in the folder./src/Py2001.
Lb = P2001.bt_loss(d, h, z, GHz, Tpc, Phire, Phirn, Phite, Phitn, Hrg, Htg, Grx, Gtx, FlagVP)
| Variable | Type | Unit | Limits | Description |
|---|---|---|---|---|
d |
array double | km | 0 < max(d) ≤ ~1000 |
Terrain profile distances (in the ascending order from the transmitter) |
h |
array double | m (asl) | Terrain profile heights | |
z |
array int | 1 - Sea, 3 - Coastal Land, 4 - Inland | Zone code | |
GHz |
scalar double | GHz | 0.3 ≤ GHz ≤ 50 |
Frequency |
Tpc |
scalar double | % | 0 < Tpc < 100 |
Percentage of time (average year) for which the predicted basic transmission loss is not exceeded |
Phire |
scalar double | deg | -180 ≤ Phire ≤ 180 |
Receiver longitude, positive to east |
Phirn |
scalar double | deg | -90 ≤ Phirn ≤ 90 |
Receiver latitude, positive to north |
Phite |
scalar double | deg | -180 ≤ Phite ≤ 180 |
Transmitter longitude, positive to east |
Phitn |
scalar double | deg | -90 ≤ Phitn ≤ 90 |
Transmitter latitude, positive to north |
Hrg |
scalar double | m | 0 < hrg < ~8000 |
Receiving antenna height above ground |
Htg |
scalar double | m | 0 < htg < ~8000 |
Transmitting antenna height above ground |
Grg |
scalar double | dBi | Receiving antenna gain in the direction of the ray to the transmitting antenna | |
Gtg |
scalar double | dBi | Transmitting antenna gain in the direction of the ray to the receiving antenna | |
FlagVP |
scalar int | 1, 0 | Signal polarisation: 1 - vertical, 0 - horizontal |
| Variable | Type | Unit | Description |
|---|---|---|---|
Lb |
double | dB | Basic transmission loss not exceeded Tpc % time |
The code was tested and runs on:
- python3.9