In [1]:
# Load needed packages
%matplotlib inline
import pyradarmet as rmet
import matplotlib.pyplot as plt
import numpy as np
In [10]:
# For demonstration purposes, we'll use the DoE ARM CSAPR radar to test the functions.
# Documentation can be found at:
# http://www.arm.gov/publications/tech_reports/handbooks/csapr_handbook.pdf?id=21
# See page 9 for specific system characteristics
csapr_frequency = 6.25E9 # Hz
csapr_pulse_width_min = 200E-9 # seconds
csapr_pulse_width_max = 2E-6 # seconds
csapr_beam_width = 0.9 # degrees
csapr_gain = 45.1 # dB
csapr_power = 350000 # W
csapr_prf_min = 200 # Hz
csapr_prf_max = 2.7E3 # Hz
# Let's make up a couple loss parameters
csapr_antenna_loss = 0.5 # dB
csapr_receiver_loss = 1.0 # dB
In [3]:
## Let's show some examples of radar system calculations ##
## system.py ##
wavelength = rmet.system.wavelength(csapr_frequency) # m
pulse_length_min = rmet.system.pulse_length(csapr_pulse_width_min) # m
pulse_length_max = rmet.system.pulse_length(csapr_pulse_width_max) # m
radar_const = rmet.system.radar_const(csapr_power, csapr_gain, csapr_pulse_width_max,
wavelength, csapr_beam_width, csapr_beam_width,
csapr_antenna_loss, csapr_receiver_loss) # unitless
antenna_effective_area = rmet.system.ant_eff_area(csapr_gain, wavelength) # m^2
# Assume a spherical target of 0.5 mm diameter
targ_diam = 0.5E-3
targ_area = np.pi * (targ_diam/2)**2
# Target volume at 50 m range
targ_range = 50.
target_power = rmet.system.power_target(csapr_power, csapr_gain, targ_area, targ_range) # W
# Assume that it is water (don't need to specify dielectric constant, otherwise add K argument)
xsec_backscatter_sphere = rmet.system.xsec_bscatter_sphere(targ_diam, wavelength) # m^2
size_parameter = rmet.system.size_param(targ_diam, wavelength) # unitless
Pt_return = rmet.system.power_return_target(csapr_power, csapr_gain, wavelength,
xsec_backscatter_sphere, targ_range) # W
In [4]:
# Now print out the answers to check the performance:
print "CSAPR wavelength = %g cm" % (wavelength * 100) # put into cm
print "CSAPR minimum pulse length = %g m" % (pulse_length_min)
print "CSAPR maximum pulse length = %g m" % (pulse_length_max)
print "CSAPR radar constant = %g" % radar_const
print r'CSAPR antenna effective area = %g m^2' % antenna_effective_area
print "CSAPR target power return = %g W" % target_power
print r"CSAPR crossectional backscatter area =%g m^2" % xsec_backscatter_sphere
print "Size parameter of example = %g " % size_parameter
print "CSAPR power return for example = % g W" % Pt_return
In [5]:
## Example of attenutation.py ##
print "The extinction coefficient for a spherical ice particle of 1 mm diameter at 5 cm"
print rmet.attenuation.ext_coeff(1E-3, 5E-2, 1.78-0.0024j)
In [7]:
## Converting units ##
print "25 dBZ in linear units is %g" % rmet.conversion.dBZ2Z(25.)
print "Wind speeds:"
print "20 mph winds in SI units is %g m/s" % rmet.conversion.mph2si(20.)
print "40 kmh winds in SI units is %g m/s" % rmet.conversion.kmh2si(40.)
In [18]:
## Examples for doppler.py ##
fmax_min = rmet.doppler.fmax(csapr_prf_min) # Hz
fmax_max = rmet.doppler.fmax(csapr_prf_max) # Hz
nyquist_vel_min = rmet.doppler.Vmax(csapr_prf_min, wavelength) # m/s
nyquist_vel_max = rmet.doppler.Vmax(csapr_prf_max, wavelength) # m/s
Rmax_min = rmet.doppler.Rmax(csapr_prf_min) # m
Rmax_max = rmet.doppler.Rmax(csapr_prf_max) # m
# Combining the two PRF for a dual-PRF system
nyquist_dual = rmet.doppler.Vmax_dual(wavelength, csapr_prf_min, csapr_prf_max) # m/s
In [19]:
# Now again print out the answers to the above cell to check the performance:
print "CSAPR max frequency for min PRF = %g Hz" % (fmax_min)
print "CSAPR max frequency for max PRF = %g Hz" % (fmax_max)
print "CSAPR nyquist velocity range = %g - %g m/s" % (nyquist_vel_min, nyquist_vel_max)
print "CSAPR unambiguous range for PRF range = %g - %g km" % (Rmax_min/1000., Rmax_max/1000.)
print "CSAPR dual PRF example = %g m/s" % nyquist_dual
In [ ]: