{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Linear Grating\n", "\n", "This notebook demonstrates how to create a surface with a linear grating phase profile." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from optiland.optic import Optic\n", "import optiland.backend as be\n", "from optiland.phase import LinearGratingPhaseProfile" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "optic = Optic()\n", "optic.surfaces.add(index=0, radius=be.inf, thickness=be.inf)\n", "\n", "phase_profile = LinearGratingPhaseProfile(period=0.003, order=1, angle=be.pi/2)\n", "\n", "optic.surfaces.add(\n", " index=1,\n", " phase_profile=phase_profile,\n", " is_stop=True,\n", " material=\"air\",\n", " thickness=100.0,\n", ")\n", "optic.surfaces.add(index=2)\n", "\n", "optic.wavelengths.add(0.55)\n", "optic.fields.set_type(\"angle\")\n", "optic.fields.add(0.0)\n", "optic.set_aperture(\"EPD\", 25.0)\n", "\n", "_ = optic.draw(wavelengths=[0.45, 0.55, 0.65])" ] } ], "metadata": { "kernelspec": { "display_name": ".venv", "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.13.2" } }, "nbformat": 4, "nbformat_minor": 2 }