7. Interacción radiación-materia

Autor:Luis Miguel Sánchez Brea

Herramientas utilizadas en este tutorial:

  • numpy: manipulación de datos
  • scipy: Herramientas matemáticas

Descarga de archivos:

  • Campo generado por un dipolo - modo dibujo dipolo.py
  • Campo generado por un dipolo - genera contornos dipolo_contour.py
  • Campo generado por un dipolo - modo animado dipolo_animado.py
  • Campo generado por un dipolo - modo video dipolo_video.py
  • Resonancia resonancia.py

7.1. Introducción

#!/usr/local/bin/python
# -*- coding: utf-8 -*-
#------------------------------------
# Autor:	Luis Miguel Sanchez Brea
# Fecha		2013/10/24 (version 1.0)
# Licencia:	GPL
# Objetivo:	Ejemplos de difraccion en campo lejano
#-------------------------------------

import scipy as sp
import matplotlib.pyplot as plt

m = 1  	#metros
kg = 1	#kilogramo
sg = 1 	#segundos

V = 1 	#voltio
C = 1	#culombios
Hz = 1 / sg	#hertzio

nm = 1e-9 * m


qe = -1.602176565 * 10 ** -19 * C	#carga del electron
me = 9.10938291 * 10 ** -31 * kg	#masa del electron



def resonancia(E0 = 1000 * V / m, w0 = 1e15 * Hz, gamma = 1e8 * Hz):

	"""	(float, float) --> (complex)

	- Descripcion: 	En la interaccion luz-atomo ligado un parametro esencial es el calculo
					de la distancia etre el electron y el nucleo, pues esto produce el dipolo
					que generara la radiacion dispersada.

	- Precondicion: g<<w0

	- Entradas:
	* w0: frecuencia de resonancia
	* gamma: amortiguamiento

	- Salidas:
	* r: distancia compleja
"""

	#frecuencia de la luz. Array con diversas frecuencias en torno a la resonancia
	n_puntos = 1000
	anchura = 10
	w = sp.linspace(w0 - anchura * gamma, w0 + anchura * gamma, n_puntos)

	#distancia electron-nucleo
	r = (qe / me) * E0 / (w ** 2 - w0 ** 2 - 1.j * gamma * w)

	#diversos dibujos

	#distancia
	plt.figure(figsize = (11, 9), facecolor = 'w', edgecolor = 'k')
	plt.subplot(221)
	plt.plot(w, abs(r) / nm, 'k', linewidth = 2)
	plt.xlabel('$\omega \; (Hz)$', fontsize = 18)
	plt.ylabel('$r\;(nm)$', fontsize = 18)

	#desfase
	plt.subplot(222)
	plt.plot(w, sp.angle(r) * 180 / sp.pi, 'k', linewidth = 2)
	plt.xlabel('$\omega \; (Hz)$', fontsize = 18)
	plt.ylabel('$\phi \;(grados)$', fontsize = 18)

	#parte real
	plt.subplot(223)
	plt.plot(w, sp.real(r), 'k', linewidth = 2)
	plt.xlabel('$\omega \; (Hz)$', fontsize = 18)
	plt.ylabel('$Re(r)$', fontsize = 18)

	#parte imaginaria
	plt.subplot(224)
	plt.plot(w, sp.imag(r), 'k', linewidth = 2)
	plt.xlabel('$\omega \; (Hz)$', fontsize = 18)
	plt.ylabel('$Im(r)$', fontsize = 18)



resonancia(E0 = 1000 * V / m, w0 = 1e15 * Hz, gamma = 1e8 * Hz)
plt.tight_layout()

plt.show()

(Source code, png, hires.png, pdf)

../../_images/resonancia1.png

7.2. Dipolo

Una carga eléctrica oscilante genera un campo electromagnético. En el caso de un movimiento sinusoidal de frecuencia w, el campo generado resulta

E_{r}=\frac{-qr_{o}k^{3}}{4\pi\varepsilon_{o}}\cos\theta(\frac{2}{(kR)^{3}}-\frac{2i}{(kR)^{2}})e^{i(kR-\omega t)}

