Repositorio con programa para integrar partículas gravitatoriamente alrededor de un asteroide con boulders
Los parámetros iniciales del sistema y la integración se modifican en el archivo: config.ini
En caso de no utilizarlo, se usan los parámetros definidos en main.F90, entre las líneas 22 a 119.
make
Recuerda volver a ejecutar make
cada vez que se realice un cambio en algún .F90.
Asimismo, recuerda ejecutar make clean
en caso de realizar algún cambio de compilación.
La ejecución básica de una particula individual se realiza con
$ ./main <a> <e> <M> <w> <R> [args]
Los argumentos
Una ayuda puede obtenerse con
$ ./ASTROBOULD --help
Uso: ./ASTROBOULD <ea> <ee> <eM> <ew> <eR> [args]
ea : Elemento a de la partícula (km)
ee : Elemento e de la partícula
eM : Elemento M de la partícula (deg)
ew : Elemento w de la partícula (deg)
eR : Elemento R de la partícula [Optional]
-mpart : Masa de la partícula individual
-nsim : Asignar como número de simulación al 'int' que sigue
-datafile : Guardar datos en el archivo que sigue
--nodataf : No guardar datos
-chaosfile : Guardar caos en el archivo que sigue
--nochaosf : No guardar caos
--screen : Imprimir información en pantalla
--noscreen : No imprimir en pantalla
--perc : Imprimir porcentaje de integración
--noperc : No imprimir porcentaje de integración
--datascr : Imprimir datos en pantalla
--nodatascr : No imprimir datos en pantalla
-multifile : Guardar datos en archivos individuales
--nomultif : No guardar datos en archivos individuales
-mapfile : Guardar mapas de potencial en el archivo que sigue
--nomapf : No guardar mapas de potencial
--implicit : Usar método implícito (integra) [default]
--explicit : Usar método explícito (cos, sen)
--elem : Imprimir elementos orbitales (solo partículas) [default]
--noelem : Imprimir coordenadas baricéntricas
-tomfile : Utilizar archivo de (t)iempos|omega|masa que sigue
--notomfile : No utilizar archivo de (t)iempos|omega|masa
-partfile : Utilizar archivo de partículas que sigue
--nopartfile : No utilizar archivo de partículas
--noconfig : No leer archivo de configuración
--version1 : Usar versión 1: y=(B0, B1, ..., P0, ...)
--version2 : Usar versión 2: y=(θ, ω, P0, ...) [default]
--merge : Incluir asociar colisiones de partículas a asteroide
--nomerge : No asociar colisiones de partículas
--torque : Incluir torque de partículas hacia el asteroide
--notorque : No incluir torque de partículas hacia el asteroide
-parallel : Paralelizar usando la cantida de thread que sique
--parallel : Paralelizar usando todos los threads disponibles
--noparallel : No usar paralelización para partículas
--help : Mostrar esta ayuda
Para definir los parámetros de una integración a realizar, es posible editar el archivo de configuraciones. Este archivo será leído por el ejecutable al comenzar la ejecución.
Es importante tener en cuenta que algunas de las configuraciones aquí seteadas serán anuladas y sobreescritas por las introducidas en launcher.py, en caso de utilizar este segundo método para integración en paralelo (ver abajo).
Hay 2 posibilidad de ejecución en paralelo:
- Dependiente: Se realiza una sola integración, incluyendo un asteroide y muchas partículas al mismo tiempo. Aquí se paralelizan las tareas relacionadas a cada partícula por separado (i.e, cálculo de aceleraciones, elementos orbitales, etc.).
- Independiente: Se realizan múltiples integraciones independientes, con una partícula cada una. Aquí cada integración se ejecuta en paralelo.
En este caso se debe tener un archivo con los datos de las partículas a integrar. Este archivo se puede crear con el código make_particles.py. Su configuración se realiza en las líneas 70 a 106, y si ejecució se realiza con:
$ python make_particles.py
Para la integración dependiente es necesario compilar usando -fopenmp, mientras que para la independiente (default) no es necesario. Para el primer caso, se debe compilar ejecutando
$ make parallel
Para realizar la integración independiente, se provee el código en Python launcher.py. Más información se encuentra al inicio de este archivo. Luego de configurarlo, editando las líneas 61 a 92, su ejecución se realiza con:
$ python launcher.py
(Recordar estar en algún entorno de python)
Para realizar una integración dependiente, hay dos posibilidades:
- Editar el número de cpus en el archivo de configuraciones (use parallel threads), o ejecutar directamente en la terminal:
$ ./ASTROBOULD [args] -parallel <number of cpus to use>
- Utilzar el código launcher.py para esta integración, seteando
all_in_one = True
en la línea 91 de este archivo.
Para crear este archivo se puede usar make_TOM.py, luego de configurarlo (líneas 18 a 42). Se puede encontrar más información al inicio de este archivo.
Por otro lado, también se puede usar make_TOM.f90, de C. Beaugé. Se debe configurar manualmente, para luego compilar y ejecutar.
Emmanuel Gianuzzi
This code is under development.