VectorVortexCoronagraph

class hcipy.coronagraphy.VectorVortexCoronagraph(charge, lyot_stop=None, phase_retardation=3.141592653589793, q=1024, scaling_factor=4, window_size=32)

Bases: hcipy.optics.optical_element.AgnosticOpticalElement

An vector vortex coronagraph.

This OpticalElement simulations the propagation of light through a vector vortex in the focal plane. To resolve the singularity of this vortex phase plate, a multi-scale approach is made. Discretisation errors made at a certain level are corrected by the next level with finer sampling.

Parameters
chargeinteger

The charge of the vortex.

lyot_stopField or OpticalElement

The Lyot stop for the coronagraph. If it’s a Field, it is converted to an OpticalElement for convenience. If this is None (default), then no Lyot stop is used.

phase_retardationscalar or function

The phase retardation of the vector vortex plate, potentially as a function of wavelength. Changes of the phase retardation as a function of spatial position is not yet supported.

qscalar

The minimum number of pixels per lambda/D. The number of levels in the multi-scale Fourier transforms will be chosen to reach at least this number of samples. The required q for a high-accuracy vortex coronagraph depends on the charge of the vortex. For charge 2, this can be as low as 32, but for charge 8 you need ~1024. Lower values give higher performance as a smaller number of levels is needed, but increases the sampling errors near the singularity. Charges not divisible by four require a much lower q. The default (q=1024) is conservative in most cases.

scaling_factorscalar

The fractional increase in spatial frequency sampling per level. Larger scaling factors require a smaller number of levels, but each level requires a slower Fourier transform. Factors of 2 or 4 usually perform the best.

window_sizeinteger

The size of the next level in the number of pixels on the current layer. Lowering this increases performance in exchange for accuracy. Values smaller than 4-8 are not recommended.

Methods Summary

backward(wavefront, *args, **kwargs)

Propagate a wavefront backward through the optical element.

forward(wavefront, *args, **kwargs)

Propagate a wavefront forward through the optical element.

get_input_grid(output_grid, wavelength)

Get the input grid for a specified output grid and wavelength.

get_output_grid(input_grid, wavelength)

Get the output grid for a specified input grid and wavelength.

make_instance(instance_data, input_grid, …)

Make an instance for this specific input_grid, output_grid, wavelength.

Methods Documentation

backward(wavefront, *args, **kwargs)

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.

forward(wavefront, *args, **kwargs)

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.

get_input_grid(output_grid, wavelength)

Get the input grid for a specified output grid and wavelength.

This optical element only supports propagation to the same plane as its input.

Parameters
output_gridGrid

The output grid of the optical element.

wavelengthscalar or None

The wavelength of the outgoing light.

Returns
Grid

The input grid corresponding to the output grid and wavelength combination.

get_output_grid(input_grid, wavelength)

Get the output grid for a specified input grid and wavelength.

This optical element only supports propagation to the same plane as its input.

Parameters
input_gridGrid

The input grid of the optical element.

wavelengthscalar or None

The wavelength of the incoming light.

Returns
Grid

The output grid corresponding to the input grid and wavelength combination.

make_instance(instance_data, input_grid, output_grid, wavelength)

Make an instance for this specific input_grid, output_grid, wavelength.

This function is intended to be implemented by a derived class. Any properties evaluated for the instance can be stored into the instance_data object which is stored in the internal cache.

Parameters
instance_dataInstanceData

An object storing all data for this instance. This object can be modified this function.

input_gridGrid or None

The input grid.

output_gridGrid or None

The output grid.

wavelengthscalar or None

The wavelength.