E_{\theta}=\frac{-qr_{o}k^{3}}{4\pi\varepsilon_{o}}\sin\theta(\frac{1}{(kR)^{3}}-\frac{i}{(kR)^{2}}-\frac{1}{kR})e^{i(kR-\omega t)}

E_{\phi}=0

Esto es lo que se ha programado en las siguientes figuras, para el caso de un plano y para un instante de tiempo t=0.

#!/usr/local/bin/python
# -*- coding: utf-8 -*-
#------------------------------------
# Autor:	Luis Miguel Sanchez Brea
# Fecha		2013/10/24 (version 1.0)
# Licencia:	GPL
# Objetivo:	Emision del dipolo
#-------------------------------------

import scipy as sp
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.cm as cm

um=1; mm=1000*um; m=1000*mm; s=1; fs=1e-15*s

wavelength=0.6328*um
k = 2 * sp.pi / wavelength
c= 299792.458 *m/s
w=c*k
q=1; r0=1; epsilon0=1;  #normalizacion

#area de visualizacion
tamano=2.5*um
x=sp.linspace(-tamano/2, tamano/2, 250)
z=sp.linspace(-tamano/2, tamano/2, 250)
X,Z=sp.meshgrid(x, z)

#calculo de la intensidad
R = sp.sqrt(X** 2 + Z ** 2)
sinTheta=X/R

E_theta=q*r0*k**2/(4*sp.pi*R*epsilon0)*sinTheta*sp.cos((k*R))
intensidad = abs(E_theta) ** 2
intensidad=sp.log(intensidad+1)

#Se dibuja por primera vez
fig = plt.figure(1)
a = plt.subplot(111)
im = a.imshow(intensidad, cmap=cm.jet)
plt.show()

(Source code, png, hires.png, pdf)

../../_images/dipolo.png

(Source code, png, hires.png, pdf)

../../_images/dipolo_contour.png

Como la fluctuación es temporal, en los siguientes archivos se muestra este movimiento. Uno de ellos genera una animación y el otro un vídeo:

(Source code, png, hires.png, pdf)

../../_images/dipolo_animado.png

(Source code)

7.3. Resonancia

El efecto que tiene la luz sobre el movimiento de los electrones depende fuertemente de la frecuencia de la onda electromagnética incidente en comparación con la frecuencia de resonancia del electrón en el átomo. En la siguiente figura se muestra cuál es el desplazamiento máximo producido en el átomo en funcion de los parámetros del átomo y de la frecuencia de la luz incidente.

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# -*- coding: cp1252 -*- " Codigo para poder usar tildes"
#------------------------------------
# Autor:	Luis Miguel Sanchez Brea
# Fecha		2013/10/24 (version 1.0)
# Licencia:	GPL
#-------------------------------------

from __future__ import division
import locale
locale.setlocale(locale.LC_NUMERIC, 'C')

import scipy as sp
import matplotlib.pyplot as plt

m = 1  	#metros;
kg = 1	#kilogramo
sg = 1 	#segundos
V = 1 	#voltio
C = 1	#culombios
Hz = 1 / sg	#hertzio
nm = 1e-9 * m
qe = -1.602176565 * 10 ** -19 * C	#carga del electron
me = 9.10938291 * 10 ** -31 * kg	#masa del electron

def resonancia(E0 = 1000 * V / m, w0 = 1e15 * Hz, gamma = 1e8 * Hz):
	"""	(float, float) --> (complex)
	- Descripcion: 	En la interaccion luz-atomo ligado un parametro esencial es el calculo
		de la distancia entre el electron y el nucleo, pues esto produce el dipolo
		que generara la radiacion dispersada.
	- Precondicion: g<<w0
	- Entradas:	* w0: frecuencia de resonancia	* gamma: amortiguamiento
	- Salidas:	* r: distancia compleja"""
	#frecuencia de la luz. Array con diversas frecuencias en torno a la resonancia
	n_puntos = 1000
	anchura = 10
	w = sp.linspace(w0 - anchura * gamma, w0 + anchura * gamma, n_puntos)
	#distancia electron-nucleo
	r = (qe / me) * E0 / (w ** 2 - w0 ** 2 - 1.j * gamma * w)
	#distancia
	plt.figure(figsize = (11, 5), facecolor = 'w', edgecolor = 'k')
	plt.subplot(121)
	plt.plot(w, abs(r) / nm, 'k', linewidth = 2)
	plt.title("r" , fontsize=24)
	plt.xlabel('$\omega \; (Hz)$', fontsize = 18)
	plt.ylabel('$r\;(nm)$', fontsize = 18)
	#desfase
	plt.subplot(122)
	plt.plot(w, sp.angle(r) * 180 / sp.pi, 'k', linewidth = 2)
	plt.xlabel('$\omega \; (Hz)$', fontsize = 18)
	plt.ylabel('$\phi \;(grados)$', fontsize = 18)
	plt.title("desfase" , fontsize=24)
	return r


