{ "cells": [ { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "# Physical Units Demo" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "This notebook demonstrates the abilites of the `PhysicalFresnelWavefront` class.\n", "\n", "The most important change is that the `wavefront` array now contains values that have units of an actual electric field, i.e. V/m. This is of special importance once non-linear effects are of interest. For example, the thermal blooming effect results from a high-energy laser which heats the air and induces refractive-index changes. For this effect to be implemented, one needs to have the intensity distribution in physical units at disposal. The class `PhysicalFresnelWavefront` is designed to provide exactly this.\n", "\n", "An additional functionality is a rudimentary ability to emulate a beam quality factor. This has been done by scaling the wavelength accordingly. The capability to measure the beam quality factor is also implemented. This is useful in cases of arbitrary initial field distributions, where it might not be known." ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## Demo 1: Beam Power" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "The beam power is very easy to apply. However, be careful when to apply a power, since it may result in unexpected behaviour. When the intensity is scaled before applying an aperture for example, the power will change. Let us begin by importing relevant packages and defining some constants." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "import poppy\n", "import matplotlib.pyplot as plt\n", "import astropy.units as u\n", "\n", "w0 = 10e-2 # beam radius (m)\n", "P0 = 10e3 # beam power (W)\n", "w_extend = 6 # weight of the spatial extend\n", "wavelength = 1064e-9 # wavelength in vacuum (m)\n", "R0 = 100 # initial radius of curvature (m)\n", "npix = 256 # spatial resolution" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "Now lets define a wavefunction and apply an aperture, lens, and power." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "P = 10.00 kW\n" ] } ], "source": [ "wf = poppy.PhysicalFresnelWavefront(beam_radius=w_extend*w0*u.m,\n", " wavelength=wavelength,\n", " npix=npix,\n", " oversample=2)\n", "\n", "wf *= poppy.GaussianAperture(w=w0*u.m)\n", "wf *= poppy.QuadraticLens(f_lens=R0*u.m)\n", "\n", "wf.scale_power(P0)\n", "\n", "print(\"P = {0:.2f} kW\".format(wf.power*1e-3))" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "Next, let us see what happens when we apply the power before the aperture." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "P = 0.11 kW\n" ] } ], "source": [ "wf = poppy.PhysicalFresnelWavefront(beam_radius=w_extend*w0*u.m,\n", " wavelength=wavelength,\n", " npix=npix,\n", " oversample=2)\n", "\n", "wf.scale_power(P0)\n", "wf *= poppy.GaussianAperture(w=w0*u.m)\n", "wf *= poppy.QuadraticLens(f_lens=R0*u.m)\n", "\n", "print(\"P = {0:.2f} kW\".format(wf.power*1e-3))" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "The power values differ from the first result because the power is applied and calculated using the current intensity distribution, which differ as well. So always take care of when to apply the power." ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## Demo 2: Beam Quality Factor" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "We can assign a beam quality factor to the beam which only scaled the wavelength appropriately. However, from the analytical equation for the beam radius one can see that this should work as expected. Let us test it by using the implemented beam quality measurement calculation based on ISO Standard 11146 (see https://www.rp-photonics.com/beam_quality.html)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "M2 = 3.83\n" ] } ], "source": [ "wf = poppy.PhysicalFresnelWavefront(beam_radius=w_extend*w0*u.m,\n", " wavelength=wavelength,\n", " npix=npix,\n", " oversample=2,\n", " M2=3.827)\n", "wf *= poppy.GaussianAperture(w=w0*u.m)\n", "wf *= poppy.QuadraticLens(f_lens=30*u.cm)\n", "wf.scale_power(P0)\n", "\n", "M2, z, caustic, z_fine, w_fit, rayleigh_length = wf.M2()\n", "\n", "print(\"M2 = {0:.2f}\".format(M2))" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "I did not test the algorithm to very large extent, but it worked for my purposes. The results of the $M^2$ fitting routine is shown along with the values used to obtain the fit (red dots) in the following Figure." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot((z_fine-z_fine.min())*1e5, w_fit*1e6, '-k')\n", "plt.plot((z-z_fine.min())*1e5, caustic*1e6, 'or')" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## Demo 3: Normal propagation" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "Finally, lets have a quik look on how to propagage by examining the field at the focus and printing the power to the console." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "P(0m) = 10.00 kW\n", "r(0m) = 10.00 cm\n", "P(100m) = 9.05 kW\n", "r(100m) = 23.33 cm\n" ] }, { "data": { "image/png": "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798frVq1Qnx8PIYOHYr333/f5/X1x5dffokf/vCHSEhIQEREBPr164fNmzd7LCOv+SeffILp06cjKSkJUVFRGD16dK3ncO7duxdZWVlITExEZGQkOnXqhAceeKBBjpWaP/4nHLUof/vb3wB8+4BivdjYWIwcORKrV6/GsWPHkJqaGtD233jjDZSXl2PKlCm44YYbsHv3brz44os4deoU3njjDW25999/H/fccw+6d++OvLw8XLx4ERMnTsRNN91kuN2VK1eioqICkydPhsPhQEJCAkpLS/GnP/0JY8eOxaRJk1BWVoY///nPyMrKwu7du9G7d28kJSXh5ZdfxpQpUzB69GiMGTMGANCzZ0/Tc5g/fz7mzZuHQYMGYcGCBQgPD0dBQQE+/PBDDB8+PKDroXfo0CF85zvfwY033ohZs2YhKioKr7/+OkaNGoU333wTo0eP9lj+0UcfRXx8PHJzc3H8+HE8//zz+PnPf45169YB+Oat4cOHD0dSUhJmzZqFuLg4HD9+HBs2bKjXcZKFCKIWpHfv3iI2NtbrMr/73e8EALF582YhhBArV64UAERhYaHHctu3bxcAxPbt27Vp5eXltbaXl5cnbDab+Prrrz2Oo23btuLy5cvatPfff18AEB07dtSmFRYWCgAiJiZGnDt3zmO7LpdLVFZWeky7dOmSSE5OFg888IA27fz58wKAyM3NrXVsubm5Qv0zcOTIEWG328Xo0aOF2+32WLampqbW+kbbOn/+vOkyd955p0hLSxMVFRUe2x00aJDo2rWrNk1e88zMTI/9Tps2TYSEhGjXbePGjQKA2LNnj9djo5aLzZXUopSVlaF169Zel5Hzy8rKAt5+ZGSk9v3q1au4cOECBg0aBCEEPv30UwDA2bNn8dlnn2HChAmIjY3Vlv/e976H7t27G273nnvu0ZodpZCQEK1frqamBiUlJXC5XOjXrx/2798f8LED3zSh1tTUYO7cubDbPf881PdWg5KSEnz44Yf48Y9/jLKyMly4cAEXLlzAxYsXkZWVhSNHjuD06dMe60yePNljv0OGDIHb7cbXX38NAIiLiwMAvP3226iurq7X8ZE1MeSoRWndurXP8JLz27RpE/D2T5w4gZycHCQkJCA6OhpJSUnIyMgAADidTgDQ/kB37dq11vrdunUz3K7Z++NWr16Nnj17IiIiAjfccAOSkpLw97//XdtXoI4dOwa73W4atvVx9OhRCCHw5JNPIikpyaPIPtBz5855rKN/DVB8fDyAb96aDnzzzr177rkH8+fPR2JiIkaOHImVK1d6fXM6tSzsk6MWpXv37vjss89w4sQJ0/eoff755wCAzp07AzCvwbjd7lq/v/e976GkpAQzZ87ErbfeiqioKJw+fRo5OTmoqamp83GrNUTp1VdfRU5ODkaNGoUZM2agTZs2CAkJQV5eHo4dO1bnfQWLPP/HH38cWVlZhst06dLF43dISIjhcuI/j9y12WxYv349du3ahb/97W9477338MADD+C5557Drl27EB0d3YBnQM0RQ45alB/84AdYs2YNXnnlFcyZM6fW/NLSUmzatAl33HGHFnKy9nD58mWPZWWNTDp48CD+/e9/Y/Xq1R4DW7Zu3eqxXMeOHQEAR44cqbX/r776yu9zWb9+PTp37owNGzZ4BLE6MhQIrJkxNTUVNTU1OHz4MHr37u33ev6Q1zMsLAyZmZkNuu0BAwZgwIABeOqpp7BmzRqMGzcOa9euxU9/+tMG3Q81P2yupBblnnvuwe23345FixZh7969HvNqamowZcoUXLp0Cb/+9a+16XKE5T//+U9tmtvtxh//+EeP9WWtQygv9hBC4IUXXvBYrm3btujduzdWr17t0ay4detWHD582O9zMdpfQUEB8vPzPZZr1aoVgNohbWTUqFGw2+1YsGBBrZqnqOcLS9q0aYNhw4Zh2bJlOHv2bK35+lsD/HHp0qVaxyXDmU2WBLAmRy1MWFgY3nzzTXz3u9/F4MGDMXHiRPTr1w+XL1/GmjVrsH//fjzxxBPaUHsAuP322zFgwADMnj0bJSUlSEhIwNq1a+FyuTy2feuttyI1NRWPP/44Tp8+jZiYGLz55pta/5EqLy8PI0aMwODBg/HAAw+gpKQEL774Im6//XZcuXLFr3O5++67sWHDBowePRojRoxAYWEhli5diu7du3tsIzIyEt27d8e6detwyy23ICEhAT169ECPHj1qbbNLly749a9/jYULF2LIkCEYM2YMHA4H9uzZg3bt2iEvL8/ncf3ud7/TglWy2+144oknsGTJEgwePBhpaWmYNGkSOnfujOLiYuTn5+PUqVM4cOCAX+curV69Gi+99BJGjx6N1NRUlJWVYfny5YiJicH3v//9gLZFFtV0AzuJms758+fFY489Jrp06SLCw8MFAAFA/PnPfzZc/tixYyIzM1M4HA6RnJwsnnjiCbF169ZatxAcPnxYZGZmiujoaJGYmCgmTZokDhw4IACIlStXemzzzTffFLfddptwOByie/fuYsOGDWLChAmGtxA8++yztY6ppqZG/Pa3vxUdO3YUDodD9OnTR7z99tu1tiGEEDt37hR9+/bVzlXeTqC/hUBasWKF6NOnj3A4HCI+Pl5kZGSIrVu3er2mcltGJSQkxONa3n///SIlJUWEhYWJG2+8Udx9991i/fr12jLyFgL9rQH62zb2798vxo4dKzp06CAcDodo06aNuPvuu8XevXu9Hiu1HHxpKhG+6U8bMmQI2rdvj48//thjaD8RNV/skyMCkJaWhk2bNuHIkSMYNWoUqqqqmvqQiKgBsCZHRESWxZocERFZFkOOiIgsiyFHRESWxZAjIiLLapE3g9fU1ODMmTNo3bp1vZ+sTkREjU8IgbKyMrRr167WGzNULTLkzpw5g/bt2zf1YRARUT2dPHnS9GXDQAttrvT1PjEiImoefP09b5EhxyZKIiJr8PX3vEWGHBERtQwMOSIisiyGHBERWRZDjoiILIshR0RElsWQIyIiy2LIERGRZTHkiIjIshhyRERkWQw5IiKyLIYcERFZFkOOiIgsiyFHRESWxZAjIiLLYsgREZFlMeSIiMiyGHJERGRZDDkiIrIshhwREVkWQ46IiCyLIUdERJbFkCMiIstiyBERkWU1SsgtWbIEN998MyIiIpCeno7du3ebLrtq1SrYbDaPEhER4bGMEAJz585F27ZtERkZiczMTBw5ciTYp0FERM1M0ENu3bp1mD59OnJzc7F//3706tULWVlZOHfunOk6MTExOHv2rFa+/vprj/nPPPMMfv/732Pp0qUoKChAVFQUsrKyUFFREezTISKi5kQEWf/+/cUjjzyi/Xa73aJdu3YiLy/PcPmVK1eK2NhY0+3V1NSIlJQU8eyzz2rTLl++LBwOh3jttdf8Oian0ykAsLCwsLA08+J0Or3+vQ9qTa6qqgr79u1DZmamNs1utyMzMxP5+fmm6125cgUdO3ZE+/btMXLkSBw6dEibV1hYiKKiIo9txsbGIj093XSblZWVKC0t9ShERGR9QQ25CxcuwO12Izk52WN6cnIyioqKDNfp1q0bVqxYgU2bNuHV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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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/vvv180336ynnnpK7dq104033liBNS1cTk6O8vLyFBwc/LvXVaVKFVWp8vs/1u3bt1dISIjWrVun0aNHe+avX79eNWrUUPv27bVu3TqfgXLXrVsnSercufPv3v7vceDAAYWGhha7P/Py8pSdna2QkJByqlnhUlJStGXLFi1ZskT9+/f3eW3y5Ml67LHHzsp2zuZnrTxkZmYqODhYAQEcLCtQRScofp+33nrLSDKTJk0q8PW0tDRTrVo1c/HFF3vmObdu978l/erVq40ks3r1as+8tWvXmhtuuMHUq1fPBAcHmwsuuMDcd999Bd5+fvny5aZFixbG7XabFi1amGXLluVrge3evdtIMlOnTjXPP/+8adSokQkICDBbtmwxWVlZ5k9/+pO59NJLTWRkpAkLCzOdO3c2q1atyre8/+S0xpzb3fubN2+eueyyy0xoaKipVq2a6dKli/nggw+K3LddunQxdevW9Zl36623mmuvvdZMmjTJtGzZ0ue13r17m2rVqpnc3FxjjDFTp041nTp1MtHR0SYkJMRceumlZvHixT7LtGjRwnTr1i3ftnNzc02dOnVM//79feY9//zzpnnz5sbtdpuaNWua4cOHmyNHjnjKFLRvnFaBJHP33Xeb+fPnm+bNm5sqVaqY5cuXG2OM2bx5s+nZs6epWrWqCQ8PN1dddZXZsGGDT52cz826devM/fffb2JiYkxYWJhJTk42Bw4c8JSrX79+vjoU1RrbuHGjkWSGDRtWaBlviYmJBa6vpJ+1jRs3msDAQDNhwoR869i+fbuRZF588UVjjDGHDx82DzzwgGnZsqUJDw83VatWNT179jRbt271LOP83RS23+vXr2+GDBlS7Ptw1vPWW2+Zxx57zNSpU8e4XC5z9OhRz35KSkoykZGRJjQ01HTt2tWsW7euRPussqIFZrl//OMfkv43eKs/5zbzc+bM0a5duxQfH1+q9S9evFgZGRkaOXKkatSooc8//1wvvviifvnlFy1evNhT7sMPP1T//v3VvHlzTZkyRYcPH9bQoUN1wQUXFLjeWbNmKTMzU8OHD5fb7VZ0dLTS09M1c+ZMDRo0SMOGDdPx48f1+uuvKykpSZ9//rnatm2r2NhYvfzyyxo5cqT69u2rfv36SZJat25d6HuYOHGiJkyYoISEBE2aNEnBwcH697//rVWrVqlHjx6FLte5c2d9+umnSk1N9XREWb9+ve6880516NBB48ePV1pamqpVqyZjjD777DN16tTJ8235hRde0HXXXaebb75Z2dnZWrBggW688Ua999576t27tyRp4MCBmjBhgvbt26fatWt7tr1u3Tr9+uuvuummmzzzRowYodmzZ2vo0KG65557tHv3bv3tb3/Tli1btH79egUFBWnevHl69dVX9fnnn2vmzJmS/jvSvGPVqlVatGiRRo0apZiYGDVo0EDffvutunTposjISD344IMKCgrSK6+8om7duumTTz7xadVL0ujRo1W9enWNHz9eqampmjZtmkaNGqWFCxdKkqZNm6bRo0crIiLC03KqVatWofv53XfflVTygYdLy/+zFhcXp8TERC1atMhzV2jHwoULFRgY6Dla8eOPP+rtt9/WjTfeqIYNG2r//v165ZVXlJiYqO+++0516tTRxRdfrEmTJumJJ57Q8OHD1aVLF0m++700Jk+erODgYI0dO1ZZWVkKDg7WqlWr1KtXL7Vr107jx49XQECAZs2apauuukqffvqpOnTo8Pt2kq0qOkHx+7Rt29ZERUUVWea5554zksy7775rjCldC6ygltaUKVOMy+UyP/30k0894uLiTFpammfehx9+aCQV+K04MjLS51u7Mcbk5OTkO29z9OhRU6tWLXP77bd75hV1Dsy/BbZjxw4TEBBg+vbt62kZOfLy8vIt723FihVGkudc12+//WYkmU8++cQcP37cBAYGmhUrVhhjjPnmm2+MJPPkk096lvffd9nZ2aZly5bmqquu8sz7/vvvfb7xO+666y4TERHhWcenn35qJJm///3vPuX+9a9/5Zs/ZMgQEx4enu/9SDIBAQHm22+/9ZmfnJxsgoODza5duzzzfv31V1O1alXTtWtXzzznc9O9e3effXf//febwMBAn999ac6B9e3b10jytDSKU9oWWEGftVdeecVIMtu2bfOZ37x5c5/fT2ZmZr7Pze7du43b7fY56lHUObDStsAaNWrk89nJy8szTZo0MUlJST77PSMjwzRs2NBcc801+dZ9vuDAquWOHz+uqlWrFlnGef348eOlXr/37d1PnjypQ4cOKSEhQcYYTw+93377TVu3btWQIUMUFRXlKX/NNdeoefPmBa63f//+io2N9ZkXGBjoOTeRl5enI0eOKCcnR+3bt9fmzZtLXXdJevvtt5WXl6cnnngi33mE4rrbJyQkKCAgwHNuy2nlXHbZZYqIiFDr1q21fv16z2uS7/kv73139OhRHTt2TF26dPF5LxdddJHatm3rab1IUm5urpYsWaI+ffp41rF48WJFRUXpmmuu0aFDhzxTu3btFBERUeJBexMTE31+J7m5ufrwww+VnJzsuXuyJMXFxWnw4MFat26d0tPTfdYxfPhwn33XpUsX5ebm6qeffipRHfw56y/uc3ymCvqs9evXT1WqVPHZ7998842+++47DRw40DPP7XZ7Pje5ubk6fPiwIiIi1LRp0zP+TBZnyJAhPp+drVu3aseOHRo8eLAOHz7s+d2fPHlSV199tdauXau8vLwyqcu5jgCzXNWqVYsNJuf1mjVrlnr9e/bsUUpKiqKjoxUREaHY2FglJiZKko4dOyZJnn9cTZo0ybd806ZNC1xvYfe7mjNnjlq3bq2QkBDVqFFDsbGxWrFihWdbpbVr1y4FBAQUGqRFqVatmlq0aOETUpdcconnn0tCQoLPa8HBwT6Hct577z117NjRc1mDc/jT/70MHDhQ69ev1969eyVJa9as0YEDB3z+ke7YsUPHjh1TzZo1FRsb6zOdOHFCBw4cKNF78t/vBw8eVEZGRoG/p4svvlh5eXn6+eeffeb7356levXqkv4b0mciMjJS0pl9wSqJgj5rMTExuvrqq7Vo0SLPvIULF6pKlSqew9LSf79IPf/882rSpIncbrdiYmIUGxurr7/++ow/k6Wt744dOyT9N9j8f/czZ85UVlZWmdXlXMc5MMs1b95cW7du1Z49ewq979PXX38tSZ5v2IW1PHJzc/M9v+aaa3TkyBE99NBDatasmcLDw7V3716lpKT8rm993t8wHfPnz1dKSoqSk5M1btw41axZU4GBgZoyZYp27dp1xtv6PTp37qwZM2YoLS1N69ev9zmvkZCQoDfeeEOnT5/WunXr1K5dO0+Pvk8//VTXXXedunbtqpdeeklxcXEKCgrSrFmz9Oabb/psY+DAgXrkkUe0ePFi3XfffVq0aJGioqLUs2dPT5m8vDzVrFlTf//73wusp38LozAF7ffSCgwMLHC+OcNhVZs1ayZJ2rZtm+f8UVFcLleB2/L//DoKe8833XSThg4dqq1bt6pt27ZatGiRrr76asXExHjK/OUvf9Gf/vQn3X777Zo8ebKio6MVEBCg++67r8Sf/6L+3gral/71dbYzderUQi9Kj4iIKFFdKhsCzHJ9+vTRm2++qblz5+rxxx/P93p6erreeecdXXrppZ4Ac74xp6Wl+ZT1PwS0bds2/fDDD5ozZ45PJ5GPPvrIp1z9+vUl/e+borfvv/++xO9lyZIlatSokZYtW+bzR+9/or00I23Ex8crLy9P33333RmNSNG5c2e9/PLL+vjjj7VlyxaNGzfO81pCQoJOnTqlFStW6Mcff/Tp/r106VKFhITogw8+kNvt9syfNWtWvm00bNhQHTp00MKFCzVq1CgtW7ZMycnJPsvFx8fr448/1hVXXHFWQsgRGxursLCwAn9P27dvV0BAgOrVq1fq9Zbmd9SnTx9NmTJF8+fPL1GAVa9eXT/++GO++aU9hJmcnKwRI0Z4DiP+8MMPeuSRR3zKLFmyRFdeeaVef/11n/lpaWk+QVfU+61evXq+vzWnvt6HbQvjdLyKjIxU9+7diy1/PuEQouX69++vFi1a6P/9v/+nTZs2+byWl5enkSNH6ujRoz7X0Th/EGvXrvXMy83N1auvvuqzvPPt0PvbrjFGL7zwgk+5uLg4tW3bVnPmzPE5lPHRRx/pu+++K/F7KWh7//73v7VhwwafcmFhYZLyB3BBkpOTFRAQoEmTJuX7xlySFoNzTuu5557T6dOnfVpgDRo0UFxcnJ5++mmfss57cblcPq2C1NRUvf322wVuZ+DAgdq4caPeeOMNHTp0yOfwoSQNGDBAubm5mjx5cr5lc3JySrQvChIYGKgePXronXfeUWpqqmf+/v379eabb6pz586eQ3ylER4eXuI6derUST179tTMmTML3D/Z2dkaO3as53l8fLy2b9+ugwcPeuZ99dVXnsO5JVWtWjUlJSVp0aJFWrBggYKDg5WcnOxTJjAwMN/nZPHixZ7DvY7w8HBJBX8m4+PjtXHjRmVnZ3vmvffee/kOzRamXbt2io+P1zPPPKMTJ07ke917P5xvaIFZLigoSEuXLtVVV12lzp07a+jQoWrfvr3S0tL05ptvavPmzXr00Ud9juu3aNFCHTt21COPPKIjR44oOjpaCxYsUE5Ojs+6mzVrpvj4eI0dO1Z79+5VZGSkli5dWuC5jilTpqh3797q3Lmzbr/9dh05ckQvvviiWrRoUeAfXUGuvfZaLVu2TH379lXv3r21e/duzZgxQ82bN/dZR2hoqJo3b66FCxfqoosuUnR0tFq2bKmWLVvmW2fjxo312GOPafLkyerSpYv69esnt9utL774QnXq1NGUKVOKrNOFF16oevXqacOGDWrQoIHq1Knj83pCQoKWLl0ql8ulK664wjO/d+/eeu6559SzZ08NHjxYBw4c0PTp09W4cWPPIV1vAwYM0NixYzV27FhFR0fn+6admJioESNGaMqUKdq6dat69OihoKAg7dixQ4sXL9YLL7ygG264oUT72d+f//xnffTRR+rcubPuuusuValSRa+88oqysrI84Vxa7dq108svv6w///nPaty4sWrWrKmrrrqq0PJz585Vjx491K9fP/Xp00dXX321wsPDtWPHDi1YsEC//fabnnnmGUnS7bffrueee05JSUm64447dODAAc2YMUMtWrTI1+GkOAMHDtQtt9yil156SUlJSapWrZrP69dee60mTZqkoUOHKiEhQdu2bdPf//73fC2n+Ph4VatWTTNmzFDVqlUVHh6uyy+/XA0bNtSdd96pJUuWqGfPnhowYIB27dql+fPnl/iSloCAAM2cOVO9evVSixYtNHToUNWtW1d79+7V6tWrFRkZ6bmc5rxTcR0gcTYdPHjQPPDAA6Zx48YmODjYczHl66+/XmD5Xbt2me7duxu3221q1aplHn30UfPRRx/l60b/3Xffme7du5uIiAgTExNjhg0bZr766qsCuwwvXbrUXHzxxcbtdpvmzZsXeyGzv7y8PPOXv/zF1K9f37jdbnPJJZeY9957r8DhqD777DPTrl07z3st7kLmN954w1xyySXG7Xab6tWrm8TERPPRRx+VaN8OGjTISDKDBw/O95pziYL3heKO119/3TRp0sS43W7TrFkzM2vWrELrZ4wxV1xxhZFk7rzzzkLr8uqrr5p27dqZ0NBQU7VqVdOqVSvz4IMPml9//dVTpqhu9HfffXeB6928ebNJSkoyERERJiwszFx55ZXms88+8ynjdKP/4osvfOYXdPnFvn37TO/evU3VqlWLvZDZkZGRYZ555hlz2WWXmYiICBMcHGyaNGliRo8ebXbu3OlTdv78+aZRo0YmODjYtG3b1nzwwQel+qw50tPTTWhoqJFk5s+fn+/1zMxM88ADD5i4uDgTGhpqrrjiCrNhw4YCu/K/8847ngvE/f8+nn32WVO3bl3jdrvNFVdcYTZt2lRoN3r/i90dW7ZsMf369TM1atQwbrfb1K9f3wwYMMCsXLmy8J1ayXFDy0rKOSFer149rVu3zqd7OwBUBpwDq6RatWqld955Rzt27FBycrLP8XcAqAxogQEArEQLDABgJQIMAGAlAgwAYCUCDABgJQIMAGAlAgwopW+//Va33HKL6tatK7fbrTp16ujmm2/Wt99+W9FVK5E333xT06ZNq+hqAL8b3eiBUli2bJkGDRqk6Oho3XHHHWrYsKFSU1P1+uuv6/Dhw1qwYIH69u1b0dUs0rXXXqtvvvnGZ+xDwEYEGFBCu3btUuvWrXXhhRdq7dq1PrcwOXTokLp06aKff/5ZX3/9dYlGGT9bMjIyPAMcl0RZBFhOTo7y8vI8NyQFygOHEIESmjp1qjIyMvTqq6/mu/9WTEyMXnnlFZ08edIzAO6ECRPkcrm0fft2DRgwQJGRkapRo4buvfdeZWZm5lv//Pnz1a5dO4WGhio6Olo33XRTvhHLu3XrppYtW+rLL79U165dFRYWpkcffVSS9M4776h3796qU6eO3G634uPjNXnyZJ8R8bt166YVK1bop59+ksvlksvlUoMGDTyvHzhwQHfccYdq1aqlkJAQtWnTRnPmzPGpQ2pqqlwul5555hlNmzZN8fHxcrvdpbrzAHA2MBo9UEL/+Mc/1KBBg0LvWdW1a1c1aNBAK1as8Jk/YMAANWjQQFOmTNHGjRv117/+VUePHtXcuXM9ZZ588kn96U9/0oABA3TnnXfq4MGDevHFF9W1a1dt2bLFZ5T0w4cPq1evXrrpppt0yy23qFatWpKk2bNnKyIiQmPGjFFERIRWrVqlJ554Qunp6Zo6daok6bHHHtOxY8f0yy+/6Pnnn5f0v5shnjp1St26ddPOnTs1atQoNWzYUIsXL1ZKSorS0tJ07733+ryvWbNmKTMzU8OHD5fb7VZ0dPTv28FAaVXcOMKAPdLS0owkc/311xdZ7rrrrjOSTHp6umfk+euuu86nzF133WUkma+++soYY0xqaqoJDAw0Tz75pE+5bdu2mSpVqvjMT0xMNJLMjBkz8m07IyMj37wRI0aYsLAwk5mZ6ZnXu3fvfKP7G2PMtGnT8o3Knp2dbTp16mQiIiJMenq6MeZ/o7xHRkaaAwcOFLk/gLLEIUSgBI4fPy5Jqlq1apHlnNe970t19913+5QZPXq0JOn999+X9N+OIXl5eRowYIAOHTrkmWrXrq0mTZpo9erVPsu73W4NHTo037a979R8/Phxz3m5jIwMbd++vdj3+P7776t27doaNGiQZ15QUJDuuecenThxQp988olP+f79++c7lAqUJw4hAiXgBJMTZIUpKOiaNGniUyY+Pl4BAQGeThQ7duyQMSZfOUdQUJDP87p16xbYWeLbb7/V448/rlWrVuW7saP3nbIL89NPP6lJkyYKCPD9XnvxxRd7XvfWsGHDYtcJlCUCDCiBqKgoxcXFFXg3ZW9ff/216tatq8jIyELLuFwun+d5eXlyuVz65z//qcDAwHzlnXNUDu+WliMtLU2JiYmKjIzUpEmTFB8fr5CQEG3evFkPPfSQ8vLyiqz3mSioHkB5IsCAErr22mv12muvad26dercuXO+1z/99FOlpqZqxIgRPvN37Njh01rZuXOn8vLyPL3/4uPjZYxRw4YNddFFF51R3dasWaPDhw9r2bJl6tq1q2f+7t2785X1D1BH/fr19fXXXysvL8+nFeYcfqxfv/4Z1Q0oK5wDA0po3LhxCg0N1YgRI3T48GGf144cOaI//vGPCgsL07hx43xemz59us/zF198UZLUq1cvSVK/fv0UGBioiRMnyvhdlmmMybetgjgtN+/ls7Oz9dJLL+UrGx4eXuAhxT/84Q/at2+fFi5c6JmXk5OjF198UREREUpMTCy2HkB5ogUGlFCTJk00Z84c3XzzzWrVqlW+kTgOHTqkt956S/Hx8T7L7d69W9ddd5169uypDRs2aP78+Ro8eLDatGkj6b8tsD//+c965JFHlJqaquTkZFWtWlW7d+/W8uXLNXz4cI0dO7bIuiUkJKh69eoaMmSI7rnnHrlcLs2bNy9fIEpSu3bttHDhQo0ZM0aXXXaZIiIi1KdPHw0fPlyvvPKKUlJS9OWXX6pBgwZasmSJ1q9fr2nTphXbgQUodxXZBRKw0ddff20GDRpk4uLiTFBQkKldu7YZNGiQ2bZtm085pxv9d999Z2644QZTtWpVU716dTNq1Chz6tSpfOtdunSp6dy5swkPDzfh4eGmWbNm5u677zbff/+9p0xiYqJp0aJFgfVav3696dixowkNDTV16tQxDz74oPnggw+MJLN69WpPuRMnTpjBgwebatWqGUk+Xer3799vhg4damJiYkxwcLBp1aqVmTVrls92nG70U6dOLf3OA84ihpICysiECRM0ceJEHTx4UDExMRVdHaDS4RwYAMBKBBgAwEoEGADASpwDAwBYiRYYAMBKle46sLy8PP3666+qWrVqoSMOAADOXcYYHT9+XHXq1Mk3Nqe3Shdgv/76q+rVq1fR1QAA/E4///yzLrjggkJfr3SHEBktAAAqh+L+n1e6AOOwIQBUDsX9P690AQYAOD8QYAAAKxFgAAArEWAAACsRYAAAKxFgAAArEWAAACsRYAAAKxFgAAArEWAAACsRYAAAKxFgAAArEWAAACsRYAAAKxFgAAArEWAAACsRYAAAKxFgAAArEWAAACsRYAAAKxFgAAArEWAAACsRYAAAKxFgAAArEWAAACsRYAAAKxFgAAArEWAAACsRYAAAKxFgAAArEWAAACsRYAAAKxFgAAArEWAAACsRYAAAKxFgAAArEWAAACsRYAAAKxFgAAArEWAAACsRYAAAKxFgAAArEWAAACsRYAAAKxFgAAArEWAAACsRYAAAKxFgAAArEWAAACsRYAAAKxFgAAArEWAAACsRYAAAKxFgAAArEWAAACsRYAAAKxFgAAArEWAAACsRYAAAKxFgAAArEWAAACsRYAAAKxFgAAArEWAAACsRYAAAKxFgAAArEWAAACsRYAAAKxFgAAArEWAAACsRYAAAKxFgAAArEWAAACsRYAAAKxFgAAArEWAAACsRYAAAKxFgAAArEWAAACuVaYCtXbtWffr0UZ06deRyufT2228XWX7NmjVyuVz5pn379pVlNQEAFirTADt58qTatGmj6dOnl2q577//Xr/99ptnqlmzZhnVEABgqyplufJevXqpV69epV6uZs2aqlat2tmvEACg0jgnz4G1bdtWcXFxuuaaa7R+/foiy2ZlZSk9Pd1nAgBUfudUgMXFxWnGjBlaunSpli5dqnr16qlbt27avHlzoctMmTJFUVFRnqlevXrlWGMAQEVxGWNMuWzI5dLy5cuVnJxcquUSExN14YUXat68eQW+npWVpaysLM/z9PR0QgwAKoFjx44pMjKy0NfL9BzY2dChQwetW7eu0Nfdbrfcbnc51ggAcC44pw4hFmTr1q2Ki4ur6GoAAM4xZdoCO3HihHbu3Ol5vnv3bm3dulXR0dG68MIL9cgjj2jv3r2aO3euJGnatGlq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l0GNAACVyTl3DmzNmjWqWbOmmjZtqpEjR+rw4cNFls/KylJ6errPBACo/M6pAOvZs6fmzp2rlStX6qmnntInn3yiXr16KTc3t9BlpkyZoqioKM9Ur169cqwxAKDCmFJ46KGHjKQip//85z8+y8yaNctERUWVZjMeu3btMpLMxx9/XGiZzMxMc+zYMc/0888/F1tHJiYmJqZzfzp27FiRGVGqc2APPPCAUlJSiizTqFGj0qyy2HXFxMRo586duvrqqwss43a76egBAOehUgVYbGysYmNjy6ou+fzyyy86fPiw4uLiym2bAAA7lNk5sD179mjr1q3as2ePcnNztXXrVm3dulUnTpzwlGnWrJmWL18uSTpx4oTGjRunjRs3KjU1VStXrtT111+vxo0bKykpqayqCQCw1RmdnCqBIUOGFHhMc/Xq1Z4yksysWbOMMcZkZGSYHj16mNjYWBMUFGTq169vhg0bZvbt21eq7R47dqzCj9syMTExMf3+qbhzYK7/C5JKIz09XVFRURVdDQDA73Ts2DFFRkYW+vo51Y0eAICSIsAAAFYiwAAAViLAAABWIsAAAFYiwAAAViLAAABWIsAAAFYiwAAAViLAAABWIsAAAFYiwAAAViLAAABWIsAAAFYiwAAAViLAAABWIsAAAFYiwAAAViLAAABWIsAAAFYiwAAAViLAAABWIsAAAFYiwAAAViLAAABWIsAAAFYiwAAAViLAAABWIsAAAFYiwAAAViLAAABWIsAAAFYiwAAAViLAAABWIsAAAFYiwAAAViLAAABWIsAAAFYiwAAAViLAAABWIsAAAFYiwAAAViLAAABWIsAAAFYiwAAAViLAAABWIsAAAFYiwAAAViLAAABWIsAAAFYiwAAAViLAAABWIsAAAFYiwAAAViLAAABWIsAAAFYiwAAAViLAAABWIsAAAFYiwAAAViLAAABWIsAAAFYiwAAAViLAAABWIsAAAFYiwAAAViLAAABWIsAAAFYiwAAAViLAAABWIsAAAFYiwAAAViLAAABWIsAAAFYiwAAAViLAAABWIsAAAFYiwAAAVqp0AWaMqegqAADOguL+n1e6ADt+/HhFVwEAcBYU9//cZSpZkyUvL0+//vqrqlatKpfLVdHVqVTS09NVr149/fzzz4qMjKzo6pzX+F2cO/hdnH3GGB0/flx16tRRQEDh7awq5VinchEQEKALLrigoqtRqUVGRvKHeo7gd3Hu4HdxdkVFRRVbptIdQgQAnB8IMACAlQgwlJjb7db48ePldrsruirnPX4X5w5+FxWn0nXiAACcH2iBAQCsRIABAKxEgAEArESAAQCsRIChUE8++aQSEhIUFhamatWqlWiZlJQUuVwun6lnz55lW9FKaPr06WrQoIFCQkJ0+eWX6/PPPy+y/OLFi9WsWTOFhISoVatWev/998upppXb2rVr1adPH9WpU0cul0tvv/12keXXrFmT7/Pvcrm0b9++8qnweYYAQ6Gys7N14403auTIkaVarmfPnvrtt98801tvvVVGNaycFi5cqDFjxmj8+PHavHmz2rRpo6SkJB04cKDA8p999pkGDRqkO+64Q1u2bFFycrKSk5P1zTfflHPNK5+TJ0+qTZs2mj59eqmW+/77733+BmrWrFlGNTy/0Y0exZo9e7buu+8+paWlFVs2JSVFaWlpxX5TReEuv/xyXXbZZfrb3/4m6b/je9arV0+jR4/Www8/nK/8wIEDdfLkSb333nueeR07dlTbtm01Y8aMcqt3ZedyubR8+XIlJycXWmbNmjW68sordfTo0RIftcCZowWGs27NmjWqWbOmmjZtqpEjR+rw4cMVXSVrZGdn68svv1T37t098wICAtS9e3dt2LChwGU2bNjgU16SkpKSCi2Pste2bVvFxcXpmmuu0fr16yu6OpUWAYazqmfPnpo7d65Wrlypp556Sp988ol69eql3Nzciq6aFQ4dOqTc3FzVqlXLZ36tWrUKPY+yb9++UpVH2YmLi9OMGTO0dOlSLV26VPXq1VO3bt20efPmiq5apVTpRqNH0R5++GE99dRTRZb5z3/+o2bNmp3R+m+66SbP41atWql169aKj4/XmjVrdPXVV5/ROgFbNG3aVE2bNvU8T0hI0K5du/T8889r3rx5FVizyokAO8888MADSklJKbJMo0aNztr2GjVqpJiYGO3cuZMAK4GYmBgFBgZq//79PvP379+v2rVrF7hM7dq1S1Ue5atDhw5at25dRVejUiLAzjOxsbGKjY0tt+398ssvOnz4sOLi4sptmzYLDg5Wu3bttHLlSk9ngby8PK1cuVKjRo0qcJlOnTpp5cqVuu+++zzzPvroI3Xq1KkcaozibN26lc9/GSHAUKg9e/boyJEj2rNnj3Jzc7V161ZJUuPGjRURESFJatasmaZMmaK+ffvqxIkTmjhxovr376/atWtr165devDBB9W4cWMlJSVV4Duxy5gxYzRkyBC1b99eHTp00LRp03Ty5EkNHTpUknTbbbepbt26mjJliiTp3nvvVWJiop599ln17t1bCxYs0KZNm/Tqq69W5NuoFE6cOKGdO3d6nu/evVtbt25VdHS0LrzwQj3yyCPau3ev5s6dK0maNm2aGjZsqBYtWigzM1MzZ87UqlWr9OGHH1bUW6jcDFCIIUOGGEn5ptWrV3vKSDKzZs0yxhiTkZFhevToYWJjY01QUJCpX7++GTZsmNm3b1/FvAGLvfjii+bCCy80wcHBpkOHDmbjxo2e1xITE82QIUN8yi9atMhcdNFFJjg42LRo0cKsWLGinGtcOa1evbrAvwFn/w8ZMsQkJiZ6yj/11FMmPj7ehISEmOjoaNOtWzezatWqiqn8eYDrwAAAVqIbPQDASgQYAMBKBBgAwEoEGADASgQYAMBKBBgAwEoEGADASgQYAMBKBBgAwEoEGADASgQYAMBKBBhwjuvWrZtGjx6t++67T9WrV1etWrX02muveUaor1q1qho3bqx//vOfFV1VoFwRYIAF5syZo5iYGH3++ecaPXq0Ro4cqRtvvFEJCQnavHmzevTooVtvvVUZGRkVXVWg3DAaPXCO69atm3Jzc/Xpp59KknJzcxUVFaV+/fp57kO1b98+xcXFacOGDerYsWNFVhcoN7TAAAu0bt3a8zgwMFA1atRQq1atPPNq1aolSTpw4EC51w2oKAQYYIGgoCCf5y6Xy2eey+WSJOXl5ZVrvYCKRIABAKxEgAEArESAAQCsRC9EAICVaIEBAKxEgAEArESAAQCsRIABAKxEgAEArESAAQCsRIABAKxEgAEArESAAQCsRIABAKxEgAEArPT/ARKdaPHfetbPAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "wf = poppy.PhysicalFresnelWavefront(beam_radius=w_extend*w0*u.m,\n", " wavelength=wavelength,\n", " npix=npix,\n", " oversample=2,\n", " M2=3.827)\n", "wf *= poppy.GaussianAperture(w=w0*u.m)\n", "wf *= poppy.QuadraticLens(f_lens=30*u.m)\n", "wf.scale_power(P0)\n", "\n", "print(\"P(0m) = {0:.2f} kW\".format(wf.power*1e-3))\n", "print(\"r(0m) = {0:.2f} cm\".format(wf.radius[0]*1e2))\n", "\n", "plt.figure(1)\n", "wf.display()\n", "\n", "wf.propagate_fresnel(100*u.m, attenuation_coeff=1e-3)\n", "\n", "plt.figure(2)\n", "wf.display()\n", "\n", "print(\"P(100m) = {0:.2f} kW\".format(wf.power*1e-3))\n", "print(\"r(100m) = {0:.2f} cm\".format(wf.radius[0]*1e2))" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## Conclusion" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "The class `PhysicalFresnelWavefront` implemented an alternative units convention for the electric field and intensity. At the moment, this doesn't change any propagation results. However, if accepted to be included into poppy, I can provide a thermal blooming phase screen (implemented as a `OpticalElement`) which relies on physical units of the intensity because it is a non-linear effect. In its current state, the class does not follow with poppy's conventions, e.g. I did not craft it to use astropy's units package whenever possible. My intent is basically to find out if the community and poppy developers are interested in the capabilites this class provides and features that can build upon it (for example a thermal blooming phase screen)." ] }, { "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.10.11" } }, "nbformat": 4, "nbformat_minor": 2 }