mirror of
https://github.com/yosata/fourierOptics.git
synced 2026-10-29 20:51:10 +00:00
Large update for finishing thesis
This commit is contained in:
1 parent
8e0575e0e9
commit
9ce4b7045f
25 files changed
+2316
-521
No files matched your search
@@ -0,0 +1,86 @@
|
||||
import numpy as np
|
||||
import matplotlib.pyplot as plt
|
||||
import sys
|
||||
# sys.path.insert(0, '/Users/joost/Dropbox/Werk/PhD/Analyses/Python/Analytical/Fourier Optics')
|
||||
# sys.path.insert(0, '/home/joost/Dropbox/Werk/PhD/Analyses/Python/Analytical/Fourier Optics')
|
||||
sys.path.insert(0, '/Users/joost/Dropbox/Werk/PhD/Documents/Published/FourierOptics GitHub release/')
|
||||
from fourierOptics import *
|
||||
from pdb import set_trace
|
||||
|
||||
'''
|
||||
@Author: Joost van den Born
|
||||
@Date: 14 July, 2022
|
||||
@Description: I use this script to create a large array (1001x1001 and 3001x3001)
|
||||
that can be used for the phase screen in the WFE production.
|
||||
Because it takes very long to generate these at this high resolution,
|
||||
we will need to save them to a pickle file.
|
||||
|
||||
What is saved:
|
||||
The array of coefficients
|
||||
The array of the full phase field
|
||||
|
||||
To Do:
|
||||
- Normalize/Scale the amplitude in an appropriate manner.
|
||||
'''
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
# plt.rc('text', usetex=True)
|
||||
# plt.rc('font', family='serif')
|
||||
import time
|
||||
# Setup of simulation
|
||||
l = 1.49e-3
|
||||
# mcd = ParaxialMICADO(n=1001, m=1001, dpix=160)
|
||||
mcd = ParaxialMICADO(n=3001, m=3001, dpix=50)
|
||||
# mcd.plot_ray_trace()
|
||||
wfe = WavefrontError(mcd.n, mcd.m)
|
||||
|
||||
|
||||
# -------------------------------------------------------
|
||||
####### GENERATING THE PHASE WITH A FOURIER SERIES ######
|
||||
# -------------------------------------------------------
|
||||
# Get x3 and y3 (the coordinates to apply the ADC WFE to):
|
||||
# The focal plane area is about 200x200 mm, so we apply the wavefront error to an area
|
||||
# of 200x200 mm.
|
||||
xfp, yfp = np.meshgrid(np.linspace(-150, 150, mcd.n), np.linspace(-150, 150, mcd.m))
|
||||
# np.random.seed(2183)
|
||||
# coeff = np.random.uniform(-1,1,(int(mcd.n/3),int(mcd.m/3)))
|
||||
np.random.seed(2183)
|
||||
coeff = np.random.uniform(-1,1,(101,101))
|
||||
|
||||
if False:
|
||||
print('Going in...')
|
||||
s1 = time.time()
|
||||
fs_array = fourier_series(xfp, yfp, coeff, Px=300, Py=300, xs=150, ys=150)
|
||||
s2 = time.time()
|
||||
print('Finished!')
|
||||
print('That took me {:.4f} s!'.format(s2-s1) )
|
||||
save_variable('wfe_fp_phase_array_coefficients_{}_{}.pkl'.format(mcd.n, mcd.m), coeff)
|
||||
save_variable('wfe_fp_phase_array_{}_{}.pkl'.format(mcd.n, mcd.m), fs_array)
|
||||
|
||||
# -------------------------------------------------------
|
||||
# -------------------------------------------------------
|
||||
# -------------------------------------------------------
|
||||
|
||||
if True:
|
||||
# coeff = load_variable('wfe_fp_phase_array_coefficients_{}_{}.pkl'.format(mcd.n, mcd.m))
|
||||
fs_array = load_variable('wfe_fp_phase_array_{}_{}.pkl'.format(mcd.n, mcd.m))
|
||||
|
||||
wfe.phase = fs_array
|
||||
surf = wfe.generate_height_map(50e-6, 2, 1)
|
||||
rms = np.sqrt(np.mean(surf**2))
|
||||
print('RMS: {}'.format(rms))
|
||||
|
||||
|
||||
plt.figure()
|
||||
plt.imshow(fs_array, cmap='jet', extent=[xfp.min(), xfp.max(), yfp.min(), yfp.max()], origin='lower')
|
||||
plt.colorbar()
|
||||
plt.show()
|
||||
|
||||
|
||||
plt.figure()
|
||||
plt.imshow(surf, cmap='jet', extent=[xfp.min(), xfp.max(), yfp.min(), yfp.max()], origin='lower')
|
||||
plt.colorbar()
|
||||
plt.show()
|
||||
|
||||
|
||||
Reference in new issue
Block a user