In [1]:
%matplotlib inline
from gaussopt import *
import matplotlib.pyplot as plt
Gaussian beam telescopes use two parabolic mirrors to couple energy between two horn antennas. If the mirrors have focal lengths $f$, then the mirrors should be separated by $2\,f$ and the distance between each horn's beam waist and its respective mirror should be $f$ (as shown below).
We will now build a quick script to analyze a Gaussian beam telescope.
In [2]:
freq = Frequency(150, 300, units='GHz')
Horn antennas are defined by their slant length, aperture radius and horn factor. See Chapter 7 of "Quasioptical Systems" by Paul Goldsmith for more information.
We will use the gaussopt.Horn
class to generate the transmitting horn (horn_tx
) and then copy this horn to generate the receiving horn (horn_rx
). We will use a corrugated circular feed horn, which has a horn factor of 0.64.
In [3]:
slen = 22.64 # slant length (in mm)
arad = 3.6 # aperture radius (in mm)
hfac = 0.64 # horn factor (see chp. 7 of Quasioptical Systems)
horn_tx = Horn(freq, slen, arad, hfac, units='mm', comment='Trasmitting')
horn_rx = horn_tx.copy(comment='Receiving')
In [4]:
# 16 cm of freespace (air)
d = Freespace(160)
# Mirrors with a focal length of 16 cm
m1 = Mirror(16, units='cm', radius=8, comment='M1')
m2 = m1.copy(comment='M2')
The distances between the horns and the mirrors have to be reduced because the actual beam waist is behind the horn aperture.
In [5]:
# Offset distance (i.e., distance from beam waist to horn aperture) at 230 GHz
z_offset = horn_tx.z_offset(units='mm')[freq.idx(230, units='GHz')]
# Ideal distance between horn aperture and mirror
d_red = Freespace(160 - z_offset, comment='reduced')
We can now combine all of the individual optical components to build our optical system. This is normally done by creating a list of optical components (component_list
below), starting from the transmitting horn and then listing each component to the receiving horn (in order).
The component list is then passed to the gaussopt.System
class, along with the two horns, to calculate the system properties.
In [6]:
component_list = (d_red, m1, d, d, m2, d_red)
system = System(horn_tx, component_list, horn_rx)
In [7]:
system.plot_coupling()
system.print_best_coupling()
In [8]:
fig, ax = plt.subplots(figsize=(8,5))
system.plot_system(ax=ax)