resonancia(E0 = 1000 * V / m, w0 = 1e15 * Hz, gamma = 1e8 * Hz)
plt.tight_layout()
plt.show()

(Source code, png, hires.png, pdf)

../../_images/resonancia2.png

7.4. Densidad espectral

la densidad de energía espectral, i.e, la cantidad de energía electromagnética por unidad espectral que llega por unidad de superficie

J(\omega)=\varepsilon_{o}c|E_{\omega}|^{2}=J(\omega_{o})\frac{\gamma^{2}/4}{\gamma^{2}/4+(\omega-\omega_{o})^{2}},

donde \gamma es el campo a la salida del elemento difra, \omega_{o} es la frecuencia de resonancia y \omega es la frecuencia del haz incidente

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# -*- coding: cp1252 -*- " Codigo para poder usar tildes"
#------------------------------------
# Autor:	Luis Miguel Sanchez Brea
# Fecha		2013/10/24 (version 1.0)
# Licencia:	GPL
#-------------------------------------

from __future__ import division
import locale
locale.setlocale(locale.LC_NUMERIC, 'C')

import scipy as sp
import matplotlib.pyplot as plt

m = 1  	#metros;
kg = 1	#kilogramo
sg = 1 	#segundos
V = 1 	#voltio
C = 1	#culombios
Hz = 1 / sg	#hertzio
nm = 1e-9 * m
qe = -1.602176565 * 10 ** -19 * C	#carga del electron
me = 9.10938291 * 10 ** -31 * kg	#masa del electron
epsilon0=8.8541878176e-12
c=3e8*m/sg

def densidadEspectral(E0 = 1000 * V / m, w0 = 1e15 * Hz, gamma = 1e8 * Hz):
	"""	(float, float) --> (complex)

	- Descripcion: 	En la interaccion luz-atomo ligado un parametro esencial es el calculo
		de la distancia entre el electron y el nucleo, pues esto produce el dipolo
		que generara la radiacion dispersada.
	- Precondicion: g<<w0
	- Entradas:	* w0: frecuencia de resonancia	* gamma: amortiguamiento
	- Salidas:	* r: distancia compleja"""

	#frecuencia de la luz. Array con diversas frecuencias en torno a la resonancia
	n_puntos = 1000
	anchura = 10
	w = sp.linspace(w0 - anchura * gamma, w0 + anchura * gamma, n_puntos)

	#distancia electron-nucleo
	J=epsilon0*c*abs(E0)**2/(gamma**2/4+(w-w0)**2)

	#distancia
	plt.figure(facecolor = 'w', edgecolor = 'k')
	plt.plot(w, J, 'k', linewidth = 2)
	plt.xlabel('$\omega \; (Hz)$', fontsize = 18)
	plt.ylabel('$J(\omega)$', fontsize = 18)

densidadEspectral(E0 = 1000 * V / m, w0 = 1e15 * Hz, gamma = 1e8 * Hz)
plt.tight_layout()
plt.show()

(Source code, png, hires.png, pdf)

../../_images/densidad_energia_espectral.png

Este parámetro está relacionado con el espectro emitido por el átomo.

7.5. Sección eficaz

Esta sección eficaz de extinción la denotamos \sigma_{e} y su relación con la potencia extraída es la siguiente

