<<

Adv. Radio Sci., 16, 177–194, 2018 https://doi.org/10.5194/ars-16-177-2018 © Author(s) 2018. This work is distributed under the Creative Commons Attribution 4.0 License.

Spectrum management and compatibility studies with Python

Benjamin Winkel and Axel Jessner Max-Planck-Institut für Radioastronomie, Auf dem Hügel 69, 53121 Bonn, Germany

Correspondence: Benjamin Winkel ([email protected])

Received: 12 January 2018 – Revised: 16 April 2018 – Accepted: 8 May 2018 – Published: 4 September 2018

Abstract. We developed the pycraf Python package, sible to observe Micro-Jansky sources, with a Jansky (Jy) which provides functions and procedures for various tasks being a unit of the spectral power flux density, which was related to spectrum-management compatibility studies. This introduced to honour Karl G. Jansky the “founder” of the includes an implementation of ITU-R Rec. P.452 (ITU-R, radio-astronomy field. It is 1Jy 10 26 Wm 2 Hz 1. = − − − 2015), which allows to calculate the path attenuation arising With the increased utilization of the radio spectrum, it be- from the distance and terrain properties between an interferer came essential to regulate its usage. Allocations of frequency and the victim service. A typical example would be the cal- bands are nowadays made by the International Telecommuni- culation of interference levels at a radio telescope produced cation Union Radiocommunication Sector (ITU-R) in unan- from a radio broadcasting tower. Furthermore, pycraf pro- imous decisions by delegates of the administrations of its vides functionality to calculate atmospheric attenuation as member states. Every two to four years, ITU-R organizes the proposed in ITU-R Rec. P.676 (ITU-R, 2013). World Radiocommunication Conference (WRC) where the Using the rich ecosystem of scientific Python libraries so-called Radio Regulations are updated, which contain rules and our pycraf package, we performed a large number and procedures, and spectrum allocation tables. It is clear that of compatibility studies. Here, we will highlight a recent such decisions and allocations have to be made in accordance case study, where we analysed the potential harm that the to the technical needs and constraints of the concerned ser- next-generation cell-phone standard 5G could bring to ob- vices. Therefore, in many regional and international organi- servations at a radio observatory. For this we implemented a zations and institutions compatibility studies are performed, Monte-Carlo simulation to deal with the quasi-statistical spa- which analyse if, and possibly under which restrictions, a ser- tial distribution of base stations and user devices around the vice can be granted a new allocation. radio astronomy station. In the following, we present a new Python library, called pycraf, that can be used to carry out many of the recurring tasks, which occur in compatibility studies. This includes the estimation of path propagation losses and atmospheric damp- 1 Introduction ening effects, the determination of satellite positions (given orbital parameters), or calculating patterns. Af- The electromagnetic spectrum, especially at radio frequen- ter a short introduction into compatibility studies in Sect.2, cies, is a limited resource, which has tremendous economic the more important pycraf features are briefly introduced and scientific value for a large variety of services. Applica- in Sect. 3.1 along with basic usage examples. A real-world tions involve mobile communication networks, radio and TV application is discussed in Sect.4, where the potential im- broadcasting, RADAR, and safety distress signals. In con- pact of the next-generation 5G mobile communication net- trast, natural sciences such as radio astronomy, Earth sens- works, which may acquire a new allocation at 24 GHz at the ing (which is important for climatology), or weather fore- upcoming WRC-19, on the RAS is studied. Conclusions are casting rely heavily on interference-free spectral bands to presented in Sect.5. conduct measurements with their high-sensitivity receivers. Especially, the radio-astronomy service (RAS) developed re- ceivers, often cryogenically cooled, that allow us to detect even the faintest signals from outer space. Today it is pos-

Published by Copernicus Publications on behalf of the URSI Landesausschuss in der Bundesrepublik Deutschland e.V. 178 B. Winkel and A. Jessner: Spectrum management and compatibility studies with Python

