mirror of
https://github.com/yosata/fourierOptics.git
synced 2026-10-29 20:51:10 +00:00
Added off-axis propagation, SPIE scripts
This commit is contained in:
1 parent
61ca707689
commit
04eb56d529
20 files changed
+2068
-39
No files matched your search
@@ -0,0 +1,88 @@
|
||||
import numpy as np
|
||||
import sys
|
||||
sys.path.insert(0, '/Users/joost/Dropbox/Werk/PhD/Analyses/Python/Analytical/Fourier Optics')
|
||||
from fourierOptics import *
|
||||
from pdb import set_trace
|
||||
|
||||
|
||||
'''
|
||||
Author: Joost van den Born, PhD student at University of Groningen
|
||||
Contact: born@astro.rug.nl
|
||||
Description: Script to generate the wavefront errors that will be used for
|
||||
the ADC prisms during all subsequent analyses. Script made for
|
||||
the SPIE manuscript.
|
||||
'''
|
||||
|
||||
def main():
|
||||
plt.rc('text', usetex=True)
|
||||
plt.rc('font', family='serif')
|
||||
# Initializing MICADO paraxial model
|
||||
|
||||
l = 1.49e-3
|
||||
mcd = ParaxialMICADO(n=3001, m=3001, dpix=50)
|
||||
wfe = WavefrontError(mcd.n, mcd.m)
|
||||
|
||||
# Get x3 and y3 (the coordinates to apply the ADC WFE to):
|
||||
_, x3, y3 = mcd.propagate(l=l,surface=4, zoom=False, show=False,
|
||||
print_progress=False)
|
||||
|
||||
# Apply a set of wavefront errors to each ADC surface.
|
||||
print('\nSetting the wavefront errors...')
|
||||
wfe_p1 = ADC_surfaces(x3,y3)
|
||||
wfe_p2 = ADC_surfaces(x3,y3)
|
||||
wfe_p3 = ADC_surfaces(x3,y3)
|
||||
wfe_p4 = ADC_surfaces(x3,y3)
|
||||
|
||||
wfe_p1.generate_ADC_wfe(zernRMS=20e-6, psdRMS=15e-6)
|
||||
wfe_p2.generate_ADC_wfe(zernRMS=20e-6, psdRMS=15e-6)
|
||||
wfe_p3.generate_ADC_wfe(zernRMS=20e-6, psdRMS=15e-6)
|
||||
wfe_p4.generate_ADC_wfe(zernRMS=20e-6, psdRMS=15e-6)
|
||||
|
||||
mask = np.sqrt(wfe_p1.xz**2 + wfe_p1.yz**2) > 1
|
||||
|
||||
# Plot P1
|
||||
|
||||
surf_p1 = wfe_p1.latest_surface.copy()
|
||||
surf_p1[mask]=np.nan
|
||||
figp1, axp1 = plot_real_valued_results(surf_p1[850:2150,850:2150]*1e6, x3[850:2150,850:2150], y3[850:2150,850:2150],
|
||||
colormap='jet', labeltext='Surface height (nm)', fig_size=None, show=False)
|
||||
plt.savefig('./figures/ADC_tWFE_p1_zern_20nm_psd_15nm.pdf', bbox_inches='tight', transparent=True)
|
||||
plt.savefig('./figures/ADC_tWFE_p1_zern_20nm_psd_15nm.png', bbox_inches='tight', transparent=True)
|
||||
plt.close()
|
||||
|
||||
# Plot P2
|
||||
surf_p2 = wfe_p2.latest_surface.copy()
|
||||
surf_p2[mask]=np.nan
|
||||
figp2, axp2 = plot_real_valued_results(surf_p2[850:2150,850:2150]*1e6, x3[850:2150,850:2150], y3[850:2150,850:2150],
|
||||
colormap='jet', labeltext='Surface height (nm)', fig_size=None, show=False)
|
||||
plt.savefig('./figures/ADC_tWFE_p2_zern_20nm_psd_15nm.pdf', bbox_inches='tight', transparent=True)
|
||||
plt.savefig('./figures/ADC_tWFE_p2_zern_20nm_psd_15nm.png', bbox_inches='tight', transparent=True)
|
||||
plt.close()
|
||||
|
||||
# Plot P3
|
||||
surf_p3 = wfe_p3.latest_surface.copy()
|
||||
surf_p3[mask]=np.nan
|
||||
figp3, axp3 = plot_real_valued_results(surf_p3[850:2150,850:2150]*1e6, x3[850:2150,850:2150], y3[850:2150,850:2150],
|
||||
colormap='jet', labeltext='Surface height (nm)', fig_size=None, show=False)
|
||||
plt.savefig('./figures/ADC_tWFE_p3_zern_20nm_psd_15nm.pdf', bbox_inches='tight', transparent=True)
|
||||
plt.savefig('./figures/ADC_tWFE_p3_zern_20nm_psd_15nm.png', bbox_inches='tight', transparent=True)
|
||||
plt.close()
|
||||
|
||||
# Plot P4
|
||||
surf_p4 = wfe_p4.latest_surface.copy()
|
||||
surf_p4[mask]=np.nan
|
||||
figp4, axp4 = plot_real_valued_results(surf_p4[850:2150,850:2150]*1e6, x3[850:2150,850:2150], y3[850:2150,850:2150],
|
||||
colormap='jet', labeltext='Surface height (nm)', fig_size=None, show=False)
|
||||
plt.savefig('./figures/ADC_tWFE_p4_zern_20nm_psd_15nm.pdf', bbox_inches='tight', transparent=True)
|
||||
plt.savefig('./figures/ADC_tWFE_p4_zern_20nm_psd_15nm.png', bbox_inches='tight', transparent=True)
|
||||
plt.close()
|
||||
|
||||
# Get the wavefront errors and save them for later use.
|
||||
save_variable('./data/ADC_tWFE_p1_zern_20nm_psd_15nm.pkl', wfe_p1.latest_surface)
|
||||
save_variable('./data/ADC_tWFE_p2_zern_20nm_psd_15nm.pkl', wfe_p2.latest_surface)
|
||||
save_variable('./data/ADC_tWFE_p3_zern_20nm_psd_15nm.pkl', wfe_p3.latest_surface)
|
||||
save_variable('./data/ADC_tWFE_p4_zern_20nm_psd_15nm.pkl', wfe_p4.latest_surface)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
Reference in new issue
Block a user