\sigma_{e}=\frac{\langle P\rangle}{\langle|S|\rangle}=\frac{q^{2}}{mc\varepsilon_{o}}\frac{\gamma\omega^{2}}{(\omega^{2}-\omega_{o}^{2})^{2}+\omega^{2}\gamma^{2}}

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# -*- coding: cp1252 -*- " Codigo para poder usar tildes"
#------------------------------------
# Autor:	Luis Miguel Sanchez Brea
# Fecha		2013/10/24 (version 1.0)
# Licencia:	GPL
#-------------------------------------

from __future__ import division
import locale
locale.setlocale(locale.LC_NUMERIC, 'C')

import scipy as sp
import matplotlib.pyplot as plt

m = 1; kg = 1; s = 1; V = 1; C = 1; Hz = 1 / s
nm = 1e-9 * m
qe = -1.602176565e-19 * C	#carga del electron
me = 9.10938291e-31 * kg	#masa del electron
epsilon0=8.8541878176e-12
c= 299792458*m/s

def seccion_eficaz_extincion(w0 = 1e15 * Hz, gamma = 1e8 * Hz):
	"""	(float, float) --> (complex)
	- Descripcion: 	En la interaccion luz-atomo ligado un parametro esencial es el calculo
	de la distancia entre el electron y el nucleo, pues esto produce el dipolo que generara la radiacion dispersada.
	- Precondicion: g<<w0: Entradas:	* w0: frecuencia de resonancia	* gamma: amortiguamiento
	- Salidas:	* r: distancia compleja"""
	#frecuencia de la luz. Array con diversas frecuencias en torno a la resonancia
	n_puntos = 1000
	anchura = 10
	w = sp.linspace(w0 - anchura * gamma, w0 + anchura * gamma, n_puntos)
	#seccion eficaz
	sigma=(qe**2/(me*c*epsilon0))*gamma*w**2/((w**2-w0**2)**2+w**2*gamma**2)
	#distancia
	plt.figure(facecolor = 'w', edgecolor = 'k')
	plt.plot(w, sigma, 'k', linewidth = 2)
	plt.xlabel('$\omega \; (Hz)$', fontsize = 18)
	plt.ylabel('$\sigma(\omega)$', fontsize = 18)
	plt.title("Seccion eficaz extincion", fontsize=24)
	texto="radio = %4.4g m" %(sp.sqrt(sigma.max()/sp.pi))
	plt.text(w.min(),sigma.max()/2,texto,fontsize=16)
	plt.tight_layout()


def seccion_eficaz_scattering(w0 = 1e15 * Hz, gamma = 1e8 * Hz):
	"""	(float, float) --> (complex)
	- Descripcion: 	En la interaccion luz-atomo ligado un parametro esencial es el calculo
	de la distancia entre el electron y el nucleo, pues esto produce el dipolo que generara la radiacion dispersada.
	- Precondicion: g<<w0: Entradas:	* w0: frecuencia de resonancia	* gamma: amortiguamiento
	- Salidas:	* r: distancia compleja"""
	#frecuencia de la luz. Array con diversas frecuencias en torno a la resonancia
	n_puntos = 1000
	anchura = 10
	w = sp.linspace(w0 - anchura * gamma, w0 + anchura * gamma, n_puntos)
	#seccion eficaz
	sigma_T=qe**4/(6*sp.pi*me**2*c**4*epsilon0**2)

	sigma=sigma_T*w**4/((w**2-w0**2)**2+w**2*gamma**2)
	#distancia
	plt.figure(facecolor = 'w', edgecolor = 'k')
	plt.plot(w, sigma, 'k', linewidth = 2)
	plt.xlabel('$\omega \; (Hz)$', fontsize = 18)
	plt.ylabel('$\sigma(\omega)$', fontsize = 18)
	plt.title("Seccion eficaz de scattering", fontsize=24)
	texto="radio = %4.4g m" %(sp.sqrt(sigma_T/sp.pi))
	plt.text(w.min(),sigma.max()/2,texto,fontsize=16)
	plt.tight_layout()




seccion_eficaz_extincion(w0 = 1e15 * Hz, gamma = 1e8 * Hz)
seccion_eficaz_scattering(w0 = 1e15 * Hz, gamma = 1e8 * Hz)

plt.show()

(Source code)