PowerSpectrumWFE

class poppy.PowerSpectrumWFE(name='Model PSD WFE', psd_parameters=None, psd_weight=None, seed=None, apply_reflection=False, screen_size=None, rms=None, incident_angle=<Quantity 0. deg>, radius=None, **kwargs)[source]

Bases: WavefrontError

WFE model specified via a Power Spectral Density (PSD), or a list of multiple PSDs, which follow von Karman PSD model:

\(P(k) = \frac{\beta} {\left( \left(\frac{1}{L_{0}}\right)^{2} + |k|^{2} \right)^{{\alpha/2}}} e^{-(|k|l_{0})^{2}} + \beta_{sr}\)

where: P: astropy quantity

Power Spectral Density at a spatial frequency. Units: :math: m^{2}m^{2} Assumes surface units of meters (first :math: m^{2})

k: astropy quantity

Spatial frequency value, units 1/m

\(\alpha\): float

The PSD index value

\(\beta\): astropy quantity

The normalization constant. In units of :math: frac{m^{2}}{m^{alpha-2}} Numerator assumes surface units of meters Denominator assumes spatial frequency units are 1/m

\(L_{0}\): astropy quantity

The outer scale value, where the low spatial frequency flattens. Units: m

\(l_{0}\): float

Inner scale value, where the high spatial frequency flattens.

\(\beta_{sr}\): astropy quantity

Surface roughness normalization. Should match units of PSD.

References: Males, Jared. MagAO-X Preliminary-Design Review,

Section 5.1: Optics Specifications, Eqn 1 https://magao-x.org/docs/handbook/appendices/pdr/

Lumbres, et al. In Prep.

Parameters:
namestring

name of the optic

psd_parameters: list (for single PSD set) or list of lists (multiple PSDs)

List of specified PSD parameters. If there are multiple PSDs, then each list element is a list of specified PSD parameters. i.e. [ [PSD_list_0], [PSD_list_1]] The PSD parameters in a list are ordered as follows: [alpha, beta, outer_scale, inner_scale, surf_roughness] where:

alpha: float

The PSD index value.

beta: astropy quantity

The normalization constant. In units of :math: frac{m^{2}}{m^{alpha-2}} Numerator assumes surface units of meters Denominator assumes spatial frequency units are 1/m

outer_scale: astropy quantity

The outer scale value, where the low spatial frequency flattens. Unit requirement: meters

inner_scale: float

Inner scale value, where the high spatial frequency flattens.

surf_roughness: astropy quantity

Surface roughness normalization. Should match units of PSD.

psd_weight: iterable list of floats

Specifies the weight multiplier to set onto each model PSD

seedinteger

Seed for the random phase screen generator

apply_reflection: boolean

Applies 2x scale for the OPD as needed for reflection. Default to False. Set to True if the PSD model only accounts for surface.

screen_size: integer

Sets how large the PSD matrix will be calculated. The PSD matrix needs to be larger than the wavefront for Fourier transform padding purposes. If None passed in, then code will default size to 4x wavefront’s side. Default to None.

rms: astropy quantity

Optional. Use this to force the wfe RMS If a value is passed in, this is the surface rms value (not OPD) in meters. If None passed, then the wfe RMS produced is what shows up in PSD calculation. Default to None.

incident_angle: astropy quantity

Adjusts the WFE based on reflected beam distortion. Does not distort the beam (remains circular), but will get the rms equivalent value. Can be passed as either degrees or radians. Default is 0 degrees (paraxial).

radius: astropy quantity

Optional. However, mandatory if rms parameter is passed. If a value is passed in, this is the beam radius value for calculating the generated WFE rms to compare with the normalized rms value. Default to None.

Methods Summary

get_opd(wave)

Methods Documentation

get_opd(wave)[source]
Parameters:
wavepoppy.Wavefront (or float)

Incoming Wavefront before this optic to set wavelength and scale, or a float giving the wavelength in meters for a temporary Wavefront used to compute the OPD.