def setUp(self): fun_quad = lambda k, sf: sf.I_0 * (sf.angle_k(k) / 180.0)**2 self.beam_u = antenna.BeamPattern(lambda k, sf: sf.I_0, az0=0.0, el0=90.0, I_0=1.0, f=1.0, beam_name='Test') self.beam_quad = antenna.BeamPattern(fun_quad, az0=0.0, el0=90.0, I_0=1.0, f=1.0, beam_name='Test')
def setUp(self): self.beam_u = antenna.BeamPattern(lambda k, sf: sf.I_0, az0=0.0, el0=90.0, I_0=1.0, f=1.0, beam_name='Test')
def tsr_beam(el0, f=224.0e6): a = 120 # Panel width, metres (30 = 1 panel, 120 = all panels) b = 40 # Panel height, metres c = 299792458 # Speed of light, m/s wavelength = c / f # Wavelength, metres ar = a / wavelength # Antenna size in wavelengths br = b / wavelength # ditto # Make an equirectangular projection mesh (2000 points per axis) x = np.linspace(-np.pi / 2, np.pi / 2, 4000) y = np.linspace(-np.pi / 2, np.pi / 2, 4000) xx, yy = np.meshgrid(x, y) # Calclate the beam pattern z = unidirectional_broadside_rectangular_array(ar, br, xx, yy) # Normalise (4pi steradian * num.pixels / integrated gain / pi^2) scale = 4 * np.pi * z.size / np.sum(z) # Normalise over sphere sincint = np.pi * np.pi # Integral of the sinc^2()s: -inf:inf beam = antenna.BeamPattern(TSR_gain, az0=0.0, el0=el0, I_0=scale / sincint, f=f, beam_name='Tromso Space Radar Beam') beam.ar = ar beam.br = br return beam
def airy_beam(az0, el0, I_0, f, a): '''# TODO: Description. ''' beam = antenna.BeamPattern(airy, az0, el0, I_0, f, beam_name='Airy') beam.a = a return beam
def array_beam(az0, el0, I_0, f, antennas): '''# TODO: Description. ''' beam = antenna.BeamPattern(array, az0, el0, I_0, f, beam_name='Array') beam.antennas = antennas beam.I_scale = I_0 / (antennas.shape[0]**2.0) return beam
def planar_beam(az0, el0, I_0, f, a0, az1, el1): '''# TODO: Description. ''' beam = antenna.BeamPattern(planar, az0, el0, I_0, f, beam_name='Planar') beam.a0 = a0 beam.plane_normal = coord.azel_to_cart(az1, el1, 1.0) beam.lam = c.c / f beam.point(az0, el0) return beam
def setUp(self): self.beam_u = antenna.BeamPattern(lambda k, sf: sf.I_0, az0=0.0, el0=90.0, I_0=1.0, f=1.0, beam_name='Test') self.tx_lst = [] self.tx_lst.append( antenna.AntennaTX( name='a tx', lat=2.43, lon=11.0, alt=0.0, el_thresh=30.0, freq=1e4, rx_noise=10e3, beam=self.beam_u, scan=None, tx_power=1.0, tx_bandwidth=1.0, duty_cycle=1.0, )) self.tx_lst.append( antenna.AntennaTX( name='a tx', lat=2.43, lon=12.0, alt=0.0, el_thresh=30.0, freq=1e4, rx_noise=10e3, beam=self.beam_u, scan=None, tx_power=1.0, tx_bandwidth=1.0, duty_cycle=1.0, )) self.rx_lst = [] for of in range(10): self.tx_lst.append( antenna.AntennaRX(name='a rx', lat=2.43 + of, lon=11.0, alt=0.0, el_thresh=30.0, freq=1e4, rx_noise=10e3, beam=self.beam_u))
def uhf_beam(az0, el0, I_0, f, beam_name='UHF Measured beam'): '''# TODO: Description. ''' beam = antenna.BeamPattern(uhf_meas, az0, el0, I_0, f, beam_name=beam_name) bmod = np.genfromtxt("data/bp.txt") angle = bmod[:, 0] gain = 10**(bmod[:, 1] / 10.0) gf = sio.interp1d(np.abs(angle), gain) beam.gf = gf return beam
def cassegrain_beam(az0, el0, I_0, f, a0, a1, beam_name="Cassegrain"): '''# TODO: Description. az and el of on-axis lat and lon of location I_0 gain on-axis a0 diameter of main reflector a1 diameter of the subreflector ''' beam = antenna.BeamPattern(cassegrain, az0, el0, I_0, f, beam_name=beam_name) beam.a0 = a0 beam.a1 = a1 return beam
def e3d_array_beam_interp(az0=0, el0=90.0, I_0=10**4.2, fname='data/inerp_e3d.npy', res=400): if not os.path.isfile(fname): _beam = e3d_array_beam(az0=0, el0=90.0, I_0=1.0) _generate_interpolation_beam_data(fname, _beam, res=res) del _beam f_obj = np.load(fname) f = f_obj.item() beam = antenna.BeamPattern(interpolated_beam, az0, el0, I_0, f, beam_name='E3D stage 2 -interpolated-') beam.interp_f = f return beam