Materia Obscura Escalar
Relatividad Numérica Teórica Lentes Gravitacionales Mecánica Estadística de Sistemas Gravitacionales

Astropartículas
Hidrodinámica Relativista
Ondas Gravitacionales
Ecuaciones Geodésicas y Relatividad Numérica


Oscilatones


RELATIVIDAD NUMERICA Y TEORICA

El código computacional CACTUS que se utilizara para este proyecto se comenzó a desarrollar en 1997 en el Instituto Albert Einstein, Instituto Max Planck para física gravitacional, en Potsdam, Alemania. Este código surgió como una respuesta al grave problema del mantenimiento de un código de computación complejo en cuyo desarrollo están involucradas decenas de personas. En el pasado, este tipo de códigos eran difíciles de mantener en una forma unificada y consistente, debido a que rápidamente surgían muchas versiones incompatibles a medida que diversos investigadores, trabajando muchas veces en distintos lugares del mundo, adaptaban el código a sus propias necesidades. Cactus surgió como un modelo alternativo, teniendo una estructura altamente modular, con un núcleo central desarrollado de manera centralizada por un número pequeño de personas y que contiene la infraestructura computacional básica (la ``pulpa'' del cactus) que se encarga de la paralelización, el manejo de la memoria, el control de parámetros, y la salida de datos a disco, entre otras cosas. Hay además una interfase claramente estructurada para añadir subrutinas que permitan estudiar problemas particulares (las "espinas" del cactus) que pueden programarse tanto en C como en FORTRAN (77 o 90). Cactus corre de forma transparente en muchas arquitecturas computacionales distintas, desde PC's usando Windows, Linux o Mac OS, hasta las más grandes supercomputadoras Cray, SGI, Hitachi, etc. El código esta paralelizado utilizando el protocolo MPI, y utilizando un modelo de descomposición de dominios. Esto permite que los investigadores desarrollen el código en sus máquinas locales (laptops incluso), y una vez habiendo terminado, puedan correrlo inmediatamente en las mayores supercomputadoras a que tengan acceso. El desempeño paralelo del código escala muy bien hasta vaRíos cientos de procesadores. Cactus incluye también interfaces para el control remoto de parámetros a través de servidores de web, así como visualización remota en tiempo real de los datos de una simulación mientras esta corre.


Originalmente un código para la relatividad numérica, Cactus ha sido adoptado no solo por grupos que estudian la relatividad numérica en diversos lugares del mundo, sino también por grupos en otras disciplinas. Cactus esta adaptado al estudio de sistemas físicos descritos por ecuaciones de campo que evolucionan en el tiempo, es decir, ecuaciones en diferenciales parciales en varias (preferentemente tres) dimensiones de espacio y en el tiempo. Este tipo de sistemas incluyen, por ejemplo, la ecuación de onda, las ecuaciones de la hidrodinámica, las ecuaciones electromagnéticas de Maxwell, y desde luego las ecuaciones del campo gravitacional de Einstein. El código esta diseñado utilizando como modelo las aproximaciones en diferencias finitas, y esta adaptado preferentemente (aunque no exclusivamente) al uso de algoritmos explícitos de integración. El código utiliza coordenadas cartesianas en tres dimensiones, y de momento esta limitado al uso de una sola malla (paralelizada), es decir, no incluye refinamiento adaptativo de mallas. En el caso particular de la relatividad, Cactus incluye ya rutinas especializadas para resolver las ecuaciones de valores iniciales, así como las ecuaciones de evolución de Einstein. Incluye también opciones para diversas condiciones de norma, y subrutinas para detectar la formación de horizontes de eventos (es decir, de agujeros negros), y para detectar la emisión de ondas gravitacionales.


En cuanto a sus demandas computacionales, el código fuente ocupa aproximadamente 100~MB de memoria en disco, y el ejecutable ocupa aproximadamente 10~MB de memoria (el tamaño exacto depende del número de "espinas" que se utilicen). La demanda de memoria RAM durante una simulación depende del tamaño del problema específico, y puede ir desde unas decenas de MegaBytes para simulaciones pequeñas, hasta decenas de GigaBytes para simulaciones grandes.

Menu Inicio