Simulating Atmospheric Turbulence

Home


Show content only (no menu, header)


1 Description, capabilities

The software is written to produce realistic atmospheric turbulence wavefront series. It can be used by itself to simply compute wavefronts or as part of an Adaptive Optics system simulation
Main features:
  • Supports multi-layer phase screens
  • Vertical turbulence profile (Cn2, wind speed & direction) specified by ASCII file
  • Polychromatic computation of wavefront supported (can compute simultaneously at several wavelengths)
  • Diffractive propagation between layers to compute scintillation and chromatic propagation effects
  • Automatically restarts computation where it was last stopped if program is killed and restarted later
  • Atmospheric refraction included, using US standard atmosphere
  • Internal phase unwrapping of Fresnel-propagated wavefronts by comparison with wavefront obtained without diffraction propagation: output phase is unwrapped
  • Output: FITS data cubes for off-line use or shared memory structure for real-time use by other process

Atmosphere model : Chromaticity

The optical pathlength difference (wavefront) and intensity distribution (scintillation) at the telescope pupil are chromatic:
  • Light rays from the source to a point on the telescope pupil follow different paths through the atmosphere for different wavelengths, due to wavelength dependence of the atmospheric refraction
  • The optical pathlength difference introduced by atmospheric turbulence is chromatic
  • Diffraction propagation between turbulence layers (causing scintillation) is a chromatic process
To take into account these effects, the vertical distribution of refractive index in the atmosphere needs to be known as a function of wavelength.

Density

The vertical distribution of atmosphere density is obtained from the US standard atmosphere model ( ASCII table). The refractivity (= 1 - refraction index) is assumed to be proportional to this density.

Wavelength

The refractive index as a function of wavelength lambda (unit = um) is:
n(lambda) = 1 + 5792105E-8/(238.0185-pow(lambda,-2)) + 167917E-8/(57.362-pow(lambda,-2))
Standard Air: dry air at 15 °C, 101 325 Pa and with 450 ppm CO2 content
Ref: Philip E. Ciddor. Refractive index of air: new equations for the visible and near infrared, Appl. Optics 35, 1566-1573 (1996)
Reference: Refractive index of air: new equations for the visible and near infrared.

Turbulence profile

The turbulence profile is specified in an ASCII file named "turbul.prof". An example turbulence profile, used for Mauna Kea, is shown below (Courtesy of Mark Chun, IfA).
# altitude(m)   relativeCN2     speed(m/s)      direction(rad)

4215		5.32		6.5		1.47
4230		1.47		6.55		1.57
4349		1.08		6.6		1.67
5007		2.11		6.7		1.77
12200		1.83		22.0		4.7
16200		1.48		9.5		4.8
23701		0.697		5.6		4.9
References:
  • Ground layers: Chun et al. 2009
  • Free atmosphere: MKAM-MASS data 9/2009-4/2011, 12-layer analysis binned to 5 layers. M. Chun, private communication

2 Download and install

The source code is hosted on github: https://github.com/oguyon/AtmosphericTurbulence .
The program is written in C and installation follows the standard GNU build process (configure, make, make install). The github repository holds a gzipped tarball for installation of the latest version.

The following libraries are required:
  • readline (for reading standard input on the command line)
  • Bison/Flex (for parsing and interpreting the command line)
  • FFTW (for Fourier Transforms)
  • FITSIO (for FITS file format support)
  • GSL (for mathematical functions)

3 Usage

Create the configuration and turbulence profile ASCII files

The program requires two files to run:
  • The main configuration file WFsim.conf contains all the parameters describing atmospheric conditions (other than the turbulence vertical profile) and required output parameters (size of image, wavelength, etc..). You can use and modify the following example: WFsim.conf .
  • The file turbul.prof contains a description of the atmosphere turbulence: vertical distribution in discrete layers, each with a different speed. You can use and modify the following example: turbul.prof

Run the turbulence sequence generator

Type:
./bin/atmturb
mktwfs

Page content last updated: 27/06/2023 06:35:52 HST
html file generated 27/06/2023 06:34:42 HST