FresnelOpticalSystem

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

Bases: poppy.poppy_core.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.

name : string
descriptive name of optical system
pupil_diameter : astropy.Quantity of dimension length
Diameter of entrance pupil
npix : int
Number of pixels across the entrance pupil by default 1024
beam_ratio : float
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)
verbose : bool
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]) 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

pixelscale : astropy.Quantity, with units micron/pixel or equivalent
The pixel scale at the detector
fov_pixels : astropy.Quantity with units pixel
The number of pixels per axis of the detector. Assumes square detector.
distance : astropy.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

optic : OpticalElement instance
Some optic
distance : astropy.Quantity of dimension length
separation distance of this optic relative to the prior optic in the system.
index : int
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>)[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)

wavelength : float
Wavelength in meters
wavefront : poppy.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