2 Spectrum management and compatibility studies diffraction at hill or mountain tops can significantly increase the path attenuation between victim and interferer(s). Many compatibility studies follow a very simple recipe. The PathProfile is a publicly available2 software tool for the first step is usually to calculate the radiated power (or the prediction of local field strengths developed by Mike Willis. power flux density), Ptx, at the (Tx). Then one It features a GUI and uses terrain data for the calculation of has to determine the appropriate interference threshold for path loss. As such, it may serve as the core of compatibility the detected power, Prx, at the victim receiver (Rx). The ra- calculations, but will require additional specific interfacing tio Ptx/Prx constitutes the minimum shielding between in- for multi-interferer scenarios or aggregation studies. terfering Tx and victim Rx, also called “minimum coupling A variety of MATLAB-based solutions to various spec- loss” (MCL). In the final step the product of antenna gains trum management problems exists and is used by regulatory and the path propagation loss (or path attenuation), i.e., the administrations, industry, and also by radio astronomers in loss of power on the path to the receiver (Rx) is determined spectrum management. Some of them have found approval and compared to the MCL. That way one may find the mini- by the ECC (e.g., ECC Report 247 ECC, 2016a), but many mum distance between a single interferer and victim receiver, are not in the public domain and less well known and are which is often called separation distance. Since the path used mainly by individuals. propagation loss also depends on the terrain height profile between Tx and Rx, the necessary separation distance will pycraf vary for different bearings, leading to non-circular exclusion 3 The package zones around a victim receiver. In the case of a widespread While there are some existing software tools to aid with deployment of many possible interferers one may need to cal- compatibility studies, they are either not suited for all rele- culate the expected total (“aggregated”) interference levels vant tasks (PathProfile), not easy to use from within a pro- from all interferers within a certain range around the victim gramming language (SEAMCAT), or are based on proprietary receiver. In most cases this will require a statistical simu- software (MATLAB-based scripts). Therefore, we decided to lation of possible deployments in a given terrain. However, provide a number of functions and procedures, which were simplified numerical convolutions of path loss laws with the developed in the framework of several radio compatibility deployment distribution functions are often cheaper to com- studies involving the Effelsberg observatory. The observa- pute and can also yield good estimates of the size of zones tory is located in the Eifel mountains in Western Germany where interferers ought to be excluded. and operates a 100 m radio telescope. The code comes in the form of a Python library (a so-called package) that can Available software easily be installed and used even by relatively inexperienced Python users. The package is named pycraf, open-source The various tasks that have to be solved in typical compati- licensed (GPL-v3), and available on the Python package dis- bility studies are often similar. Nevertheless, major effort is tribution server PyPI (Python Package Index3. The source necessary to develop a single tool, which could be used in all code is furthermore hosted on the GitHub platform4, along sorts of different scenarios. with detailed documentation5, a bug tracker, and installation One such tool is SEAMCAT (ECC Report 252 ECC, instructions. 2016b), which was developed by the European Communica- We aim to make pycraf a community-driven project. tions Committee (ECC) to be used by spectrum managers in Contributions to the source code or documentation are very CEPT1 countries. It lets the user choose from a large amount welcome, but we are also happy to receive bug reports, fea- of system parameters, deployment scenarios, and path prop- ture requests and other proposals that would further improve agation models – all with appropriate distribution functions the package. – and applies Monte-Carlo sampling to calculate the desired The pycraf package makes use of the AstroPy package output distributions, e.g., of the power levels detected at a re- template providing a sophisticated build environment, which ceiver. Unfortunately, as of today, SEAMCAT can only per- is based on setuptools, pytest, and sphinx. It allows form so-called generic studies, i.e., the terrain profile be- the use of automated testing, makes incorporation of contin- tween a transmitter and receiver is either neglected or ap- uous integration services easy, and enables automated docu- proximated in a very coarse manner. For RAS stations in mentation generation. Because pycraf is available on the mountainous terrain this may lead to unrealistic results as the PyPI distribution server, one can use the Python tool pip to install the package into the local Python environment. 1The European Conference of Postal and Telecommunications 2 Administrations (CEPT) is an organization where policy makers http://www.mike-willis.com/software.html, last access: and regulators from 48 countries across Europe collaborate to har- 5 June 2018 monize telecommunication, radio spectrum and postal regulations. 3https://pypi.org/project/pycraf/, last access: 5 June 2018 The European Communications Office (ECO) is the Secretariat of 4https://github.com/bwinkel/pycraf, last access: 5 June 2018 the CEPT. 5https://bwinkel.github.io/pycraf/, last access: 5 June 2018

Adv. Radio Sci., 16, 177–194, 2018 www.adv-radio-sci.net/16/177/2018/ B.B. Winkel Winkel and and A. A. Jessner: Jessner: Spectrum Spectrum management management and and compatibility compatibility studies studies with with Python Python 179 3 B. Winkel and A. Jessner: Spectrum management and compatibility studies with Python 3 B.After WinkelAfter successful and successful A. Jessner: installation, installation, Spectrum onemanagement one can can load load and compatibility and and 14 studiesp_tx with= 1 Python* u.W 3 30 testtestAfter the the successful library library withinstallation, with the the following one following can load two two and statements: test statements: the li- 1915 gain_tx) = 25 * cnv.dBi 16 distance = 1 * u.km importbraryAfter with successfulpycraf the following installation, two statements: one can load and test the li- 1920 ) 50 import pycraf 2117 print(’{:.2e}’.format(pfd)) pycraf.test(remote_data=’any’) 20 50 brarypycraf.test(remo withimport the followingpycraft twoe_data= statements:’any’) 18 pfd = cnv.powerflux_from_ptx( 2122 print# 2.52(’{:.2e-05e}W’.format(pfd))/ m2 importpycraf.test(remote_data=pycraf ’any’) 19 p_tx, distance, gain_tx 35 With this remote_data option, pycraf will attempt 2223 # 2.52e-05 W / m2 Withpycraf.test(remote_data= this remote_data option,’anypycraf’) will attempt 2420 print)(’{:.2f}’.format( 5 With this remote_data option, pycraf will attempt to 23 5 toto download download terrain-height terrain-height data data from from the the NASA NASA Shuttle Shuttle 242521print(pfd.to(cnv.dB_W_m2)’{:.2f}’.format( 55 5 downloadremote_data terrain-height data frompycraf the NASA Shuttle Radar RadarWithRadar this Topography Topography Mission Missionoption, (SRTM (SRTMFarr Farr et et al.will al., ,2007 attempt2007)) for for to the the 22 print(’{:.2e}’.format(pfd)) 2526 pfd.to(cnv.dB_W_m2))) 55 downloadTopography terrain-height Mission (SRTM data fromFarr theet al. NASA, 2007 Shuttle) for6 the6 Radar calcu- calculationcalculation of of path path propagation propagation loss loss in in real real terrain terrain. . 2723 ## -45.99))2.52e-05dB(W / m2) Topographylation of path Mission propagation (SRTM lossFarr in et real al., terrain2007)6 for. the calcu- 26 InIn the the following following we we will will present present an an overview overview of of the the fea- fea- 27 24# -45.99 dB(W / m2) 40 lationIn the of path following propagation we will loss present in real an terrain overview6. of the fea- Likewise, if such power flux density is received by an turestures included included in inpycrafpycrafandand provide provide some some basic basic examples examples 25 print(’{:.2f}’.format( 10 turesIn the included following in pycraf we willand present provide an overview some basic of theexamples fea- Likewise,isotropic if antenna, suchpfd.to(cnv.dB_W_m2) power one can flux calculate density the is total received received by power an 10 forfor its its use. use. A A discussion discussion of of all all aspects aspects of ofpycrafpycrafandand intro- intro- 26 10 turesfor its included use. A discussion in pycraf ofand all provide aspects some of pycraf basic examplesand intro- isotropic(which antenna, depends)) one on frequency): can calculate the total received power 60 ductionduction to to the the various various third-party third-party libraries libraries used used in inpycrafpycraf 27 forduction its use. to A the discussion various third-party of all aspects libraries of pycraf used inandpycraf intro- (which28 depends# -45.99 on frequency):dB(W / m2) 60 is beyond the scope of this paper and we refer to the on- 27 gain_rx = 0 * cnv.dBi ductionisis beyond beyond to the the the various scope scope of third-party of this this paper paper libraries and and we weused refer refer in pycraf to to the the on- on- lineline manual manual where where a a lot lot more more information information and and a a full full API API 2728Likewise,gain_rxfrequency = if 0 such =* 1cnv.dBi* poweru.GHz flux density is received isline beyond manual the where scope a of lot this more paper information and we refer and to a the full on- API 28 frequency = 1 u.GHz referencereference for for each each sub-package sub-package can can be be found. found. We We also also note note 29by an isotropic* antenna, one can calculate the to- 15 linereference manual for where each sub-package a lot more information can be found. and We a full also API note 2930 p_rx = cnv.prx_from_powerflux( 15 thatthatpycrafpycrafmakesmakes extensive extensive use use of of the the Astropy Astropy (physical) (physical) tal received power (which depends on frequency): 15 referencethat pycraf for eachmakes sub-package extensiveuse can of be the found. Astropy We also (physical) note 3031 p_rx =pfd, cnv.prx_from_powerflux( frequency, gain_rx 65 unitsunitsmodule,module, which which is is well well documented documented on on the the Astropy Astropy 29 gain_rx=0 cnv.dBi thatunitspycrafmodule,makes which extensive is well use documented of the Astropy on the (physical) Astropy 3132 pfd,) frequency,* gain_rx 65 website7.7 30 unitswebsite7module,. which is well documented on the Astropy 3233 frequenc) y=1 * u.GHz website . 31 website7. 3334 print(’{:.2e}’.format(p_rx)) 3.1 Conversions module 32 p_rx=cnv.prx_from_powerflux( 3.13.1 Conversions Conversions module module 3435 print# 1.80(’{:.2e-07e}W’.format(p_rx)) 33 pfd, frequency, gain_rx 3.1 Conversions module 3536 # 1.80e-07 W 70 Most of the fundamental operations, e.g., converting the ra- 36 34 ) 70 20 MostMost of of the the fundamental fundamental operations, operations, e.g., e.g., converting converting the the ra- ra- 37 print(’{:.2f}’.format(p_rx.to(cnv.dB_W))) 20 diated total power into an equivalent power flux density at 37 35print(’{:.2f}’.format(p_rx.to(cnv.dB_W))) 20 Mostdiateddiated of total total the fundamental power power into into an operations, an equivalent equivalent e.g., power power converting flux flux density densitythe ra- at at 38 # -67.45 dB(W) a given distance and assuming a certain antenna gain of the 38 36# -67.45print(’dB{:.2(W)e}’.format(p_rx)) diatedaa given given total distance distance power and and into assuming assuming an equivalent a a certain certain power antenna antenna flux density gain gain of of at the the 37The# difference1.80e-07 betweenW Tx and Rx power for isotropic an- Tx,aTx,Tx, given or or or calculating calculating calculatingdistance and the the assuming total total received received a certain power power antenna at at at an an an gain Rx Rx Rx from from of from the the the the The difference between Tx and Rx power for isotropic an- conversions tennas38 is also called the free-space loss and can be calculated powerTx,powerpower or calculatingflux flux flux density, density, density, the are are total covered covered received by by power the theconversionsconversions at an Rx from thesub-sub-sub- tennas is also called the free-space loss and can be calculated package.power flux Furthermore, density, are coveredseveral by the conversions units are defined,sub- e.g.: using39 Friis’print transmission(’{:.2f}’ equation:.format(p_rx.to(cnv.dB_W)))75 25 package.package. Furthermore, Furthermore, several several Decibel Decibel units units are are defined, defined, e.g.: e.g.: using40 Friis’# -67.45 transmissiondB( equation:W) 75 25 package. Furthermore, several Decibel units are defined, e.g.: 38 fspl = cnv.free_space_loss( fspl = cnv.free_space_loss( Listing 1. Conversions module. 3839The differencedistance, between frequency Tx and Rx power for isotropic Listing1 import 1. Conversionsastropy.units module. as u 39 distance, frequency 1 import astropy.units as u 40antennas) is also called the free-space loss and can 2 import pycraf.conversions as cnv 40 ) 2 import pycraf.conversions as cnv 41be calculated using Friis’ transmission equation: 3 41 3 4241 printfspl=(’{:.2cnv.free_space_loss(f}’.format(fspl)) 80 power = 1 u.W 42 print(’{:.2f}’.format(fspl)) 80 4 * 4342 # -92.45 dB 45 4 power = 1 * u.W Likewise,# -92.45distance ifdB such, powerfrequency flux density is received 30 5 43 30 5 by43 an isotropic) antenna, one can calculate the to- 6 print(’{:.2f}’.format(power)) This result is consistent with the above approach, if the addi- 6 print(’{:.2f}’.format(power)) Thistal44 result received is consistent power with (which the above depends approach, on if the frequency): addi- 7 # 1.00 W tional Tx antenna gain of 25 dBi is considered. 7 # 1.00 W tional2945 Txgain_rprint antenna(x=’ gain{:.20 off 25}’cnv.dBi dBi.format is considered.(fspl)) 8 The conversions*sub-package offers a lot more and we 8 The3046 conversionsfrequenc# -92.45y=dBsub-package1 * u.GHz offers a lot more and we 9 print(’{:.2f}’.format(power.to(cnv.dB_W))) refer to the online documentation for a detailed overview of 85 9 print(’{:.2f}’.format(power.to(cnv.dB_W))) refer31 to the online documentation for a detailed overview of 85 35 10 # 0.00 dB(W) This result is consistent with the above approach, if the 35 10 # 0.00 dB(W) the32 functionality.p_rx=cnv.prx_from_powerflux( 11 the functionality.additional Tx antenna gain of 25 dBi is considered. 11 33 pfd, frequency, gain_rx 12 print(’{:.2f}’.format(power.to(cnv.dBm))) The conversions sub-package offers a lot more and we 12 print(’{:.2f}’.format(power.to(cnv.dBm))) 3.23.234 Path Path attenuation attenuation) 13 # 30.00 dB(mW) refer to the online documentation for a detailed overview of 13 # 30.00 dB(mW) 35 Thethe largest functionality. part of the code base is currently dedicated to the ToListing calculate 1. Conversions the power module. flux density (in vacuum) produced The36 largestprint part( of’{:.2 the codee}’. baseformat is currently(p_rx)) dedicated to the ListingTo calculate 1. Conversions the power module. flux density (in vacuum) produced implementation of the path propagation loss algorithm de- 40 implementation37 # 1.80e of-07 theW path propagation loss algorithm de- 40 byby a a 1 1 W W Tx Tx at at a a distance distance of of e.g. e.g. 1 1 km, km, assuming assuming aa forward forward 25 scribed3.2 Pathin ITU-R attenuation Rec. P.452. As discussed in Sect. 2, the path 90 antennaantennaTo calculate gain gain of of the 25 25 powerdBi dBi and and flux free-space free-space density propagation, (inpropagation, vacuum) one oneproduced can can scribed38 in ITU-R Rec. P.452. As discussed in Sect. 2, the path 90 To calculate the power flux density (in vacuum) produced attenuationattenuation39 print calculation calculation(’{:.2 isf} oneis’. oneformat of ofthe the three(p_rx.to(cnv.dB_W))) three fundamental fundamental steps steps useuseby the athe 1 function Wfunction Tx atpowerflux_from_ptxpowerflux_from_ptx a distance of e.g. 1 km, assuming: : a forward The largest part of the code base is currently dedicated to by a 1 W Tx at a distance of e.g. 1 km, assuming a forward inin any40 any compatibility# compatibility-67.45 study.dB study.(W) Furthermore, Furthermore, it is it the is the most most critical critical antenna gain of 25 dBi and free-space propagation, one can the implementation of the path propagation loss algorithm antenna1313 p_txp_tx gain = = of 1 1 25** dBiu.Wu.W and free-space propagation, one can aspect,aspect,41 asfsp as thel= the losses lossescnv.free_space_loss( can can easily easily exceed exceed 100 100 dB dB and and typically typically use thegain_tx function =powerflux_from_ptx 25 cnv.dBi : described in ITU-R Rec. P.452 (ITU-R, 2015). As discussed use1414 thegain_tx function =powerflux_from_ptx 25 ** cnv.dBi : uncertaintiesuncertainties42 aredistance are large. large. The, Thefrequency method method in P.452 in P.452 includes includes various various 4545 1515 distancedistance = = 1 1 ** u.kmu.km 43in Sect.2, the path attenuation calculation is one of the three effectseffects that that influence) influence the the path path loss: loss: 95 95 1616 44fundamental steps in any compatibility study. Furthermore, 1717 pfdpfd = = cnv.powerflux_from_ptx( cnv.powerflux_from_ptx( 1.451.itLine-of-sight isLine-of-sightprint the most(’{:.2 critical (free-space) (free-space)f}’ aspect,.format loss as loss(fspl)) the including losses including can correction easily correction exceed 1818 p_tx,p_tx, distance, distance, gain_tx gain_tx 46100termsterms# dB-92.45 for and for multipathtypically multipathdB and uncertainties and focussing focussing effects, are effects, large. The method in 66 P.452 includes various effects that influence the path loss: See6SeeSee https://bwinkel.github.io/pycraf/pathprof/working_with_https://bwinkel.github.io/pycraf/pathprof/working_with_https://bwinkel.github.io/pycraf/pathprof/working_with_ 2.The2.DiffractionDiffraction difference (at (at terrain between terrain features), features), Tx and Rx power for isotropic 50 srtm.htmlsrtm.htmlsrtm.htmlsrtm.html,,, last, last last last access: access: access: access:TS7 5TS7 5 June, June, for for 2018, further 2018, further for fordetails. details. further further details. details. antennas1. Line-of-sight is also called (free-space) the free-space loss including lossand correction can 77 http://docs.astropy.org/en/stable/units/7http://docs.astropy.org/en/stable/units/http://docs.astropy.org/en/stable/units/, last,, last last, last access: access: access: access:TS8 5TS8 5 June June 2018 2018 3.be3.TroposphericTropospheric calculatedterms for scatter, multipath scatter, using and and and Friis’ focussing transmission effects, equation: Please note the remarks at the end of the manuscript. Please note the remarks at the end ofwww.adv-radio-sci.net/16/1/2018/ the manuscript. Adv. Radio Sci., 16, 1–17, 2018 www.adv-radio-sci.net/16/1/2018/www.adv-radio-sci.net/16/1/2018/www.adv-radio-sci.net/16/177/2018/ Adv. Adv. Adv. Radio Radio Radio Sci., Sci., Sci., 16, 16, 16, 177– 1– 1–1719418, 2018,, 2018 2018 180 B. Winkel and A. Jessner: Spectrum management and compatibility studies with Python

4 B. Winkel and A. Jessner: Spectrumdata servers, management which allowsand compatibility to obtain so-called studies tiles with (1 Python1 ) ◦ × ◦ 400 on demand: Listing 2. Path profile module. 400300 1 import astropy.units as u 2 import pycraf.conversions as cnv 300200 3 import pycraf.pathprof as pp Height [m] 4 35 # allow download of missing SRTM data: 200100 5 Height [m] 6 pp.SrtmConf.set(download=’missing’) 7 100 0 5 10 15 20 25 30 Distance [km] 8 lon_t, lat_t = (6.9, 50.5) * u.deg 9 lon_r, lat_r = (7.3, 50.6) * u.deg 40 Figure0 1. Example5 height10 profile as15 obtained20 with the25 program30 in 10 step = 100 * u.m Distance [km] Listing 2. Based on NASA SRTM data (Farr et al., 2007). 11 ( Figure 1. Example height profile as obtained with the program in 12 Listing 2. Based on NASA SRTM data (Farr et al., 2007). 13 lons, lats, dist, dists, heights, 2. Diffraction (at terrain features), 14 bearing, bbearing, bbearings 45 15 ) = pp.srtm_height_profile( 4.3. AnomalousTropospheric propagation scatter, and (ducting, reflection from ele- 16 lon_t, lat_t, lon_r, lat_r, step 17 ) vated atmospheric layers). 4. Anomalous propagation (ducting, reflection from ele- Of course, it is also possible to provide SRTM tiles in a lo- vated atmospheric layers). Listing 2. Path profile module. Furthermore, a simple correction is provided to include addi- cal directory to avoid excessive network traffic. The returned 50 tional losses caused by local obstacles (“clutter”) at the end variables contain the geographical longitudes and latitudes of Furthermore, a simple correction is provided to include addi- Of course, it is also possible to provide SRTM tiles in a lo- 5 points of the propagation path. The details of the individual the path, the distances and back-bearings of each point on the tional losses caused by local obstacles (“clutter”) at the end cal directory to avoid excessive network traffic. The returned mechanisms are beyond the scope of this paper and we refer path with respect to the transmitter (which are inferred via points of the propagation path. The details of the individual variables contain the geographical longitudes and latitudes of to the P.452 and references therein for further information. Vincenty’s formulae for the Earth ellipsoid; Vincenty, 1975), mechanisms are beyond the scope of this paper and we refer the path, the distances and back-bearings of each point on the We note, however, that the diffraction calculation was re- as well as the heights (above the WGS84 mean sea level). 55 to the P.452 and references therein for further information. path with respect to the transmitter (which are inferred via vised in version 15 of the P.452. Previously, it used the 3- Here, the code to plot the data is omitted, but Fig. 1 displays We note, however, that the diffraction calculation was re- Vincenty’s formulae for the Earth ellipsoid; Vincenty, 1975), 10 edge Deygout method, while the new algorithm is based on the result. vised in version 15 of the P.452. Previously, it used the 3- as well as the heights (above the WGS84 mean sea level). the so-called delta-Bullington method. Because this change It is noted, however, that the relevant pycraf functions edge Deygout method, while the new algorithm is based on Here, the code to plot the data is omitted, but Fig.1 displays can significantly affect the results of the diffraction loss in can query SRTM data automatically; users do not necessar- the so-called delta-Bullington method. Because this change the result. mountainous terrain (see Wilson and Salamon, 2008, and ily need to provide the height profile themselves. Calculating 60 can significantly affect the results of the diffraction loss in It is noted, however, that the relevant pycraf functions references therein), pycraf offers both methods, from the the propagation loss between two points is a two-step pro- mountainous terrain (see Wilson and Salamon, 2008, and can query SRTM data automatically; users do not necessar- 15 older version 14 and the current version 16, such that one can cess. First, an auxiliary object, PathProp, is constructed references therein), pycraf offers both methods, from the ily need to provide the height profile themselves. Calculating compare older study results with the predictions of the new that contains the geometrical, environmental, and terrain pa- older version 14 and the current version 16, such that one can the propagation loss between two points is a two-step pro- method. rameters necessary for the further calculations: compareWhile most older of studypycraf resultsis with pure the Python predictions code, forof the perfor- new cess. First, an auxiliary object, PathProp, is constructed method. 17 frequency = 1 u.GHz 65 mance reasons the pathprof sub-package contains a large that contains the geometrical,* environmental, and terrain pa- While most of pycraf8 is pure Python code, for perfor- rameters18 omega necessary = 0 * foru.percent the further calculations: 20 amount of Cython code (Behnel et al., 2011). Even then, mance reasons the pathprof sub-package contains a large 19 temperature = 290 * u.K the P.452 algorithm is computationally demanding and if one amount of Cython8 code (Behnel et al., 2011). Even then, 20 pressure = 1013 * u.hPa wants to create a large map of path attenuations around a the P.452 algorithm is computationally demanding and if one 21 time_percent = 2 * u.percent transmitter, the calculation would be relatively slow. Allow- 22 h_tg, h_rg = (5, 50) u.m 70 wants to create a large map of path attenuations around a * ing for an insignificant loss of numerical accuracy, we devel- 23 transmitter, the calculation would be relatively slow. Allow- 25 oped a fast alternative for this use case, which is presented in 24 zone_t = pp.CLUTTER.URBAN ing for an insignificant loss of numerical accuracy, we devel- Sect. 3.2. 25 zone_r = pp.CLUTTER.SUBURBAN oped a fast alternative for this use case, which is presented in Before the path propagation loss can be calculated, a ter- 26 Sect. 3.2. rain height profile has to be constructed from a suitable data 27 pprop = pp.PathProp( 75 Before the path propagation loss can be calculated, a ter- frequency, source. The pycraf package has built-in access to SRTM 28 rain height profile has to be constructed from a suitable data 29 temperature, pressure, 30 data servers, which allows to obtain so-called tiles (1 1 ) source. The pycraf package has built-in access to◦ SRTM× ◦ 30 lon_t, lat_t, on demand: 31 lon_r, lat_r, 8 Cython is an extension to the Python language that allows the 32 h_tg, h_rg, 80 compilation of code into so-called C extensions, which can then 33 step, time_percent, be8 imported into Python and often provide a significant speed gain 34 comparedCython to is Python-only an extension implementations. to the Python language The details that allowsof this theare 35 zone_t=zone_t, zone_r=zone_r compilationbeyond the scope of code of thisinto paper. so-called More C information extensions, can which be foundcan then on 36 ) bethe imported Cython webpage: into Python http://cython.org/ and often provide, last a access: significant 5 June speed 2018. gain compared to Python-only implementations. The details of this are Here, omega, is the fraction of the path that is over sea, 85 beyond the scope of this paper. More information can be found on time_percent is the percentage of time for which the theAdv. Cython Radio webpage: Sci., 16,http://cython.org/ 177–194, 2018, last access: TS9 . propagation losses will www.adv-radio-sci.net/16/177/2018/ be larger than the returned values (see

Please note the remarks at the end of theAdv. manuscript. Radio Sci., 16, 1–17, 2018 www.adv-radio-sci.net/16/1/2018/ B. Winkel and A. Jessner: Spectrum management and compatibility studies with Python 181

38 # account for additional antenna gains 250 39 G_t, G_r=(20, 15) * cnv.dBi 40 200 41 tot_loss=pp.loss_complete( 42 pprop, G_t, G_r 43 150 ) 44 for l in tot_loss: 45 print(’{:.2f}’.format(l))

Path attenuation [dB] 100 LOS Troposcatter Total 46 # 122.34 dB Diffraction Ducting Total w. clutter 47 # 149.94 dB 0 5 10 15 20 25 30 48 # 181.99 dB Distance [km] 49 # 162.70 dB 50 # 149.94 dB Figure 2. Path propagation loss along the terrain height profile dis- 51 # 169.15 dB played in Fig.1. Based on NASA SRTM data (Farr et al., 2007). 52 # 134.15 dB The returned Python tuple contains 18 frequency=1 u.GHz * 1. L , the free-space loss, 19 omega=0 * u.percent bfsg 20 temperature=290 * u.K 2. Lbd, the basic transmission loss caused by diffraction, 21 pressure=1013 * u.hPa 22 time_percent=2 u.percent * 3. Lbs, the tropospheric scatter loss, 23 h_tg, h_rg=(5, 50) * u.m 24 4. Lba, the ducting/layer reflection loss, 25 zone_t=pp.CLUTTER.URBAN 26 zone_r=pp.CLUTTER.SUBURBAN 5. Lb, the complete path propagation loss, 27 28 pprop=pp.PathProp( 6. Lb,corr, as Lb but with clutter correction, and 29 frequency, 30 temperature, pressure, 7. L, as Lb but with clutter and gain correction. 31 lon_t, lat_t, 32 lon_r, lat_r, An important property of the total propagation loss (Lb and 33 h_tg, h_rg, L) is that it is not simply the product (or sum, if logarith- 34 step, mic representation is used) of the components. Again, we 35 time_percent, refer to P.452 (ITU-R, 2015) for more details. To give the 36 zone_t=zone_t, zone_r=zone_r reader an impression on how the various quantities behave as 37 ) a function of distance from the transmitter, we have calcu- Here, omega, is the fraction of the path that is over sea, lated the components for each point in the terrain height pro- time_percent is the percentage of time for which the file (Fig.1) and display them in Fig.2. In contrast to the two- propagation losses will be larger than the returned values point calculation above, the antenna gains were neglected, as (see P.452 for details), and htg,rg are the antenna heights of the effective gain towards each point along the path differs the Tx and Rx over ground, respectively. Furthermore, the somewhat due to the different elevation angles of the path at clutter zone type can be specified for both end points. the two stations. That however requires accounting for the The next step consists of feeding the PathProp instance respective antenna patterns, which is supported by pycraf, into a function loss_complete but beyond the scope of this simple example.

A fast map-making algorithm

With the above approach it is straightforward to produce a path loss map, e.g., around a given transmitter, by sim- ply calculating the propagation loss between each pixel in the map and the Tx location. As the P.452 algorithm is relatively complex, this would however require a substan- tial amount of computing time. In addition, the construc- tion of the geodesics (the shortest paths between two points on the Earth ellipsoid) and SRTM height profile extrac- tion/interpolation are also computationally demanding. Thus, two additional techniques were introduced to provide a sig- nificant speed-up. First, the map computation was moved www.adv-radio-sci.net/16/177/2018/ Adv. Radio Sci., 16, 177–194, 2018 6 B. Winkel and A. Jessner: Spectrum management and compatibility studies with Python

the6 map crosses many other pixels B. in-between. Winkel and We A. calculateJessner: SpectrumAgain, management we omit the and lengthy compatibility plot code, studies but thewith result Python of all geodesics between map edge pixels and the centre and this is visualized in Fig. 3. The hprof_cache object is use a caching technique to identify the edge-geodesic which a Python dict-like object containing the cached param- Longitude [deg] Again, we omit the lengthy plot code, but the result of comes closest6.2 to the6.4 pixel6.6 centre6.8 for each7.0 interior7.2 pixel.7.4 This7.6 eters and could also be edited by the user before call- 2 this is visualized in Fig. 3. The hprof_cache object is 5 essentially51.0 transforms the problem from O(n ) to O(n). Un- ing atten_map_fast. A typical example of such editing 60 a Python dict-like object containing the cached param- 35 fortunately, the P.452 algorithm itself can not be treated with would be the assignment of a different clutter zone to each Cologne eters and could also be edited by the user before call- a similar technique, because the path elevation angles (and of the pixels – given that the user has access to a suitable ing atten_map_fast. A typical example of such editing thus also if a path is line-of-sight or trans-horizon)Bonn are unique database containing the true clutter types. 50.8 would be the assignment of a different clutter zone to each pathprof for each pixel as they depend on the terrain height profile be- ofThe the pixels – givensub-package that the user also has provides access a largeto a suitable amount 10 tween the pixel and the map centre. of other utility functions, e.g., to plot terrain maps or export 65 database containing the true clutter types. 40 Using the attenuation map-making functionality is again a mapsThe topathprof a Geographicsub-package Information also System provides (GIS) a large file amount format 50.6 100-m RT two-step process. First, a helper object is created that caches suchof other as the utility Keyhole functions, Markup e.g., Language to plot terrain (KML); maps see or export online the terrain and path parameters, which is then fed into the documentationmaps to a Geographic for further Information information. System (GIS) file format P.452 algorithm:

Latitude [deg] such as the Keyhole Markup Language (KML); see online 182 B. Winkel and A. Jessner: Spectrum management and compatibility studies with Python 50.4 3.3documentation Protection for thresholds further information. 45 Listing 1. Fast path propagation loss map-making. Longitude [deg] 15 1 import astropy.units as u 6.2 6.4 6.6 6.8 7.0 7.2 7.4 7.6 Since3.3 Protectionpycraf was thresholds developed for compatibility studies in- 70 2 import pycraf.conversions as cnv 51.0 volving radio astronomy, the current protection sub- 3 50.2import pycraf.pathprof as pp packageSince pycraf only offerswas thresholds developed relevant for compatibility in that context. studies Most in- Cologne 4 importantly,volving radio this astronomy, covers the the tables current with protectionprotection thresholdssub- 5 pp.SrtmConf.set(download=Path propagation loss’missing’) 100 dB 120 dB 140 dB 160 dB 180 dB 200 dB givenpackage in onlyITU-R offers Rec. thresholds RA.769: relevant Values in from that thiscontext. table Most can Bonn 20 6 50.8 importantly, this covers the tables with protection thresholds 50 7 # Effelsberg radio telescope site given in ITU-R Rec. RA.769: Figure8 lon_rt 3. Example = 6.88361 map of path* u.deg propagation losses around the Effelsberg9 lat_rt observatory. = 50.52483 Based on* u.deg NASA SRTM data (Farr et al., ListingListing 4. 4.ITU-RITU-R Rec. Rec. RA.769 RA.769 thresholds. thresholds. from pycraf import protection 50.6 100-m RT 102007). 1 25 11 # Map parameters 2 12 msize_lon, msize_lat = (1, 1) * u.deg 3 tab = protection.ra769_limits( mode=’continuum’ 55 Latitude [deg] 1310 map_resolution = 3 * u.arcsec 4 50.4 1411 zone_t# Map =parameters pp.CLUTTER.URBAN 5 ) 1512 zone_rmsize_lon, = pp.CLUTTER.SUBURBAN msize_lat = (1, 1) * u.deg 6 print(tab[[ 30 1613 map_resolution = 3 * u.arcsec 7 51714 # zone_tP.452 parameters = pp.CLUTTER.URBAN 8 ’frequency’, ’bandwidth’, ’T_A’, ’T_rx’, 60 50.2 1815 frequencyzone_r = =pp.CLUTTER.SUBURBAN 10 * u.GHz 9 ’Plim’ 1916 temperature = 290 * u.K 10 Path propagation loss 17 # P.452 parameters 11 ]]) 100 dB 120 dB 140 dB 160 dB 180 dB 200 dB 20 pressure = 1013 * u.hPa frequency = 10 u.GHz 12 35 2118 time_percent = 2** u.percent 13 # frequency bandwidth T_A T_rx Plim 102219 h_rt,temperature h_tx = (50,= 290 20)* u.K* u.m Figure 3. Example map of path propagation losses around the 2320 pressure = 1013 * u.hPa 14 # MHz MHz K K dB(W) 65 Effelsberg observatory. Based on NASA SRTM data (Farr et al., 2421 time_percent = 2 * u.percent 15 # ------# 13 0 50000 60 -184.6 2007). 2522 hprof_cacheh_rt, h_tx = pp.height_map_data((50, 20) * u.m 16 17 # 26 0 15000 60 -187.9 40 2623 lon_rt, lat_rt, 18 # 74 2 750 60 -195.0 152724 msize_lon, msize_lat, 19 # 152 3 150 60 -199.5 70 2825 hprof_cachemap_resolution=map_resolution, = pp.height_map_data( into the Cython part of the code (avoiding the use of slower 20 # 325 7 40 60 -201.0 2926 zone_t=zone_t,lon_rt, lat_rt, zone_r=zone_r, Python for-loops), where it is furthermore possible to make msize_lon, msize_lat, 21 # 408 4 25 60 -202.9 9 3027 ) use of OpenMP for automatic parallelisation of the code 28 map_resolution=map_resolution, 22 # ...... 45 31 to improve execution times on machines with many CPU 20 zone_t=zone_t, zone_r=zone_r, 23 # 23800 400 15 30 -195.6 3229 results = pp.atten_map_fast( cores. The second improvement is algorithmic in nature and ) 24 # 31550 500 18 65 -192.4 75 3330 frequency, aims to speed-up the geometric part of the computation: the 25 # 43000 1000 25 65 -190.6 3431 temperature, 32 results = pp.atten_map_fast( 26 # 89000 8000 12 30 -189.4 geodesics calculation and height profile generation, which is 35 pressure, 33 frequency, 27 # 150000 8000 14 30 -189.2 preparatory work before the actual P.452-algorithm is em- 50 36 h_rt, h_tx, 25 34 temperature, 28 # 224000 8000 20 43 -187.6 ployed. A path from the map centre to a pixel on the edge of 37 time_percent, 35 pressure, 29 # 270000 8000 25 50 -186.8 80 the map crosses many other pixels in-between. We calculate 38 hprof_cache, 36 h_rt, h_tx, 30 # Length = 21 rows all geodesics between map edge pixels and the centre and 39 ) 37 time_percent, 40 Values from this table can then subsequently be used to com- use a caching technique to identify the edge-geodesic which 38 hprof_cache, comes closest to the pixel centre for each interior pixel. This 55 41 total_atten = results[’L_b’] pare received power levels of a potential interferer with the 30 39 ) then subsequently be used to compare received power levels 75 2 essentially transforms the problem from O(n ) to O(n). Un- 40 ofpermitted a potential power interferer levels. with Almost the all permitted compatibility power studies levels. that Al- fortunately, the P.452 algorithm itself can not be treated with Listing41 total_atten 3. Fast path propagation = results[ loss map-making.’L_b’] involve RAS refer to the RA.769 methodology or thresholds 85 a similar technique, because the path elevation angles (and in one form or another. thus also if a path is line-of-sight or trans-horizon) are unique Adv. Radio Sci., 16, 1–18, 2018 www.adv-radio-sci.net/16/1/2018/ for each pixel as they depend on the terrain height profile be- wouldAdv. Radio be the Sci., assignment 16, 1–17 of, 2018 a different clutter zone to each www.adv-radio-sci.net/16/1/2018/ tween the pixel and the map centre. of the pixels – given that the user has access to a suitable Using the attenuation map-making functionality is again a database containing the true clutter types. two-step process. First, a helper object is created that caches The pathprof sub-package also provides a large amount the terrain and path parameters, which is then fed into the of other utility functions, e.g., to plot terrain maps or export P.452 algorithm, see Listing 3. maps to a Geographic Information System (GIS) file format Again, we omit the lengthy plot code, but the result of such as the Keyhole Markup Language (KML); see online this is visualized in Fig.3. The hprof_cache object is documentation for further information. a Python dict-like object containing the cached param- eters and could also be edited by the user before call- 3.3 Protection thresholds ing atten_map_fast. A typical example of such editing Since pycraf was developed for compatibility studies in- 9https://www.openmp.org/, last access: 5 June 2018 volving radio astronomy, the current protection sub-

Adv. Radio Sci., 16, 177–194, 2018 www.adv-radio-sci.net/16/177/2018/ 6 B. Winkel and A. Jessner: Spectrum management and compatibility studies with Python

Longitude [deg] Again, we omit the lengthy plot code, but the result of 6.2 6.4 6.6 6.8 7.0 7.2 7.4 7.6 this is visualized in Fig. 3. The hprof_cache object is 51.0 a Python dict-like object containing the cached param- 35 Cologne eters and could also be edited by the user before call- ing atten_map_fast. A typical example of such editing Bonn 50.8 would be the assignment of a different clutter zone to each of the pixels – given that the user has access to a suitable database containing the true clutter types. 40 The pathprof sub-package also provides a large amount 50.6 100-m RT of other utility functions, e.g., to plot terrain maps or export maps to a Geographic Information System (GIS) file format

Latitude [deg] such as the Keyhole Markup Language (KML); see online 50.4 documentation for further information. 45

3.3 Protection thresholds B. Winkel and A. Jessner: Spectrum management and compatibility studies with Python 183 50.2 Since pycraf was developed for compatibility studies in- volving radio astronomy, the current protection sub- Path propagation loss package only offers thresholds relevant in that context. Most Escan: 0.0d, Tilt: 0.0d Escan: 0.0d, Tilt: 15.0d 100 dB 120 dB 140 dB 160 dB 180 dB 200 dB package only offers thresholds relevant in that context. Most importantly, this covers the tables with protection thresholds 80 80 importantly, this covers the tables with protection thresholds 50 60 60

given in ITU-R Rec. RA.769 (ITU-R, 2003), see Listing 4. 40 40 given in ITU-R Rec. RA.769: 20 Figure 3. Example map of path propagation losses around the 20 20 Effelsberg observatory. Based on NASA SRTM data (Farr et al., Listing 4. ITU-R Rec. RA.769 thresholds. 0 0 from pycraf import protection 20 20 2007). 1 Elevation [deg] Elevation [deg] 2 40 40 10 3 tab = protection.ra769_limits( 60 60 80 80 4 mode=’continuum’ 55 10 75 50 25 0 25 50 75 75 50 25 0 25 50 75 11 # Map parameters 5 ) Azimuth [deg] Azimuth [deg] 0 12 msize_lon, msize_lat = (1, 1) u.deg 6 Escan: 30.0d, Tilt: 0.0d Escan: 30.0d, Tilt: 15.0d Gain [dB] * 80 80 7 print(tab[[ 13 map_resolution = 3 * u.arcsec 60 60

5 14 zone_t = pp.CLUTTER.URBAN 8 ’frequency’, ’bandwidth’, 40 40 10

15 zone_r = pp.CLUTTER.SUBURBAN 9 ’T_A’, ’T_rx’, 60 20 20 16 10 ’Plim’ 0 0 20 20

11 ]]) Elevation [deg] Elevation [deg] 17 # P.452 parameters 20 18 frequency = 10 * u.GHz 12 40 40 60 60 10 19 temperature = 290 * u.K 13 # frequency bandwidth T_A T_rx Plim 80 80 14 # MHz MHz K K dB(W) 65 20 pressure = 1013 * u.hPa 75 50 25 0 25 50 75 75 50 25 0 25 50 75 21 time_percent = 2 * u.percent 15 # ------Azimuth [deg] Azimuth [deg] 22 h_rt, h_tx = (50, 20) * u.m 16 # 13 0 50000 60 -184.6 Figure 4. Composite phased-array antenna patterns of the 23 17 # 26 0 15000 60 -187.9 next mobile-communications standard 5G as defined in ITU- 15 24 18 # 74 2 750 60 -195.0 R Rec. M.2101 (ITU-R, 2017a). 25 hprof_cache = pp.height_map_data( 19 # 152 3 150 60 -199.5 70 26 lon_rt, lat_rt, 20 # 325 7 40 60 -201.0 27 msize_lon, msize_lat, 21 # 408 4 25 60 -202.9 28 map_resolution=map_resolution, 22 # ...... In pycraf several (simplified) antenna models are pro- 20 29 zone_t=zone_t, zone_r=zone_r, 23 # 23800 400 15 30 -195.6 vided that implement various ITU-R recommendations, 30 ) 24 # 31550 500 18 65 -192.4 75 which shall be used for spectrum management studies. As 31 25 # 43000 1000 25 65 -190.6 an example, the fairly complex 5G composite antenna pat- 32 results = pp.atten_map_fast( 26 # 89000 8000 12 30 -189.4 terns can be obtained as demonstrated in Listing 5, where 33 frequency, 27 # 150000 8000 14 30 -189.2 the azim_i and elev_j angles define the pointing of the 28 # 224000 8000 20 43 -187.6 25 34 temperature, formed beam in the antenna frame coordinates (azimuth and 29 # 270000 8000 25 50 -186.8 80 35 pressure, elevation). In Fig.4 examples are shown for four different 36 h_rt, h_tx, 30 # Length = 21 rows beam directions: (0,0 ), (30,0 ), (0,15 ), and (30,15 ). time_percent, ◦ ◦ ◦ ◦ 37 Values from this table can then subsequently be used to com- 38 hprof_cache, Listing 4. ITU-R Rec. RA.769 (ITU-R, 2003) thresholds. pare received power levels of a potential interferer with the 30 39 ) 3.5 Atmospheric attenuation 40 permitted power levels. Almost all compatibility studies that 41 total_atten = results[’L_b’] involveValues from RAS this refer table to the can RA.769 then subsequently methodology be usedor thresholds to com- 85 Once the propagation path exceeds a certain length, e.g., for inpare one received form or power another. levels of a potential interferer with the communication links to satellites or for radio-astronomical permitted power levels. Almost all compatibility studies that observation of extra-terrestrial sources, the attenuation by involve RAS refer to the RA.769 methodology or thresholds the gases in the atmosphere of the Earth becomes impor- Adv. Radio Sci., 16, 1–17, 2018 www.adv-radio-sci.net/16/1/2018/ in one form or another. tant, especially at higher frequencies. Again, there exists a ITU-R recommendation, P.676, which was implemented in 3.4 Antenna patterns the atm sub-package. It can be used to predict the attenu- ation as a function of frequency, path geometry, and atmo- In many realistic compatibility studies, the antenna patterns spheric parameters. The two molecules that play a major of transmitter and receiver have to be accounted for. This can role are oxygen (so-called dry component) and water (wet be more complex than what might be naively assumed. For component), both introducing spectral-line emission and ab- example, the base stations and partly also the user equipment sorption. Furthermore, oxygen also produces the continuous of the next-generation mobile communications standard 5G non-resonant Debye-spectrum (below 10 GHz). At frequen- will utilize antennas. To calculate the effective cies above 100 GHz continuous attenuation by nitrogen starts gain for the propagation path, one must account for the di- to play a role as well. rection of the formed beam, the orientation (and rotation) of The calculation of atmospheric attenuation is performed the antenna frame normal vector, and the relative position of via a ray-tracing approach. Let us assume a radio signal the propagation path with respect to the antenna frame. We enters Earth’s atmosphere and travels to a receiving station will return to this in Sect.4. close to the ground. First, the atmosphere is divided into lay-

