FDTD — Finite-Difference Time-Domain — es el método más directo de todos: toma las ecuaciones de Maxwell, sustituye las derivadas por diferencias finitas, y avanza paso a paso en el tiempo. No hay matrices que invertir, no hay funciones base que elegir. Solo la rejilla, las ecuaciones, y el tiempo. FDTD fue propuesto por Kane Yee en 1966 y sigue siendo, sesenta años después, el método más usado en electromagnetismo computacional.
La rejilla de Yee
La clave de FDTD es la rejilla de Yee (1966). En lugar de poner todos los campos en los mismos puntos, Yee intercala los campos eléctricos y magnéticos: vive en los nodos de la rejilla, en los centros de las celdas (y viceversa según la componente). Esta disposición garantiza que las ecuaciones de Maxwell se satisfacen automáticamente a segundo orden.
Para el modo TE en 2D (campo perpendicular al plano), las ecuaciones de actualización son:
Derivación: de Maxwell a las ecuaciones de actualización
Partimos de las ecuaciones de Maxwell rotacionales:
Para el modo TE en 2D (, campos independientes de ), las componentes del rotacional dan:
Ahora discretizamos. Cada derivada temporal se reemplaza por una diferencia centrada entre pasos de tiempo: . Cada derivada espacial, por la diferencia entre celdas vecinas: . Despejando el campo al paso siguiente, se obtienen directamente las ecuaciones de actualización. La rejilla de Yee garantiza que todos los campos están evaluados en los puntos correctos — sin interpolar.
Cada derivada parcial se aproxima con la diferencia entre celdas vecinas. El algoritmo es un leapfrog: actualiza a medio paso, luego a paso completo. Repite.
La condición CFL: estabilidad
FDTD es un método explícito — no resuelve sistemas lineales, solo aplica las ecuaciones de actualización. Pero eso tiene un precio: la estabilidad no está garantizada. Si el paso temporal es demasiado grande, los errores crecen exponencialmente y la simulación explota.
La condición de estabilidad es la condición CFL (Courant-Friedrichs-Lewy):
donde es la dimensión (1, 2 o 3) y la velocidad de la luz en el medio. La interpretación es geométrica: la onda no puede viajar más de una celda por paso de tiempo. Si lo hace, la información «escapa» de la rejilla numérica y la simulación diverge.
¿De dónde sale la condición CFL?
Sustituimos una onda plana en las ecuaciones discretizadas. Después de algo de álgebra, la relación de dispersión numérica del esquema FDTD en 1D es:
Para que sea real (no hay crecimiento exponencial), el lado derecho no puede exceder 1. El máximo de es 1 (para , la mayor frecuencia que la rejilla puede representar). Por tanto:
En dimensiones, las contribuciones de cada eje se suman, dando . El número se llama número de Courant: debe ser ≤ 1 en 1D, ≤ 0.707 en 2D, ≤ 0.577 en 3D.
Dispersión numérica
Incluso cuando la simulación es estable, la rejilla introduce un artefacto: la velocidad de la onda en la rejilla no es exactamente . Depende de la dirección de propagación y de la frecuencia — es la dispersión numérica.
La regla práctica: necesitas al menos 10–20 celdas por longitud de onda ( a ) para mantener el error de fase por debajo del 1%. Para propagaciones largas (muchos de distancia), los errores se acumulan y puedes necesitar 30 o más celdas por .
La simulación en vivo
Aquí tienes una simulación FDTD real corriendo en tu navegador. Una onda plana entra por la izquierda y encuentra un obstáculo. Observa la difracción, la reflexión, y cómo la onda se ralentiza dentro del dieléctrico:
Prueba la doble rendija: verás el patrón de difracción formarse en tiempo real — exactamente como en el artículo 02 del módulo anterior, pero ahora calculado directamente desde Maxwell, sin aproximaciones.
PML: simulando el infinito
La rejilla FDTD es finita, pero el espacio no. Si la onda llega al borde, se refleja — un artefacto que arruina la simulación. La solución estándar son las PML (Perfectly Matched Layers), inventadas por Bérenger en 1994.
La idea es rodear el dominio con una capa de material artificial que absorbe la onda sin reflejarla. El truco matemático: en la PML, la coordenada espacial se estira al plano complejo (). Esto convierte la onda propagante en una onda que decae exponencialmente, sin cambiar la impedancia del medio — sin reflexión.
En la práctica, una PML de 8–16 celdas con conductividad creciente (perfil polinómico o geométrico) da reflexiones menores que . La simulación de arriba usa exactamente esta técnica: el borde de la rejilla tiene una rampa de absorción que «traga» la onda.
Ventajas y limitaciones
FDTD tiene ventajas potentes:
- Intuitivo: «ves» la onda propagarse. El resultado es una película, no un número. No hay método más visual.
- Broadband: una sola simulación con un pulso corto te da la respuesta en todo el espectro vía FFT temporal.
- Geometría arbitraria: cualquier distribución de cabe en la rejilla. Materiales dispersivos (Drude, Lorentz) se incluyen con ecuaciones auxiliares.
- Paralelizable: cada celda solo interactúa con sus vecinas inmediatas. Esto hace que FDTD escale muy bien en GPUs y clusters — es un método «embarazosamente paralelo».
Pero también tiene precio:
- Rejilla cartesiana: las curvas se aproximan como «escaleras» ( staircasing). Para geometrías curvas, necesitas rejillas muy finas — o pasar a DGTD (Artículo 08).
- Coste en 3D: escala como — celdas × pasos de tiempo. Una simulación 3D de una nanopartícula de 100 nm con nm necesita ~10⁶ celdas y puede tardar horas.
- Dispersión numérica: la velocidad de fase depende de la dirección y de la resolución. Se acumula en propagaciones largas.
FDTD en la práctica
Los dos softwares FDTD más usados en fotónica son Lumerical FDTD Solutions (comercial, interfaz gráfica, estándar industrial) y Meep (MIT, open-source, scriptable en Python). Ambos incorporan PML, materiales dispersivos, fuentes broadband, y monitores de campo cercano/lejano. Una simulación típica de nanopartícula plasmónica en 3D con Meep: ~30 minutos en un portátil, ~3 minutos en GPU.
Ejercicios
Quieres simular una nanopartícula de oro de 80 nm de diámetro iluminada a nm. Si usas nm, ¿cuántas celdas por longitud de onda tienes? ¿Cuál es el paso temporal máximo permitido por la condición CFL en 3D? ¿Cuántos pasos necesitas para simular 50 fs?
Solución
Celdas por λ: — más que suficiente (el mínimo práctico es ~10–20).
CFL en 3D: s = 3.85 as (attosegundos).
Pasos para 50 fs: pasos. Cada paso actualiza todas las celdas: si el dominio es celdas, son ~10¹¹ operaciones en total. Factible en minutos en GPU.
La simulación FDTD de arriba usa una rejilla de 150 × 150 en 2D. Si el dominio físico es de 3 μm × 3 μm, ¿cuál es ? ¿Cuántas celdas por longitud de onda tienes a nm? ¿Es suficiente? ¿Y a nm?
Solución
nm.
A 500 nm: celdas/λ — bien. A 300 nm: celdas/λ — aceptable pero al límite. Para UV profundo o materiales de alto índice (donde puede ser mucho menor), habría que refinar.
¿Cuánta memoria necesita una simulación FDTD 3D con dominio de μm³ y nm? Cada celda almacena 6 componentes de campo (3 de E, 3 de H) en doble precisión (8 bytes cada una). ¿Cuántos GB? ¿Cabe en la RAM de un portátil?
Solución
Celdas por eje: . Total: celdas.
Memoria: bytes = 48 GB. No cabe en un portátil típico (16–32 GB). Habría que reducir el dominio, aumentar , o usar un cluster. Esta es la principal limitación de FDTD en 3D: el coste de memoria escala como .