{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# OSLO and Mirrors\n", "\n", "**Scott Prahl**\n", "\n", "**Nov 2019, Version 4**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Overview\n", "\n", "This is an OSLO tutorial about ray tracing with mirrors. It is builds on the [previous mirror tutorial](../mirror/index.html) and that you understand the skills taught there.\n", "\n", "This follows the [mirror tutorial](http://www.amoptics.com/Downloads/2009_Your_First_OSLO_Session.pdf) created Brian Blanford in 2009.\n", "\n", "* This tutorial is one from a list of [other tutorials](https://omlc.org/classroom/oslotut/index.html) that are available.\n", "\n", "* The [FAQ](https://omlc.org/classroom/oslotut/faq.html) might also be of help." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## New ideas:\n", "\n", "* Displaying spot diagrams and an Airy disk\n", "\n", "* Displaying point spread function (PSF) and Strehl ratio\n", "\n", "* Paraxial focus, RMS focus, and OPD focus\n", "\n", "* Off axis rays\n", "\n", "* Adding an aperture to minimize coma\n", "\n", "* Bending the image surface to minimize off axis errors\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## f/4 Telescope\n", "\n", "Let's model a f/4 reflecting telescope having a concave mirror with a radius of curvature of 16mm. First, we need to figure out where the image will be and what the diameter $D$ of the mirror will be.\n", "\n", "Recall that\n", "$$\n", "f= \\frac{R}{2}\n", "$$\n", "and so for this mirror the image surface will be 8mm away from the mirror.\n", "\n", "The f/# is the focal length divided by the limiting aperture\n", "$$\n", "f\\# = \\frac{f}{D}\n", "$$\n", "therefore the diameter of the mirror will be 2mm (and the radius will be 1mm).\n", "\n", "\n", "\n", "And the drawing should look like\n", "\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The Spot Diagram\n", "\n", "In OSLO, the rays are launched from the source and propagate to the image plane. The spot diagram shows where these rays intersect the image plane. This is useful for evaluating an optical design.\n", "\n", "Go to the menu item\n", "\n", "`Evaluate -> Spot Diagram -> Single Spot Diagram`\n", "\n", "and change the setting to show the Airy disk. The Airy disk is the *diffraction limited* spot or more simply the smallest spot that could possibly be achieved for this system.\n", "\n", "\n", "\n", "You should now see\n", "\n", "\n", "\n", "The circle represents the Airy disk and since all the small points fall within the circle, we can say that this f/4 telescope is diffraction limited.\n", "\n", "In this case we can validate the Airy radius using\n", "$$\n", "r_{Airy} = 1.22 \\frac{\\lambda f}{b}\n", "$$\n", "where $\\lambda=587.56$nm, $f=8mm$ and $b$ = 2mm." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The diffraction limited spot size is 0.00287 mm\n", "entering beam radius should be 1.72 mm\n" ] } ], "source": [ "lambda0=587.56e-9 # m\n", "f = 8e-3 # m\n", "b = 2e-3 # m\n", "r_airy = 1.22*lambda0*f/b # m\n", "print(\"The diffraction limited spot size is %.5f mm\" % (r_airy*1000))\n", "\n", "print(\"entering beam radius should be %.2f mm\" % (8/2.33/2))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### What about a f/2.33 telescope?\n", "\n", "In this case, the limiting aperture increases to\n", "$$\n", "d = \\frac{f}{f/\\#} = \\frac{8\\mbox{ mm}}{2.33}= 3.43\\mbox{ mm}.\n", "$$\n", "and the entering beam radius should now be set to 1.72mm.\n", "\n", "\n", "\n", "Set the entering beam radius and bring up the single spot diagram again to see that many points now fall outside the Airy disk\n", "\n", "\n", "\n", "This is no longer diffraction limited — or is it?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Better focusing 1\n", "\n", "First, let's add a few extra rays to the ray drawing by going to menu\n", "\n", "`Lens -> Lens Drawing Conditions ...` \n", "\n", "and increasing the number of rays drawn from 3 to 7.\n", "\n", "\n", "\n", "If we look at the focusing of the mirror in the default autodrawing image, it looks just fine.\n", "\n", "\n", "\n", "The `Autofocus` window cannot be zoomed. However, it is possible to zoom using the `UW 1` Window. Do this by clicking the first icon in the `UW 1` window and selecting `Lens Drawing`. You should now see a new row of icons, \n", "\n", "\n", "\n", "Click on the second icon in the`UW 1` menu and the Autodraw image will be repeated. However this window allows you to click drag a rectangle to zoom into a region of interest. If you zoom into the region around the focus you see\n", "\n", "\n", "\n", "Now it is clear that the best focus does not coincide with the image surface `IMS`. It would improve the focus if we move the `IMS` back towards the mirror. The easiest way to do this is to click on the button in the `thickness` column in the `IMS` row and select\n", "\n", "`Autofocus - Minimum RMS Spot Size -> On-Axis Monochromatic ` \n", "\n", "The thickness should change to `-7.968223`. Now generate a\n", "\n", "\n", "\n", "Now, most points fall within the Airy disk!\n", "\n", "However, to quantitative assess whether the system is diffraction limited, the [Strehl ratio](https://en.wikipedia.org/wiki/Strehl_ratio) is commonly used. Generally, a Strehl value above 0.8 represents a diffraction limited spot. \n", "\n", "The easiest way to display the Strehl ratio is to go to the `UW 1` Window and click the first icon in the `UW 1` window and selecting `Lens Drawing`. You should now see a new row of icons, \n", "\n", "\n", "\n", "Select the third icon\n", "\n", "\n", "\n", "The number in the upper right hand corner is the and represents how close to perfect the optical system is. The value of 0.5454 says that the spot is not diffraction limited." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Better focusing 2\n", "\n", "If instead we select the other option\n", "\n", "`Autofocus - Minimum OPD RMS -> On-Axis Monochromatic ` \n", "\n", "to minimize the root mean square optical path difference. In this case, the thickness should change to `-7.976253` and the spot diagram looks like it might be a bit better:\n", "\n", "\n", "\n", "Now when we look at the point spread function, we see a new Strehl ratio\n", "\n", "\n", "\n", "And we see that the telescope is (barely) diffraction limited because the Strehl ratio is now since 0.8029." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Off-Axis Behavior\n", "\n", "So, the mirror works as well as can be expected for paraxial rays, even at f/2.33 now. A good telescope should allow one to focus on stars adjacent to those in the center of the field. To do this, we will increase the field angle to ±18°.\n", "\n", "To continue, at the moment, just go to page 13 of Blandford's [mirror tutorial](http://www.amoptics.com/Downloads/2009_Your_First_OSLO_Session.pdf).\n", "\n", "The steps are\n", "\n", "* insert a new surface 1\n", "* make it the aperture stop \n", "* make its position variable\n", "* create sliders to optimize the stop location and mirror curvature\n", "\n", "Eventually, you will discover that the best place for the aperture stop is at the center of curvature of the mirror." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Next steps\n", "\n", "This document is also available as a Jupyter notebook \n", "mirror2.ipynb. \n", "\n", "\n", "
\n", "\n", "© 2019 Scott Prahl" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.3" } }, "nbformat": 4, "nbformat_minor": 1 }