FresnelOpticalSystem

class poppy.FresnelOpticalSystem(name='unnamed system', pupil_diameter=<Quantity 1. m>, npix=1024, beam_ratio=0.5, verbose=True)[source]

Bases: BaseOpticalSystem

Class representing a series of optical elements, through which light can be propagated using the Fresnel formalism.

This is comparable to the “regular” (Fraunhofer-domain) OpticalSystem, but adds functionality for propagation to arbitrary optical planes rather than just pupil and image planes.

Parameters:
namestring

descriptive name of optical system

pupil_diameterastropy.Quantity of dimension length

Diameter of entrance pupil

npixint

Number of pixels across the entrance pupil by default 1024

beam_ratiofloat

Padding factor for the entrance pupil; what fraction of the array should correspond to the entrance pupil. Default is 0.5, which corresponds to Nyquist sampling (2 pixels per resolution element)

verbosebool

whether to be more verbose with log output while computing

Methods Summary

add_detector([pixelscale, fov_pixels, distance])

Add a detector to the optical system

add_optic([optic, distance, index])

Add an optic to the optical system

describe()

Print out a string table describing all planes in an optical system

input_wavefront([wavelength, inwave])

Create a Wavefront object suitable for sending through a given optical system.

propagate(wavefront[, normalize, ...])

Core low-level routine for propagating a wavefront through an optical system

Methods Documentation

add_detector(pixelscale=<Quantity 10. micron / pix>, fov_pixels=<Quantity 10. pix>, distance=<Quantity 0. m>)[source]

Add a detector to the optical system

Parameters:
pixelscaleastropy.Quantity, with units micron/pixel or equivalent

The pixel scale at the detector

fov_pixelsastropy.Quantity with units pixel

The number of pixels per axis of the detector. Assumes square detector.

distanceastropy.Quantity of dimension length

separation distance of this optic relative to the prior optic in the system.

add_optic(optic=None, distance=<Quantity 0. m>, index=None)[source]

Add an optic to the optical system

Parameters:
opticOpticalElement instance

Some optic

distanceastropy.Quantity of dimension length

separation distance of this optic relative to the prior optic in the system.

indexint

Index at which to insert the new optical element

describe()[source]

Print out a string table describing all planes in an optical system

input_wavefront(wavelength=<Quantity 1.e-06 m>, inwave=None)[source]

Create a Wavefront object suitable for sending through a given optical system.

Uses self.source_offset to assign an off-axis tilt, if requested. (FIXME does not work for Fresnel yet)

Parameters:
wavelengthfloat

Wavelength in meters

Returns:
wavefrontpoppy.fresnel.FresnelWavefront instance

A wavefront appropriate for passing through this optical system.

propagate(wavefront, normalize='none', return_intermediates=False, display_intermediates=False)[source]

Core low-level routine for propagating a wavefront through an optical system

See docstring of OpticalSystem.propagate for details