This code repository contains a python software implementation of Recommendation ITU-R P.1546-6 with a method for point-to-area predictions for terrestrial services in the frequency range 30 MHz to 4000 MHz.
This version of the code corresponds to the reference version of the code approved by ITU-R Working Party 3K and published on ITU-R SG 3 Software, Data, and Validation Web Page as digital supplement to Recommendation ITU-R P.1546.
The package can be downloaded and installed using:
python -m pip install "git+https://github.com/eeveetza/Py1546/#egg=Py1546"
and imported as follows
from Py1546 import P1546
File/Folder | Description |
---|---|
/src/Py1546/P1546.py |
python implementation of Recommendation ITU-R P.1546-6 |
/tests/validateP1546.py |
python script used to validate the implementation of Recommendation ITU-R P.1546-6 in P1546.bt_loss() |
/tests/validation_profiles/ |
Folder containing a proposed set of terrain profiles and inputs for validation of MATLAB implementation (or any other software implementation) of this Recommendation |
/tests/validation_results/ |
Folder containing all the results written during the transmission loss computations for the set of terrain profiles defined in the folder ./validation_profiles/ |
The function P1546.bt_loss
can be called
- by invoking only the first nine required input arguments:
E, Lb = P1546.bt_loss(f,t,heff,h2,R2,area,d_v,path_c,pathinfo);
- by explicitly invoking all the input arguments:
E, Lb = P1546.bt_loss(f,t,heff,h2,R2,area,d_v,path_c,pathinfo, \
q,wa,PTx,ha,hb,R1,tca,htter,hrter,eff1,eff2,debug,fidlog)
- or by explicitly omitting some of the optional input arguments:
Ep, Lb = P1546.bt_loss(f,t,heff,h2,R2,area,d_v,path_c,pathinfo, \
q,wa,PTx,[],[],[],[],[],[],[],[],debug,fidlog)
Variable | Type | Units | Limits | Description |
---|---|---|---|---|
f |
scalar double | MHz | 30 ≤ f ≤ 4000 |
Frequency |
t |
scalar double | % | 1 ≤ p ≤ 50 |
Time percentage for which the calculated basic transmission loss is not exceeded |
heff |
scalar double | m | Effective height of the transmitting/base antenna, height over the average level of the ground between distances of 3 and 15 km from the transmitting/base antenna in the direction of the receiving/mobile antenna. | |
h2 |
scalar double | m | Receiving/mobile antenna height above ground level | |
R2 |
scalar double | m | Representative clutter height around receiver. Typical values: R2 =10 for area ='Rural' or 'Suburban' or 'Sea', R2 =15 for area ='Urban', R2 =20 for area ='Dense Urban' |
|
area |
string | 'Land, 'Sea', 'Warm', 'Cald' | Area around the receiver. | |
d_v |
array double | km | sum(d_v) ≤ ~1000 |
Array of horizontal path lengths over different path zones starting from transmitter/base station terminal. |
path_c |
array string | 'Land', 'Sea', 'Warm', 'Cold' | Array of strings defining the path zone for each given path lenght in d_v starting from the transmitter/base terminal. |
|
pathinfo |
scalar int | 0, 1 | 0 - no terrain profile information available, 1 - terrain information available |
Variable | Type | Units | Limits | Description |
---|---|---|---|---|
q |
scalar double | % | 1 ≤ q ≤ 99 |
Location percentage for which the calculated basic transmission loss is not exceeded. Default is 50%. |
wa |
scalar double | m | ~50 ≤ wa ≤ ~1000 | The width of the square area over which the variabilitiy applies. Needs to be defined only if pathinfo = 1 and q ≠50. Default: 0 dB. |
Ptx |
scalar double | kW | Ptx > 0 |
Tx power; Default: 1. |
ha |
scalar double | m | Transmitter antenna height above ground. Defined in Annex 5 §3.1.1. Limits are defined in Annex 5 §3. | |
hb |
scalar double | m | Height of transmitter/base antenna above terrain height averaged over 0.2d and d, when d is less than 15 km and where terrain information is available. | |
R1 |
scalar double | m | Representative clutter height around transmitter. | |
tca |
scalar double | deg | 0.55 ≤ tca ≤ 40 |
Terrain clearance angle. |
htter |
scalar double | m | Terrain height in meters above sea level at the transmitter/base. | |
hrter |
scalar double | m | Terrain height in meters above sea level at the receiver/mobile. | |
eff1 |
scalar double | deg | The h1 terminal's terrain clearance angle calculated using the method in §4.3 case a), whether or not h1 is negative. | |
eff2 |
scalar double | deg | The h2 terminal's terrain clearance angle calculated using the method in §11, noting that this is the elevation angle relative to the local horizontal. | |
debug |
scalar int | 0, 1 | If debug = 1, the results are written in log files. Default: 0. |
|
fidlog |
scalar int | Only used if debug = 1 |
File identifier of the log file opened for writing outside the function. If not provided, a default file with a filename containing a timestamp will be created. |
Variable | Type | Units | Description |
---|---|---|---|
Ep |
double | dB(uV/m) | Electric field strength |
Lb |
double | dB | Basic transmission loss |
Notes:
If sea path is selected for a t
value less then 50% the default 10% table use is a cold sea path.
Not implemented in this version of the code:
- Annex 7: Adjustment for different climatic regions
- Annex 5, Section 4.3a): C_h1 calculation (terrain database is available and the potential of discontinuities around h1 = 0 is of no concern)
The code was tested and runs on:
- python3.9