www.adv-radio-sci.net/16/177/2018/ Adv. Radio Sci., 16, 177–194, 2018 6 B. Winkel and A. Jessner: Spectrum management and compatibility studies with Python

Longitude [deg] Again, we omit the lengthy plot code, but the result of 6.2 6.4 6.6 6.8 7.0 7.2 7.4 7.6 this is visualized in Fig. 3. The hprof_cache object is 51.0 a Python dict-like object containing the cached param- 35 Cologne eters and could also be edited by the user before call- ing atten_map_fast. A typical example of such editing Bonn 50.8 would be the assignment of a different clutter zone to each of the pixels – given that the user has access to a suitable database containing the true clutter types. 40 The pathprof sub-package also provides a large amount 50.6 100-m RT of other utility functions, e.g., to plot terrain maps or export maps to a Geographic Information System (GIS) file format

Latitude [deg] such as the Keyhole Markup Language (KML); see online

50.4 documentation for further information. 45

3.3 Protection thresholds

50.2 Since pycraf was developed for compatibility studies in- volving radio astronomy, the current protection sub- Path propagation loss package only offers thresholds relevant in that context. Most 100 dB 120 dB 140 dB 160 dB 180 dB 200 dB 184 B. Winkel and A. Jessner: Spectrum management and compatibility studies with Python B.importantly, Winkel and this A. covers Jessner: the tables Spectrum with managementprotection thresholds and compatibility50 studies with Python 7 given in ITU-R Rec. RA.769: Figure 3. Example map of path propagation losses around the 1 import numpy as np Effelsberg observatory. Based on NASA SRTM data (Farr et al., Listing 4. ITU-R Rec. RA.769 thresholds. Listing 4. ITU-R Rec. RA.769 thresholds. 2 import astropy.units as u 2007). 1 from pycraf import protection 2 3 import pycraf.conversions as cnv 3 tab = protection.ra769_limits( 4 import pycraf.antenna as ant 5 5 10 4 mode=’continuum’ 55 azims = np.arange(-180, 180) u.deg 11 # Map parameters 5 ) 6 * 7 elevs = np.arange(-90, 90) u.deg 12 msize_lon, msize_lat = (1, 1) * u.deg 6 * 8 13 map_resolution = 3 * u.arcsec 7 print(tab[[ 80 9 # antenna parameters according to 5 14 zone_t = pp.CLUTTER.URBAN 8 ’frequency’, ’bandwidth’, # ITU-R Rec. M.2101 10 15 zone_r = pp.CLUTTER.SUBURBAN 9 ’T_A’, ’T_rx’, 60 10 16 10 ’Plim’ 11 G_Emax = 5 * cnv.dB 60 17 # P.452 parameters 11 ]]) 12 A_m, SLA_nu = (30, 30) * cnv.dimless 18 frequency = 10 * u.GHz 12 13 azim_3db, elev_3db = (65, 65) * u.deg 14 d_H, d_V = (0.5, 0.5) cnv.dimless 40 10 19 temperature = 290 * u.K 13 # frequency bandwidth T_A T_rx Plim * 65 15 N_H, N_V = 8, 8 15 20 pressure = 1013 * u.hPa 14 # MHz MHz K K dB(W) Height [km] 21 time_percent = 2 * u.percent 15 # ------16 20 22 h_rt, h_tx = (50, 20) * u.m 16 # 13 0 50000 60 -184.6 17 azim_i, elev_j = (0, 0) * u.deg 23 17 # 26 0 15000 60 -187.9 18 18 # 74 2 750 60 -195.0 19 gains = ant.imt2020_composite_pattern( 15 24 0 25 hprof_cache = pp.height_map_data( 19 # 152 3 150 60 -199.5 70 20 azims[np.newaxis], 20 160 180 200 220 240 260 280 300 26 lon_rt, lat_rt, 20 # 325 7 40 60 -201.0 21 elevs[:, np.newaxis], Temperature [K] 27 msize_lon, msize_lat, 21 # 408 4 25 60 -202.9 22 azim_i, elev_j, 28 map_resolution=map_resolution, 22 # ...... 23 G_Emax, 80 Total Wet 20 29 zone_t=zone_t, zone_r=zone_r, 23 # 23800 400 15 30 -195.6 24 A_m, SLA_nu, 30 ) 24 # 31550 500 18 65 -192.4 75 25 azim_3db, elev_3db, 25 60 31 25 # 43000 1000 25 65 -190.6 26 d_H, d_V, 32 results = pp.atten_map_fast( 26 # 89000 8000 12 30 -189.4 27 N_H, N_V, 27 # 150000 8000 14 30 -189.2 33 frequency, 28 ) 40 25 34 temperature, 28 # 224000 8000 20 43 -187.6 35 pressure, 29 # 270000 8000 25 50 -186.8 80 Listingwhere 5. the5Gazim_i compositeand antennaelev_j patterns.angles define the point- Height [km] 36 h_rt, h_tx, 30 # Length = 21 rows ing of the formed beam in the antenna frame coordinates 30 20 time_percent, (azimuth and elevation). In Fig. 4 examples are shown for 37 Values from this table can then subsequently be used to com- 38 hprof_cache, ersfour (several different hundreds beam directions: or more) and(0, for0◦) each, (30, of0◦ these), (0, the15◦ atten-), and pare receivedEscan: 0.0d, power Tilt: 0.0d levels of a potentialEscan: 0.0d, interferer Tilt: 15.0d with the 30 39 ) uation(30,15 of) the. incident signal is calculated, such that the sig- 0 80 80 ◦ 6 5 4 3 2 1 0 1 2 3 40 permitted power levels. Almost all compatibility studies that 10 10 10 10 10 10 10 10 10 10 60 60 nal, which leaves a layer is somewhat weaker than the signal 41 total_atten = results[’L_b’] involve RAS refer to the RA.769 methodology or thresholds 85 Pressure [hPa] 40 40 3.5 Atmospheric attenuation in one form or another. 20 that entered a layer. At the same time, the layer itself emits 20 20 radio waves having the aforementioned spectral properties. 80 0 0 EachOnce layer the propagationhas different path physical exceeds properties, a certain such length, as temper- e.g., for 35 20 20 Adv. Radio Sci., 16, 1–17, 2018Elevation [deg] www.adv-radio-sci.net/16/1/2018/Elevation [deg] communication links to satellites or for radio-astronomical 40 40 10 ature, pressure, water content, and refractivity. These “height observation of extra-terrestrial sources, the attenuation by 60 60 60 profiles” have to be known to calculate the specific attenua- the gases in the atmosphere of the Earth becomes impor- 80 80 tion per layer. For ITU-R related studies, it is widely accepted 75 50 25 0 25 50 75 75 50 25 0 25 50 75 tant, especially at higher frequencies. Again, there exists a Azimuth [deg] Azimuth [deg] 0 to work with mean profiles, which were averaged over a year. 40

Escan: 30.0d, Tilt: 0.0d Escan: 30.0d, Tilt: 15.0d Gain [dB] ITU-R recommendation, P.676, which was implemented in 40

The “standard profile” is provided in ITU-R Rec. P.835 (ITU- Height [km] 80 80 the atm sub-package. It can be used to predict the attenu- 60 60 R, 2012) along with five more specialised profiles, associated ation as a function of frequency, path geometry, and atmo- 20 40 40 10 with the geographic latitude and season (“high-latitude sum- spheric parameters. The two molecules that play a major 20 20 mer/winter”, “mid-latitude summer/winter”, and “low lati- 0 0 role are oxygen (so-called dry component) and water (wet tude”). For example: 0 20 20 45 13 11 9 7 5 Elevation [deg] Elevation [deg] 20 component), both introducing spectral-line emission and ab- 10 10 10 10 10 40 40 sorption. Furthermore, oxygen also produces the continuous Water density [g cm 3 ] 60 60 non-resonant Debye-spectrum (below 10 GHz). At frequen- 80 80 Figure 5. Standard atmospheric height profiles (temperature, pres- 75 50 25 0 25 50 75 75 50 25 0 25 50 75 cies above 100 GHz continuous attenuation by nitrogen starts Azimuth [deg] Azimuth [deg] to play a role as well. sure, and water density) according to ITU-R Rec. P.835 (ITU-R, 2012). Figure 4. Composite phased-array antenna patterns of the The calculation of atmospheric attenuation is performed 50 next mobile-communications standard 5G as defined in ITU- via a ray-tracing approach. Let us assume a radio signal R Rec. M.2101. enters Earth’s atmosphere and travels to a receiving station close to the ground. First, the atmosphere is divided into lay- ers (several hundreds or more) and for each of these the atten- Listing 1. 5G composite antenna patterns. uation of the incident signal is calculated, such that the sig- 55 www.adv-radio-sci.net/16/1/2018/ Adv. Radio Sci., 16, 1–18, 2018 Adv. Radio Sci., 16, 177–194, 2018 www.adv-radio-sci.net/16/177/2018/ 8 B. Winkel and A. Jessner: Spectrum management and compatibility studies with Python

“mid-latitude summer/winter”, and “low latitude”). For ex- 80 ample:B. Winkel and A. Jessner: Spectrum management and compatibility studies with Python 185 Listing 6. Atmospheric attenuation. 1 import numpy as np 60 Dry air import astropy.units as u 2 104 Wet air 5 3 import pycraf.conversions as cnv Total 40 4 from pycraf import atm 103

