von_karman_covariance_calculator#
@author: giuliacarla
- class arte.atmo.von_karman_covariance_calculator.VonKarmanSpatioTemporalCovariance(source1, source2, aperture1, aperture2, cn2_profile, spat_freqs, logger=<Logger VK_COVARIANCE (WARNING)>)#
Bases:
objectCovariance of Von Karman atmospheric turbulence
This class computes the covariance and its Fourier transform, the Cross Power Spectral Density (CPSD), between Zernike coefficients describing the turbulence induced phase aberrations of two sources seen by two different circular apertures. The CPSD of the phase is also computed.
References
Plantet et al. (2020) - “Spatio-temporal statistics of the turbulent Zernike coefficients and piston-removed phase from two distinct beams”.
Plantet et al. (2018) - “LO WFS of MAORY: performance and sky coverage assessment.”
Whiteley et al. (1998) - “Temporal properties of the Zernike expansion coefficients of turbulence-induced phase aberrations for aperture and source motion”.
- Parameters:
source1 (
GuideSource) – Geometry of the first source. We consider rho as the angle in arcsec wrt the z-axis and theta as the angle in degrees wrt the x-axis. (e.g. source1 = arte.types.guide_source.GuideSource((1,90), 9e3)source2 (
GuideSource) – Geometry of the second source. Same conventions as source1.aperture1 (
CircularOpticalAperture) – Geometry of the first optical aperture. (e.g. aperture1 = arte.types.aperture.CircularOpticalAperture( 10, (0, 0, 0)))aperture2 (
CircularOpticalAperture) – Geometry of the second optical aperture.cn2_profile (
cn2_profile) – Cn2 profile. (e.g. cn2_eso = arte.atmo.cn2_profile.EsoEltProfiles.Q1() e.g. cn2_invented = arte.atmo.cn2_profile.Cn2Profile.from_r0s( [0.16], [25], [10e3], [0.1], [0]))spat_freqs (
numpy.ndarray) – Range of spatial frequencies that are used in Zernike covariance, Zernike CPSD and phase CPSD computation.
Methods
getGeneralZernikeCPSD(j, k, temp_freqs)Return the generalized expression of Zernike CPSD that we get from 'getZernikeCPSD' function.
getPhaseCPSD(temp_freqs)Return the Cross Power Spectral Density (CPSD) of the turbulent phase seen by aperture1 and aperture2 observing, respectively, source1 and source2.
Return the covariance between the phase seen from source1 on aperture1 and the phase seen from source2 on aperture2.
getZernikeCPSD(j, k, temp_freqs)Return the Cross Power Spectral Density (CPSD) of the Zernike coefficients with index j and k describing the phase seen on aperture1 and aperture2 observing, respectively, source1 and source2.
getZernikeCovariance(j, k)Return the covariance between two Zernike coefficients with index j and k describing the phase seen, respectively, on aperture1 from source1 and on aperture2 from source2.
aperture1
aperture2
cn2_profile
getGeneralPhaseCPSD
integrandOfGeneralPhaseCPSD
integrandOfGeneralZernikeCPSD
integrandOfPhaseCPSD
integrandOfZernikeCPSD
plotCPSD
setAperture1
setAperture2
setCn2Profile
setSource1
setSource2
setSpatialFrequencies
source1
source2
spatial_frequencies
temporal_frequencies
useGPU
- aperture1()#
- aperture2()#
- cn2_profile()#
- getGeneralPhaseCPSD(temp_freqs)#
- getGeneralZernikeCPSD(j, k, temp_freqs)#
Return the generalized expression of Zernike CPSD that we get from ‘getZernikeCPSD’ function. This expression is needed when we have to integrate the Zernike CPSD in the temporal frequency range from -infinity to +infinity. Instead of this computation, we can obtain the same result performing the integral of the generalized Zernike CPSD in the temporal frequency range from 0 to infinity. This is what we need, for example, when we want to compare the Zernike covariance with the Zernike CPSD integrated in the temporal frequencies’ domain.
- Parameters:
j (int or list) – Index of Zernike coefficients related to source1 on aperture1.
k (int or list) – Index of Zernike coefficients related to source2 on aperture2.
temp_freqs (numpy.ndarray) – Temporal frequencies array.
- Returns:
cpsdTotal – General Zernike CPSD in [rad**2/Hz].
- Return type:
- getPhaseCPSD(temp_freqs)#
Return the Cross Power Spectral Density (CPSD) of the turbulent phase seen by aperture1 and aperture2 observing, respectively, source1 and source2. The CPSD is a function of temporal frequency.
- Parameters:
temp_freqs (numpy.ndarray) – Temporal frequencies array.
- Returns:
phaseCPSD – Phase CPSD in [rad**2/Hz].
- Return type:
- getPhaseCovariance()#
Return the covariance between the phase seen from source1 on aperture1 and the phase seen from source2 on aperture2.
- Returns:
phaseCovariance – Covariance between phase1 and phase2 in [rad**2].
- Return type:
- getZernikeCPSD(j, k, temp_freqs)#
Return the Cross Power Spectral Density (CPSD) of the Zernike coefficients with index j and k describing the phase seen on aperture1 and aperture2 observing, respectively, source1 and source2. The CPSD is a function of the temporal frequency.
- Parameters:
j (int) – Index of the Zernike coefficient (related to source1 on aperture1).
k (int) – Index of the Zernike coefficient (related to source2 on aperture2).
temp_freqs (numpy.ndarray) – Temporal frequencies array in Hz.
- Returns:
zernikeCPSD – Zernike CPSD or matrix of Zernike CPSDs in [rad**2/Hz].
- Return type:
- getZernikeCovariance(j, k)#
Return the covariance between two Zernike coefficients with index j and k describing the phase seen, respectively, on aperture1 from source1 and on aperture2 from source2.
- Parameters:
j (int or list) – Index of Zernike coefficients related to source1 on aperture1.
k (int or list) – Index of Zernike coefficients related to source2 on aperture2.
- Returns:
zernikeCovariance – Zernike covariance or covariance matrix (matrix of shape nxm if n and m are, respectively, the dimension of j and k) in [rad**2].
- Return type:
- integrandOfGeneralPhaseCPSD(nLayer, temp_freqs)#
- integrandOfGeneralZernikeCPSD(j, k, nLayer, temp_freqs)#
- integrandOfPhaseCPSD(nLayer, temp_freqs)#
- integrandOfZernikeCPSD(j, k, nLayer, temp_freqs)#
- plotCPSD(cpsd, func_part, scale, legend)#
- setAperture1(ap1)#
- setAperture2(ap2)#
- setCn2Profile(cn2_profile)#
- setSource1(s1)#
- setSource2(s2)#
- setSpatialFrequencies(freqs)#
- source1()#
- source2()#
- spatial_frequencies()#
- temporal_frequencies()#
- useGPU()#