Como se mencionó en la sección anterior, las simulaciones
numéricas están sujetadas a un modelo teórico que consiste de un
conjunto de ecuaciones matemáticas que nos permitirán describir
la formación y/o evolución del objeto astronómico que estamos estudiando
y que en la mayoría de las veces no tienen una solución exacta
o analítica, y por lo tanto, es necesario recurrir a métodos numéricos
para obtener una solución aproximada. La rama de la Astronomía
que utiliza los métodos numéricos para resolver problemas de investigación
vinculados a esta ciencia utilizando una computadora se le conoce
como Astrofísica Computacional. Aun cuando sabemos que el cómputo
ha tenido un crecimiento descomunal en los últimos años y ha permitido
que una parte considerable de problemas astrofísicos puedan resolverse
en una computadora de escritorio, existen áreas de investigación
en astrofísica que necesitan de enormes recursos computacionales
y que su desarrollo estará limitado por la memoria y velocidad
de los procesadores de los equipos de alto rendimiento disponibles.
Para permitirles a los astrofísicos trabajar con códigos numéricos
en alta resolución temporal y espacial, así como, incluir el mayor
número de procesos físicos en sus experimentos numéricos.
Actualmente, la astrofísica computacional está presente en cuatro grandes áreas de la astronomía (Stone, 2007):
1. Evolución y estructura estelar.
2. Transferencia de radiación y atmósferas estelares.
3. Dinámica de fluidos astrofísicos.
4. Dinámica planetaria, estelar y galáctica.
En cada una de estás áreas se han desarrollado una serie de códigos numéricos que permiten resolver las ecuaciones que describen el problema en cuestión (si el lector está interesado en ampliar la información sobre la variedad de códigos astrofísicos que se han creado en los últimos años se recomienda ver Stone 2007).
En particular, un grupo importante de astrofísicos
de los Institutos de Astronomía, Ciencias Nucleares y Geofísica,
del Centro de Radioastronomía y Astrofísica y de la Dirección General
de Servicios de Cómputo Académico de la UNAM, han trabajado en
el desarrollo y uso de códigos numéricos vinculados al área de
Dinámica de Fluidos Astrofísicos, que utilizan diferentes métodos
numéricos, tales como, diferencias finitas (ZEUS3D; Stone & Norman
1992); smooth particle hydrodynamics (SPH; Monaghan, 2001);
mallas adaptativas (Raga, et al; 2000); total variation diminishing (TVD;
Kim, et al 1999), etcétera.
Grosso modo hemos dado un panorama general
de la astrofísica computacional, sin embargo, no hemos contestado
la pregunta que seguramente muchos lectores se estarán haciendo, ¿por
qué las simulaciones numéricas astronómicas necesitan de supercomputadoras? Para
contestar esta pregunta nos apoyaremos en el concepto de malla
computacional, que no es otra cosa que la división del dominio
computacional con el que estamos trabajando; en coordenadas cartesianas
(x,y,z) esto se manifestaría geométricamente en puntos en una dimensión,
en cuadros en 2D y en cubos en 3D. Supongamos que deseamos estudiar
numéricamente el comportamiento de la superficie del Sol con un
código numérico que tiene una malla computacional tridimensional
fija en el espacio, donde las celdas que la componen tienen un
tamaño fijo. Las dimensiones o tamaños de las celdas estarán fuertemente
asociadas a que tan fino o detallado se puede hacer el análisis
del sistema astrofísico que deseamos estudiar. Por otro lado, entre
más fina sea la malla computacional (celdas muy pequeñas), más
recursos computacionales se requerirán para realizar la simulación
numérica.
Figura 3. En la figura se muestran dos imágenes de la superficie
Sol, que tienen sobrepuestas dos mallas computacionales con diferentes
resoluciones: baja resolución (izquierda-malla A) y alta resolución
(derecha-malla B).
En la Figura 3 se muestran dos imágenes del Sol,
que tienen sobrepuestas dos mallas computacionales, una menos refinada
que la otra, o en otras palabras, las celdas de la Figura 3a son
más grandes que las de la Figura 3b., o la malla computacional
de la Figura 3a tiene menos celdas que la de la Figura 3b. Cuando
comparamos las dos mallas computacionales (ver Figura 3), claramente
vemos que la malla B puede resolver con más detalle pequeñas zonas
activas de la superficie del Sol, que no pueden estudiarse en la
malla A. Supongamos que nuestro código calcula 120 números reales
por cada celda y que por cada número real en precisión sencilla
la memoria de la computadora le asigna 4 bytes, esto quiere decir
que por cada celda de mi malla, la computadora deberá apartar 480
bytes (~ 0.5 MB) de memoria. Conforme vamos haciendo más refinado
nuestro dominio computacional, la demanda de memoria irá incrementándose
sustancialmente (ver Tabla 1). En la última columna de la Tabla
1 se tiene la resolución del sistema que se está modelando, es
decir, la escala mínima que es capaz de estudiar mi experimento
numérico. Por ejemplo, si el radio del Sol es de Rzs y la malla
es de 2563, se podrán estudiar fenómenos que ocurran a una escala
de Rs/256. Respecto al uso de los procesadores, que son los encargados
de realizar las operaciones matemáticas, entre más celdas tenga
en la malla, más operaciones tendrán que realizar, y por lo tanto,
para una simulación en tres dimensiones, el tiempo de CPU podrá
incrementarse exponencialmente.
Tabla 1
Número de Celdas
Memoria RAM
Resolución
643
125 MB
2Rs/64
1283
1 GB
2Rs/128
2563
8 GB
2Rs/256
5123
64 GB
2Rs/512
10243
512 GB
2Rs/1024
20483
4 TB
2Rs/2048
Rs es el radio del Sol
Para darnos una idea de lo que es consumo excesivo
de recursos computacionales, presentamos el siguiente ejemplo.
En el 2007 un grupo de astrofísicos de la Universidad de California,
San Diego, realizaron un simulación numérica con una malla computacional
de 20483 celdas (~ 8,589 millones de celdas), utilizando 4,096
CPUs durante dos semanas, equivalentes a 1.33 millones de horas
de CPU, para estudiar con detalle el problema de la turbulencia
en el medio interestelar, en particular dentro de las nubes moleculares
(Kritsuk et
al. 2008; ver Figura 4).
Figura 4. En la gráfica se muestran los efectos que
produce la turbulencia en el material que compone a una nube molecular.
La escala de colores está asociada a la densidad del gas (negro-baja
densidad; blanco-alta densidad). Esta simulación necesitó de 4,096
CPUs durante 14 días.
Ahora la siguiente pregunta es, ¿qué han hecho los astrofísicos para resolver este problema?
1. Buscar y desarrollar mejores métodos numéricos.
2. Adaptar sus códigos a la arquitectura paralela de las supercomputadoras.
En el caso particular del punto (2) cabe recordar
el concepto de cómputo paralelo o distribuido. El cómputo paralelo
se puede entender de una manera muy simple, repartir el trabajo
que se tiene que hacer para resolver numéricamente las ecuaciones
que describen un sistema astronómico entre 2 o más procesadores
que se tengan disponibles. Y para hacer esto, es conveniente dividir
el problema que estoy estudiando en un número equivalente de procesadores
que tenga a la mano. Las Figura 5 y 6 muestran dos claros ejemplos
de cómo puede partirse repartirse entre los procesadores, un problema
en particular. También se puede ver que la malla computacional
se hace más en las zonas donde ocurren los fenómenos que se quieren
estudiar. La Figura 5 está vinculada al estudio de la migración
de planetas (Masset, 2002), en tanto que, la Figura 6 reprsenta
un corte de densidad de un grumo de gas autogravitante que está
siendo fotoevaporado por una estrella masiva que se localiza al
lado izquierda de la figura. El código numérico que se utilizó
para realizar esta simulación 3D se conoce con el nombre de YGUAZÚ-A,
y fue desarrollado por un grupo de astrofísicos del Instituto de
Ciencias Nucleares de la UNAM (Esquivel & Raga, 2007)
Figura 5. La imagen muestra un ejemplo de cómo se
puede “partir” un problema y distribuir los cálculos numéricos
en diferentes procesadores (Cortesía Fredeic Masset 2002)
Figura 6. La imagen muestra la densidad (escala
de colores) de un grumo autogravitante que está siendo fotoevaporado
por una estrella masiva que se localiza al lado izquierda de
la figura. Sobrepuesta se encuentra una malla computacional que
presenta múltiples niveles de refinamiento. (La evolución temporal
de este proceso puede verse en el siguiente video).