5 Height [km] 102 6 # define height grid 20 7 height_grid = np.arange(0, 85, 0.1) u.km * 101 10 8 9 # query profile_standard function 1000 10 ( 160 180 200 220 240 260 280 300 1 Temperature [K] 11 temperatures, Specific attenuation [dB / km] 10 12 pressures, 80 Total 10 2 15 13 rho_water, Wet 14 pressures_water, 0 200 400 600 800 Frequency [GHz] 15 ref_indices, 60 16 humidities_water, Figure 6. Specific attenuation for a layer with a total pressure of 17 humidities_ice 1013 hPa, a temperature of 290 K, and a specific water density of 40 20 18 ) = atm.profile_standard(height_grid) 3 7.5 gcm− according to ITU-R Rec. P.676 (ITU-R, 2013). Height [km] The resulting profiles are displayed in Fig. 5. ITU- Listing 6. Atmospheric attenuation. R Rec. P.676 contains tables with the resonance lines of 20 39 elevation=15 * u.deg oxygen and water, necessary to calculate the specific at- The resulting profiles are displayed in Fig.5. ITU- 40 station_altitude=300 * u.m tenuation for one layer (or propagation paths close to 410 freqs=np.arange(1, 100, 0.1) * u.GHz R Rec. P.676 (ITU-R, 2013) contains tables with the 6 5 4 3 2 1 0 1 2 3 25 the ground, which stay in a single layer). The function 4210 10 10 10 10 10 10 10 10 10 resonance lines of oxygen and water, necessary to calculate atten_specific_annex1 can be used for that: 43 ( Pressure [hPa] the specific attenuation for one layer (or propagation paths 44 total_atten, refraction, tebb 18 freqs = np.arange(1, 1000) u.GHz 80 close to the ground, which stay in a single* layer). The func- 45 )=atm.atten_slant_annex1( 19 p_total = 1013 u.hPa tion atten_specific_annex1* can be used for that: 46 freqs, elevation, 20 temperature = 290 u.K 19 freqs=np.arange(1*, 1000) * u.GHz 4760 station_altitude, 30 21 rho_water = 7.5 u.g / u.m 3 20 p_total=1013 * *u.hPa ** 48 atm.profile_highlat_winter 22 21 temperature=290 * u.K 49 ) 2223 rho_wate# need dryr=and7.5 wet* u.pressureg/u.m **separately3 : 40 2324 p_wet = atm.pressure_water_from_rho_water( In Fig.7 the total atmospheric attenuation of a slant path Height [km] 2425 # needtemperature,dry and wet rho_waterpressure separately: for Summer/Winter high-latitude standard profiles is pre- 20 35 2526 p_wet=) atm.pressure_water_from_rho_water( sented, along the so-called equivalent-black-body tempera- 2627 p_drytemperature = p_total, -rho_water p_wet ture, Tebb, of the full atmosphere with major contributions by 2728 ) the atmospheric0 emission itself. 2829 p_drprinty=(’O2p_totapressurel-p_wet: {:.2f}’.format(p_dry)) 10 13 10 11 10 9 10 7 10 5 30 print(’H2O vapor partial pressure: ’ 3 29 3.6 Satellite two-lineWater elements density [g cm ] 40 3031 print(’’O2{:.2pressuref}’.format(p_wet)): {:.2f}’.format(p_dry)) 32 # Oxygen pressure: 1002.96 hPa 31 print(’H2O vapor partial pressure: ’ FigureFor studies 5. Standard involving atmospheric a satellite height or profiles a satellite (temperature, network pres- it 3233 # Water vapor partial pressure: 10.04 hPa sure, and water density) according to ITU-R Rec. P.835. ’{:.2f}’.format(p_wet)) is often necessary to determine their position relative to 3334 # Oxygen pressure: 1002.96 hPa an Earth station. Satellite orbits vary slowly in time as a 3435 #a_dry,Water a_wetvapor =partial atm.atten_specific_annex1(pressure: 10.04 hPa consequence of the gravitational influence of planetary 45 3536 freqs, p_dry, p_wet, temperature 42 total_atten, refraction, tebb 3637 a_dry), a_wet=atm.atten_specific_annex1( system43 bodies,) = atm.atten_slant_annex1( most importantly the Moon, the Sun, and 37 Jupiter. Furthermore, the orbits are subject to drag forces The resultingfreqs spectrum, p_dry, isp_wet shown, intemperature Fig. 6. Calculating 44 freqs, elevation, 38 ) induced by the outer layers of the atmosphere, especially, such spectra for each layer allows us to perform the ray- 45 station_altitude, in46 the case ofatm.profile_highlat_winter low-earth orbit (LEO) satellites. Satellites 60 tracingThe for resulting a slant spectrum path through is shown the full in atmosphere Fig.6. Calculating (with the such spectra for each layer allows us to perform the ray- are47 therefore constantly) monitored by stations on Earth 50 atten_slant_annex1 function ): to update their orbital parameters. These are provided tracing for a slant path through the full atmosphere (with the In Fig. 7 the total atmospheric attenuation of a slant path function37 elevationatten_slant_annex1 = 15 * u.deg ): in a standardized format, the so-called two-line element 38 station_altitude = 300 * u.m for(TLE) Summer/Winter sets, which are high-latitude usually updated standard once profiles per day is pre- and 39 freqs = np.arange(1, 100, 0.1) * u.GHz sented,can be along retrieved the so-called from the equivalent-black-body Space Track10 or CelesTrak tempera-11 40 ture,websites.Tebb, of As the an full example, atmosphere the with TLE major of the contributions International by 65 55 41 ( theSpace atmospheric Station (ISS) emission for 20 itself. September 2008 looks like this:

