POPPY( Physical Optics Propagation in Python)
2018年3月14日 - 未分類
面白そうなAPIを見つけました。pythonで、フレネル回折シミュレーション(Fraunhofer and Fresnel diffraction)ができるようです。POPPYは、ジェイムズ・ウェッブ宇宙望遠鏡プロジェクトで研究されたものだそうです。
インストールは、ここを参照してください。Jupyter notebookで動作するチュートリアルが付いていました。
osys = poppy.OpticalSystem()
# 開口半径(メートル単位)
osys.add_pupil( poppy.CircularAperture(radius=3*u.m
# スクリーン座標 arcseconds
osys.add_detector(pixelscale=0.010, fov_arcsec=5.0)
# 波長 2nm
psf = osys.calc_psf(2e-6)
poppy.display_PSF(psf, title='The Airy Function')
これだけで、エアリーディスクが計算できます。
Jupiter notebookのサンプルには、フレネル回折がありました。
50cmの光を2.5cm口径のレンズから射出して、5m先の光束断面(プロフィール)が描画されました。
wf = poppy.FresnelWavefront(0.5*u.m,wavelength=2200e-9,npix=npix,oversample=4)
wf *= poppy.CircularAperture(radius=2.5*u.cm)
plt.figure(figsize=(12,5))
wf.display(‘both’,colorbar=True, showpadding=True)
plt.suptitle(“Entrance Pupil”, fontsize=18)
z = 5.0*u.m
wf.propagate_fresnel(z)
回折が計算できるので、非回折ビームになる条件を見つけることもできそうです。ちなみに、ガウシアンビームの場合には、ビームウエストが決まるだけで、特別な回折は起きません。こちらの資料に詳しく書かれています。