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)
回折が計算できるので、非回折ビームになる条件を見つけることもできそうです。ちなみに、ガウシアンビームの場合には、ビームウエストが決まるだけで、特別な回折は起きません。