WedgeSegmentedDeformableMirror

class poppy.WedgeSegmentedDeformableMirror(name='WedgeSegDM', radius=<Quantity 1. m>, rings=1, nsections=4, gap_radii=None, gap=<Quantity 0.01 m>, include_factor_of_two=False, **kwargs)[source]

Bases: SegmentedDeformableMirror, WedgeSegmentedCircularAperture

Circularly segmented DM. Each actuator is controllable in piston, tip, and tilt (and any zernike term)

Parameters:
rings, segment_radius, gap, centervarious

All keywords for defining the segmented aperture geometry are inherited from the MultiCircularAperture class. See that class for details.

include_factor_of_twoBool

include the factor of two due to reflection in the OPD function (optional, default False). If this is set False (default), actuator commands are interpreted as being in units of desired wavefront error directly; the returned WFE will be directly proportional to the requested values (convolved with the actuator response function etc). If this is set to True, then the actuator commands are interpreted as being in physical surface units, and the WFE is therefore a factor of two larger. The returned WFE will be twice the amplitude of the requested values (convolved with the actuator response function etc.)

Define a circular aperture made of pie-wedge or keystone shaped segments.

Parameters:
namestring

Descriptive name

radiusfloat

Radius of the pupil, in meters.

ringsint

Number of rings of segments

nsectionsint or list of ints

Number of segments per ring. If one int, same number of segments in each ring. Or provide a list of ints to set different numbers per ring. To exclude the center for an on-axis aperture, provide a 0 as the first element of nsections to indicate 0 segments in the first ring.

gap_radiiquantity length

Radii from the center for the gaps between rings

gapquantity length

Width of gaps between segments, in both radial and azimuthal directions

gray_pixelbool, optional

Apply gray pixel approximation to return fractional transmission for edge pixels that are only partially within this aperture? (Note, currently this gives a warning; disabled by default)

kwargsother kwargs are passed to CircularAperture
Potential TODO: also have this inherit from MultiSegmentedAperture and subclass
some of those functions as appropriate. Consider refactoring from gap_radii to instead
provide the widths of each segment. Add option for including the center segment or having
a missing one in the middle for on-axis apertures. Use grayscale approximation for rasterizing
the circular gaps between the rings.