Adv. Radio Sci., 16, 1–17, 201810https://www.space-track.org www.adv-radio-sci.net/16/1/2018/, last access: 5 June 2018 11http://celestrak.com/, last access: 5 June 2018

www.adv-radio-sci.net/16/177/2018/ Adv. Radio Sci., 16, 177–194, 2018 10 B. Winkel and A. Jessner: Spectrum management and compatibility studies with Python

4 Compatibility of a 5G cell phone network and RAS 80 250 With the pycraf package introduced in Sect. 3.1 it is very 60 200 easy to do simple compatibility studies. Especially, for a point-to-point analysis, there is not much more to it than the 150 40 determination of the emitted power and the path loss and fi- 40 186 B. Winkel and A. Jessner: Spectrum management and compatibility studies with Python Time delta [s] Elevation [deg] 100 nally the comparison of the received power with the compat- 20 ibility threshold level. These steps could easily be put into a culate the position of the satellite in the Geocentric reference50 Winter, elevation: 90 deg stand-alone software package, perhaps with a graphical user Summer, elevation: 90 deg frame0 for any point in time. However, if the time difference 0 interface. A need for additional functionality may however Winter, elevation: 15 deg to the TLE150 epoch100 is significantly50 0 larger50 than100 a day,150 the result Summer, elevation: 15 deg Azimuth [deg] arise sometimes, or one may be faced with more complex 45 102 may be completely wrong. scenarios right from the beginning. Therefore, pycraf was For compatibility studies one usually needs the satellite Figure 8. Position of visible IRIDIUM network satellites in the designed as a programming library. Although this makes the topocentricposition in reference the antenna frame reference for an observer frame of at the the ground Effelsberg station. ob- simplest projects slightly more complicated (because one al- 101 servatory.Therefore, Displayed the satellite are the azimuthsub-package and elevation of pycraf of the satellites, which ways need to write some Python code), it is well-suited to foris otherwisefive minutes just starting a thin from wrapper 4 January around 2018, 21:45sgp4TS14, adds. some deal with more challenging studies. One of these more com- 50 routines for this coordinate conversion. One only needs to plicated cases is discussed in this section. 100 specify the coordinates of the observatory and the desired time, see Listing 7. Total attenuation [dB] 4.1 Context Satellite TLEs. Listing 7. The mobile telecommunication industry wants to utilize 10 1 1 from astropy import coordinates, time 2 from pycraf import satellite as sat more bandwidth for their next-generation mobile commu- 3 nications standard, which is called 5G. At the last world 55 20 40 60 80 4 tle_string = ’’’ISS (ZARYA) radio communications conference (WRC), an agenda item 5 5 1 25544U 98067A 08264.51782528 ... (AI 1.13) was proposed for the next WRC in 2019. It is en- 6 2 25544 51.6416 247.4627 0006703...’’’ titled “Work plan and proposed liaison to Task Group 5/1 13 300 7 on spectrum needs for the terrestrial component of IMT in 8 # define observer location the frequency range between 24.25 GHz and 86 GHz”. Al- 60 9 loc = coordinates.EarthLocation( though there is currently some tendency among vendors and 250 10 10 6.88375, 50.525, 366. administrations to favour the lower part of the frequency 11 ) range mentioned in the agenda item (the 24.25–27.5 GHz 12 200 sub-band) we are required to study all possible sub-bands 13 # create a SatelliteObserver instance 14 sat_obs = sat.SatelliteObserver(loc) without a predetermined conclusion for AI 1.13. 65 The Committee on Radio Astronomy Frequencies (CRAF) 150 15 15

