CompoundAnalyticOptic

class poppy.CompoundAnalyticOptic(opticslist=None, name='unnamed', mergemode='and', verbose=True, **kwargs)[source]

Bases: AnalyticOpticalElement

Define a compound analytic optical element made up of the combination of two or more individual optical elements.

This is just a convenience routine for semantic organization of optics. It can be useful to keep the list of optical planes cleaner, but you can certainly just add a whole bunch of planes all in a row without using this class to group them.

All optics should be of the same plane type (pupil or image); propagation between different optics contained inside one compound is not supported.

Parameters:
opticslistlist

A list of AnalyticOpticalElements to be merged together.

mergemodestring, default = ‘and’
Method for merging transmissions:
‘and’resulting transmission is product of constituents. (E.g

trans = trans1*trans2)

‘or’resulting transmission is sum of constituents, with overlap

subtracted. (E.g. trans = trans1 + trans2 - trans1*trans2)

In both methods, the resulting OPD is the sum of the constituents’ OPDs.

Methods Summary

get_opd(wave)

Return the optical path difference, given a wavelength.

get_transmission(wave)

Note that this is the amplitude transmission, not the total intensity transmission.

Methods Documentation

get_opd(wave)[source]

Return the optical path difference, given a wavelength.

In this base class instance, the wavefront parameter ‘wave’ is not used,

and the .opd attribute of the optic is returned directly. Subclasses may change this behavior, for instance to evaluate optical aberrations on the sampling defined for that wavefront, or to compute the wavelength-dependent aberrations of a refractive optic.

Parameters:
wavefloat or obj

either a scalar wavelength or a Wavefront object

Returns:
ndarray giving OPD in meters
get_transmission(wave)[source]

Note that this is the amplitude transmission, not the total intensity transmission.