{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Angle Dependency Example" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This is an example shows how to use LayerLumos to get angle dependncy of your structure" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "from scipy.constants import c\n", "from layerlumos.utils_materials import load_material, interpolate_material\n", "from layerlumos.layerlumos import stackrt, stackrt0\n", "import matplotlib.pyplot as plt\n", "import numpy as np" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "TiO2_data = load_material('TiO2')\n", "\n", "# Define wavelength range (in meters)\n", "wavelengths = np.linspace(300e-9, 900e-9, 100) # 100 points from 300nm to 700nm\n", "frequencies = c / wavelengths # Convert wavelengths to frequencies\n", "\n", "# Interpolate n and k values for SiO2 over the specified frequency range\n", "n_k_TiO2 = interpolate_material(TiO2_data, frequencies)\n", "n_TiO2 = n_k_TiO2[:, 0] + 1j*n_k_TiO2[:, 1] # Combine n and k into a complex refractive index\n", "\n", "# Define stack configuration\n", "n_air = np.ones_like(wavelengths) # Refractive index of air is approximately 1\n", "# Stack refractive indices and thicknesses for air-SiO2-air\n", "n_stack = np.vstack([n_air, n_TiO2, n_air]).T # Transpose to match expected shape (Nlayers x Nfreq)\n", "d_stack = np.array([0, 2e-8, 0]) # No frequency dependence on thickness\n", "thetas = np.linspace(0, 89, 90)\n", "# Calculate R and T over the frequency (wavelength) range\n", "R_TE, T_TE, R_TM, T_TM = stackrt(n_stack, d_stack, frequencies, thetas)\n", "\n", "# Calculate average R and T\n", "R_avg = (R_TE + R_TM) / 2\n", "T_avg = (T_TE + T_TM) / 2\n" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA4wAAAJOCAYAAAD8nYmpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB8v0lEQVR4nO3dd3wUdeL/8fduOiUBKQkdrBSlCCdGBFs0enw9BH5KExHbqaBC1AOOJqKCnl9EPYQTFU4FUe/U81SwROAEaYJ4VgSpKgkiQiiSQHZ+f/Bldc1mJjuzk9lNXk8f83iYmf2UKQt88pl5j88wDEMAAAAAAPyG3+sOAAAAAABiEwNGAAAAAEBYDBgBAAAAAGExYAQAAAAAhMWAEQAAAAAQFgNGAAAAAEBYDBgBAAAAAGExYAQAAAAAhMWAEQAAAAAQFgNGAEBc2Lp1q3w+n+bOnet1VwAAqDYYMAJAHPL5fBValixZ4nVXXfXWW2/pnnvuKbP+0KFDuueee6r8/gMA4LZErzsAAIjcc889F/Lzs88+q3fffbfM+jZt2lRmt1zVokUL/fzzz0pKSgque+uttzRjxowyg8ZDhw5p0qRJkqTzzz+/EnsJAEDVwoARAOLQ1VdfHfLzypUr9e6775ZZ/1uHDh1SjRo13Oyaa3w+n1JTU73uBgAA1Qq3pAJAFXX++efr9NNP19q1a9WjRw/VqFFDf/7znyVJ//rXv9SzZ081btxYKSkpOumkkzR58mSVlpaGreOLL77QBRdcoBo1aqhJkyZ66KGHyrT3+OOPq127dqpRo4bq1q2rLl26aP78+cHt99xzj3w+n77++mtdffXVysjIUIMGDTR+/HgZhqEdO3aoV69eSk9PV1ZWlv73f/83pP7fPsN47bXXasaMGZJCb9HdunWrGjRoIEmaNGlScP3xWcj//ve/uvbaa3XiiScqNTVVWVlZuu666/Tjjz+GtHe8v5s2bdK1116rOnXqKCMjQ0OHDtWhQ4fK7P/zzz+vs846K7j/PXr00DvvvBPymYULF6p79+6qWbOmateurZ49e+rzzz+3OpUAAHiGASMAVGE//vijLrvsMnXs2FHTp0/XBRdcIEmaO3euatWqpby8PD366KPq3LmzJkyYoNGjR5ep46efftKll16qDh066H//93/VunVrjRo1SgsXLgx+Zvbs2br99tvVtm1bTZ8+XZMmTVLHjh21atWqMvX169dPgUBAU6dOVdeuXXXfffdp+vTpuvjii9WkSRM9+OCDOvnkk3XXXXfpP//5T7n79sc//lEXX3yxpGO36B5fGjRooJkzZ0qSevfuHVzfp08fSdK7776rzZs3a+jQoXr88cfVv39/LViwQL///e9lGEaZdq666irt379fU6ZM0VVXXaW5c+cGb3c9btKkSRo8eLCSkpJ07733atKkSWrWrJnef//94Geee+459ezZU7Vq1dKDDz6o8ePH64svvtC5556rrVu3lrufAAB4ygAAxL1hw4YZv/0j/bzzzjMkGbNmzSrz+UOHDpVZ98c//tGoUaOGcfjw4TJ1PPvss8F1xcXFRlZWltG3b9/gul69ehnt2rUz7ePEiRMNScZNN90UXHf06FGjadOmhs/nM6ZOnRpc/9NPPxlpaWnGkCFDguu2bNliSDLmzJljut+GYRg//PCDIcmYOHFihfb9hRdeMCQZ//nPf8r097rrrgv5bO/evY169eoFf964caPh9/uN3r17G6WlpSGfDQQChmEYxv79+406deoYN954Y8j2goICIyMjo8x6AABiBTOMAFCFpaSkaOjQoWXWp6WlBf9///792r17t7p3765Dhw7pq6++CvlsrVq1Qp6NTE5O1llnnaXNmzcH19WpU0fffvut1qxZY9mnG264Ifj/CQkJ6tKliwzD0PXXXx9S32mnnRbSRrT8et8PHz6s3bt36+yzz5YkrVu3rsznb7755pCfu3fvrh9//FFFRUWSpNdee02BQEATJkyQ3x/616rP55N0bFZz7969GjBggHbv3h1cEhIS1LVrVy1evDiq+wgAQLQwYASAKqxJkyZKTk4us/7zzz9X7969lZGRofT0dDVo0CA4KNy3b1/IZ5s2bRoc+BxXt25d/fTTT8GfR40apVq1aumss87SKaecomHDhmn58uVh+9S8efOQnzMyMpSamqr69euXWf/rNqJlz549uuOOO5SZmam0tDQ1aNBArVq1klR238P1t27dupIU7Ns333wjv9+vtm3bltvmxo0bJUkXXnihGjRoELK888472rVrV1T2DQCAaCMlFQCqsF/Pph23d+9enXfeeUpPT9e9996rk046SampqVq3bp1GjRqlQCAQ8vmEhISwdRu/et6vTZs22rBhg9544w0tWrRI//znP/XE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AADXxOcTqAAAAAAA1zFgBAAAAACExYARAAAAABBWXA4YZ86cqfbt2wff35Odna2FCxcGtx8+fFjDhg1TvXr1VKtWLfXt21eFhYUhdWzfvl09e/ZUjRo11LBhQ9199906evRoZe8KIjR16lT5fD6NGDEiuI7zXTXcc8898vl8IUvr1q2D2znPVct3332nq6++WvXq1VNaWprOOOMMffTRR8HthmFowoQJatSokdLS0pSTk6ONGzeG1LFnzx4NGjRI6enpqlOnjq6//nodOHCgsncFJlq2bFnme+3z+TRs2DBJfK+rktLSUo0fP16tWrVSWlqaTjrpJE2ePFm/jsrge1117N+/XyNGjFCLFi2Ulpamc845R2vWrAlu51xXMUYcev31140333zT+Prrr40NGzYYf/7zn42kpCTjs88+MwzDMG6++WajWbNmRn5+vvHRRx8ZZ599tnHOOecEyx89etQ4/fTTjZycHOPjjz823nrrLaN+/frGmDFjvNolVMDq1auNli1bGu3btzfuuOOO4HrOd9UwceJEo127dsbOnTuDyw8//BDcznmuOvbs2WO0aNHCuPbaa41Vq1YZmzdvNt5++21j06ZNwc9MnTrVyMjIMF577TXjk08+Mf7whz8YrVq1Mn7++efgZy699FKjQ4cOxsqVK40PPvjAOPnkk40BAwZ4sUsox65du0K+0++++64hyVi8eLFhGHyvq5L777/fqFevnvHGG28YW7ZsMV5++WWjVq1axqOPPhr8DN/rquOqq64y2rZtayxdutTYuHGjMXHiRCM9Pd349ttvDcPgXFc1cTlgDKdu3brGU089Zezdu9dISkoyXn755eC2L7/80pBkrFixwjAMw3jrrbcMv99vFBQUBD8zc+ZMIz093SguLq70vsPa/v37jVNOOcV49913jfPOOy84YOR8Vx0TJ040OnToEHYb57lqGTVqlHHuueeWuz0QCBhZWVnGX/7yl+C6vXv3GikpKcYLL7xgGIZhfPHFF4YkY82aNcHPLFy40PD5fMZ3333nXufhyB133GGcdNJJRiAQ4HtdxfTs2dO47rrrQtb16dPHGDRokGEYfK+rkkOHDhkJCQnGG2+8EbL+zDPPNMaOHcu5roLi8pbUXystLdWCBQt08OBBZWdna+3atTpy5IhycnKCn2ndurWaN2+uFStWSJJWrFihM844Q5mZmcHP5ObmqqioSJ9//nml7wOsDRs2TD179gw5r5I431XMxo0b1bhxY5144okaNGiQtm/fLonzXNW8/vrr6tKli6688ko1bNhQnTp10uzZs4Pbt2zZooKCgpDznZGRoa5du4ac7zp16qhLly7Bz+Tk5Mjv92vVqlWVtzOosJKSEj3//PO67rrr5PP5+F5XMeecc47y8/P19ddfS5I++eQTLVu2TJdddpkkvtdVydGjR1VaWqrU1NSQ9WlpaVq2bBnnugpK9LoDdn366afKzs7W4cOHVatWLb366qtq27at1q9fr+TkZNWpUyfk85mZmSooKJAkFRQUhPzlc3z78W2ILQsWLNC6detC7o0/rqCggPNdRXTt2lVz587Vaaedpp07d2rSpEnq3r27PvvsM85zFbN582bNnDlTeXl5+vOf/6w1a9bo9ttvV3JysoYMGRI8X+HO56/Pd8OGDUO2JyYm6oQTTuB8x6jXXntNe/fu1bXXXiuJP7+rmtGjR6uoqEitW7dWQkKCSktLdf/992vQoEGSxPe6Cqldu7ays7M1efJktWnTRpmZmXrhhRe0YsUKnXzyyZzrKihuB4ynnXaa1q9fr3379ukf//iHhgwZoqVLl3rdLUTZjh07dMcdd+jdd98t85ssVC3HfwstSe3bt1fXrl3VokULvfTSS0pLS/OwZ4i2QCCgLl266IEHHpAkderUSZ999plmzZqlIUOGeNw7uOXpp5/WZZddpsaNG3vdFbjgpZde0rx58zR//ny1a9dO69ev14gRI9S4cWO+11XQc889p+uuu05NmjRRQkKCzjzzTA0YMEBr1671umtwQdzekpqcnKyTTz5ZnTt31pQpU9ShQwc9+uijysrKUklJifbu3Rvy+cLCQmVlZUmSsrKyyqSwHf/5+GcQG9auXatdu3bpzDPPVGJiohITE7V06VI99thjSkxMVGZmJue7iqpTp45OPfVUbdq0ie91FdOoUSO1bds2ZF2bNm2CtyAfP1/hzuevz/euXbtCth89elR79uzhfMegbdu26b333tMNN9wQXMf3umq5++67NXr0aPXv319nnHGGBg8erJEjR2rKlCmS+F5XNSeddJKWLl2qAwcOaMeOHVq9erWOHDmiE088kXNdBcXtgPG3AoGAiouL1blzZyUlJSk/Pz+4bcOGDdq+fbuys7MlSdnZ2fr0009DLtR3331X6enpZf4RA29ddNFF+vTTT7V+/frg0qVLFw0aNCj4/5zvqunAgQP65ptv1KhRI77XVUy3bt20YcOGkHVff/21WrRoIUlq1aqVsrKyQs53UVGRVq1aFXK+9+7dG/Lb7Pfff1+BQEBdu3athL1AJObMmaOGDRuqZ8+ewXV8r6uWQ4cOye8P/WdlQkKCAoGAJL7XVVXNmjXVqFEj/fTTT3r77bfVq1cvznVV5HXqjh2jR482li5damzZssX473//a4wePdrw+XzGO++8YxjGsZju5s2bG++//77x0UcfGdnZ2UZ2dnaw/PGY7ksuucRYv369sWjRIqNBgwbEdMeJX6ekGgbnu6q48847jSVLlhhbtmwxli9fbuTk5Bj169c3du3aZRgG57kqWb16tZGYmGjcf//9xsaNG4158+YZNWrUMJ5//vngZ6ZOnWrUqVPH+Ne//mX897//NXr16hU2kr1Tp07GqlWrjGXLlhmnnHIKkewxqLS01GjevLkxatSoMtv4XlcdQ4YMMZo0aRJ8rcYrr7xi1K9f3/jTn/4U/Azf66pj0aJFxsKFC43Nmzcb77zzjtGhQweja9euRklJiWEYnOuqJi4HjNddd53RokULIzk52WjQoIFx0UUXBQeLhmEYP//8s3HrrbcadevWNWrUqGH07t3b2LlzZ0gdW7duNS677DIjLS3NqF+/vnHnnXcaR44cqexdgQ2/HTByvquGfv36GY0aNTKSk5ONJk2aGP369Qt5Lx/nuWr597//bZx++ulGSkqK0bp1a+PJJ58M2R4IBIzx48cbmZmZRkpKinHRRRcZGzZsCPnMjz/+aAwYMMCoVauWkZ6ebgwdOtTYv39/Ze4GKuDtt982JJU5f4bB97oqKSoqMu644w6jefPmRmpqqnHiiScaY8eODXn9Cd/rquPFF180TjzxRCM5OdnIysoyhg0bZuzduze4nXNdtfgMwzC8nuUEAAAAAMSeKvMMIwAAAAAguhgwAgAAAADCYsAIAAAAAAiLASMAAAAAICwGjAAAAACAsBgwAgAAAADCYsAIAAAAAAiLASMAAAAAICwGjACAqLnnnnvUsWNHr7sR5PP59Nprr0VcbsOGDcrKytL+/fuj36lf2b17txo2bKhvv/3W1XYAALCLASMAxJlZs2apdu3aOnr0aHDdgQMHlJSUpPPPPz/ks0uWLJHP59M333xTyb2sXNEeqI4ZM0a33XabateuHbU6w6lfv76uueYaTZw40dV2AACwiwEjAMSZCy64QAcOHNBHH30UXPfBBx8oKytLq1at0uHDh4PrFy9erObNm+ukk07yoqtxafv27XrjjTd07bXXVkp7Q4cO1bx587Rnz55KaQ8AgEgwYASAOHPaaaepUaNGWrJkSXDdkiVL1KtXL7Vq1UorV64MWX/BBRdIkp577jl16dJFtWvXVlZWlgYOHKhdu3ZJkgKBgJo2baqZM2eGtPXxxx/L7/dr27ZtkqS9e/fqhhtuUIMGDZSenq4LL7xQn3zyiWl/n3rqKbVp00apqalq3bq1nnjiieC2rVu3yufz6ZVXXtEFF1ygGjVqqEOHDlqxYkVIHbNnz1azZs1Uo0YN9e7dW9OmTVOdOnUkSXPnztWkSZP0ySefyOfzyefzae7cucGyu3fvVu/evVWjRg2dcsopev311037+9JLL6lDhw5q0qRJcN3cuXNVp04dvf3222rTpo1q1aqlSy+9VDt37gx+5tprr9UVV1yhBx54QJmZmapTp47uvfdeHT16VHfffbdOOOEENW3aVHPmzAlpr127dmrcuLFeffVV034BAOAFBowAEIcuuOACLV68OPjz4sWLdf755+u8884Lrv/555+1atWq4IDxyJEjmjx5sj755BO99tpr2rp1a3AWze/3a8CAAZo/f35IO/PmzVO3bt3UokULSdKVV16pXbt2aeHChVq7dq3OPPNMXXTRReXOjs2bN08TJkzQ/fffry+//FIPPPCAxo8fr7///e8hnxs7dqzuuusurV+/XqeeeqoGDBgQvOV2+fLluvnmm3XHHXdo/fr1uvjii3X//fcHy/br10933nmn2rVrp507d2rnzp3q169fcPukSZN01VVX6b///a9+//vfa9CgQaazeR988IG6dOlSZv2hQ4f08MMP67nnntN//vMfbd++XXfddVfIZ95//319//33+s9//qNp06Zp4sSJ+p//+R/VrVtXq1at0s0336w//vGPZZ5ZPOuss/TBBx+U2ycAADxjAADizuzZs42aNWsaR44cMYqKiozExERj165dxvz5840ePXoYhmEY+fn5hiRj27ZtYetYs2aNIcnYv3+/YRiG8fHHHxs+ny/4+dLSUqNJkybGzJkzDcMwjA8++MBIT083Dh8+HFLPSSedZPztb38zDMMwJk6caHTo0CFk2/z580M+P3nyZCM7O9swDMPYsmWLIcl46qmngts///xzQ5Lx5ZdfGoZhGP369TN69uwZUsegQYOMjIyM4M+/bfc4Sca4ceOCPx84cMCQZCxcuDDsMTEMw+jQoYNx7733hqybM2eOIcnYtGlTcN2MGTOMzMzM4M9DhgwxWrRoYZSWlgbXnXbaaUb37t2DPx89etSoWbOm8cILL4TUP3LkSOP8888vt08AAHiFGUYAiEPnn3++Dh48qDVr1uiDDz7QqaeeqgYNGui8884LPse4ZMkSnXjiiWrevLkkae3atbr88svVvHlz1a5dW+edd56kY8/sSVLHjh3Vpk2b4Czj0qVLtWvXLl155ZWSpE8++UQHDhxQvXr1VKtWreCyZcuWsKE6Bw8e1DfffKPrr78+5PP33Xdfmc+3b98++P+NGjWSpODtshs2bNBZZ50V8vnf/mzm13XXrFlT6enpwbrD+fnnn5WamlpmfY0aNUKeBW3UqFGZetq1aye//5e/WjMzM3XGGWcEf05ISFC9evXKlEtLS9OhQ4cqvE8AAFSWRK87AACI3Mknn6ymTZtq8eLF+umnn4KDv8aNG6tZs2b68MMPtXjxYl144YWSjg3ecnNzlZubq3nz5qlBgwbavn27cnNzVVJSEqx30KBBmj9/vkaPHq358+fr0ksvVb169SQdS2L97bOTxx1/nvDXDhw4IOnY84ddu3YN2ZaQkBDyc1JSUvD/fT6fpGPPVUbDr+s+Xr9Z3fXr19dPP/1UoXoMw7D8TEXa37Nnjxo0aFD+TgAA4BEGjAAQpy644AItWbJEP/30k+6+++7g+h49emjhwoVavXq1brnlFknSV199pR9//FFTp05Vs2bNJCkkZfW4gQMHaty4cVq7dq3+8Y9/aNasWcFtZ555pgoKCpSYmKiWLVta9i8zM1ONGzfW5s2bNWjQINv7edppp2nNmjUh6377c3JyskpLS2238WudOnXSF198EZW6Kuqzzz4r80oUAABiAbekAkCcuuCCC7Rs2TKtX78+OMMoSeedd57+9re/qaSkJBh407x5cyUnJ+vxxx/X5s2b9frrr2vy5Mll6mzZsqXOOeccXX/99SotLdUf/vCH4LacnBxlZ2friiuu0DvvvKOtW7fqww8/1NixY8MOPqVjgTNTpkzRY489pq+//lqffvqp5syZo2nTplV4P2+77Ta99dZbmjZtmjZu3Ki//e1vWrhwYXAm8ni/t2zZovXr12v37t0qLi6ucP2/lZubqxUrVkRtAGrl0KFDWrt2rS655JJKaQ8AgEgwYASAOHXBBRfo559/1sknn6zMzMzg+vPOO0/79+8Pvn5Dkho0aKC5c+fq5ZdfVtu2bTV16lQ9/PDDYesdNGiQPvnkE/Xu3VtpaWnB9T6fT2+99ZZ69OihoUOH6tRTT1X//v21bdu2kPZ/7YYbbtBTTz2lOXPm6IwzztB5552nuXPnqlWrVhXez27dumnWrFmaNm2aOnTooEWLFmnkyJEhzxn27dtXl156qS644AI1aNBAL7zwQoXr/63LLrtMiYmJeu+992zXEYl//etfat68ubp3714p7QEAEAmf8dsHMAAAiHE33nijvvrqK9deRTFjxgy9/vrrevvtt12p/9fOPvts3X777Ro4cKDrbQEAECmeYQQAxLyHH35YF198sWrWrKmFCxfq73//u5544gnX2vvjH/+ovXv3av/+/apdu7Zr7ezevVt9+vTRgAEDXGsDAAAnmGEEAMS8q666SkuWLNH+/ft14okn6rbbbtPNN9/sdbcAAKjyGDACAAAAAMIi9AYAAAAAEBYDRgAAAABAWAwYAQAAAABhMWAEAAAAAITFgBEAAAAAEBYDRgAAAABAWAwYAQAAAABhMWAEAAAAAITFgBEAAAAAENb/B5xdPhRgv1+7AAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "wavelengths_nm = wavelengths * 1e9 # Convert to nm for easier interpretation\n", "\n", "fig, ax = plt.subplots(figsize=(10, 6))\n", "# Transmittance\n", "tran = ax.imshow(T_avg, extent=(wavelengths_nm.min(), wavelengths_nm.max(), thetas.min(), thetas.max()), origin='lower', aspect='auto', cmap='viridis')\n", "ax.set_title('Transmittance')\n", "ax.set_xlabel('Wavelength (nm)')\n", "ax.set_ylabel('Incidence Angle (degrees)')\n", "fig.colorbar(tran, ax=ax)\n", "\n", "plt.tight_layout()\n", "plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "base", "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.11.5" } }, "nbformat": 4, "nbformat_minor": 2 }