{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Critical point in electromagnetic Anderson localization in three dimensions\n",
    "\n",
    "**Author: Dr. Alexey Yamilov, Missouri University of Science & Technology**\n",
    "\n",
    "Anderson localization (AL) is a wave interference phenomenon that can suppress wave transport in disordered media. The recent work `Yamilov, A., Cao, H., & Skipetrov, S. E. (2025). Anderson transition for light in a three-dimensional random medium. Physical Review Letters, 134(4), 046302` [DOI: 10.1103/PhysRevLett.134.046302](https://doi.org/10.1103/PhysRevLett.134.046302). demonstrates a clear transition between diffusive and localized regimes for light in 3D. Using Tidy3D, finite-difference time-domain (FDTD), simulations of electromagnetic wave propagation through randomly distributed perfect electric conducting (PEC) spheres, a critical frequency (mobility edge) where this transition occurs has been identified.\n",
    "\n",
    "In this notebook, we will qualitatively reproduce the results presented in Fig. 1a of the paper for spheres with a radius of 75 nm, exploring two different simulation domain sizes (2λ)³ and (3λ)³. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import scipy.io as sio\n",
    "\n",
    "import tidy3d as td\n",
    "from tidy3d import web\n",
    "from tidy3d import SpatialDataArray\n",
    "\n",
    "td.config.logging_level = \"ERROR\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Define study parameters\n",
    "\n",
    "We now define global parameters for the simulation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Free space central wavelength in um and center frequency\n",
    "wavelength = 0.50\n",
    "freq0 = td.C_0 / wavelength\n",
    "\n",
    "# Bandwidth of the excitation pulse in Hz, chosen so that Fourier transform can be computed for f0a frequencies\n",
    "fwidth = freq0 / 7.0\n",
    "\n",
    "\n",
    "# Space between PML and slab\n",
    "space = 1 * wavelength\n",
    "\n",
    "# Sphere radius in um\n",
    "sphere_r = 0.075\n",
    "\n",
    "# Define number of random realizations\n",
    "nseeds = 30\n",
    "\n",
    "# Define random seed (to replicate disordered slab, if needed)\n",
    "seeds = 0 + np.arange(nseeds)\n",
    "\n",
    "# Grids per wavelength\n",
    "grids_pw = 20\n",
    "dt0 = 0.99 * wavelength / (grids_pw * td.C_0 * np.sqrt(3))\n",
    "\n",
    "# Number of PML layers to use along z direction\n",
    "npml = 2 * grids_pw\n",
    "\n",
    "# We use a uniform grid size to speed up the meshing process\n",
    "dl = wavelength / grids_pw\n",
    "grid_spec = td.GridSpec.uniform(dl=dl)\n",
    "\n",
    "# Frequencies to analyse\n",
    "freqs = freq0 * np.linspace(0.7, 1.4, 2001)\n",
    "\n",
    "# Define boundary conditions: Periodic in x and y, and PML in z\n",
    "\n",
    "sys = \"PEC\"\n",
    "periodic_bc = td.Boundary(plus=td.Periodic(), minus=td.Periodic())\n",
    "pml = td.Boundary(plus=td.Absorber(num_layers=npml), minus=td.Absorber(num_layers=npml))\n",
    "boundary_spec = td.BoundarySpec(x=periodic_bc, y=periodic_bc, z=pml)\n",
    "\n",
    "# Gaussian source offset; the source peak is at time t = offset/fwidth\n",
    "offset = 10.0\n",
    "\n",
    "# Defining spheres material as Perfect Electric Conductor\n",
    "medium = td.PEC\n",
    "medium_out = td.Medium(permittivity=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The realized volume filling fraction depends on the overlap between spheres, smoothing and discretization, it is computed after simulation is done. Accounting for only sphere overlaps, $ff$ can be found as $ff_{appx}  = 1 - e^{(-ff0)}$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Nominal volume filling fraction, actual filling fraction is lower due to overlap between spheres\n",
    "ff0 = 0.95\n",
    "\n",
    "# Approximate filling fraction\n",
    "ff_appx = 1 - np.exp(-ff0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we will define a function for generating the random structure as a function of the seed:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "def generate_structure(seed, L):\n",
    "    structures = []\n",
    "\n",
    "    # Compute number of spheres to place: volume * nominal_density = number of spheres\n",
    "    num_spheres = int(\n",
    "        (L + 2 * sphere_r)\n",
    "        * (L + 2 * sphere_r)\n",
    "        * (L + 2 * sphere_r)\n",
    "        * ff0\n",
    "        / (4 * np.pi / 3 * sphere_r**3)\n",
    "    )\n",
    "    np.random.seed(seed)\n",
    "\n",
    "    # Randomly position spheres\n",
    "    for i in range(num_spheres):\n",
    "        position_x = np.random.uniform(-L / 2 - sphere_r, L / 2 + sphere_r)\n",
    "        position_y = np.random.uniform(-L / 2 - sphere_r, L / 2 + sphere_r)\n",
    "        position_z = np.random.uniform(-L / 2 - sphere_r, L / 2 + sphere_r)\n",
    "        radius_i = sphere_r\n",
    "        name_i = f\"sphere_i={i}\"\n",
    "        sphere_i = td.Sphere(\n",
    "            center=[position_x, position_y, position_z], radius=radius_i\n",
    "        )\n",
    "        structure_i = td.Structure(geometry=sphere_i, medium=medium)\n",
    "        structures.append(structure_i)\n",
    "\n",
    "    # Define effective medium around the slab\n",
    "    box1 = td.Box(center=[0, 0, -L / 2 - space], size=[td.inf, td.inf, 2 * space])\n",
    "    box2 = td.Box(center=[0, 0, L / 2 + space], size=[td.inf, td.inf, 2 * space])\n",
    "    struct1 = td.Structure(geometry=box1, medium=medium_out)\n",
    "    structures.append(struct1)\n",
    "    struct2 = td.Structure(geometry=box2, medium=medium_out)\n",
    "    structures.append(struct2)\n",
    "\n",
    "    return structures"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Defining a function for creating the simulation object"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "def make_sim(seed, L, run_time):\n",
    "    # Defining simulation size\n",
    "    Lz_tot = space + L + space\n",
    "    sim_size = [L, L, Lz_tot]\n",
    "\n",
    "    structures = generate_structure(seed, L)\n",
    "\n",
    "    # Define incident plane wave\n",
    "    gaussian = td.GaussianPulse(freq0=freq0, fwidth=fwidth, offset=offset, phase=0)\n",
    "    source = td.PlaneWave(\n",
    "        size=(td.inf, td.inf, 0.0),\n",
    "        center=(0, 0, -Lz_tot / 2.0 + 0.1 * wavelength),\n",
    "        source_time=gaussian,\n",
    "        direction=\"+\",\n",
    "        pol_angle=0,\n",
    "    )\n",
    "\n",
    "    # Transmitted flux through the slab\n",
    "    flux_monitor = td.FluxMonitor(\n",
    "        center=[0.0, 0.0, L / 2.0 + space / 2.0],\n",
    "        size=[td.inf, td.inf, 0],\n",
    "        freqs=freqs,\n",
    "        name=\"flux_monitor\",\n",
    "    )\n",
    "\n",
    "    # Records time-dependent transmitted flux through the slab\n",
    "    flux_time_monitor = td.FluxTimeMonitor(\n",
    "        center=[0.0, 0.0, L / 2.0 + space / 2.0],\n",
    "        size=[td.inf, td.inf, 0],\n",
    "        name=\"flux_time_monitor\",\n",
    "    )\n",
    "\n",
    "    monitors = [flux_monitor, flux_time_monitor]  # ,eps_monitor]\n",
    "\n",
    "    # Define simulation object\n",
    "    sim = td.Simulation(\n",
    "        size=sim_size,\n",
    "        grid_spec=grid_spec,\n",
    "        structures=structures,\n",
    "        sources=[source],\n",
    "        monitors=monitors,\n",
    "        run_time=run_time,\n",
    "        boundary_spec=boundary_spec,\n",
    "        shutoff=1e-15,\n",
    "    )\n",
    "\n",
    "    return sim"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Create a simulation batch for L = 2 wavelengths\n",
    "sims2 = {}\n",
    "for seed in seeds:\n",
    "    sims2[\"%i\" % seed] = make_sim(seed, L=2 * wavelength, run_time=3e-12)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Create a simulation batch for L = 3 wavelengths\n",
    "sims3 = {}\n",
    "for seed in seeds:\n",
    "    sims3[\"%i\" % seed] = make_sim(seed, L=3 * wavelength, run_time=6e-12)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "92058a60d1224f758a3e3f1c90bf051f",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"></pre>\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">10:02:53 Eastern Standard Time </span>Started working on Batch containing <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">30</span> tasks.    \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m10:02:53 Eastern Standard Time\u001b[0m\u001b[2;36m \u001b[0mStarted working on Batch containing \u001b[1;36m30\u001b[0m tasks.    \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">10:03:43 Eastern Standard Time </span>Maximum FlexCredit cost: <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">0.750</span> for the whole     \n",
       "<span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">                               </span>batch.                                           \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m10:03:43 Eastern Standard Time\u001b[0m\u001b[2;36m \u001b[0mMaximum FlexCredit cost: \u001b[1;36m0.750\u001b[0m for the whole     \n",
       "\u001b[2;36m                               \u001b[0mbatch.                                           \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">                               </span>Use <span style=\"color: #008000; text-decoration-color: #008000\">'Batch.real_cost()'</span> to get the billed        \n",
       "<span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">                               </span>FlexCredit cost after the Batch has completed.   \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m                              \u001b[0m\u001b[2;36m \u001b[0mUse \u001b[32m'Batch.real_cost\u001b[0m\u001b[32m(\u001b[0m\u001b[32m)\u001b[0m\u001b[32m'\u001b[0m to get the billed        \n",
       "\u001b[2;36m                               \u001b[0mFlexCredit cost after the Batch has completed.   \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "f0b4e4077b19477c98b58a1130c5dec7",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">10:03:56 Eastern Standard Time </span>Batch complete.                                  \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m10:03:56 Eastern Standard Time\u001b[0m\u001b[2;36m \u001b[0mBatch complete.                                  \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"></pre>\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "c904bc22b87b4474ad39840d2c0a0c0f",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"></pre>\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Running batch\n",
    "batch2 = web.Batch(simulations=sims2, verbose=True)\n",
    "batch_data2 = batch2.run()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "f49f487bc98b4aa7937329ce98061f64",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"></pre>\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">10:07:03 Eastern Standard Time </span>Started working on Batch containing <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">30</span> tasks.    \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m10:07:03 Eastern Standard Time\u001b[0m\u001b[2;36m \u001b[0mStarted working on Batch containing \u001b[1;36m30\u001b[0m tasks.    \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">10:08:49 Eastern Standard Time </span>Maximum FlexCredit cost: <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">2.208</span> for the whole     \n",
       "<span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">                               </span>batch.                                           \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m10:08:49 Eastern Standard Time\u001b[0m\u001b[2;36m \u001b[0mMaximum FlexCredit cost: \u001b[1;36m2.208\u001b[0m for the whole     \n",
       "\u001b[2;36m                               \u001b[0mbatch.                                           \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">                               </span>Use <span style=\"color: #008000; text-decoration-color: #008000\">'Batch.real_cost()'</span> to get the billed        \n",
       "<span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">                               </span>FlexCredit cost after the Batch has completed.   \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m                              \u001b[0m\u001b[2;36m \u001b[0mUse \u001b[32m'Batch.real_cost\u001b[0m\u001b[32m(\u001b[0m\u001b[32m)\u001b[0m\u001b[32m'\u001b[0m to get the billed        \n",
       "\u001b[2;36m                               \u001b[0mFlexCredit cost after the Batch has completed.   \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "dd927fb168ba4a77a99b6e8b83cd23f1",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">10:09:02 Eastern Standard Time </span>Batch complete.                                  \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m10:09:02 Eastern Standard Time\u001b[0m\u001b[2;36m \u001b[0mBatch complete.                                  \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"></pre>\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "1dadcaca47764db6980ede507c6eac85",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"></pre>\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Running batch\n",
    "batch3 = web.Batch(simulations=sims3, verbose=True)\n",
    "batch_data3 = batch3.run()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now, we will load the batch data and calculate $\\langle \\log{(g)} \\rangle$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "def analyse_g(batch_data, L):\n",
    "    T_of_f = []\n",
    "\n",
    "    # Load frequency-resolved transmission for all realizations of disorder\n",
    "    for seed in seeds:\n",
    "        sim_data = batch_data[\"%i\" % seed]\n",
    "        fT = sim_data[\"flux_monitor\"].flux\n",
    "        T_of_f = np.hstack([T_of_f, fT.values])\n",
    "\n",
    "    normalized_L = L / wavelength\n",
    "    normalized_freqs = freqs / freq0\n",
    "\n",
    "    # Calculate of the ensemble-averaged <log(g)> as a function of frequency\n",
    "    Lp = normalized_L * wavelength\n",
    "    ka = 2 * np.pi / wavelength * normalized_freqs.T\n",
    "    T_of_f_ave = np.exp(\n",
    "        np.transpose(np.mean(np.log(T_of_f.reshape(int(nseeds), -1)), axis=0))\n",
    "    )\n",
    "    logg = np.log(\n",
    "        np.multiply(T_of_f_ave, ka.flatten() ** 2) * Lp**2 / (2 * np.pi) * 0.80\n",
    "    )\n",
    "\n",
    "    return logg"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "logg2 = analyse_g(batch_data2, 2 * wavelength)\n",
    "logg3 = analyse_g(batch_data3, 3 * wavelength)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Plotting the data, we observe the curves crossing at the critical point (the mobility edge). To the left/right of the critical point conductance decreases/increases with an increase of the system size L. At the critical point, the conductance is invariant with the system size. This indicates a sharp Anderson transition in the L→∞ limit, see the [publication](https://doi.org/10.1103/PhysRevLett.134.046302) for details.\n",
    "\n",
    "Smoother data can be obtained by increasing `nseeds`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots()\n",
    "\n",
    "normalized_freqs = freqs / freq0\n",
    "normalized_L2 = 2 * wavelength / wavelength\n",
    "normalized_L3 = 3 * wavelength / wavelength\n",
    "\n",
    "ax.plot(\n",
    "    (2 * np.pi / wavelength * normalized_freqs.T * sphere_r),\n",
    "    logg2,\n",
    "    \"r.\",\n",
    "    markersize=10,\n",
    "    linewidth=1,\n",
    "    label=f\"Size=({normalized_L2}λ)³, f={ff_appx*100:.0f}%, r={1000*sphere_r}nm\",\n",
    ")\n",
    "\n",
    "ax.plot(\n",
    "    (2 * np.pi / wavelength * normalized_freqs.T * sphere_r),\n",
    "    logg3,\n",
    "    \"b.\",\n",
    "    markersize=10,\n",
    "    linewidth=1,\n",
    "    label=f\"Size=({normalized_L3}λ)³, f={ff_appx*100:.0f}%, r={1000*sphere_r}nm\",\n",
    ")\n",
    "\n",
    "ax.set_xlabel(\"kr\", fontsize=12)\n",
    "ax.set_ylabel(r\"$\\langle\\log(g)\\rangle$\", fontsize=12)\n",
    "ax.legend(fontsize=12, loc=\"best\")\n",
    "\n",
    "ax.legend()\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "applications": [
   "Nanophotonics"
  ],
  "description": "This notebook demonstrates the critical point in electromagnetic Anderson localization.",
  "feature_image": "./img/Anderson_localization_critical_point.png",
  "features": [
   "Parameter sweep"
  ],
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "keywords": "Anderson Localization, nanophotonics, Tidy3D, FDTD",
  "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.0"
  },
  "redirect_from": "/tidy3d/q7ras6JBww",
  "title": "Critical Point in Electromagnetic Anderson Localization in Three Dimensions | Flexcompute"
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
