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:
- Pastropy quantity
Power Spectral Density at a spatial frequency. Units: :math:
m^{2}m^{2}
Assumes surface units of meters (first :math:m^{2}
)- kastropy 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.
- 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:
- alphafloat
The PSD index value.
- betaastropy 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_scaleastropy quantity
The outer scale value, where the low spatial frequency flattens. Unit requirement: meters
- inner_scalefloat
Inner scale value, where the high spatial frequency flattens.
- surf_roughnessastropy quantity
Surface roughness normalization. Should match units of PSD.
- psd_weightiterable list of floats
Specifies the weight multiplier to set onto each model PSD
- seedinteger
Seed for the random phase screen generator
- apply_reflectionboolean
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_sizeinteger
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.
- rmsastropy 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_angleastropy 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).
- radiusastropy 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.
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.
Methods Summary
get_opd
(wave)Methods Documentation