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