Tebb [K] 16 obstime = time.Time( – an expert committee of European radio astronomers in- 17 ’2008-09-20T20:00:00.000000’, volved in spectrum management – is submitting input doc- 100 18 format=’isot’, scale=’utc’ uments with compatibility studies to various regional and 19 ) global working groups (ITU-R TG 5/1, ECC PT 1). These 70 50 20 20 studies attempt to determine the compatibility of the next- 21 az, el, dist = sat_obs.azel_from_sat( generation 5G equipment with radio-astronomical observa- 22 tle_string, obstime tions. Depending on the designated 5G band, protected RAS 0 23 ) bands would in some cases be located in the out-of-band 20 40 60 80 24 print(’Azimuth : {:6.1f}’.format(az)) Frequency [GHz] (OOB) or spurious domain with respect to the IMT carrier 75 25 25 print(’Elevation: {:6.1f}’.format(el)) 26 print(’Distance : {:6.1f}’.format(dist)) frequency, in other cases we may face the in-band sharing Figure 7. Atmospheric attenuation of a slant path for Sum- 27 # Azimuth : 80.1 deg scenario, where both, Tx and Rx, frequency ranges over- mer/Winter high-latitude standard profiles according to ITU- 28 # Elevation: 11.1 deg lap. The latter case usually demands larger separation dis- R Rec. P.676 (ITU-R, 2013). The lower panel shows the equivalent- 29 # Distance : 1257.7 km tances between interfering stations (the IMT equipment) and black-body temperature of the full atmosphere. the victim station (the radio telescope) to ensure that radio- 80 Listing 7. Satellite TLEs. astronomical observations do not suffer interference. Be- ISS (ZARYA) 1 25544U 98067A 08264.51782528 − .00002182 00000− 0 − 11606− 4 0 2927 cause of the additional attenuation of the emitted power a 30 As another example, Fig. 8 shows the position of the IRID- 2 25544 51.6416 247.4627 0006703 130.5360 325.0288 15.72125391563537 As another example, Fig.8 shows the position of the IRID- compatibility is more easily obtained in the OOB or spurious IUM network satellites, as seen from an observer at the Ef- The meaning of the entries is described e.g. on Wikipedia12. IUM network satellites, as seen from an observer at the Ef- cases. felsberg observatory. IRIDIUM satellites are LEOs and move The fields 7 and 8 (line 1, columns 19–20 and 21-32), i.e., felsberg observatory. IRIDIUM satellites are LEOs and move Here, we describe how the compatibility calculations for 85 fast over the visible sky. To visualize this, the azimuth and 08 and 264.51782528 encode the epoch (year and day of fast over the visible sky. To visualize this, the azimuth and one of these studies were made, focussing on the 24.25– year) at which the other orbital parameters are valid. From elevation of the satellites were computed for a time range of elevation of the satellites were computed for a time range of 13 this point in time, one can then propagate the orbit. 35 fivefive minutes. minutes. International Mobile Telecommunications To account for the aforementioned distortions of orbits, the calculations behind the propagation algorithm are rather Please note the remarks at the end of theAdv. manuscript. Radio Sci., 16, 1–17, 2018 www.adv-radio-sci.net/16/1/2018/ complex and pycraf internally uses the Python package 4 Compatibility of a 5G cell phone network and RAS sgp4 for this. Provided with a TLE string, sgp4 can cal- With the pycraf package introduced in Sect. 3.1 it is very 12https://en.wikipedia.org/wiki/Two-line_element_set, last ac- easy to do simple compatibility studies. Especially, for a cess: 5 June 2018 point-to-point analysis, there is not much more to it than the

Adv. Radio Sci., 16, 177–194, 2018 www.adv-radio-sci.net/16/177/2018/ B. Winkel and A. Jessner: Spectrum management and compatibility studies with Python 187

bands would in some cases be located in the out-of-band 80 250 (OOB) or spurious domain with respect to the IMT carrier frequency, in other cases we may face the in-band sharing 60 200 scenario, where both, Tx and Rx, frequency ranges over-

150 lap. The latter case usually demands larger separation dis- 40 tances between interfering stations (the IMT equipment) and Time delta [s] Elevation [deg] 100 the victim station (the radio telescope) to ensure that radio- 20 50 astronomical observations do not suffer interference. Be-

0 cause of the additional attenuation of the emitted power a 0 150 100 50 0 50 100 150 compatibility is more easily obtained in the OOB or spurious Azimuth [deg] cases. Here, we describe how the compatibility calculations for Figure 8. Position of visible IRIDIUM network satellites in the one of these studies were made, focussing on the 24.25– topocentric reference frame for an observer at the Effelsberg ob- servatory. Displayed are the azimuth and elevation of the satellites 27.5 GHz frequency band. RAS has a primary allocation for for five minutes starting from 4 January 2018, 21:45 UTC. 23.6–24 GHz, hence, this is an example for a OOB-domain scenario. For compatibility studies on the ITU level, one often analyses the “generic” case, where no terrain height determination of the emitted power and the path loss and fi- (above the Earth ellipsoid) is assumed, so that the results do nally the comparison of the received power with the compat- not depend on the terrain details of specific sites. Of course, ibility threshold level. These steps could easily be put into a RAS stations in mountainous regions may have some level stand-alone software package, perhaps with a graphical user of natural shield from surrounding hill tops, so that generic- interface. A need for additional functionality may however study results are only indicative. Still, many RAS stations are arise sometimes, or one may be faced with more complex located in regions with relatively flat terrain, e.g., the West- scenarios right from the beginning. Therefore, pycraf was erbork Synthesis Radio telescope in the Netherlands. designed as a programming library. Although this makes the We emphasize that the results presented here sensitively simplest projects slightly more complicated (because one al- depend on the chosen transmitter properties and deployment ways need to write some Python code), it is well-suited to densities. The assumptions and values, which are used in the deal with more challenging studies. One of these more com- following, are preliminary, as some of relevant (ITU-R) rec- plicated cases is discussed in this section. ommendations and guidelines are not yet finalized. There- fore, one should be careful with drawing conclusions from 4.1 Context our study.

The mobile telecommunication industry wants to utilize 4.2 Setup I: Transmitter and receiver properties more bandwidth for their next-generation mobile commu- nications standard, which is called 5G. At the last world radio communications conference (WRC), an agenda item 5G networks will likely be “classic” mobile networks, con- (AI 1.13) was proposed for the next WRC in 2019. It is en- sisting of base stations (BS) and user equipment (UE), al- titled “Work plan and proposed liaison to Task Group 5/1 though alternatives such as mesh-network based topologies on spectrum needs for the terrestrial component of IMT13 in seem also viable. Both, BS and UE feature phased-array the frequency range between 24.25 GHz and 86 GHz”. Al- antenna patterns, as described in Sect. 3.4. The transmit- though there is currently some tendency among vendors and ter properties (to be used for compatibility calculations) are administrations to favour the lower part of the frequency summarized in ITU-R Doc. TG 5/1-36 (Attachment 2) (ITU- range mentioned in the agenda item (the 24.25–27.5 GHz R TG 5/1, 2017a). For BS, 8 8 individual antenna elements, × sub-band) we are required to study all possible sub-bands each having a power output of 10 dBm per carrier (before without a predetermined conclusion for AI 1.13. Ohmic losses), are foreseen. UE will use smaller arrays, of The Committee on Radio Astronomy Frequencies (CRAF) 4 4 elements, but with the same power levels. For the spu- × – an expert committee of European radio astronomers in- rious domain, a spectrum block edge mask of 38 dBc per − volved in spectrum management – is submitting input doc- carrier bandwidth (200 MHz) for BS and 32 dBc/carrier for − uments with compatibility studies to various regional and UE is in place, such that the spectral power density within the global working groups (ITU-R TG 5/1, ECC PT 1). These RAS band is 13 dBmMHz 1 in both cases. For UE an ad- − − studies attempt to determine the compatibility of the next- ditional so-called body loss of 4 dB has to be accounted for, generation 5G equipment with radio-astronomical observa- because in many situations a person holding the user device tions. Depending on the designated 5G band, protected RAS (e.g., a smart phone) will provide additional shielding. Inte- grating the spectral power over the RAS band yields a total 13International Mobile Telecommunications of 13 dBm. www.adv-radio-sci.net/16/177/2018/ Adv. Radio Sci., 16, 177–194, 2018 188 B. Winkel and A. Jessner: Spectrum management and compatibility studies with Python

BS called separation distance) that a device must have from the Rx to avoid problems with RAS observations. 50 5 4.3 Path propagation loss 0

0 With the functionality contained in pycraf, it is very easy Elevation [deg] 50 to determine the path loss as a function of distance between Tx and Rx. Here, a distinction is to be made between the sub- 150 100 50 0 50 100 150 /urban and suburban open-space areas, because the antenna Azimuth [deg] 5 height plays a role for the propagation. The default clutter

