{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"provenance":[{"file_id":"1zTtXm1vTteOqb8r50tO8VM0fN7EhX7H_","timestamp":1694342620432},{"file_id":"1JrJRijkDwZ11GZ0Mg68TmlwUZKdbbDjS","timestamp":1693486578147}],"toc_visible":true,"authorship_tag":"ABX9TyPOVgUuCE/w/YT9hg6MqEKI"},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"}},"cells":[{"cell_type":"markdown","source":[""],"metadata":{"id":"JAAnG_Wf1ALR"}},{"cell_type":"markdown","source":[" The following notes written by Sergio Gutiérrez Rodrigo () . Distributed under License Creative Commons Atribución-NoComercial-CompartirIgual 4.0 Internacional\n","\n"],"metadata":{"id":"tYZjdh8TvE7-"}},{"cell_type":"markdown","source":["```\n","Departamento de Física Aplicada\n","Universidad de Zaragoza\n","Instituto de Nanociencia y Materiales de Aragón (INMA)\n","C/ Pedro Cerbuna, 12, 50009, Zaragoza, España\n","```\n","\n","\n","\n","\n"],"metadata":{"id":"j2H5UHGe1Uf8"}},{"cell_type":"markdown","source":["---\n","# **Óptica - Tema 1 -Coherence and interference phenomena**\n","\n","---"],"metadata":{"id":"D7vYGeB21ZQU"}},{"cell_type":"markdown","source":["# Coherencia"],"metadata":{"id":"_m0cuMqAE0Wr"}},{"cell_type":"markdown","source":["## Definición de ondas planas y pulsos (gaussiano, sinc)"],"metadata":{"id":"EKXxFj93IlzT"}},{"cell_type":"code","source":["import numpy as np\n","import matplotlib.pyplot as plt\n","\n","def onda_plana(t, A, σ, ω_0, φ):\n"," \"\"\"\n"," Genera una onda plana dada la frecuencia central y fase.\n"," Las unidades han de ser consistentes entre t, σ y ω_0.\n"," El pulso está normalizado.\n","\n"," La onda plana se caracteriza por un término exponencial complejo que depende de la frecuencia central de la onda\n"," y la fase de la envolvente de la onda portadora.\n","\n"," E(t) = E * exp(i * ω_0 * t) * exp(i * φ(t)) = A * exp(-t² / 2*σ) * exp(i * ( ω_0 * t + φ(t) ) )\n","\n"," Argumentos:\n"," t (float): vector de tiempos\n"," A (float): amplitud del pulso\n"," σ (float): anchura del pulso\n"," ω_0 (float): frecuencia central (radianes / unidad de tiempo)\n"," φ (float): fase de la envolvente de la onda portadora (rad)\n","\n"," Devuelve:\n"," E_pulso (float): forma del pulso gaussiano en el tiempo especificado\n"," \"\"\"\n","\n"," return A * np.exp(1j * ( ω_0 * t + φ ))\n","\n","def pulso_gaussiano(t, A, σ, ω_0, φ):\n"," \"\"\"\n"," Genera un pulso gaussiano dada su duración, frecuencia central y fase.\n"," Las unidades han de ser consistentes entre t, σ y ω_0.\n"," El pulso está normalizado.\n","\n"," Un pulso gaussiano viene caracterizado por una envolvente en forma de gaussiana de expresión:\n","\n"," E_envolvente = A * exp(-t² / 2*σ)\n","\n"," Donde σ es la duración temporal del pulso, que está relacionada con el ancho de banda por la expresión:\n","\n"," σ = FWHM / (2 * √log(2))\n","\n"," FHWM es la anchura a media altura (full width half maximum).\n","\n"," La envolvente viene modulada por un término exponencial complejo que depende de la frecuencia central de la onda,\n"," de manera que el pulso vendrá dado por el producto de la envolvente y esta exponencial, además del producto\n"," con la exponencial compleja que lleva la fase de la envolvente de la onda portadora.\n","\n"," E(t) = E_envolvente * exp(i * ω_0 * t) * exp(i * φ(t)) = A * exp(-t² / 2*σ) * exp(i * ( ω_0 * t + φ(t) ) )\n","\n"," Argumentos:\n"," t (float): vector de tiempos\n"," A (float): amplitud del pulso\n"," σ (float): anchura del pulso\n"," ω_0 (float): frecuencia central (radianes / unidad de tiempo)\n"," φ (float): fase de la envolvente de la onda portadora (rad)\n","\n"," Devuelve:\n"," E_pulso (float): forma del pulso gaussiano en el tiempo especificado\n"," \"\"\"\n","\n"," return A * np.exp(-t*t / (2 * σ)) * np.exp(1j * ( ω_0 * t + φ ))\n","\n","def pulso_sinc(t, A, σ, ω_0, φ):\n"," \"\"\"\n"," Genera un pulso tipo sinc() gaussiano dada su duración, frecuencia central y fase.\n"," Las unidades han de ser consistentes entre t, σ y ω_0.\n"," El pulso está normalizado.\n","\n"," Un pulso gaussiano viene caracterizado por una envolvente en forma de gaussiana de expresión:\n","\n"," E_envolvente = A * sinc(t /*σ)\n","\n","\n"," La envolvente viene modulada por un término exponencial complejo que depende de la frecuencia central de la onda,\n"," de manera que el pulso vendrá dado por el producto de la envolvente y esta exponencial, además del producto\n"," con la exponencial compleja que lleva la fase de la envolvente de la onda portadora.\n","\n"," E(t) = E_envolvente * exp(i * ω_0 * t) * exp(i * φ(t)) =A * sinc(t /σ) * exp(i * ( ω_0 * t + φ(t) ) )\n","\n"," Los primeros mínimos se encuentran en +-pi*σ\n","\n"," Argumentos:\n"," t (float): vector de tiempos\n"," A (float): amplitud del pulso\n"," σ (float): anchura del pulso\n"," ω_0 (float): frecuencia central (radianes / unidad de tiempo)\n"," φ (float): fase de la envolvente de la onda portadora (rad)\n","\n"," Devuelve:\n"," E_pulso (float): forma del pulso gaussiano en el tiempo especificado\n"," \"\"\"\n","\n"," return A*np.sinc(t / (np.pi* σ))*np.exp(1j * ( ω_0 * t + φ )) #np.sinc(x) = np.sin(pi*x)/(pi*x)) https://numpy.org/doc/stable/reference/generated/numpy.sinc.html"],"metadata":{"id":"SIBMiOXCE2at"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["## Parámetros"],"metadata":{"id":"aX-287CO6Vzc"}},{"cell_type":"code","source":["c=299792458.0 #m/s\n","pasos_temporales = 4000\n","\n","# -- Parámetros del pulso --\n","A = 1 # Amplitud del pulso\n","λ_0 = 100.55 # Longitud de onda de ejemplo (en micrómetros)\n","ω_0 = 2 * np.pi * c * 1e-12 / (λ_0 * 1e-6) # Frecuencia angular del pulso (rad / ps)\n","σ = 0.2 # Duración del pulso (ps)\n","t, Δt = np.linspace(0, 200*σ, num=pasos_temporales, retstep=True) # Vector de tiempos (centrado en cero, ps). Guardamos la separación entre datos\n","to=np.max(t)/2\n","print(\"Δt (ps)=\",Δt)\n","fs=1/Δt\n","print(\"fs=1/Δt sampling rate (1/ps)=\",fs)\n"],"metadata":{"id":"5G8qOMEg5281","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1702312331399,"user_tz":-60,"elapsed":4,"user":{"displayName":"SERGIO GUTIERREZ RODRIGO","userId":"07959720391705098820"}},"outputId":"d112615a-933d-427d-9641-c66435e2d9fe"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["Δt (ps)= 0.010002500625156289\n","fs=1/Δt sampling rate (1/ps)= 99.97500000000001\n"]}]},{"cell_type":"markdown","source":["## Cálculo del pulso"],"metadata":{"id":"cMS7UyuXIVPV"}},{"cell_type":"code","source":["tipo_onda='gaussiana'\n","if(tipo_onda=='onda plana'):\n"," # Fase\n"," φ_0 = 0* np.ones(pasos_temporales) # Fase (constante en este caso)\n"," #φ_0 = (t-to)**2 # Variable con t\n"," onda =onda_plana(t-to, A, σ, ω_0, φ_0)\n","\n","\n","if(tipo_onda=='gaussiana'):\n"," φ_0 = 0* np.ones(pasos_temporales) # Fase (constante en este caso)\n"," onda=pulso_gaussiano(t-to, A, σ, ω_0, φ_0) # Vector con el campo complejo del pulso\n","\n","\n","if(tipo_onda=='sinc'):\n"," φ_0 = 0* np.ones(pasos_temporales) # Fase (constante en este caso)\n"," onda=pulso_sinc(t-to, A, σ, ω_0, φ_0) # Vector con el campo complejo del pulso\n","\n"],"metadata":{"id":"J16BhzHbG7PF"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["## Representación gráfica"],"metadata":{"id":"iILvcQsGIZ7P"}},{"cell_type":"code","source":["plt.figure(figsize=(16, 4))\n","plt.plot(t,np.real(onda),label='$Re(E(t))$')\n","plt.plot(t,np.abs(onda),label='$|E(t)|$')\n","delay=0.0\n","plt.plot(t+delay,np.real(onda),label=r'$Re(E(t+\\tau))$',\n"," color='red',linestyle='--')\n","plt.axhline(0.0,color='grey',linestyle='--')\n","plt.xlabel(r'$t$ (ps)')\n","plt.ylabel(r'$Re(E)$')\n","plt.axvline(to+np.pi*σ,color='grey',linestyle='--',label=r'$\\pi \\sigma$')\n","#plt.xlim(10,10+2*np.pi*1)\n","plt.legend()\n","plt.show()"],"metadata":{"id":"1-vL5MdFHG22","colab":{"base_uri":"https://localhost:8080/","height":392},"executionInfo":{"status":"ok","timestamp":1702312358341,"user_tz":-60,"elapsed":1579,"user":{"displayName":"SERGIO GUTIERREZ RODRIGO","userId":"07959720391705098820"}},"outputId":"ad2e1f12-85f6-44eb-a429-d50c27b8b46b"},"execution_count":null,"outputs":[{"output_type":"display_data","data":{"text/plain":[""],"image/png":"iVBORw0KGgoAAAANSUhEUgAABTUAAAF3CAYAAAB0Vq/hAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAACrEklEQVR4nOzdd3xV9f3H8de5KztkkoQZCAHZUwIOoIqAWqvVqjjqqOKkVvmpraNSB9K6qnVU67bWOiu21aKI4kTRhCGgCLIJIWFkJ3ed8/vj3HuTm8UwjOj7+Xjcx733ez7ne88J3MPhk8/3+zUsy7IQERERERERERER6SAcB/sARERERERERERERPaGkpoiIiIiIiIiIiLSoSipKSIiIiIiIiIiIh2KkpoiIiIiIiIiIiLSoSipKSIiIiIiIiIiIh2KkpoiIiIiIiIiIiLSoSipKSIiIiIiIiIiIh2KkpoiIiIiIiIiIiLSobgO9gH8kJimSXFxMUlJSRiGcbAPR0REREREREREpEOxLIuqqiq6dOmCw9F6PaaSmu2ouLiY7t27H+zDEBERERERERER6dA2bdpEt27dWt2upGY7SkpKAuwfenJy8kE+GhERERERERERkY6lsrKS7t27R/JsrVFSsx2Fh5wnJycrqSkiIiLyA+T3+3n88ccBmDZtGm63+yAfkYiIiMgP0+6mdlRSU0RERERkD1mWRVlZWeS1iIiIiBwcWv1cREREREREREREOhQlNUVERERERERERKRD0fBzERERERERERE5oILBIH6//2AfhhwETqcTl8u12zkzd0dJTREREREREREROWCqq6vZvHmz5qf+EYuPjycnJwePx7PPfSipKSIiIiIiIiIiB0QwGGTz5s3Ex8eTmZn5vav1pGOxLAufz0dZWRnr1q0jPz8fh2PfZsfskEnNDz/8kLvvvpvCwkK2bt3K66+/zimnnNLmPgsWLGDGjBmsWLGC7t27c/PNN3PBBRdExTz88MPcfffdlJSUMHToUB588EFGjx69/05ERERERDoUwzDo1KlT5LWIiIjsHb/fj2VZZGZmEhcXd7APRw6CuLg43G43GzZswOfzERsbu0/9dMiFgmpqahg6dCgPP/zwHsWvW7eOE088kZ/85CcsWbKEq6++mosvvpi33347EvPSSy8xY8YMZs6cSVFREUOHDmXy5MmUlpbu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\n"},"metadata":{}}]},{"cell_type":"markdown","source":["# Cálculo numérico del grado de coherencia $\\gamma(\\tau)$ a partir de $E(t)$"],"metadata":{"id":"ZKuGqP3xrx0M"}},{"cell_type":"markdown","source":["$\\gamma(\\tau)=\\dfrac{\\Gamma(\\tau)}{Y}=\\dfrac{}{}$"],"metadata":{"id":"5kXZWEzLrxmr"}},{"cell_type":"markdown","source":["**Comentario**: para ondas planas, con o sin fase temporal, el resultado es sólo aproximado. Para poder realizarlo hay que truncar ambas ondas. Serían en realidad paquetes de onda extensos en el tiempo, en lugar de verdaderas ondas planas."],"metadata":{"id":"1xfiy6_ZMV98"}},{"cell_type":"code","source":["def introduce_wave(x,N,pos):\n"," '''\n"," Genera un vector x \"expandido\" incrustando el original en un vector\n"," con más pasos temporales e iniciado con ceros\n"," '''\n"," n=x.shape[0]\n"," y=np.zeros((N*n),dtype=complex)\n"," if n > y.shape[0]:\n"," raise ValueError(\"n should be less than or equal to the number of columns in y.\")\n"," # Copy the y array to avoid modifying it in-place\n"," x_expand = y.copy()\n"," # Determine the starting index for insertion\n"," # Range: 0, y.shape[0] - n + 1\n"," # Substitute the values from x into y\n"," x_expand[ pos:pos + n] = x\n"," return x_expand\n","\n","def gamma_tau(E,tau,shape_ini,times_shape_ini,tau0):\n"," '''\n"," Calcula la función de correlación (promedio temporal de E*(t)|E(t+tau))\n"," salvo factores ctes (tiempo de simulación T y dt )\n"," '''\n"," N=times_shape_ini # Los vectores de campo expandido tendrá N veces el tamaño original\n"," Et=introduce_wave(E,N,tau0) # Campo E(t)\n"," Ettau=introduce_wave(E,N,tau) # Campo E(t+tau)\n"," promedio_temporal=np.sum(np.conjugate(Et)*Ettau) # \"Integral (suma)\" de \n"," return promedio_temporal\n","\n","'''\n","Se calcula la función de correlación, \\Gamma, para muchos valores de tau\n","La idea es \"barrer\" E(t+tau) sobre el campo E(t)\n","'''\n","E=onda # Se ha definido previamente el campo en el array onda\n","n=E.shape[0]\n","N=10\n","tau0=int(N*n/2)\n","Gamma =[]\n","for tau in range(0, n*N - n + 1):\n"," Gamma.append(gamma_tau(E,tau,n,N,tau0))\n","Gamma=np.array(Gamma)\n","gamma=Gamma/Gamma[tau0] # Se calcula el grado de coherencia temporal \\gamma"],"metadata":{"id":"QRYQn8WhuRIK"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["## Ejemplo de campo \"expandido\""],"metadata":{"id":"NC13hMkGwnJe"}},{"cell_type":"code","source":["Et=introduce_wave(E,N,int(N*n/2)) #int(N*n/2))\n","t_rango_expand=Δt*(np.linspace(0,Et.shape[0],Et.shape[0]))\n","plt.plot(t_rango_expand,np.real(Et),label=r'Re($E(t))$',\n"," color='red',linestyle='-')\n","plt.xlabel(r'$t$ (ps)')\n","#plt.xlim(0,0.3)\n","plt.legend()\n","plt.show()"],"metadata":{"id":"-AwRrhnvjMfZ","colab":{"base_uri":"https://localhost:8080/","height":453},"executionInfo":{"status":"ok","timestamp":1702312380724,"user_tz":-60,"elapsed":453,"user":{"displayName":"SERGIO GUTIERREZ RODRIGO","userId":"07959720391705098820"}},"outputId":"4dc49ae2-d090-4d6f-ef4c-093d043047f8"},"execution_count":null,"outputs":[{"output_type":"display_data","data":{"text/plain":[""],"image/png":"iVBORw0KGgoAAAANSUhEUgAAAjgAAAG0CAYAAAA/713IAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA5R0lEQVR4nO3de1xVZd7///fmtJEM0DhsSFI8jOktYmEiNVPOwAjqt9Gpu1sduz2M4TdHmxKzpEmttOg8lfnNmfLUoxo7TDozWYyE2ZGkUKY049ZuFFM2pAxsEQWE9fvDn7t2nJUtey9ez8djPWRf61rXvj4tcr9dp20xDMMQAACAifh09QQAAAA6GwEHAACYDgEHAACYDgEHAACYDgEHAACYDgEHAACYDgEHAACYjl9XT6ArNDY26siRI7r44otlsVi6ejoAAKAdDMPQ8ePHFR0dLR+f1o/RdMuAc+TIEcXExHT1NAAAwDk4dOiQ+vTp02qfbhlwLr74Ykln/gMFBwd38WwAAEB7OBwOxcTEOD/HW9MtA87Z01LBwcEEHAAAvEx7Li/hImMAAGA6BBwAAGA6BBwAAGA63fIaHAAAGhoaVF9f39XTwA/4+/vL19e3U8Yi4AAAuhXDMGS321VZWdnVU0EzQkNDZbPZzvs5dQQcAEC3cjbcREREKCgoiAe+egjDMFRTU6Py8nJJUlRU1HmNR8ABAHQbDQ0NznBzySWXdPV08CM9evSQJJWXlysiIuK8TldxkTEAoNs4e81NUFBQF88ELTm7b873+igCDgCg2+G0lOfqrH1DwAEAAKbj1oDzwQcf6Prrr1d0dLQsFos2b97c5jbbt2/XlVdeKavVqoEDB2r9+vVN+qxatUr9+vVTYGCgEhMTlZ+f3/mTBwAAXsutAefEiROKj4/XqlWr2tW/uLhYEyZM0M9//nMVFhbqjjvu0C233KJ//vOfzj6vvvqqMjIytGzZMu3cuVPx8fFKTU11XnUNAABgMQzDuCBvZLFo06ZNmjRpUot97r77bm3ZskW7d+92tk2ZMkWVlZXKzs6WJCUmJuqqq67Ss88+K0lqbGxUTEyMbrvtNi1evLjZcWtra1VbW+t8ffbbSKuqqviyTQDtV1MjcXGqVzt16pSKi4sVGxurwMDArp4OmtHaPnI4HAoJCWnX57dHXYOTl5enlJQUl7bU1FTl5eVJkurq6lRQUODSx8fHRykpKc4+zcnKylJISIhziYmJcU8BAMzrgw+kiy6S7rqrq2cCdIpjx44pIiJCBw4ccMt2U6ZM0RNPPNFmm7t4VMCx2+2KjIx0aYuMjJTD4dDJkyd19OhRNTQ0NNvHbre3OG5mZqaqqqqcy6FDh9wyfwAmtnDhmT8fe6xr54FubebMmbJYLLJYLPL391dsbKzuuusunTp1qsNjPfjgg5o4caL69evnbLvuuuuc4/9wmT59eqvbLViwQDfccIPL+Pfee68efPBBVVVVtdrmLt3iQX9Wq1VWq7WrpwEA8ESGceb0Y1cICpI6eFt0Wlqa1q1bp/r6ehUUFGjGjBmyWCx65JFH2j1GTU2N1qxZ43KNq2EY2rVrlx5//HFNmzbNpX/Pnj1b3E6S8vPzNWHCBJe2YcOGacCAAXrppZc0b968FtvcxaOO4NhsNpWVlbm0lZWVKTg4WD169FBYWJh8fX2b7WOz2S7kVAEAZlFTI/Xs2TXLOQQrq9Uqm82mmJgYTZo0SSkpKcrJyXGub2xsVFZWlmJjY9WjRw/Fx8frjTfecBnj7bffltVq1ejRo51t+/bt0/Hjx3XttdfKZrO5LGcDzo+3q6urk7+/vz755BP94Q9/kMVicRnz+uuv18aNG13eu7k2d/CogJOUlKTc3FyXtpycHCUlJUmSAgIClJCQ4NKnsbFRubm5zj4AAHQXu3fv1ieffKKAgABnW1ZWll588UWtXr1ae/bs0YIFC3TzzTfr/fffd/b58MMPlZCQ4DJWQUGB/Pz8NHz48Bbf78fb+fn56eOPP5YkFRYWqrS01HlTkCSNGjVK+fn5Ljf6NNfmDm49RVVdXa39+/c7XxcXF6uwsFC9e/fWZZddpszMTB0+fFgvvviiJOnWW2/Vs88+q7vuuku//e1vtW3bNr322mvasmWLc4yMjAzNmDFDI0eO1KhRo/TUU0/pxIkTmjVrljtLAQCYVVCQVF3dde/dQW+99ZZ69uyp06dPq7a2Vj4+Ps47i2tra/XQQw/p3Xffdf7Dv3///vroo4/0pz/9Sdddd50k6eDBg4qOjnYZd+fOnWpoaGjyHV3Tpk3Tn/70p2a38/Hx0ZEjR3TJJZcoPj6+yVyjo6NVV1cnu92uvn37ttjmDm4NOJ9//rl+/vOfO19nZGRIkmbMmKH169ertLRUJSUlzvWxsbHasmWLFixYoKefflp9+vTRCy+8oNTUVGefyZMn67vvvtPSpUtlt9s1YsQIZWdnN7nwGAA6FY/2Ny+L5cwdcl7i5z//uZ577jmdOHFCf/zjH+Xn56cbb7xRkrR//37V1NTol7/8pcs2dXV1uuKKK5yvT5482eQW7J07d2rq1Km6//77Xdp79+7d6na7du1qNtxI3395Zs0PTsU11+YObg04Y8aMUWuP2WnuKcVjxozRrl27Wh13/vz5mj9//vlODwAAr3PRRRdp4MCBkqS1a9cqPj5ea9as0ezZs1X9/x+J2rJliy699FKX7X54s01YWJj+/e9/u6zfuXOnHnzwQefYzWluu8LCwhYDTkVFhSQpPDy81TZ38KhrcADAY12YZ6ICHeLj46N77rlH9957r06ePKmhQ4fKarWqpKREAwcOdFl++Ay4K664Ql999ZXz9f/+7/+qsrKyxaDS0naS9OWXX2rEiBHN9t+9e7f69OmjsLCwVtvcgYADAIAXu+mmm+Tr66tVq1bp4osv1p133qkFCxZow4YN+uabb7Rz506tXLlSGzZscG6TmpqqPXv2OI/GFBQUSPr+uXI/XBobG1vcTjpzs09RUZGOHDnS5Pk2H374ocaOHdtmmzsQcAAA8GJ+fn6aP3++Hn30UZ04cULLly/XkiVLlJWVpSFDhigtLU1btmxRbGysc5u4uDhdeeWVeu211ySdOT0lSYMGDVJUVJRz6devn06fPt3idpK0YsUKrV+/XpdeeqlWrFjhbD916pQ2b96s9PT0Vtvc5YJ9F5Un6ch3WQCAJGnUKOmzz8783P3+2jQNvovqe1u2bNGiRYu0e/du+fi0/3hHe7d77rnntGnTJm3durXVth/rrO+i6hZPMgYAAK4mTJigffv26fDhwx36jsb2bufv76+VK1e22eYuHMHhCA6A9uAIjilwBMfzmfLbxAEAADoDAQcA0O10w5MXXqOz9g0BBwDQbfj7+0ty/1N0ce7O7puz++pccZExAKDb8PX1VWhoqMrLyyVJQUFBsvA1HB7BMAzV1NSovLxcoaGh8vX1Pa/xCDgAgG7FZrNJkjPkwLOEhoY699H5IOAAALoVi8WiqKgoRUREqL6+vqungx/w9/c/7yM3ZxFwAADdkq+vb6d9mMLzcJExALQH12kAXoWAAwAATIeAAwAATIeAAwDtwYPhAK9CwAEAAKZDwAGA9uAiY8CrEHAAAIDpEHAAAIDpEHAAAIDpEHAAAIDpEHAAoD24yBjwKgQcAGgPnoMDeBUCDgAAMB0CDgAAMB0CDgC0B9fgAF6FgAMAAEyHgAMAAEyHgAMAAEyHgAMAAEznggScVatWqV+/fgoMDFRiYqLy8/Nb7DtmzBhZLJYmy4QJE5x9Zs6c2WR9WlrahSgFAAB4AT93v8Grr76qjIwMrV69WomJiXrqqaeUmpqqoqIiRURENOn/5ptvqq6uzvn62LFjio+P10033eTSLy0tTevWrXO+tlqt7isCAGpru3oGADrA7UdwnnzySaWnp2vWrFkaOnSoVq9eraCgIK1du7bZ/r1795bNZnMuOTk5CgoKahJwrFarS79evXq5uxQA3Vlh4fc/nzrVZdMA0D5uDTh1dXUqKChQSkrK92/o46OUlBTl5eW1a4w1a9ZoypQpuuiii1zat2/froiICA0ePFhz587VsWPHWhyjtrZWDofDZQGAc1ZW1tUzANAGtwaco0ePqqGhQZGRkS7tkZGRstvtbW6fn5+v3bt365ZbbnFpT0tL04svvqjc3Fw98sgjev/99zVu3Dg1NDQ0O05WVpZCQkKcS0xMzLkXBQAAPJ7br8E5H2vWrFFcXJxGjRrl0j5lyhTnz3FxcRo+fLgGDBig7du3Kzk5uck4mZmZysjIcL52OByEHAAATMytR3DCwsLk6+ursh8dzi0rK5PNZmt12xMnTmjjxo2aPXt2m+/Tv39/hYWFaf/+/c2ut1qtCg4OdlkA4JzxzeKAx3NrwAkICFBCQoJyc3OdbY2NjcrNzVVSUlKr277++uuqra3VzTff3Ob7fPvttzp27JiioqLOe84AAMD7uf0uqoyMDD3//PPasGGD9u7dq7lz5+rEiROaNWuWJGn69OnKzMxsst2aNWs0adIkXXLJJS7t1dXVWrRokT799FMdOHBAubm5mjhxogYOHKjU1FR3lwMAALyA26/BmTx5sr777jstXbpUdrtdI0aMUHZ2tvPC45KSEvn4uOasoqIiffTRR9q6dWuT8Xx9ffXFF19ow4YNqqysVHR0tMaOHavly5fzLBwAACBJshhG9zuZ7HA4FBISoqqqKq7HAdA+Fsv3PxcXS/36ddlUgO6qI5/ffBcVAAAwHQIOAAAwHQIOAHRU9zuzD3gdAg4AADAdAg4AADAdAg4AADAdAg4AADAdAg4AADAdAg4AADAdAg4AdBS3iQMej4ADAABMh4ADAABMh4ADAABMh4ADAABMh4ADAABMh4ADAB3FXVSAxyPgAAAA0yHgAAAA0yHgAAAA0yHgAAAA0yHgAAAA0yHgAAAA0yHgAEBHcZs44PEIOAAAwHQIOAAAwHQIOADQURZLV88AQBsIOADQUVyDA3g8Ag4AADAdAg4AADAdAg4AdBSnqACPR8ABAACmQ8ABAACmQ8ABgI7iNnHA412QgLNq1Sr169dPgYGBSkxMVH5+fot9169fL4vF4rIEBga69DEMQ0uXLlVUVJR69OihlJQU7du3z91lAMAZXIMDeDy3B5xXX31VGRkZWrZsmXbu3Kn4+HilpqaqvLy8xW2Cg4NVWlrqXA4ePOiy/tFHH9Uzzzyj1atXa8eOHbrooouUmpqqU6dOubscAADgBdwecJ588kmlp6dr1qxZGjp0qFavXq2goCCtXbu2xW0sFotsNptziYyMdK4zDENPPfWU7r33Xk2cOFHDhw/Xiy++qCNHjmjz5s3NjldbWyuHw+GyAAAA83JrwKmrq1NBQYFSUlK+f0MfH6WkpCgvL6/F7aqrq9W3b1/FxMRo4sSJ2rNnj3NdcXGx7Ha7y5ghISFKTExsccysrCyFhIQ4l5iYmE6oDgAAeCq3BpyjR4+qoaHB5QiMJEVGRsputze7zeDBg7V27Vr97W9/00svvaTGxkZdffXV+vbbbyXJuV1HxszMzFRVVZVzOXTo0PmWBgAAPJhfV0/gx5KSkpSUlOR8ffXVV2vIkCH605/+pOXLl5/TmFarVVartbOmCAAAPJxbj+CEhYXJ19dXZWVlLu1lZWWy2WztGsPf319XXHGF9u/fL0nO7c5nTAAAYG5uDTgBAQFKSEhQbm6us62xsVG5ubkuR2la09DQoC+//FJRUVGSpNjYWNlsNpcxHQ6HduzY0e4xAQCAubn9FFVGRoZmzJihkSNHatSoUXrqqad04sQJzZo1S5I0ffp0XXrppcrKypIkPfDAAxo9erQGDhyoyspKPfbYYzp48KBuueUWSWfusLrjjju0YsUKDRo0SLGxsVqyZImio6M1adIkd5cDAAC8gNsDzuTJk/Xdd99p6dKlstvtGjFihLKzs50XCZeUlMjH5/sDSf/+97+Vnp4uu92uXr16KSEhQZ988omGDh3q7HPXXXfpxIkTmjNnjiorK/XTn/5U2dnZTR4ICAAAuieLYXS/R3I6HA6FhISoqqpKwcHBXT0dAN7gh1/PUFQk/eQnXTcXoJvqyOc330UFAABMh4ADAB3Fl20CHo+AAwAATIeAAwAATIeAAwAATIeAAwAd1f1uPgW8DgEHAACYDgEHADqKu6gAj0fAAQAApkPAAQAApkPAAYCO4iJjwOMRcAAAgOkQcAAAgOkQcAAAgOkQcACgo7hNHPB4BBwAAGA6BBwA6CjuogI8HgEHAACYDgEHAACYDgEHAACYDgEHADqKu6gAj0fAAYC21NW5vt65s2vmAaDdCDgA0JacHNfXU6d2zTwAtBsBBwDa0tjo+prbxAGPR8ABAACmQ8ABAACmQ8ABgLZw1xTgdQg4AADAdAg4AADAdAg4AADAdAg4ANAWrsEBvA4BBwAAmM4FCTirVq1Sv379FBgYqMTEROXn57fY9/nnn9fPfvYz9erVS7169VJKSkqT/jNnzpTFYnFZ0tLS3F0GAADwEm4POK+++qoyMjK0bNky7dy5U/Hx8UpNTVV5eXmz/bdv366pU6fqvffeU15enmJiYjR27FgdPnzYpV9aWppKS0udy1/+8hd3lwIAALyExTDc+8zxxMREXXXVVXr22WclSY2NjYqJidFtt92mxYsXt7l9Q0ODevXqpWeffVbTp0+XdOYITmVlpTZv3nxOc3I4HAoJCVFVVZWCg4PPaQwA3ciWLdL/+T+ubXxdA3DBdeTz261HcOrq6lRQUKCUlJTv39DHRykpKcrLy2vXGDU1Naqvr1fv3r1d2rdv366IiAgNHjxYc+fO1bFjx1oco7a2Vg6Hw2UBgHbjImPA67g14Bw9elQNDQ2KjIx0aY+MjJTdbm/XGHfffbeio6NdQlJaWppefPFF5ebm6pFHHtH777+vcePGqaGhodkxsrKyFBIS4lxiYmLOvSgAAODx/Lp6Aq15+OGHtXHjRm3fvl2BgYHO9ilTpjh/jouL0/DhwzVgwABt375dycnJTcbJzMxURkaG87XD4SDkAABgYm49ghMWFiZfX1+VlZW5tJeVlclms7W67eOPP66HH35YW7du1fDhw1vt279/f4WFhWn//v3NrrdarQoODnZZAACAebk14AQEBCghIUG5ubnOtsbGRuXm5iopKanF7R599FEtX75c2dnZGjlyZJvv8+233+rYsWOKiorqlHkDAADv5vbbxDMyMvT8889rw4YN2rt3r+bOnasTJ05o1qxZkqTp06crMzPT2f+RRx7RkiVLtHbtWvXr1092u112u13V1dWSpOrqai1atEiffvqpDhw4oNzcXE2cOFEDBw5Uamqqu8sB0B1xkTHgddx+Dc7kyZP13XffaenSpbLb7RoxYoSys7OdFx6XlJTIx+f7nPXcc8+prq5O//mf/+kyzrJly3TffffJ19dXX3zxhTZs2KDKykpFR0dr7NixWr58uaxWq7vLAQAAXsDtz8HxRDwHB0CHvPOONH68a1v3+6sT6HIe8xwcAACArkDAAQAApkPAAQAApkPAAQAApkPAAQAApkPAAQAApkPAAQAApkPAAQAApkPAAYC28FA/wOsQcAAAgOkQcAAAgOkQcAAAgOkQcACgLVyDA3gdAg4AADAdAg4AADAdAg4AADAdAg4AADAdAg4AADAdAg4AADAdAg4AtIXbxAGvQ8ABAACmQ8ABgLa8+25XzwBABxFwAKAtTz/d1TMA0EEEHAAAYDoEHAAAYDoEHAAAYDoEHAAAYDoEHAAAYDoEHAAAYDoEHAAAYDoEHAAAYDoEHAAAYDoEHAAAYDoXJOCsWrVK/fr1U2BgoBITE5Wfn99q/9dff12XX365AgMDFRcXp7fffttlvWEYWrp0qaKiotSjRw+lpKRo37597iwBAFzxDeOAR3N7wHn11VeVkZGhZcuWaefOnYqPj1dqaqrKy8ub7f/JJ59o6tSpmj17tnbt2qVJkyZp0qRJ2r17t7PPo48+qmeeeUarV6/Wjh07dNFFFyk1NVWnTp1ydzkAcMZbb3X1DAC0wmIY7v1nSGJioq666io9++yzkqTGxkbFxMTotttu0+LFi5v0nzx5sk6cOKG3fvCXx+jRozVixAitXr1ahmEoOjpaCxcu1J133ilJqqqqUmRkpNavX68pU6Y0GbO2tla1tbXO1w6HQzExMaqqqlJwcHDnFZuTI61e3Xqf9vznbu8u6ayxvLHPhX4/artwfS70+7Wnz6efNt9+441tbwt0V7/8pfR//2+nDulwOBQSEtKuz2+/Tn3nH6mrq1NBQYEyMzOdbT4+PkpJSVFeXl6z2+Tl5SkjI8OlLTU1VZs3b5YkFRcXy263KyUlxbk+JCREiYmJysvLazbgZGVl6f777++EitpQXCy9+ab73weAZ/jrX7t6BoDnCgvr0rd3a8A5evSoGhoaFBkZ6dIeGRmpr7/+utlt7HZ7s/3tdrtz/dm2lvr8WGZmpktoOnsEp9Ndc430//5f2/0sls7p05ljeWOfC/1+1Hbh+lzo92utT329dNNNTdt/9SspLa3tsYHuaujQLn17twYcT2G1WmW1Wt3/Rv/xH2cWAOb3wgtSeHhXzwJAC9x6kXFYWJh8fX1VVlbm0l5WViabzdbsNjabrdX+Z//syJgA0OkCArp6BgBa4daAExAQoISEBOXm5jrbGhsblZubq6SkpGa3SUpKcukvSTk5Oc7+sbGxstlsLn0cDod27NjR4pgA0OkIOIBHc/spqoyMDM2YMUMjR47UqFGj9NRTT+nEiROaNWuWJGn69Om69NJLlZWVJUm6/fbbdd111+mJJ57QhAkTtHHjRn3++ef685//LEmyWCy64447tGLFCg0aNEixsbFasmSJoqOjNWnSJHeXAwBnXIjT3gDOmdsDzuTJk/Xdd99p6dKlstvtGjFihLKzs50XCZeUlMjH5/sDSVdffbVeeeUV3Xvvvbrnnns0aNAgbd68WcOGDXP2ueuuu3TixAnNmTNHlZWV+ulPf6rs7GwFBga6uxwAOMOHB8EDnsztz8HxRB25jx4AlJwsbdvm2tb9/uoEulxHPr/5JwgAtMWvW9xwCpgKAQcAAJgOAQcA2tLehxMC8BgEHABoCwEH8DoEHABoCwEH8DoEHAAAYDoEHABoC0dwAK9DwAGAthBwAK9DwAGAthBwAK9DwAEAAKZDwAEAAKZDwAEAAKZDwAEAAKZDwAEAAKZDwAGAtnAXFeB1CDgA0BYCDuB1CDgAAMB0CDgAAMB0CDgAAMB0CDgA0BauwQG8DgEHAACYDgEHAACYDgEHAACYDgEHANqyYEFXzwBABxFwAKAtSUmurxcv7pp5AGg3Ag4AdBR3VQEej4ADAG35caAxjK6ZB4B2I+AAAADTIeAAQEdxigrweAQcAABgOgQcAGgLR2wAr0PAAQAApuPWgFNRUaFp06YpODhYoaGhmj17tqqrq1vtf9ttt2nw4MHq0aOHLrvsMv3+979XVVWVSz+LxdJk2bhxoztLAQAAXsTPnYNPmzZNpaWlysnJUX19vWbNmqU5c+bolVdeabb/kSNHdOTIET3++OMaOnSoDh48qFtvvVVHjhzRG2+84dJ33bp1SktLc74ODQ11ZykAAMCLuC3g7N27V9nZ2frss880cuRISdLKlSs1fvx4Pf7444qOjm6yzbBhw/TXv/7V+XrAgAF68MEHdfPNN+v06dPy8/t+uqGhobLZbO6aPgB878fX4HBNDuDx3HaKKi8vT6Ghoc5wI0kpKSny8fHRjh072j1OVVWVgoODXcKNJM2bN09hYWEaNWqU1q5dK6OVB2/V1tbK4XC4LAAAwLzcdgTHbrcrIiLC9c38/NS7d2/Z7fZ2jXH06FEtX75cc+bMcWl/4IEH9Itf/EJBQUHaunWrfve736m6ulq///3vmx0nKytL999//7kVAgAAvE6Hj+AsXry42Yt8f7h8/fXX5z0xh8OhCRMmaOjQobrvvvtc1i1ZskTXXHONrrjiCt19992666679Nhjj7U4VmZmpqqqqpzLoUOHznt+ALoRTkkBXqfDR3AWLlyomTNnttqnf//+stlsKi8vd2k/ffq0Kioq2rx25vjx40pLS9PFF1+sTZs2yd/fv9X+iYmJWr58uWpra2W1Wpust1qtzbYDAABz6nDACQ8PV3h4eJv9kpKSVFlZqYKCAiUkJEiStm3bpsbGRiUmJra4ncPhUGpqqqxWq/7+978rMDCwzfcqLCxUr169CDEAAECSG6/BGTJkiNLS0pSenq7Vq1ervr5e8+fP15QpU5x3UB0+fFjJycl68cUXNWrUKDkcDo0dO1Y1NTV66aWXXC4IDg8Pl6+vr/7xj3+orKxMo0ePVmBgoHJycvTQQw/pzjvvdFcpAADAy7j1OTgvv/yy5s+fr+TkZPn4+OjGG2/UM88841xfX1+voqIi1dTUSJJ27tzpvMNq4MCBLmMVFxerX79+8vf316pVq7RgwQIZhqGBAwfqySefVHp6ujtLAdCdcZs44HUsRmv3V5uUw+FQSEiI8xZ0AGiVYUg+P7gn4557pAcf7Lr5AN1URz6/+S4qAABgOgQcAABgOgQcAGgL1+AAXoeAAwAATIeAAwAATIeAAwAATIeAAwAATIeAAwAATIeAAwAdxV1UgMcj4AAAANMh4AAAANMh4AAAANMh4AAAANMh4ABAR3GRMeDxCDgAAMB0CDgAAMB0CDgAAMB0CDgAAMB0CDgA0FFcZAx4PAIOAAAwHQIOAHQUR3AAj0fAAQAApkPAAQAApkPAAQAApkPAAQAApkPAAYCO4iJjwOMRcAAAgOkQcAAAgOkQcAAAgOkQcACgo7gGB/B4BBwAAGA6BBwAAGA6BBwAAGA6bg04FRUVmjZtmoKDgxUaGqrZs2erurq61W3GjBkji8Xistx6660ufUpKSjRhwgQFBQUpIiJCixYt0unTp91ZCgAA8CJ+7hx82rRpKi0tVU5Ojurr6zVr1izNmTNHr7zySqvbpaen64EHHnC+DgoKcv7c0NCgCRMmyGaz6ZNPPlFpaammT58uf39/PfTQQ26rBQCcuMgY8HhuCzh79+5Vdna2PvvsM40cOVKStHLlSo0fP16PP/64oqOjW9w2KChINput2XVbt27VV199pXfffVeRkZEaMWKEli9frrvvvlv33XefAgICmmxTW1ur2tpa52uHw3Ge1QEAAE/mtlNUeXl5Cg0NdYYbSUpJSZGPj4927NjR6rYvv/yywsLCNGzYMGVmZqqmpsZl3Li4OEVGRjrbUlNT5XA4tGfPnmbHy8rKUkhIiHOJiYk5z+oAdGscwQE8ntuO4NjtdkVERLi+mZ+fevfuLbvd3uJ2v/nNb9S3b19FR0friy++0N13362ioiK9+eabznF/GG4kOV+3NG5mZqYyMjKcrx0OByEHwLkzjK6eAYA2dDjgLF68WI888kirffbu3XvOE5ozZ47z57i4OEVFRSk5OVnffPONBgwYcE5jWq1WWa3Wc54TAADwLh0OOAsXLtTMmTNb7dO/f3/ZbDaVl5e7tJ8+fVoVFRUtXl/TnMTEREnS/v37NWDAANlsNuXn57v0KSsrk6QOjQsA54xTVIDH63DACQ8PV3h4eJv9kpKSVFlZqYKCAiUkJEiStm3bpsbGRmdoaY/CwkJJUlRUlHPcBx98UOXl5c5TYDk5OQoODtbQoUM7WA0AADAjt11kPGTIEKWlpSk9PV35+fn6+OOPNX/+fE2ZMsV5B9Xhw4d1+eWXO4/IfPPNN1q+fLkKCgp04MAB/f3vf9f06dN17bXXavjw4ZKksWPHaujQofrv//5v/etf/9I///lP3XvvvZo3bx6noQBcGBzBATyeWx/09/LLL+vyyy9XcnKyxo8fr5/+9Kf685//7FxfX1+voqIi511SAQEBevfddzV27FhdfvnlWrhwoW688Ub94x//cG7j6+urt956S76+vkpKStLNN9+s6dOnuzw3BwDcqh1HsQF0LYthdL/bARwOh0JCQlRVVaXg4OCung4Ab/DDozZ1dZK/f9fNBeimOvL5zXdRAUBHEW4Aj0fAAQAApkPAAQAApkPAAQAApkPAAQAApkPAAQAApkPAAQAApkPAAQAApkPAAQAApkPAAQAApkPAAQAApkPAAQAApkPAAQAApkPAAQAApkPAAQAApkPAAQAApkPAAQAApkPAAQAApkPAAQAApkPAAQAApkPAAQAApkPAAQAApkPAAQAApkPAAQAApkPAAQAApkPAAQAApkPAAQAApkPAAQAApkPAAQAApkPAAQAApkPAAQAApkPAAQAApuPWgFNRUaFp06YpODhYoaGhmj17tqqrq1vsf+DAAVkslmaX119/3dmvufUbN250ZykAAMCL+Llz8GnTpqm0tFQ5OTmqr6/XrFmzNGfOHL3yyivN9o+JiVFpaalL25///Gc99thjGjdunEv7unXrlJaW5nwdGhra6fMHAADeyW0BZ+/evcrOztZnn32mkSNHSpJWrlyp8ePH6/HHH1d0dHSTbXx9fWWz2VzaNm3apP/6r/9Sz549XdpDQ0Ob9AUAAJDceIoqLy9PoaGhznAjSSkpKfLx8dGOHTvaNUZBQYEKCws1e/bsJuvmzZunsLAwjRo1SmvXrpVhGC2OU1tbK4fD4bIAAADzctsRHLvdroiICNc38/NT7969Zbfb2zXGmjVrNGTIEF199dUu7Q888IB+8YtfKCgoSFu3btXvfvc7VVdX6/e//32z42RlZen+++8/t0IAAIDX6fARnMWLF7d4IfDZ5euvvz7viZ08eVKvvPJKs0dvlixZomuuuUZXXHGF7r77bt1111167LHHWhwrMzNTVVVVzuXQoUPnPT8AAOC5OnwEZ+HChZo5c2arffr37y+bzaby8nKX9tOnT6uioqJd18688cYbqqmp0fTp09vsm5iYqOXLl6u2tlZWq7XJeqvV2mw7AAAwpw4HnPDwcIWHh7fZLykpSZWVlSooKFBCQoIkadu2bWpsbFRiYmKb269Zs0a/+tWv2vVehYWF6tWrFyEGAABIcuM1OEOGDFFaWprS09O1evVq1dfXa/78+ZoyZYrzDqrDhw8rOTlZL774okaNGuXcdv/+/frggw/09ttvNxn3H//4h8rKyjR69GgFBgYqJydHDz30kO688053lQIAALyMW5+D8/LL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nu6yD6uqqpzrPbk+wzCMv//978aWLVuM//mf/zGKioqMe+65x/D39zd2795tGIZ37z/DaLs+b99/P5Sfn2/069fPGD58uHH77bc72z1tHxJwOsmoUaOMefPmOV83NDQY0dHRRlZWVhfO6twsW7bMiI+Pb3ZdZWWl4e/vb7z++uvOtr179xqSjLy8vAs0w/Pz4wDQ2Nho2Gw247HHHnO2VVZWGlar1fjLX/5iGIZhfPXVV4Yk47PPPnP2eeeddwyLxWIcPnz4gs29PVoKOBMnTmxxG2+qzzAMo7y83JBkvP/++4ZhtO/38u233zZ8fHwMu93u7PPcc88ZwcHBRm1t7YUtoA0/rs8wznxA/vDD5Me8qb6zevXqZbzwwgum239nna3PMMyz/44fP24MGjTIyMnJcanJE/chp6g6QV1dnQoKCpSSkuJs8/HxUUpKivLy8rpwZudu3759io6OVv/+/TVt2jSVlJRIkgoKClRfX+9S6+WXX67LLrvMa2stLi6W3W53qSkkJESJiYnOmvLy8hQaGqqRI0c6+6SkpMjHx0c7duy44HM+F9u3b1dERIQGDx6suXPn6tixY8513lZfVVWVJKl3796S2vd7mZeXp7i4OEVGRjr7pKamyuFwaM+ePRdw9m37cX1nvfzyywoLC9OwYcOUmZmpmpoa5zpvqq+hoUEbN27UiRMnlJSUZLr99+P6zjLD/ps3b54mTJjgsq8kz/x/sFt+2WZnO3r0qBoaGlx2miRFRkbq66+/7qJZnbvExEStX79egwcPVmlpqe6//3797Gc/0+7du2W32xUQEKDQ0FCXbSIjI2W327tmwufp7Lyb239n19ntdkVERLis9/PzU+/evb2i7rS0NN1www2KjY3VN998o3vuuUfjxo1TXl6efH19vaq+xsZG3XHHHbrmmms0bNgwSWrX76Xdbm92H59d5ymaq0+SfvOb36hv376Kjo7WF198obvvvltFRUV68803JXlHfV9++aWSkpJ06tQp9ezZU5s2bdLQoUNVWFhoiv3XUn2SOfbfxo0btXPnTn322WdN1nni/4MEHDQxbtw458/Dhw9XYmKi+vbtq9dee009evTowpnhXE2ZMsX5c1xcnIYPH64BAwZo+/btSk5O7sKZddy8efO0e/duffTRR109Fbdoqb45c+Y4f46Li1NUVJSSk5P1zTffaMCA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\n"},"metadata":{}}]},{"cell_type":"markdown","source":["## Representación de $\\gamma (\\tau)$"],"metadata":{"id":"8ircnlPgwrLI"}},{"cell_type":"code","source":["t_max=np.argmax(Gamma)\n","texpand=Δt*(np.linspace(0,Gamma.shape[0],Gamma.shape[0])-t_max)\n","plt.plot(texpand,np.abs(gamma),label=r'|$\\gamma(\\tau)|$',\n"," color='red',linestyle='-')\n","plt.xlabel(r'$\\tau-\\tau_0$ (ps)')\n","plt.xlim(-100*σ,100*σ)\n","plt.legend()\n","plt.show()"],"metadata":{"id":"jP-yBlwfsyC8","executionInfo":{"status":"ok","timestamp":1702312384259,"user_tz":-60,"elapsed":1209,"user":{"displayName":"SERGIO GUTIERREZ RODRIGO","userId":"07959720391705098820"}},"outputId":"ff46f1d0-821c-42ba-a08e-210edce9192f","colab":{"base_uri":"https://localhost:8080/","height":453}},"execution_count":null,"outputs":[{"output_type":"display_data","data":{"text/plain":[""],"image/png":"iVBORw0KGgoAAAANSUhEUgAAAiwAAAG0CAYAAAARqnxaAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA3bElEQVR4nO3deXRU9f3/8VcSkgkRSJCQhCUQUIkgq7GJkdpCzZeIFKG2HrT9CfJFPCq4xVbBBVyK8AVBWopSqaDfYxXUU6kVvlQbjRtRKouIVQqWzUASQEkgIQuZ+/tjmGFCJoGZuXfuJPN8nDPnTu7c5X2Zmrz6+Xzu50YZhmEIAAAgjEXbXQAAAMDZEFgAAEDYI7AAAICwR2ABAABhj8ACAADCHoEFAACEPQILAAAIe+3sLuBcOJ1OHThwQB07dlRUVJTd5QAAgHNgGIaOHTum7t27Kzo6uDaSVhFYDhw4oPT0dLvLAAAAAdi/f7969uwZ1DFaRWDp2LGjJNcFd+rUyeZqAADAuaisrFR6errn73gwWkVgcXcDderUicACAEArY8ZwDgbdAgCAsEdgAQAAYY/AAgAAwl6rGMMCAIBZGhoaVF9fb3cZbUJsbKxiYmJCci4CCwAgIhiGodLSUh09etTuUtqUpKQkpaWlWT5PGoEFABAR3GElJSVFCQkJTEQaJMMwVF1drfLycklSt27dLD0fgQUA0OY1NDR4wkqXLl3sLqfNaN++vSSpvLxcKSkplnYPMegWANDmucesJCQk2FxJ2+P+N7V6XBCBBQAQMegGMl+o/k0JLAAAIOz5HVg++OADjR07Vt27d1dUVJTWrFlz1n2Kiop06aWXyuFw6MILL9QLL7wQQKkAACBS+R1YqqqqNGTIEC1duvSctt+9e7fGjBmjkSNHauvWrbrnnnt0yy236O9//7vfxQIAgMjk911Co0eP1ujRo895+2XLlqlPnz5auHChJKl///766KOP9PTTTys/P9/f0wNoa6qrpfh4KZoeagDNs/w3RHFxsfLy8hqty8/PV3FxcbP71NbWqrKystELQBv09ttSUpJ02WVSba3d1QBhqaioSBkZGX7tc+TIEaWkpGjPnj3nvM8NN9zgaVwI9vxWsDywlJaWKjU1tdG61NRUVVZW6sSJEz73mTt3rhITEz2v9PR0q8sEYIennpLq66UtW6S33rK7GqDNmDNnjsaNG+dX0Hj44Yc1Z84cVVRUWFdYEMKyDXbmzJmqqKjwvPbv3293SQDMdvy4VFR0+uf1620rBRHIMKSqKntehmHppVVXV+v555/XlClT/Npv4MCBuuCCC/TSSy9ZVFlwLJ/pNi0tTWVlZY3WlZWVqVOnTp4Z8s7kcDjkcDisLg2Anb74wtW64rZ1q22lIAJVV0sdOthz7uPHpfPOC3j3fv36qUuXLnr33Xc9f0cNw1Bubq5GjhyprKwsORwOXX755Y32GzdunN58802fx/zrX/+qa6+9VmPHjtWqVas0bdq0gOuziuUtLLm5uSosLGy07p133lFubq7VpwYQzr780rXs08e1/OIL6eRJ++oBWonVq1dr8+bN+vjjjz3r/vznP2vv3r168MEH9eGHHyorK6vJfitWrNDBgwe1c+dOSdK6det08OBBHTx4UNdcc40kKTs7Wxs3blRtGI4p87uF5fjx49q1a5fn5927d2vr1q06//zz1atXL82cOVMlJSX63//9X0nSbbfdpj/84Q+6//779d///d9699139eqrr2rt2rXmXQWA1udf/3Itx46V/vhH16Db/ftPBxjASgkJrpYOu84dhGHDhmno0KH6+uuvlZeXp+rqas2cOVO//e1v1bFjR+3du1fdu3dvsp/7GUrFxcWKiorSlVdeqQ5ntDJ1795ddXV1Ki0tVe/evYOq02x+B5bPPvtMI0eO9PxcUFAgSZo0aZJeeOEFHTx4UPv27fN83qdPH61du1b33nuvfve736lnz57605/+xC3NQKTbvdu1zMyUeveW/v1vac8eAgtCIyoqqG4Zu/Xr1087duyQJM2fP1/JycmaPHmyJOnEiROKj49vdt9t27YpIyOjSViRTj/MsLq62oKqg+N3YBkxYoSMFgYM+ZrFdsSIEdqyZYu/pwLQlrkH06enu0KKO7AAOKvMzEx98MEH+vbbb7VgwQKtXbtW0afmMkpOTtb333/f7L7btm3T4MGDfX723XffSZK6du1qftFBCsu7hABEgG+/dS179pTct166W10AtMjdwjJjxgyNGjVKI0aM8Hw2bNgw/cvd5erDnj17lJmZ6fOz7du3q2fPnkpOTja75KARWACEXm2t5L57MD3d9ZKkkhL7agJakX79+mn//v16/fXXtWDBgkaf5efn68svv2y2lcXpdGrv3r0qKSlp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qoyMDMXHxysnJ0cbN25scfujR49q2rRp6tatmxwOh/r166d169YFVDCAVsQ7aLRv7//+BBYAp7Tzd4fVq1eroKBAy5YtU05OjhYvXqz8/Hzt2LFDKSkpTbavq6vTf/3XfyklJUWvv/66evToob179yopKcmM+gGEM3fQcDikmBj/9yewADjF78CyaNEiTZ06VZMnT5YkLVu2TGvXrtWKFSs0Y8aMJtuvWLFC3333nTZs2KDY2FhJUkZGRovnqK2tVW1trefnyspKf8sEEA6CGXArMXEcAA+/uoTq6uq0adMm5eXlnT5AdLTy8vJUXFzsc58333xTubm5mjZtmlJTUzVw4EA9+eSTamhoaPY8c+fOVWJioueVnp7uT5kAwkWwgYUWFgCn+BVYDh8+rIaGBqWmpjZan5qaqtLSUp/7/Oc//9Hrr7+uhoYGrVu3To888ogWLlyo3/72t82eZ+bMmaqoqPC89u/f70+ZAMIFgQWASfzuEvKX0+lUSkqKnnvuOcXExCgrK0slJSVasGCBZs+e7XMfh8Mhh8NhdWkArEZgAWASvwJLcnKyYmJiVFZW1mh9WVmZ0tLSfO7TrVs3xcbGKsZrwF3//v1VWlqquro6xcXFBVA2gFbBrMDCGBYg4vnVJRQXF6esrCwVFhZ61jmdThUWFio3N9fnPsOHD9euXbvkdDo96/7973+rW7duhBWgrTNr0C0tLEDE83seloKCAi1fvlwvvviivvrqK91+++2qqqry3DU0ceJEzZw507P97bffru+++0533323/v3vf2vt2rV68sknNW3aNPOuAkB4MrNLyDDMqQlAq+T3GJYJEybo0KFDmjVrlkpLSzV06FCtX7/eMxB33759io4+nYPS09P197//Xffee68GDx6sHj166O6779YDDzxg3lUACE9mBRbJNWtuIJPPAWgTAhp0O336dE2fPt3nZ0VFRU3W5ebm6pNPPgnkVABaMzMDS3U1gQWIYDxLCIB13IHFPRbFXzExrllyJQbeAhGOwALAOsG2sHjvy8BbIKIRWABYh8ACwCQEFgDWIbAAMAmBBYB13ONOggksPAARgAgsAKxECwsAkxBYAFiHwALAJAQWANYhsAAwCYEFgHXMDCyMYQEiGoEFgHXMCCw8ABGACCwArESXEACTEFgAWIfAAsAkBBYA1iGwADAJgQWANerrpZMn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\n"},"metadata":{}}]},{"cell_type":"markdown","source":["## Caso de onda tipo $sinc()$: comparación cálculo numérico vs analítico"],"metadata":{"id":"6U1zr-2ksW4s"}},{"cell_type":"markdown","source":["### Función analítica $\\gamma (\\tau)$ para una distribución espectral tipo salto"],"metadata":{"id":"1fNKIaqzw0Rh"}},{"cell_type":"markdown","source":[""],"metadata":{"id":"plJW_4w3ttE2"}},{"cell_type":"code","source":["def gamma_sinc_analitica(tau,ω_0):\n"," '''\n"," Podemos obtener gamma analítica para la distribución espectral de tipo salto\n"," Sabiendo que su transformada de Fourier, el pulso E(t), es una función proporcional\n"," a sinc(t).\n"," Definida la onda tipo sinc(t), la ventana de la distribución escalar es:\n"," delta_nu=1/(pi*sigma), donde el mínimo de la onda sinc() ocurre en σ*np.pi\n"," '''\n"," delta_nu=1.0/(σ*np.pi) # en t=σ*np.pi ocurre el mínimo de la onda sinc()\n"," return np.sinc(np.pi*delta_nu*tau*Δt/np.pi)*np.exp(1j*ω_0*tau*Δt) #np.sin(np.pi*delta_nu*tau*Δt)*np.exp(1j*ω_0*tau*Δt)/(np.pi*delta_nu*tau*Δt)\n","\n","Gamma_sinc =[]\n","for tau in range(0, n*N - n + 1):\n"," Gamma_sinc.append(gamma_sinc_analitica(tau,ω_0))\n","\n","Gamma_sinc=np.array(Gamma_sinc)"],"metadata":{"id":"BZATFBW-xTdz"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["### Representación de $\\gamma (\\tau)$"],"metadata":{"id":"3eSLnr1dxHfo"}},{"cell_type":"code","source":["if (tipo_onda=='sinc'):\n"," t_max=np.argmax(Gamma)\n"," texpand=Δt*(np.linspace(0,Gamma.shape[0],Gamma.shape[0])-t_max)\n"," plt.plot(texpand,np.abs(gamma),label=r'|$\\gamma(\\tau)|$ numérica' ,\n"," color='red',linestyle='-')\n"," texpand=Δt*(np.linspace(0,Gamma.shape[0],Gamma.shape[0]))\n"," plt.plot(texpand,np.abs(Gamma_sinc),label=r'|$\\gamma(\\tau)|$ analítica',\n"," color='blue',linestyle='--')\n","\n"," plt.axvline(np.pi*σ,color='grey',linestyle='--',label=r'$1/\\Delta \\nu=\\pi \\sigma$')\n"," plt.xlabel(r'$\\tau-\\tau_0$ (ps)')\n"," #plt.ylabel(r'$\\gamma(\\tau)$')\n"," plt.xlim(0,5*np.pi*σ)\n"," plt.legend()\n"," plt.show()"],"metadata":{"id":"pvutgPN186JN"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["# Interferencias: franjas de Young"],"metadata":{"id":"ub2w4ZjaszqB"}},{"cell_type":"markdown","source":["Intensidad franjas de Young para espectro simétrico:\n","\n","$$I=I_1+I_2+2\\sqrt{I_1 I_2}\\gamma_c(\\tau_s+\\tau) \\cos(\\delta)$$ donde $\\delta=\\omega_0(\\tau_s+\\tau)$"],"metadata":{"id":"7KHu05U6hX5-"}},{"cell_type":"markdown","source":["Siendo $$\\gamma_c(\\tau) = \\int_{-\\infty}^{+\\infty}g(x)cos(2\\pi \\, x \\, \\tau)\\,dx$$ donde $x=\\nu -\\nu_0$"],"metadata":{"id":"LG-DZo2_gvC-"}},{"cell_type":"markdown","source":["## Observación en función de las coordenadas $x,y$ de la pantalla."],"metadata":{"id":"eTZ1bSydshTY"}},{"cell_type":"markdown","source":[""],"metadata":{"id":"kGcdc_ipzoc3"}},{"cell_type":"markdown","source":["Delta se puede escribir como: $\\delta=\\omega_0(\\tau_s+\\tau)=\\dfrac{2\\pi \\, n}{\\lambda_0}(\\Delta_s+\\Delta)$\n","donde\n","+ $\\Delta_s=\\overline{SS_2}-\\overline{SS_1}$\n","+ $\\Delta_s=\\overline{S_2P}-\\overline{S_1P}$\n","\n","\n","Aproximaciones:\n","1. $x_s,d << D_1$ : fuente \"casi\" alineada con el eje $z$. Distancia entre aperturas pequeña en comparación con la distancia entre el plano de la fuente y el de las aperturas.\n","2. $x,y,d << D_2$ : puntos de observación cercanos al eje $z$. Distancia entre aperturas pequeña en comparación con la distancia entre el plano de la de las aperturas y el plano de observación.\n","\n","Utilizando estas aproximaciones se llega a que\n","+ $\\Delta_s=\\dfrac{x_s d}{D_1}$\n","+ $\\Delta_s=\\dfrac{x d}{D_2}$\n","\n","---\n","*En el código $(x,y)=(x_p,y_p)$*"],"metadata":{"id":"u1Ts2nFHx-wn"}},{"cell_type":"markdown","source":["## Ejemplo $g(\\nu)\\rightarrow$ Tipo \"perfil cuadrado\" (simétrico)"],"metadata":{"id":"4ISaf6YksUSQ"}},{"cell_type":"markdown","source":[""],"metadata":{"id":"-IPsgFunnuZM"}},{"cell_type":"markdown","source":["$\\gamma(\\tau)=e^{\\imath 2 \\pi \\nu_0 \\tau} \\dfrac{\\sin{(\\pi \\Delta \\nu \\, \\tau)}}{\\pi \\Delta \\nu \\, \\tau}$\n","\n","$\\implies \\gamma_c(\\tau)=\\dfrac{\\sin{(\\pi \\Delta \\nu \\, \\tau)}}{\\pi \\Delta \\nu \\, \\tau}$"],"metadata":{"id":"Oc-EILeqzt-R"}},{"cell_type":"markdown","source":["## Función de Python para calcular la intensidad de las franjas de Young (aproximación)"],"metadata":{"id":"CiEdVeSX1Dve"}},{"cell_type":"code","source":["import numpy as np\n","\n","def intensidad_young(xp,I1,I2,lambda_nm,n,d,D1,D2,xs,gamma_tipo='onda plana'):\n"," # Longitud de onda, k y frecuencia angular\n"," c=299792458.0 #m/s\n"," lambda0=lambda_nm*1e-9\n"," k = 2.0 * np.pi / lambda0\n"," omega0=c*k\n","\n"," # Cálculo de delta\n"," delta= (2.0*np.pi*n/lambda0)*(xs*d/D1+xp*d/D2)\n","\n"," # Se selecciona el tipo de onda (gamma_c)\n"," # Por defecto 'onda plana'\n"," # Se pueden añadir tantas como se quiera\n"," if(gamma_tipo=='onda plana'):\n"," gamma_c=1.0\n","\n"," if(gamma_tipo=='perfil cuadrado'):\n"," tau=delta/omega0\n"," delta_lambda=20.0 #nm # delta_lambda=0.0 --> onda plana\n"," lambda_i=lambda0-delta_lambda*1e-9\n"," lambda_f=lambda0+delta_lambda*1e-9\n"," delta_nu =c*(lambda_i-lambda_f)/(lambda_f*lambda_i)\n"," gamma_c= np.sinc(np.pi*delta_nu*tau/np.pi) #np.sinc(x)=sin(pi*x)/(pi*x)\n","\n"," # Cálculo de la intensidad\n"," return I1+I2+2.0*np.sqrt(I1*I2)*gamma_c*np.cos(delta)"],"metadata":{"id":"dIwVLUsVe7L7"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["# Parámetros geométricos"],"metadata":{"id":"31WL-PawSmg-"}},{"cell_type":"markdown","source":["+ $D_1$ (distancia entre el plano de la fuente en $S$ y el plano que contiene a las aperturas)\n","+ $D_2$ (distancia entre el plano que contiene a las aperturas y la \"pantalla\" de observación)\n","+ $d$ (distancia entre las aperturas)\n","+ $x_s$ (coordenada de la fuente en el eje $x$ )\n","+ $\\lambda$ (longitud de onda)\n","+ $n$ (índice de refracción del medio)"],"metadata":{"id":"_r612Tx2Q3eY"}},{"cell_type":"code","source":["# Intensidades\n","I1,I2=1.0,1.0 # Unidades arbitrarias\n","\n","# Índice de refracción\n","n=1.0\n","\n","# Distancias\n","D1=1.0 # m\n","D2=1.0 # m\n","d=0.001 # m\n","xs=0.0 # m\n","\n","# Parámetros electromagnéticos\n","c=299792458.0 #m/s\n","lambda_nm = 600.0 # nm\n","lambda0=lambda_nm*1e-9\n","k = 2.0 * np.pi / lambda0\n","omega0=c*k\n","\n","print(\"Frecuencia central=\",np.round(omega0*1e-12/(2.0*np.pi),2),\"THz\")\n","\n","# gamma_c\n","gamma_tipo='perfil cuadrado'"],"metadata":{"id":"zeQjDEdwSplf"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["# Experimento de Young en la dirección $x$ ($y=0$)"],"metadata":{"id":"Hs2F_KgvDsaS"}},{"cell_type":"markdown","source":["## Cálculo de la intensidad"],"metadata":{"id":"x6yoGDdvZ9R7"}},{"cell_type":"code","source":["def calc_intensity_pattern():\n"," Xp=400\n"," m=10\n"," xpm = (2*m+1)*lambda0*D2/(2.0*d)-xs*D2/D1\n"," diff_pattern = []\n"," for i in range(Xp):\n"," print(\"x iteration\",i,' of ',Xp)\n"," xp=xpm * (Xp - 2 * i) / Xp\n"," I_analytic=intensidad_young(xp,I1,I2,lambda_nm,n,d,D1,D2,xs,\n"," gamma_tipo=gamma_tipo)\n"," diff_pattern.append([xp,I_analytic])\n"," return np.array(diff_pattern)\n","\n","# Calculo de la intensidad\n","intensity_pattern=calc_intensity_pattern()"],"metadata":{"id":"wPzGpwenEAp2"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["## Figura estática"],"metadata":{"id":"mgEJ9uPPr5y-"}},{"cell_type":"code","source":["import matplotlib.pyplot as plt\n","x=intensity_pattern[:,0]\n","y_analytic=intensity_pattern[:,1]\n","plt.plot(x,y_analytic,label='Analytic',color='red')\n","\n","plt.axvline((2*0+1)*lambda0*D2/(2.0*d)-xs*D2/D1,color='grey',linestyle='--',label=r'$x_{min}(m=0)$')\n","plt.axvline((1)*lambda0*D2/d-xs*D2/D1,color='orange',linestyle='--',label=r'$x_{max}(m=1)$')\n","plt.xlabel(r'$x$ (m)')\n","plt.ylabel('Intensity')\n","plt.legend()\n","plt.show()"],"metadata":{"id":"T6Py4-VcDspb"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["# Experimento de Young plano $XY$"],"metadata":{"id":"40xc5XwuN2dy"}},{"cell_type":"markdown","source":["## Cálculo de la intensidad"],"metadata":{"id":"c-6vG45PaHdx"}},{"cell_type":"code","source":["def calc_intensity_pattern_2D():\n"," Xp,Yp=400,400\n"," m=10\n"," xpm = (2*m+1)*lambda0*D2/(2.0*d)-xs*D2/D1\n"," ypm = xpm\n"," diff_pattern = []\n"," for i in range(Xp):\n"," print(\"x iteration\",i,' of ',Xp)\n"," xp=xpm * (Xp - 2 * i) / Xp\n"," for j in range(Yp):\n"," yp=ypm * (Yp - 2 * j) / Yp\n"," I_analytic=intensidad_young(xp,I1,I2,lambda_nm,n,d,D1,D2,xs,\n"," gamma_tipo=gamma_tipo)\n"," diff_pattern.append([xp,yp,I_analytic])\n"," return np.array(diff_pattern)\n","\n","intensity_pattern_2D=calc_intensity_pattern_2D()"],"metadata":{"id":"qm2CKK5dro-J"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["## Figura estática"],"metadata":{"id":"4qE5xkHUU9Ry"}},{"cell_type":"code","source":["import numpy as np\n","import matplotlib.pyplot as plt\n","\n","# Generate some sample data (replace this with your numpy array)\n","data =intensity_pattern_2D\n","\n","# Extract x, y, and the value from the data\n","x = data[:, 0]\n","y = data[:, 1]\n","value = data[:, 2]\n","\n","# Reshape the value to a 2D grid for contour plotting\n","x_unique = np.unique(x)\n","y_unique = np.unique(y)\n","X, Y = np.meshgrid(x_unique, y_unique)\n","Z = value.reshape(len(y_unique), len(x_unique))\n","\n","\n","# Create a contour plot\n","plt.figure(figsize=(12, 2))\n","max_value=np.max(Z)/1.0\n","contour = plt.contourf(X, Y, np.rot90(Z), levels=500, cmap='viridis',\n"," vmax=max_value)\n","plt.colorbar(contour) # Use scientific notation for colorbar\n","\n","\n","plt.xlabel('X (m)')\n","plt.ylabel('Y (m)')\n","plt.title('Intensity')\n","plt.show()\n"],"metadata":{"id":"i1N1KpD4NaGo"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":["## Figura dinámica"],"metadata":{"id":"qGrtluxkT2Wf"}},{"cell_type":"code","source":["import matplotlib.pyplot as plt\n","import numpy as np\n","import ipywidgets as widgets\n","from ipywidgets import interactive\n","from ipywidgets import SelectionSlider\n","\n","def plot_function_with_sliders(f, labels, x_min, y_min,ref_x,max_y,value_scale):\n"," # Extract the parameter names from the function signature, excluding 'x'\n"," # and the last\n"," parameters = list(f.__code__.co_varnames)[1:f.__code__.co_argcount-1]\n","\n"," # Create sliders for each parameter\n"," # Define the base, min exponent, and max exponent for the slider\n"," sliders = {}\n"," i=0\n"," for param in parameters:\n"," #print(\"parameter=\",param)\n"," #print(\"[initial value, min, max, step]=\",value_scale[i])\n"," sliders[param] = widgets.FloatSlider(value=value_scale[i][0],\n"," min=value_scale[i][1],\n"," max=value_scale[i][2],\n"," step=value_scale[i][3],\n"," description=param,\n"," readout_format='.4f')\n"," i+=1\n"," # Create sliders for x_max and y_max\n"," #print(\"x max\")\n"," #print(\"[initial value, min, max, step]=\",value_scale[i])\n"," x_max_slider = widgets.FloatSlider(value=value_scale[i][0],\n"," min=value_scale[i][1],\n"," max=value_scale[i][2],\n"," step=value_scale[i][3],\n"," description='x scale',\n"," readout_format='.4f')\n"," i+=1\n"," #print(\"y max\")\n"," #print(\"[initial value, min, max, step]=\",value_scale[i])\n"," y_max_slider = widgets.FloatSlider(value=value_scale[i][0],\n"," min=value_scale[i][1],\n"," max=value_scale[i][2],\n"," step=value_scale[i][3],\n"," description='y scale',\n"," readout_format='.4f')\n","\n"," # Define a function to update the plot\n"," def update_plot(**kwargs):\n"," N=200\n"," # Extract x, y, and the value from the data\n"," x = np.linspace(x_min-x_max_slider.value, abs(x_min)+x_max_slider.value, N)\n"," y = np.linspace(y_min-y_max_slider.value, abs(y_min)+y_max_slider.value, N)\n","\n"," # Pass slider values as keyword arguments to the input function\n"," params = {param: slider.value for param, slider in sliders.items()}\n"," params['gamma_tipo'] = value_scale[-1][0]\n","\n"," # Cálculo de la función\n"," Z =f(x, **params)\n","\n"," # Reshape the value to a 2D grid for contour plotting\n"," x_unique = np.unique(x)\n"," y_unique = np.unique(y)\n"," X, Y = np.meshgrid(x_unique, y_unique)\n","\n"," # Repeat the row N times to create a (N,N) array\n"," Z = np.tile(Z, (N, 1))\n","\n"," # Result as a (N, N) array\n"," Z = Z.T # Transpose the array\n"," Z = Z.reshape(len(y_unique), len(x_unique))\n","\n"," # Create a contour plot\n"," plt.figure(figsize=(12, 2))\n"," max_value=np.max(Z)\n"," print(\"Valor mínimo=\",np.min(Z))\n"," print(\"Valor máximo=\",max_value)\n"," contour = plt.contourf(X, Y, np.rot90(Z), levels=50, cmap='viridis')\n","\n"," # Set the minimum and maximum values for the colorbar\n"," contour.set_clim(0.0,max_value) # Set the desired min and max values here\n","\n"," plt.colorbar(contour)\n","\n"," plt.xlim((x_min-x_max_slider.value)/ref_x, (abs(x_min)+x_max_slider.value)/ref_x)\n"," plt.ylim((y_min-y_max_slider.value)/ref_x, (abs(y_min)+y_max_slider.value)/ref_x)\n"," plt.xlabel(labels[0])\n"," plt.ylabel(labels[1])\n"," plt.title('Intensity')\n"," plt.show()\n","\n"," # Create an interactive plot with the sliders\n"," interactive_plot = interactive(update_plot, **sliders, x_max=x_max_slider, y_max=y_max_slider)\n"," return interactive_plot"],"metadata":{"id":"HXhPvAk_T2cu"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["# Example of an input function\n","function=intensidad_young\n","\n","\n","# Define labels, axis limits, and initial parameter values\n","labels = [r'$x(m)$', r'$y(m)$']\n","m=10\n","xpm = (2*m+1)*lambda0*D2/(2.0*d)-xs*D2/D1\n","x_min = -xpm\n","y_min = -xpm\n","max_y = 1.0\n","ref_x = 1.0 #lambda0*D2/d\n","# value_scale (each): [initial value, min,max,step]\n","value_scale=[[I1,1e-4*I1,10*I1,0.01*I1], # I1\n"," [I2,1e-4*I2,10*I2,0.01*I2], # I2\n"," [lambda_nm,0.1*lambda_nm,3.0*lambda_nm,0.1*lambda_nm], # lambda (wavelength) in nm\n"," [n,1.0,3.5,0.1], # n\n"," [d,0.1*d,10*d,0.05*d], # d\n"," [D1,0.1*D1,10*D1,0.05*D1], # D1\n"," [D2,0.1*D2,10*D2,0.05*D2], # D2\n"," [xs,0.0,1e-2,1e-3], # xs\n"," [-xpm,0.1*xpm,10*xpm,0.05*xpm], # x scale\n"," [-xpm,0.1*xpm,10*xpm,0.05*xpm], # y scale\n"," [gamma_tipo]] # tipo gamma\n","\n","# Create the interactive plot\n","interactive_plot = plot_function_with_sliders(function,\n"," labels,\n"," x_min, y_min,\n"," ref_x,max_y,\n"," value_scale)\n","\n","# Display the interactive plot\n","interactive_plot"],"metadata":{"id":"-yGvE2xSXuHI"},"execution_count":null,"outputs":[]}]}