MultiLayerAtmosphere

class hcipy.atmosphere.MultiLayerAtmosphere(layers, scintillation=False, scintilation=None)

Bases: OpticalElement

A multi-layer atmospheric model.

This OpticalElement can model turbulence and scintillation effects due to atmospheric turbulence by propagating light through a series of infinitely-thin atmospheric phase screens at different altitudes. The distance between two phase screens can be propagated using Fresnel propagation, or using no Propagator.

Parameters:
layerslist of AtmosphericLayer objects

The series of atmospheric layers in this model.

scintillationbool

If True, then the distance between two phase screens is propagated using a FresnelPropagator. Otherwise, no propagator will be used.

Attributes Summary

Cn_squared

The total Cn^2 value of the simulated atmosphere.

layers

A list of AtmosphericLayer objects.

outer_scale

The outer scale of all layers.

scintillation

Whether to include scintillation effects in the propagation.

t

The current time.

Methods Summary

backward(wavefront)

Propagate a wavefront backward through the optical element.

calculate_propagators()

Recalculates the list of optical elements used for a propagation.

evolve_until(t)

Evolve all atmospheric layers to a time t.

forward(wavefront)

Propagate a wavefront forward through the optical element.

phase_for(wavelength)

Get the unwrapped phase in radians for the atmosphere.

reset()

Attributes Documentation

Cn_squared

The total Cn^2 value of the simulated atmosphere.

layers

A list of AtmosphericLayer objects.

outer_scale

The outer scale of all layers.

scintillation

Whether to include scintillation effects in the propagation.

t

The current time.

Methods Documentation

backward(wavefront)

Propagate a wavefront backward through the optical element.

A backward propagation is a literal backward propagation through the element. It is not (in general) the inverse of the forward propagation, except in cases where energy is conserved.

This function will be implemented by the derived class.

Parameters:
wavefrontWavefront

The wavefront to propagate.

Returns:
Wavefront

The propagated wavefront.

calculate_propagators()

Recalculates the list of optical elements used for a propagation.

This function is called automatically by other functions, but a recalculation can be forced by calling it explicitly.

evolve_until(t)

Evolve all atmospheric layers to a time t.

Parameters:
tscalar

The time to which to evolve the atmospheric layers.

forward(wavefront)

Propagate a wavefront forward through the optical element.

This will be implemented by the derived class.

Parameters:
wavefrontWavefront

The wavefront to propagate.

Returns:
Wavefront

The propagated wavefront.

phase_for(wavelength)

Get the unwrapped phase in radians for the atmosphere.

Parameters:
wavelengthscalar

The wavelength at which to calculate the phase screen.

Returns:
Field

The total unwrapped phase screen.

reset()