UE Gain [dB] model of ITU-R Rec. P.452 (ITU-R, 2015) is not be applied in studies related to agenda item AI 1.13, instead the use of 50 10 the model provided in ITU-R Rec. P.2108 (ITU-R, 2017b) is mandatory. It depends only on frequency, distance, and a 0 quantity called location percentage, pL, which is the percent- age of all emitters producing the lowest clutter loss. For ex- Elevation [deg] 15 50 ample, if p 2%, the returned value, L , indicates that L = clutter for 2 % of all devices the actual clutter loss will fall short 150 100 50 0 50 100 150 of Lclutter. In other words, P.2108 provides the cumulative Azimuth [deg] distribution function for the clutter. We also note that the dis- Figure 9. Single-element antenna patterns of the next mobile- tance dependence in ITU-R Rec. P.2108 (ITU-R, 2017b) is communications standard 5G as defined in ITU-R Rec. M.2101 only relevant for very small values below 2 km. ∼ (ITU-R, 2017a). In Figs. 10 and 11 the resulting path propagation loss for BS and UE is displayed. The rapid increase of the path loss between about 35 and 50 km is caused by the geometry of the path. There, the line-of-sight path (small distances) turns into a trans-horizon path, meaning that diffraction kicks in. ITU-R Doc. TG 5/1-36 (Attachment 2) (ITU-R TG 5/1, 2017a) makes a distinction for different zone types, urban, suburban and suburban open-space regions with different 4.4 Single-interferer scenario number densities and antenna heights. BS antenna heights will be 15 m for suburban open-space zones and 6 m for the The single-interferer scenario is an extreme case, where only rest, while UE is always at 1.5 m height. Even though the 5G one IMT device is considered having maximally possible an- phased array antennas allow dynamic beam forming, ITU- tenna gain (i.e., the antenna shall be directed towards the 14 R Rec. M.2101 (ITU-R, 2017a) advises to use the single- RAS station ) and very low pL (which means the clutter element patterns for studies in the spurious domain. We fol- loss will be unusually small). In reality, such a situation will low this advice here, although there are diverging opinions rarely occur, but it is still valuable to study this case, because about it as some consider it unlikely that the signal phas- it already gives a rough indication about the magnitude of ing should be completely inefficient close to the carrier fre- the necessary separation distances. Very often, the single- quency. Figure9 shows the resulting antenna gain patterns interferer separation distances define a zone, where operation for BS and UE, respectively. The composite antenna patterns of the interfering service will be critical. will still be required (see Sect. 4.6), because they influence Figures 12 and 13 contain the resulting power levels re- the (or coupling loss) between BS and UE, which ceived from a single BS or UE with the isotropic RAS an- in turn determines the level of power control in the user de- tenna. The RA.769 threshold is marked by a dashed red line. vices – UE can increase or decrease the transmitted power The crossing point of the curves with the threshold defines based on the coupling loss for more efficient battery use. the necessary separation distance. We note that for IMT net- On the receiver side, an isotropic antenna (0 dBi) is usu- works of the previous generations, a spurious power level ally assumed for these kinds of studies, with a height of 50 m of 30 dBmMHz 1 was in place in Europe. To allow for − − above ground, which would be typical for a 100 m class ra- comparison, the figures also contain the results for this lower dio telescope. ITU-R Rec. RA.769 (ITU-R, 2003) permits an level. interference power level of 165 dBm (in continuum mode). − Therefore, the minimal coupling loss (MCL), i.e., the attenu- ation induced by the path propagation loss plus the gain or at- 14In case of BS, the array antennas are installed with a down-tilt tenuation due to the Tx antenna gain, must be at least 178 dB. of 10 , so that the single-element pattern maximum is usually not − ◦ The MCL ultimately determines the minimal distance (also pointing towards the RAS station.

Adv. Radio Sci., 16, 177–194, 2018 www.adv-radio-sci.net/16/177/2018/ B. Winkel and A. Jessner: Spectrum management and compatibility studies with Python 189

240 240 Urban

220 220

200 200

180 180

160 Path attenuation [dB] 160 Path attenuation [dB]

140 Total 140 Total w. clutter Total w. clutter 2 % 240 Suburban 0 20 40 60 80 100 Distance [km] 220 Figure 11. As Fig. 10 for UE. 200

180

160 Path attenuation [dB] partner. Relatively high gains can be achieved this way, even 140 with the small antenna apertures. BS, which are associated to several user devices simultaneously, use the time-division 240 Suburban open space duplex (TDD) method to serve the UE. In each time slot, the phased-array weights are updated to form a beam to the cur- 220 rently active device. The BS antenna frames themselves are

200 fixed, in contrast to the user devices, where the system needs to form the beam depending on the location relative to the 180 BS and its current rotation state. The beam forming also has an impact on the power that is transmitted into the direction 160 Path attenuation [dB] of the RAS station, because the beam direction will signifi-

140 Total cantly change the side-lobe pattern of the antennas (compare Total w. clutter Total w. clutter 2 % Fig.4).

0 20 40 60 80 100 Due to the TDD, each user device is only active during Distance [km] 20 % of the time. For BS the TDD factor is set to 80 %. Fur- thermore, in reality the network as a whole never runs at full Path propagation loss for BS at 24 GHz according to Figure 10. capacity. For scenarios such as the one analysed here, ITU- ITU-R Rec. P.452 (ITU-R, 2015) (dashed line). The black solid line includes the median clutter loss predicted by ITU-R Rec. P.2108 R Doc. TG 5/1-36 (Attachment 2) (ITU-R TG 5/1, 2017a) (ITU-R, 2017b), the dash-dotted line was computed for a location recommends to work with a network loading factor of 20 %. percentage of pL 2% (see text). In ITU-R Doc. TG 5/1-36 (Attachment 2) (ITU-R TG 5/1, = 2017a) typical number densities are provided, which shall be used for generic compatibility studies involving large areas. 4.5 Setup II: Deployment of 5G devices The densities differ for BS and UE, but also for the various zone types. The parametrization is done in terms of the per- More important than the single-interferer analysis is the cal- centage of the considered area that has housing, R 5%, b = culation of the received aggregated power levels, which stem and the fraction within this area that is expected to have 5G from the full IMT network as the sum of powers from each installations, R . For urban zones, Rurb 7%, while in sub- a a = individual device. Here one aims to use a realistic scenario urban areas Rsub 3%. Within the so-defined regions, 30 BS a = for the deployment of the IMT equipment to the best of one’s (100 UE) for urban and 10 BS (30 UE) for suburban zones knowledge. This not only involves modelling how the BS and are expected to be installed on average. For suburban open- UE are distributed in a given area, but one must also account space zones, the numbers are 1 BS (30 UE). for the quasi-random orientations that the BS and especially The final ingredient is the location of the UE relative to the user devices may have. The latter can e.g. be freely ro- the associated BS. ITU-R Doc. TG 5/1-92 (Annex 1) (ITU- tated with respect to the BS. R TG 5/1, 2017b) defines distribution functions for the dis- Both, BS and UE will use phased-array technology to form tance (Rayleigh for urban/suburban; Log-Normal for subur- beams into the direction of the associated communication ban open-space) and azimuthal position (Normal, N (0,30◦)) www.adv-radio-sci.net/16/177/2018/ Adv. Radio Sci., 16, 177–194, 2018 190 B. Winkel and A. Jessner: Spectrum management and compatibility studies with Python

BS: single interferer UE: single interferer (Tilt: 0 deg) 160 -13 dBm/MHz 160 -13 dBm/MHz -30 dBm/MHz -30 dBm/MHz 170 RA. 769 170 RA. 769

180 180

190 190 200 200 210 210

Received power [dBW] 220

Received power [dBW] 220 230 Urban 230 240 160 240

170 0 20 40 60 80 100 Distance [km] 180 Figure 13. As Fig. 12 for UE. 190

200

Sub-/Urban 210 0.020 Suburban OS

Received power [dBW] 220

230 0.015 Suburban 240 160 0.010 170 Probability

180 0.005 190

200 0.000 210 0 20 40 60 80 100 120 140 Distance [m]

Received power [dBW] 220

230 Figure 14. Distribution for UE as a function of distance from asso- Suburban open space 240 ciated BS. 0 20 40 60 80 100 Distance [km] nated by the (constant) deployment densities defined in ITU- Figure 12. Received power levels of a BS for the worst-case single interferer scenario. Two different spurious-domain Tx power levels R Doc. TG 5/1-36 (Attachment 2) (ITU-R TG 5/1, 2017a). were assumed. The red dashed line is the RA.769 threshold, which should not be exceeded. 4.6 Aggregated power levels We use a Monte-Carlo sampling approach to calculate the ag- gregated powers from the IMT network. This means that ran- relative to the antenna normal vector15. The two distance dis- dom values for BS and UE positions and rotations are gen- tributions are displayed in Fig. 14. It should be noted that erated from the distribution functions discussed in Sect. 4.5. each BS features only one sector antenna, in accordance This process is repeated many times and for each realiza- to ITU-R Doc. TG 5/1-36 (Attachment 2) (ITU-R TG 5/1, tion the total power received at the RAS station is calcu- 2017a). lated. From the ensemble of received powers (one value per In ITU-R Rec. M.2101 (ITU-R, 2017a) several possi- trial run), one can then study distribution properties such as ble deployment topologies are discussed, e.g., hexagonal or the median or average power level, but also the uncertainties Manhattan-style grid layouts. In the particular case that is (spread about the median). analysed here, the network topology can be neglected be- The first step in our aggregation analysis is to generate a cause one needs to average over a very large region, such map containing zone types. A sufficiently large box of size that the aggregated power at the RAS station will be domi- 400km 400km, with grid cells of size 0.5km 0.5km is × × created. For each cell, a random number from a uniform 15The azimuthal distribution is clipped for angles larger than distribution, U(0,1), is drawn. Cells with values between 60 . 1 (Rurb Rsub)R and 1 RurbR are classified as suburban, ± ◦ − a + a b − a b

Adv. Radio Sci., 16, 177–194, 2018 www.adv-radio-sci.net/16/177/2018/ B. Winkel and A. Jessner: Spectrum management and compatibility studies with Python 191

Euler-angle rotations. Initially, the UE antenna normal shall point to the BS. We first rotate randomly about the UE–BS 40 vector, then about the axis that is perpendicular to the UE–BS

Urban vector, is parallel to the x–y plane (the ground) and includes

20 the UE position. Finally, another rotation about the UE–BS vector is applied. The first and last rotation angles are drawn uniformly from the interval [ 180,180 ], while the second − ◦ 0 rotation has random angles from [ 60,60◦]. The resulting y [km] − rotation has the desired properties. Suburban

20 The next step is to calculate the effective antenna gains of each 5G device towards the RAS station. Since the posi- tions and orientations of all devices are known, one can easily 40 determine the azimuth and elevation of the UE–BS vectors,

Housings as well as of the direction to the RAS Rx, in the (rotated)

40 20 0 20 40 antenna frames. Strictly speaking, if the single-element an- x [km] tenna patterns are used, the UE–BS vectors are irrelevant. However, they will be needed for the power control algo- Figure 15. Zone types (urban and suburban) randomly assigned rithm, which is discussed below. Using the antenna gain for- to grid cells in the simulated box following a uniform distribution mula provided in ITU-R Rec. M.2101 (ITU-R, 2017a) (im- function. plemented in pycraf.antenna), the effective gains fol- low directly. For BS, there is not a single resulting gain value, but several – one for each user device in the forward cone. while values larger than 1 RurbR define urban areas. (Re- Therefore, the average value is calculated and applied in the − a b gions with housings are defined by values exceeding 1 R .) following. Figure 17 visualizes the geometry and the deter- − b Figure 15 shows a zoom-in to the central part of the simu- mined effective gains for a small sub-region that includes lated box, with the random zone types assigned to it. three BS and their associated UE. The red lines mark which One could argue that such uniform-density deployment is user device belongs to which BS. The black arrows are the not very realistic. Therefore, as an alternative we develop antenna normal vectors (projected into the x–y plane, i.e., an algorithm that produces zones, which better resemble a shorter arrows have larger z components), while grey arrows real-world distribution of urban and suburban areas (inspired point to the RAS station. The more the black and grey ar- by the situation around the Effelsberg observatory). For this, rows are aligned, the higher the effective gain. If the compos- some kind of clustering has to be introduced. One possibil- ite patterns would be used, the arrows additionally had to be ity to achieve that, is by smoothing the random numbers aligned with the red BS–UE vectors to produce highest effec- with one or more Gaussian filter kernels before assigning tive gain. However, the beam forming makes the latter align- the zone types. The smoothing introduces a correlation be- ment less important. Only if the beam direction has large tween neighbouring pixels. The larger the smoothing radius, angular separation from the antenna normal, the achievable the stronger the clustering of zone types will be. We find that gain towards the beam direction drops significantly. How- a combination of three different kernels with scales σ 2, ever, the specific side-lobe patterns play an important role in k = 5, and 15 km and relative amplitudes of 30, 30, and 40 % can the composite-antenna case. produce a zone-type map, which seems to be quite realistic; The path propagation loss to the RAS Rx is then computed see Fig. 16. for each 5G device, as discussed in Sect. 4.3, such that all Into the grid cells, BS are now sampled according to the necessary quantities to determine the total power level are zone types and given number densities. For each BS, a ran- now known. There is one last aspect, which makes the cal- dom azimuthal orientation of the antenna frame is assigned, culation slightly more complex: the power control algorithm and the tilting angle in elevation is considered. UE has to be mentioned in Sect. 4.2. For this, the link budget between BS handled differently, because several user devices can be asso- and UE has to be determined (according to 3GPP TR 38.901 ciated to each BS, and the locations of the UE must be in the (3GPP, 2017), UMi – Street Canyon scenario). The details respective forward cone of the BS. Therefore, for each BS, are beyond the scope of this paper. If the coupling loss be- user devices are sampled into the forward cone, until the to- tween BS and UE is low, a user device may decrease the tal number of UE fits the desired global number density (per transmitter power to save battery power (according to a for- zone). UE can be freely rotated, with the only restriction, that mula provided in ITU-R Rec. M.2101 ITU-R, 2017a). The the angular distance between antenna normal vector and di- power control leads to a somewhat lower aggregated UE rection to the associated BS shall not exceed 60◦; see ITU- power, but since BS have a much larger impact on the to- R Doc. TG 5/1-92 (Annex 1) (ITU-R TG 5/1, 2017b). Such tal power (and are not subject to power control), the change a general rotation can for example be constructed from three is insignificant. www.adv-radio-sci.net/16/177/2018/ Adv. Radio Sci., 16, 177–194, 2018 192 B. Winkel and A. Jessner: Spectrum management and compatibility studies with Python

200 (a) (b)

150 40 Urban 100 20 50

0 0 y [km] y [km]

50 Suburban 20 100

150 40 Housings 200 200 150 100 50 0 50 100 150 200 40 20 0 20 40 x [km] x [km]

Figure 16. Zone types (urban and suburban) randomly assigned to grid cells in the simulated box based on the clustering algorithm described in the text. (a) shows the full box, (b) a zoom-in to the central area.

9.86 Antenna normal Direction to RAS Rx BS UE BS UE

10 9.84

9.82 0

9.80

9.78 10 y [km] 9.76 Effective gain [dBi] 20 9.74

9.72 30

9.70

9.68 40 182.10 182.15 182.20 182.25 182.30 x [km]

Figure 17. Effective antenna gains into the direction of the RAS Rx. The BS and UE are colourized according to the gain. Red solid lines show BS–UE vectors. Black arrows indicate the antenna frame normal vectors, while gray arrows point to the RAS Rx.

The aggregated powers received at the RAS station exceed were carried out. For each of these realizations, Fig. 18 con- the ITU-R Rec. RA.769 (ITU-R, 2003) thresholds in every tains the cumulative distribution for both, BS and UE, in the single Monte-Carlo run. This is not unusual because there is uniform-density scenario. Figure 19 shows the results for the always a high chance that some devices get placed too close clustered-density approach, revealing much higher scatter. to the RAS Rx. To find out, how big an exclusion zone (i.e., In order to determine a single value for the necessary ex- the lower limit of separation distances to each device) would clusion zone radius, we compute distribution percentiles at need to be, we show cumulative plots of the aggregated pow- 50 % (the median) and 98 % (the top 2 % level); see Figs. 20 ers in Figs. 18 and 19. For increasing radii, ri, devices within and 21. As can be seen, BS produce on average more than a sphere with this radius are left out from the aggregation. 10 dB higher aggregation levels than UE. Furthermore, there The larger ri, the lower becomes the received power, as only is a steep regime between 30 and 60 km, where the power more distant devices contribute. In total, one thousand runs level drops quickly. This behaviour can be attributed to the

Adv. Radio Sci., 16, 177–194, 2018 www.adv-radio-sci.net/16/177/2018/ B. Winkel and A. Jessner: Spectrum management and compatibility studies with Python 193

160 160 BS BS, 50 % UE BS, 2 % 170 RA. 769 170 UE, 50 % UE, 2 % RA. 769 180 180

190 190

200 200

210 210 Aggregated power [dBW] Aggregated power [dBW] 220 220

230 230

240 240 0 20 40 60 80 100 0 20 40 60 80 100 Exclusion zone radius [km] Exclusion zone radius [km]

Figure 18. Cumulative aggregated power as a function of exclusion Figure 20. Ensemble percentiles (50 and 98 %) for the distribution zone radius, ri for uniform distribution of housings. The results of of aggregated powers shown in Fig. 18. all 1000 Monte-Carlo trials are shown.

160 160 BS, 50 % BS BS, 2 % UE 170 UE, 50 % 170 RA. 769 UE, 2 % 180 RA. 769 180

190 190

200 200

210 210 Aggregated power [dBW]

Aggregated power [dBW] 220 220

230 230

240 240 0 20 40 60 80 100 0 20 40 60 80 100 Exclusion zone radius [km] Exclusion zone radius [km] As Fig. 20, but for the clustered distribution of housings. Figure 19. As Fig. 18, but for the clustered distribution of housings. Figure 21. path propagation loss, which shows a similar kink (compare Such a case, a compatibility study involving next- Figs. 10 and 11). Hence, the transmitted power levels could generation 5G at 24 GHz and a RAS telescope, was presented be increased substantially, without the exclusion zone size in detail. In the generic case (flat-earth, i.e., zero terrain having to grow quickly (unless one would not want to accept heights) the aggregated power levels produced at the radio- separation distances of 60 km in the first place). ∼ astronomical receiver would exceed the maximally permitted thresholds defined in ITU-R Rec. RA.769 (ITU-R, 2003) un- less an exclusion zone with a radius of few tens of kilometres 5 Conclusions would be established. The pycraf package proves to be a valuable and versatile tool to assist spectrum managers with accomplishing com- Code availability. The pycraf library is made available on the patibility studies. In simpler cases, this only needs a few lines Python package distribution server PyPI (Python Package Index, of Python code, but being a programming library, pycraf is https://pypi.org/project/pycraf/, last access: 5 June 2018). It is open also useful for very complex analyses, e.g., full Monte Carlo source software licensed (GNU General Public License v3.0). The simulations of mobile communication networks. source code is hosted on the GitHub platform (https://github.com/ www.adv-radio-sci.net/16/177/2018/ Adv. Radio Sci., 16, 177–194, 2018 194 B. Winkel and A. Jessner: Spectrum management and compatibility studies with Python bwinkel/pycraf, last access: 5 June 2018) and on Zenodo (Winkel ECC: Seamcat Handbook Edition 2, Technical report ECC Re- and Jessner, 2018). Contributions are welcome. port 252, Electronic Communications Committee, Copenhagen, 2016b. Farr, T. G., Rosen, P. A., Caro, E., Crippen, R., Duren, R., Competing interests. The authors declare that they have no conflict Hensley, S., Kobrick, M., Paller, M., Rodriguez, E., Roth, of interest. L., Seal, D., Shaffer, S., Shimada, J., Umland, J., Werner, M., Oskin, M., Burbank, D., and Alsdorf, D.: The Shut- tle Radar Topography Mission, Rev. Geophys., 45, rG2004, Special issue statement. This article is part of the special issue https://doi.org/10.1029/2005RG000183, 2007. “Kleinheubacher Berichte 2017”. It is a result of the Klein- Hunter, J.: Matplotlib: A 2D Graphics Environment, Comput. Sci. heubacher Tagung 2017, Miltenberg, Germany, 25–27 Septem- Eng., 9, 90–95, https://doi.org/10.1109/MCSE.2007.55, 2007. ber 2017. ITU-R: Protection criteria used for radio astronomical measure- ments, Recommendation P.769-2, International Telecommunica- tion Union, Geneva, 2003. ITU-R: Reference Standard Atmospheres, Recommendation P.835- Acknowledgements. We thank Uwe Bach for carefully proof- 5, International Telecommunication Union, Geneva, 2012. reading our manuscript and providing valuable comments. ITU-R: Attenuation by atmospheric gases, Recommendation P.676- Furthermore, we would like to express our gratitude to the 10, International Telecommunication Union, Geneva, 2013. developers of the many C/C++ and Python libraries, which are ITU-R: Prediction procedure for the evaluation of interference made available as open-source software and which we used: most between stations on the surface of the Earth at frequencies importantly, NumPy (van der Walt et al., 2011), SciPy (Jones above about 0.1 GHz, Recommendation P.452-16, International et al., 2001), Cython (Behnel et al., 2011), and Astropy (Astropy Telecommunication Union, Geneva, 2015. Collaboration et al., 2013). Figures were prepared using matplotlib ITU-R: Modelling and simulation of IMT networks and systems (Hunter, 2007). for use in sharing and compatibility studies, Recommendation M.2101-0, International Telecommunication Union, Geneva, The article processing charges for this open-access 2017a. publication were covered by the Max Planck Society. ITU-R: Prediction of Clutter Loss, Recommendation P.2108-0, In- ternational Telecommunication Union, Geneva, 2017b. Edited by: Lars Ole Fichte ITU-R TG 5/1: Attachment 2 on spectrum needs to a liaison state- Reviewed by: two anonymous referees ment to Task Group 5/1: Characteristics of terrestrial IMT sys- tems for frequency sharing/interference analyses in the frequency range between 24.25 GHz and 86 GHz, Liaison statement Docu- References ment 5-1/36, International Telecommunication Union, Geneva, 2017a. 3GPP: Study on channel model for frequencies from 0.5 to ITU-R TG 5/1: Annex 1 of the report on the second meeting of 100 GHz, Technical report TR 38.901, The 3rd Generation Part- Task Group 5/1: System parameters and propagation models to nership Project, Sophia Antipolis, 2017. be used in sharing and compatibility studies, Meeting report Doc- Astropy Collaboration, Robitaille, T. P., Tollerud, E. J., Greenfield, ument 5-1/92, International Telecommunication Union, Geneva, P., Droettboom, M., Bray, E., Aldcroft, T., Davis, M., Gins- 2017b. burg, A., Price-Whelan, A. M., Kerzendorf, W. E., Conley, A., Jones, E., Oliphant, T., Peterson, P., et al.: SciPy: Open source sci- Crighton, N., Barbary, K., Muna, D., Ferguson, H., Grollier, F., entific tools for Python, available at: http://www.scipy.org/ (last Parikh, M. M., Nair, P. H., Unther, H. M., Deil, C., Woillez, J., access: 5 June 2018), 2001. Conseil, S., Kramer, R., Turner, J. E. H., Singer, L., Fox, R., van der Walt, S., Colbert, S., and Varoquaux, G.: The NumPy Array: Weaver, B. A., Zabalza, V., Edwards, Z. I., Azalee Bostroem, K., A Structure for Efficient Numerical Computation, Comput. Sci. Burke, D. J., Casey, A. R., Crawford, S. M., Dencheva, N., Ely, Eng., 13, 22–30, https://doi.org/10.1109/MCSE.2011.37, 2011. J., Jenness, T., Labrie, K., Lim, P. L., Pierfederici, F., Pontzen, Vincenty, T.: Direct and inverse solutions of geodesics on the ellip- A., Ptak, A., Refsdal, B., Servillat, M., and Streicher, O.: As- soid with application of nested equations, Surv. Rev., 23, 88–93, tropy: A community Python package for astronomy, A&A, 558, https://doi.org/10.1179/sre.1975.23.176.88, 1975. A33, https://doi.org/10.1051/0004-6361/201322068, 2013. Wilson, C. and Salamon, S.: Anomalies in the Application of Behnel, S., Bradshaw, R., Citro, C., Dalcin, L., Seljebotn, D., and the Cascaded Knife-Edge Diffraction Model, in: Proceedings of Smith, K.: Cython: The Best of Both Worlds, Comput. Sci. Eng., the International Symposium on Advanced Radio Technologies 13, 31–39, https://doi.org/10.1109/MCSE.2010.118, 2011. (ClimDiff), edited by: Raush, P. J. and Novik, K., Institute for ECC: Description of the software tool for processing of measure- Telecommunication Sciences, U.S. Department of Commerce, ments data of IRIDIUM satellites at the Leeheim station, Tech- USA, p. 252, 2008. nical report ECC Report 247, Electronic Communications Com- Winkel, B. and Jessner, A.: pycraf, mittee, Copenhagen, 2016a. https://doi.org/10.5281/zenodo.1244192, 2018.

Adv. Radio Sci., 16, 177–194, 2018 www.adv-radio-sci.net/16/177/2018/