KolmogorovWFE

class poppy.KolmogorovWFE(name='Kolmogorov WFE', r0=None, Cn2=None, dz=None, inner_scale=None, outer_scale=None, kind='Kolmogorov', seed=None, **kwargs)[source]

Bases: WavefrontError

A turbulent phase screen.

This is an implementation of a turbulent phase screen as by the Kolmogorov theory of turbulence.

Parameters:
r0astropy.quantity

Fried parameter (m).

Cn2astropy.quantity

Index-of-refraction structure constant (m^{-2/3}).

dzastropy.quantity

Propagation distance (m).

inner_scaleastropy.quantity

Inner scale of the turbulence (m). The inner scale affects the calculation results if kind = ‘von Karman’, ‘Tatarski’, or ‘Hill’.

outer_scaleastropy.quantity

Outer scale of the turbulence (m). The outer scale only affects the calculation results if kind=’von Karman’.

kindstring

Kind of the spatial power spectrum. Must be one of ‘Kolmogorov’, ‘Tatarski’, ‘von Karman’, ‘Hill’.

seedinteger

Seed for the random number generator when creating the phase screen. This can be helpful when multiple fields (for example different modes) should propagate through an identical atmosphere.

References

For a general overview of the Kolmogorov theory, read L. C. Andrews and R. L. Phillips, Laser Beam Propagation Through Random Media, 2nd ed. (Society of Photo Optical, 2005).

Other relevant references are mentioned in the respective functions.

Methods Summary

get_Cn2(wavelength)

Returns the index-of-refraction structure constant (m^-2/3).

get_opd(wave)

Returns an optical path difference for a turbulent phase screen.

power_spectrum(wave[, kind])

Returns the spatial power spectrum.

rand_symmetrized(npix, sign)

Returns a real-valued random number array of shape (npix, npix) with the symmetry required for a turbulent phase screen.

rand_turbulent(npix)

Returns a complex-valued random number array of shape (npix, npix) with the symmetry required for a turbulent phase screen.

Methods Documentation

get_Cn2(wavelength)[source]

Returns the index-of-refraction structure constant (m^-2/3).

Parameters:
wavelengthfloat

The wavelength (m).

References

B. J. Herman and L. A. Strugala, in Proc. SPIE, edited by P. B. Ulrich and L. E. Wilson (International Society for Optics and Photonics, 1990), pp. 183–192.

get_opd(wave)[source]

Returns an optical path difference for a turbulent phase screen.

Parameters:
wavewavefront object

Wavefront to calculate the phase screen for.

References

    1. Fleck Jr, J. R. Morris, and M. D. Feit, Appl. Phys. 10, 129 (1976).

E. M. Johansson and D. T. Gavel, in Proc. SPIE, edited by J. B. Breckinridge (International Society for Optics and Photonics, 1994), pp. 372–383.

B. J. Herman and L. A. Strugala, in Proc. SPIE, edited by P. B. Ulrich and L. E. Wilson (International Society for Optics and Photonics, 1990), pp. 183–192.

  1. Gbur, J. Opt. Soc. Am. A 31, 2038 (2014).

    1. Knepp, Proc. IEEE 71, 722 (1983).

power_spectrum(wave, kind='Kolmogorov')[source]

Returns the spatial power spectrum.

Parameters:
wavewavefront object

Wavefront to calculate the power spectrum for.

kindstring

The type of the power spectrum, must be one of ‘Kolmogorov’, ‘Tatarski’, ‘von Karman’, ‘Hill’.

References

  1. Gbur, J. Opt. Soc. Am. A 31, 2038 (2014).

  1. Frehlich, Appl. Opt. 39, 393 (2000).

rand_symmetrized(npix, sign)[source]

Returns a real-valued random number array of shape (npix, npix) with the symmetry required for a turbulent phase screen.

Parameters:
npixint

Number of pixels.

signint

Sign of mirror symmetry. Must be either +1 or -1.

References

Eq. (65) in J. A. Fleck Jr, J. R. Morris, and M. D. Feit, Appl. Phys. 10, 129 (1976).

rand_turbulent(npix)[source]

Returns a complex-valued random number array of shape (npix, npix) with the symmetry required for a turbulent phase screen.

Parameters:
npixint

Number of pixels.

References

Eq. (63) in J. A. Fleck Jr, J. R. Morris, and M. D. Feit, Appl. Phys. 10, 129 (1976).