{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Field projections\n",
"\n",
"This tutorial will show you how to use field projections to obtain electromagnetic field data far away from a structure with knowledge of only near-field data.\n",
"\n",
"When projecting fields, geometric approximations can be invoked to allow computing fields far away from the structure quickly and with good accuracy, but in `Tidy3D` we can also turn these approximations off when projecting fields at intermediate distances away, which gives a lot of flexibility.\n",
"\n",
"These field projections are particularly useful for eliminating the need to simulate large regions of empty space around a structure. \n",
"\n",
"In this notebook, we will\n",
"\n",
"* show how to compute projected fields on your local machine after a simulation is run, or on our servers during the simulation run.\n",
"\n",
"* show how to extract various quantities related to projected fields such as fields in different coordinate systems, power, and radar cross section.\n",
"\n",
"* demonstrate how, when far field approximations are used, the fields can dynamically be re-projected to new distances without having to run a new simulation.\n",
"\n",
"* study when geometric far field approximations should and should not be invoked, depending on the projection distance and the geometry of the structure.\n",
"\n",
"* show how to set up projections for finite-sized objects (e.g., scattering at a sphere) vs. thin but large-area structures (e.g., metasurfaces).\n",
"\n",
"## Table of contents\n",
"1. [Simulation setup](#setup)\n",
"2. [Far-field projector setup](#farfield1)\n",
"3. [Server-side far field projection](#farfieldserver1)\n",
"4. [Coordinate system conversion, power computation](#powercoords)\n",
"5. [Re-projection to a new far field distance](#reproj)\n",
"6. [Exact field projections without making the far-field approximation](#exact)\n",
"7. [Projection to a grid defined in reciprocal space](#kspace)\n",
"8. [Some final notes](#notes)\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"execution": {
"iopub.execute_input": "2023-03-27T23:49:52.951854Z",
"iopub.status.busy": "2023-03-27T23:49:52.951293Z",
"iopub.status.idle": "2023-03-27T23:49:54.195810Z",
"shell.execute_reply": "2023-03-27T23:49:54.195227Z"
}
},
"outputs": [],
"source": [
"# standard python imports\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"\n",
"# tidy3d imports\n",
"import tidy3d as td\n",
"import tidy3d.web as web\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"tags": []
},
"source": [
"## Far Field for a Uniformly Illuminated Aperture \n",
"\n",
"First, we will consider the simple case of an aperture in a perfect electric conductor sheet illuminated by a plane wave. The far fields in this case are known analytically, which allows for a straightforward comparison to `Tidy3D`'s field projection functionality. We will show how to compute the far fields both on your local machine, and on the server. The geometry is shown below.\n",
"\n",
""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Geometry setup"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"execution": {
"iopub.execute_input": "2023-03-27T23:49:54.198896Z",
"iopub.status.busy": "2023-03-27T23:49:54.198512Z",
"iopub.status.idle": "2023-03-27T23:49:54.218985Z",
"shell.execute_reply": "2023-03-27T23:49:54.218243Z"
}
},
"outputs": [],
"source": [
"# size of the aperture (um)\n",
"width = 1.5\n",
"height = 2.5\n",
"\n",
"# free space central wavelength (um)\n",
"wavelength = 0.75\n",
"# center frequency\n",
"f0 = td.C_0 / wavelength\n",
"\n",
"# Define materials\n",
"air = td.Medium(permittivity=1)\n",
"pec = td.PECMedium()\n",
"\n",
"# PEC plate thickness\n",
"thick = 0.2\n",
"\n",
"# FDTD grid resolution\n",
"min_cells_per_wvl = 20\n",
"\n",
"# create the PEC plate\n",
"plate = td.Structure(\n",
" geometry=td.Box(size=[td.inf, thick, td.inf], center=[0, 0, 0]), medium=pec\n",
")\n",
"\n",
"# create the aperture in the plate\n",
"aperture = td.Structure(\n",
" geometry=td.Box(size=[width, 1.5 * thick, height], center=[0, 0, 0]), medium=air\n",
")\n",
"\n",
"# make sure to append the aperture to the plate so that it overrides that region of the plate\n",
"geometry = [plate, aperture]\n",
"\n",
"# define the boundaries as PML on all sides\n",
"boundary_spec = td.BoundarySpec.all_sides(boundary=td.PML())\n",
"\n",
"# set the total domain size in x, y, and z\n",
"sim_size = [width * 2, 2, height * 2]\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Source setup\n",
"For our incident field, we create a plane wave incident from the left, with the electric field polarized in the -z direction."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"execution": {
"iopub.execute_input": "2023-03-27T23:49:54.221442Z",
"iopub.status.busy": "2023-03-27T23:49:54.221274Z",
"iopub.status.idle": "2023-03-27T23:49:54.240286Z",
"shell.execute_reply": "2023-03-27T23:49:54.239784Z"
}
},
"outputs": [],
"source": [
"# bandwidth in Hz\n",
"fwidth = f0 / 10.0\n",
"\n",
"# time dependence of source\n",
"gaussian = td.GaussianPulse(freq0=f0, fwidth=fwidth)\n",
"\n",
"# place the source to the left, propagating in the +y direction\n",
"offset_src = -0.3\n",
"source = td.PlaneWave(\n",
" center=(0, offset_src, -0),\n",
" size=(td.inf, 0, td.inf),\n",
" source_time=gaussian,\n",
" direction=\"+\",\n",
" pol_angle=np.pi / 2,\n",
")\n",
"\n",
"# Simulation run time\n",
"run_time = 50 / fwidth\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Create monitor\n",
"\n",
"First, we'll see how to do field projections using your machine after you've downloaded near fields from a `Tidy3D` simulation.\n",
"\n",
"We create a surface [FieldMonitor](../_autosummary/tidy3d.FieldMonitor.html) just to the right of the aperture to capture the near field data in the frequency domain."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"execution": {
"iopub.execute_input": "2023-03-27T23:49:54.242741Z",
"iopub.status.busy": "2023-03-27T23:49:54.242483Z",
"iopub.status.idle": "2023-03-27T23:49:54.264604Z",
"shell.execute_reply": "2023-03-27T23:49:54.264041Z"
}
},
"outputs": [],
"source": [
"offset_mon = 0.3\n",
"monitor_near = td.FieldMonitor(\n",
" center=[0, offset_mon, 0], size=[td.inf, 0, td.inf], freqs=[f0], name=\"near_field\"\n",
")\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Create Simulation\n",
"\n",
"Now we can put everything together and define the simulation with a simple uniform mesh, and then we'll visualize the geometry to make sure everything looks right."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"execution": {
"iopub.execute_input": "2023-03-27T23:49:54.266821Z",
"iopub.status.busy": "2023-03-27T23:49:54.266631Z",
"iopub.status.idle": "2023-03-27T23:49:54.603575Z",
"shell.execute_reply": "2023-03-27T23:49:54.603056Z"
}
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAlwAAAE8CAYAAAAVAG93AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy88F64QAAAACXBIWXMAAA9hAAAPYQGoP6dpAABRxUlEQVR4nO3deZhjVZ0+8Pfe3CVVWSrpSvVGN0uDAjYKDTSMKLK1gKDSCj0wM7LpoLL5Q9QRHhkQFHtUhB6hAWFEBpQZBh8FFUZZbEARlXUGUERGkG6gl1QnlaUqudv5/VHcdFKVvZLcLO/neerprtRNcpJbde6bc8/9HkkIIUBEREREbSN73QAiIiKifsfARURERNRmDFxEREREbcbARURERNRmDFxEREREbcbARURERNRmDFxEREREbcbARURERNRmDFxEREREbcbA1aUefvhhSJKEhx9+2OumEBFRm7HP738MXB67/vrrceutt3rdjKbccccdWLdundfNKPHd734Xe++9N/x+P972trfh2muvrfu++XweX/ziF7F48WIMDQ3h4IMPxgMPPFB229/85jd473vfi+HhYSxcuBCf+cxnkMlkWvUyiKhPsc9vrZ7q8wV5avny5eKwww6bdbtt22JqakrYtt35RtXp+OOPF7vssovXzSi48cYbBQBx4okniptuukmceuqpAoD4l3/5l7ruf8oppwhFUcTnP/958Z3vfEe8+93vFoqiiF/96lcl2z3zzDPC7/eLFStWiBtuuEF86UtfErqui2OPPbYdL4uI+gj7/NbptT6/KwJXJpPxugmeqfTH1wu66Y9vcnJSjI6OiuOPP77k9n/4h38QgUBAbN++ver9f/e73wkA4pvf/GbhtqmpKbH77ruLd7/73SXbfuADHxCLFi0SExMThdtuvvlmAUD84he/aMGrIepv7PMP87oZTWGfP7c+v+WBa9OmTeLjH/+4WLRokdA0Tey6667i05/+tMjn80IIIb73ve8JAOLhhx8WZ599thgbGxORSKRw//Xr14t3vOMdQtM0sWjRInHOOeeIRCJR8hwvvfSS+OhHPyoWLFggdF0XO+20kzj55JNFMpksbHP//feL97znPWJkZEQEAgHx9re/XVx88cU121/P/XK5nLj00kvF7rvvLjRNE0uWLBFf+MIXRC6Xm/V4t99+u1i5cqUYGhoSkUhEHHrooYUdtMsuuwgAJV/uH+KGDRsEALFhw4aSx/uv//ovsf/++wu/3y9GR0fFP/zDP4hNmzaVbHP66aeLQCAgNm3aJE444QQRCARELBYTn/vc54RlWTXfg7vvvlscd9xxhX24bNkyccUVV5Tc97DDDpvV9mp/iLfccosAIL773e+W3H7llVcKAOLee++t2a5q7r333rKP85vf/EYAELfffnvV+3/hC18QPp+v5A9KCCG+9rWvCQDitddeE0IIMTExIRRFEV/4whdKtsvn8yIYDIpPfOITc3odRL2GfX4p9vnT3ve+94l3vetdZX/29re/XRx99NE121VNL/b5SmMnIKt74403cNBBByGZTOKTn/wk9tprL7z++uv44Q9/iMnJSWiaVtj2nHPOwdjYGC699FJks1kAwJe//GVcfvnlWLVqFc4++2z86U9/wg033IAnnngCjz32GFRVhWEYOOaYY5DP53H++edj4cKFeP311/Gzn/0MyWQSIyMjeOGFF/DBD34Q73rXu3DFFVdA13W8/PLLeOyxx6q2v577OY6DD3/4w/j1r3+NT37yk9h7773x3HPP4ZprrsFLL72Eu+++u7Dt5Zdfji9/+cs45JBDcMUVV0DTNPzud7/DL3/5Sxx99NFYt24dzj//fASDQXzpS18CACxYsKBi+2699VaceeaZWLlyJdauXYstW7bgX//1X/HYY4/hmWeeQSQSKWxr2zaOOeYYHHzwwbjqqqvw4IMP4lvf+hZ23313nH322VXfh1tvvRXBYBAXXnghgsEgfvnLX+LSSy9FKpXCN7/5TQDAl770JUxMTGDTpk245pprAADBYLDiY5555pn40Y9+hAsvvBDvf//7sXTpUjz33HO4/PLL8YlPfALHHXdcYdtEIgHbtqu2EQCGh4cxPDwMAHjmmWcAAAceeGDJNgcccABkWcYzzzyDj33sYxUf65lnnsHb3/52hMPhktsPOuggAMCzzz5baLNlWbOeR9M07LfffoV2EA0C9vns8ys59dRTcdZZZ+H555/HPvvsU7j9iSeewEsvvYRLLrmkcNvA9Pl1R7M6nHbaaUKWZfHEE0/M+pnjOEKIHZ923vve95ak561btwpN08TRRx9dcg77uuuuEwDELbfcIoSYPpcKQNx1110V23HNNdcIAGLbtm0Ntb+e+91+++1CluVZ53jdc8mPPfaYEEKIP//5z0KWZfGRj3xk1jl5970QovLw8sxPO4ZhiPnz54t99tlHTE1NFbb72c9+JgCISy+9tHDb6aefLgCIK664ouQxV6xYIQ444IDqb4KYHqqd6VOf+pQYHh4u+UTX6PDym2++KebNmyfe//73i3w+L1asWCF23nnnWZ8wyn0KLPd12WWXFe5z7rnnCp/PV/Z5x8bGxCmnnFK1bcuXLxdHHnnkrNtfeOEFAUDceOONQggh7rrrLgFAPProo7O2XbNmjVi4cGGtt4Gob7DPZ59fSTKZFH6/X3zxi18suf0zn/mMCAQCJaeVB6XPb9lVio7j4O6778aHPvShWUkQACRJKvn+rLPOgs/nK3z/4IMPwjAMXHDBBZBluWS7cDiMe++9FwAwMjICAPjFL36BycnJsm1xU/8999wDx3Hqfg313O+uu+7C3nvvjb322gvxeLzwdeSRRwIANmzYAAC4++674TgOLr300pLXA8x+L+rx5JNPYuvWrTjnnHPg9/sLtx9//PHYa6+9Cu9PsU9/+tMl3x966KH4y1/+UvO5hoaGCv9Pp9OIx+M49NBDMTk5iRdffLHhtrsWLlyI9evX44EHHsChhx6KZ599FrfccsusTxg/+MEP8MADD9T8Ou200wr3mZqaKvk0Xczv92Nqaqpq26ampqDretn7uj8v/rfStrWeh6hfsM9nn1/NyMgITjjhBPzHf/wHhBAApkfh7rzzTqxevRqBQKCw7aD0+S07pbht2zakUqmSocNqdtttt5Lv//rXvwIA9txzz5LbNU3DsmXLCj/fbbfdcOGFF+Lqq6/GD37wAxx66KH48Ic/jI997GOFP8yTTz4Z//Zv/4Z//Md/xEUXXYSjjjoKH/3oR3HSSSfN+kMoVs/9/vznP+OPf/wjxsbGyj7G1q1bAQD/93//B1mW8Y53vKOu96OWSu8PAOy111749a9/XXKb3++f1cZoNIpEIlHzuV544QVccskl+OUvf4lUKlXys4mJiUabXuKUU07B97//fdx777345Cc/iaOOOmrWNu95z3saftyhoSEYhlH2Z7lcrqRDqXT/fD5f9r7uz4v/rbRtrech6hfs86exz6/stNNOw5133olf/epXeN/73ocHH3wQW7Zswamnnlqy3aD0+S2dw9WIuRyYvvWtb+GMM87APffcg/vvvx+f+cxnsHbtWvz2t7/FkiVLMDQ0hEcffRQbNmzAvffei5///Oe48847ceSRR+L+++8v+ZQ1s0217uc4Dt75znfi6quvLvsYS5cubfp1tVKl11hLMpnEYYcdhnA4jCuuuAK77747/H4/nn76aXzxi19s6NNjOePj43jyyScBAH/4wx/gOM6sDnHbtm11nc8PBoOFOQSLFi2CbdvYunUr5s+fX9jGMAyMj49j8eLFVR9r0aJFeP3112fd/uabbwJA4f6LFi0quX3mtrWeh2hQsc9vr27s84855hgsWLAA3//+9/G+970P3//+97Fw4UKsWrWqZLuB6fPrPvlYg23bIhwOixNOOKHqdu75/Jnn/O+44w4BQNx3330lt+fzeTEyMiJOPPHEio/52GOPCQDiS1/6UsVt3KvhHnjggdovpsr9jjvuOLHTTjuVnJMv55vf/KYAIJ555pmq2+2zzz51nc93r7y4/vrrZ2279957l5ynd69Ymemyyy4TtXb5j3/8YwFAPPLIIyW333TTTbOuoPngBz/Y8CXCJ598shgeHhZr164VAMS3vvWtWds0cz7fndcw84oV93fjtttuq9quz3/+82WvWHH3v3vFSjKZrHrFysc//vFG3g6insU+vxT7/PI++9nPimg0KrZv3y6CwaD47Gc/O2ubQenzWzaHS5ZlrF69Gj/96U8LIxjFxFvncCtZtWoVNE3Dt7/97ZJtv/vd72JiYgLHH388ACCVSsGyrJL7vvOd74Qsy4Uhv+3bt896/P322w9A+WFBVz33+9u//Vu8/vrruPnmm2dtOzU1Vbj6ZvXq1ZBlGVdcccWsTwjFry8QCCCZTFZsk+vAAw/E/PnzceONN5a8hv/+7//GH//4x8L7M1fup6TiNhqGgeuvv37WtoFAoKHh5h/+8Ie488478S//8i+46KKLcMopp+CSSy7BSy+9VLJdM+fzjzzySMybNw833HBDyWPdcMMNGB4eLnl/4vE4XnzxxZL5ICeddBJs28ZNN91UuC2fz+N73/seDj744MKn2JGREaxatQrf//73kU6nC9vefvvtyGQyWLNmTd3vB1EvY5/PPr8ep556KhKJBD71qU8hk8mUvXJwYPr8uqNZHTZt2iQWLlwohoeHxQUXXCC+853viC9/+cti+fLlhboqlT7tCLEjjR999NHiuuuuE+eff77w+Xxi5cqVwjAMIcR0Gt9pp53EBRdcIK6//nrx7W9/W6xcuVKoqioef/xxIYQQ/+///T+xYsUKcckll4ibb75ZXHnllWKnnXYSS5YsKanbMlM997NtWxx33HFCkiRxyimniGuvvVasW7dOfPrTnxbz5s0reV3//M//LACIQw45RFx11VXi2muvFaeddpq46KKLCtucc845QpIk8ZWvfEX8x3/8h3jooYeEEOVrsrjv3cEHHyzWrVsnLr74YjE8PCx23XXXkro1c/m0E4/HRTQaFbvssov41re+Ja6++mqxYsUKse+++85qzze+8Q0BQHz2s58Vd9xxh/jJT35S8XG3bNkiYrGYOOKIIwqfFOPxuFiwYIF497vf3ZLqyuvXrxcAxEknnSRuvvlmcdpppwkA4sorryzZzn0fZta7WbNmTeGTzHe+8x1xyCGHCEVRZn3ye+qpp4Su6yVVh/1+/5zryhD1Gvb57PPrsc8++wgAYu+9965r+3r1Wp/f8sKnf/3rX8Vpp50mxsbGhK7rYtmyZeLcc8+dVQSv3B+fENOXBO+1115CVVWxYMECcfbZZ5f8Yv3lL38RH//4x8Xuu+8u/H6/mDdvnjjiiCPEgw8+WNjmoYceEieccIJYvHix0DRNLF68WPzd3/2deOmll6q2vd77GYYhvv71r4vly5cLXddFNBoVBxxwgLj88stnDU/ecsstYsWKFYXtDjvssJIh7s2bN4vjjz9ehEIhAdQugnfnnXcWHm/evHlVi+DNVM8fnxDTQ7J/8zd/I4aGhsTixYvFP/3TP4lf/OIXs9qTyWTE3//934tIJCJQowjeRz/6UREKhcSrr75acvs999wjAIivf/3rNdtVj5tuuknsueeeQtM0sfvuu4trrrlm1qmASn98U1NT4vOf/7xYuHCh0HVdrFy5Uvz85z8v+zy/+tWvxCGHHCL8fr8YGxsT5557rkilUi15DUS9hH0++/xa3KD2ta99ra7tG9FLfb4kRI1xXyIiIqIm/eu//is++9nP4tVXX8XOO+/sdXM8w8BFREREbSGEwL777ovR0dFCzbJB5VlZCCIiIupP2WwWP/nJT7BhwwY899xzuOeee7xukuc4wkVEREQt9eqrr2K33XZDJBLBOeecgyuvvNLrJnmOgYuIiIiozVpWh4uIiIiIymPgIiIiImqzgZo07zgO3njjDYRCoaZWbyfvCSGQTqexePHiqovS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JCKihnVTn8/+vvcwcM2BYRhYs2YNzj77bK+bgjvvvBMXXnghLrvsMjz99NPYd999ccwxx2Dr1q1eNw3ZbBb77rsv1q9f73VTiIia1i19Pvv73sSyEC1w66234oILLkAymfSsDQcffDBWrlyJ6667DsD0umRLly7F+eefj4suusizds0kSRJ+/OMfY/Xq1V43hYioKV73+ezvexNHuPqAYRh46qmnsGrVqsJtsixj1apVePzxxz1sGRERtRL7+97FwNUH4vE4bNvGggULSm5fsGABNm/e7FGriIio1djf9y4GrhkuuugiSJJU9evFF1/0uplERNQC7POpUxSvG9BtPve5z+GMM86ous2yZcs605g6xWIx+Hw+bNmypeT2LVu2YOHChR61ioio+/Van8/+vncxcM0wNjaGsbExr5vREE3TcMABB+Chhx4qTE50HAcPPfQQzjvvPG8bR0TUxXqtz2d/37sYuObgtddew/bt2/Haa6/Btm08++yzAIA99tgDwWCwo2258MILcfrpp+PAAw/EQQcdhHXr1iGbzeLMM8/saDvKyWQyePnllwvfv/LKK3j22Wcxb9487Lzzzh62jIioft3S57O/71GCmnb66acLALO+NmzY4El7rr32WrHzzjsLTdPEQQcdJH7729960o6ZNmzYUPZ9Ov30071uGhFR3bqpz2d/33tYh4uIiIiozXiVIhEREVGbMXARERERtRkDFxEREVGbMXARERERtRkDFxEREVGbMXARERERtRkDFxEREVGbMXARERERtRkDFxEREVGbMXARERERtRkDFxEREVGbMXD1gdtuuw2jo6PI5/Mlt69evRqnnnqqR60iIqJW27ZtGxYuXIivfe1rhdt+85vfQNM0PPTQQx62jGrh4tV9YGpqCosWLcLNN9+MNWvWAAC2bt2KnXbaCffffz+OOOIIj1tIREStct9992H16tX4zW9+gz333BP77bcfTjjhBFx99dVeN42qYODqE+eccw5effVV3HfffQCAq6++GuvXr8fLL78MSZI8bh0REbXSueeeiwcffBAHHnggnnvuOTzxxBPQdd3rZlEVDFx94plnnsHKlSvx17/+FTvttBPe9a53Yc2aNfjnf/5nr5tGREQtNjU1hX322QcbN27EU089hXe+851eN4lq4ByuPrFixQrsu+++uO222/DUU0/hhRdewBlnnOF1s4iIqA3+7//+D2+88QYcx8Grr77qdXOoDhzh6iM33HAD1q1bh/e///3485//jF/84hdeN4mIiFrMMAwcdNBB2G+//bDnnnti3bp1eO655zB//nyvm0ZVMHD1kYmJCSxevBiWZeG2227DySef7HWTiIioxb7whS/ghz/8If7nf/4HwWAQhx12GEZGRvCzn/3M66ZRFTyl2EdGRkZw4oknIhgMYvXq1V43h4iIWuzhhx/GunXrcPvttyMcDkOWZdx+++341a9+hRtuuMHr5lEVHOHqM0cddRSWL1+Ob3/72143hYiIiN7CwNUnEokEHn74YZx00kn4wx/+gD333NPrJhEREdFbFK8bQK2xYsUKJBIJfP3rX2fYIiIi6jIc4SIiIiJqM06aJyIiImozBi4iIiKiNmPgIiIiImozBi4iIiKiNmPgIiIiImozBi4iIiKiNmPgIiIiImozBi4iIiKiNvv/DBPrLimN/QMAAAAASUVORK5CYII=",
"text/plain": [
"