pybsm.otf.functional.polychromatic_turbulence_OTF
- pybsm.otf.functional.polychromatic_turbulence_OTF(*, u: ndarray, v: ndarray, wavelengths: ndarray, weights: ndarray, altitude: float, slant_range: float, D: float, ha_wind_speed: float, cn2_at_1m: float, int_time: float, aircraft_speed: float) tuple[ndarray, ndarray]
IBSM Eqn 3.9. Returns a polychromatic turbulence MTF.
Returns a polychromatic turbulence MTF based on the Hufnagel-Valley turbulence profile and the pyBSM function “wind_speed_turbulence_OTF”, i.e. IBSM Eqn 3.9.
- Parameters:
u – angular spatial frequency coordinates (rad^-1)
v – angular spatial frequency coordinates (rad^-1)
wavelengths – wavelength array (m)
weights – how contributions from each wavelength are weighted
altitude – height of the aircraft above the ground (m)
slant_range – line-of-sight range between the aircraft and target (target is assumed to be on the ground)
D – effective aperture diameter (m)
int_time – dwell (i.e. integration) time (seconds)
aircraft_speed – apparent atmospheric velocity (m/s); this can just be the windspeed at the sensor position if the sensor is stationary
ha_wind_speed – the high altitude windspeed (m/s); used to calculate the turbulence profile
cn2_at_1m – the refractive index structure parameter “near the ground” (e.g. at h = 1 m); used to calculate the turbulence profile
- Returns:
- turbulence_OTF:
turbulence OTF (unitless)
- r0_band:
the effective coherence diameter across the band (m)
- Raises:
- ZeroDivisionError:
if slant_range is 0
- IndexError:
if weights or altitude if empty or the lengths of weights or altitude are not equal