From ff2acd1c726530e790617db901d3850950c1c266 Mon Sep 17 00:00:00 2001 From: Christian Sarmiento <christian.sarmiento00@gmail.com> Date: Wed, 28 Sep 2022 11:05:46 -0500 Subject: [PATCH] Tutorial para correr las simulaciones usando docker --- SimulacionFluenciaDocker.ipynb | 339 +++++++++++++++++++++++++++++++++ 1 file changed, 339 insertions(+) create mode 100644 SimulacionFluenciaDocker.ipynb diff --git a/SimulacionFluenciaDocker.ipynb b/SimulacionFluenciaDocker.ipynb new file mode 100644 index 0000000..abdcbd7 --- /dev/null +++ b/SimulacionFluenciaDocker.ipynb @@ -0,0 +1,339 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "886dc788", + "metadata": {}, + "source": [ + "## Simulación flujo de rayos cósmicos" + ] + }, + { + "cell_type": "markdown", + "id": "b2560f90", + "metadata": {}, + "source": [ + "La idea de este documento es resumir la ejecución de la simulación del flujo de rayos cósmicos en el rango de 1 GeV y 10$^6$ GeV. Para ello se usan dos herramientas, de un lado **Docker** que se ocupa de tener todo lo necesario para la simulación preinstalado. Por el otro lado, **ARTI**, facilita hacer las simulaciones con CORSIKA de forma sencilla." + ] + }, + { + "cell_type": "markdown", + "id": "7e1df2a6", + "metadata": {}, + "source": [ + "Instalara docker" + ] + }, + { + "cell_type": "raw", + "id": "255d2ec7", + "metadata": {}, + "source": [ + "sudo apt-get install docker" + ] + }, + { + "cell_type": "markdown", + "id": "1319082f", + "metadata": {}, + "source": [ + "Instalar nuestro archivo docker llamado \"arti:2022.01\"" + ] + }, + { + "cell_type": "raw", + "id": "84de51f9", + "metadata": {}, + "source": [ + "sudo docker build --no-cache --build-arg ARTI_BRANCH=\"master\" -t arti:2022.01 - < Dockerfile-arti" + ] + }, + { + "cell_type": "markdown", + "id": "8fa52cf1", + "metadata": {}, + "source": [ + "Para poder ver si la imagen ha sido creada correctamente hacemos" + ] + }, + { + "cell_type": "raw", + "id": "ed540156", + "metadata": {}, + "source": [ + "sudo docker images -a" + ] + }, + { + "cell_type": "markdown", + "id": "250b6d3e", + "metadata": {}, + "source": [ + "Para correr la imagen e ingresar al docker" + ] + }, + { + "cell_type": "raw", + "id": "86d4dd09", + "metadata": {}, + "source": [ + "sudo docker run -it arti:2022.01" + ] + }, + { + "cell_type": "markdown", + "id": "01738a6c", + "metadata": {}, + "source": [ + "Si queremos conocer el ID del docker " + ] + }, + { + "cell_type": "raw", + "id": "2429a8b1", + "metadata": {}, + "source": [ + "sudo docker ps -a" + ] + }, + { + "cell_type": "markdown", + "id": "802acd5d", + "metadata": {}, + "source": [ + "Para parar el docker podemos usar este comando" + ] + }, + { + "cell_type": "raw", + "id": "34b62fc6", + "metadata": {}, + "source": [ + "sudo docker stop ID" + ] + }, + { + "cell_type": "markdown", + "id": "04a24fbd", + "metadata": {}, + "source": [ + "Para copiar un archivo desde el interior del docker a nuestro PC local" + ] + }, + { + "cell_type": "raw", + "id": "1248d34d", + "metadata": {}, + "source": [ + "sudo docker cp ID:path/to/file path/to/host" + ] + }, + { + "cell_type": "markdown", + "id": "c47e555c", + "metadata": {}, + "source": [ + "Ahora vamos a empezar a escribir una serie de pasos para realizar las simulacioones del flujo de rayos cósmicos usando **ARTI**" + ] + }, + { + "cell_type": "raw", + "id": "7a11672e", + "metadata": {}, + "source": [ + "Primero vamos a ir al directorio donde se encuentran los ejecutables de la simulación" + ] + }, + { + "cell_type": "raw", + "id": "408896ba", + "metadata": {}, + "source": [ + "/opt/arti/sims" + ] + }, + { + "cell_type": "markdown", + "id": "49c8cf9a", + "metadata": {}, + "source": [ + "Allà ejecutamos" + ] + }, + { + "cell_type": "raw", + "id": "77a67a63", + "metadata": {}, + "source": [ + "./do_sims.sh -?" + ] + }, + { + "cell_type": "markdown", + "id": "7e97dbbe", + "metadata": {}, + "source": [ + "Asà vamos a obtener el menú de opciones" + ] + }, + { + "cell_type": "raw", + "id": "34c92ae6", + "metadata": {}, + "source": [ + "./do_sims.sh version v1r0\n", + "\n", + "USAGE ./do_sims.sh:\n", + "Simulation parameters\n", + " -w <working dir> : Working directory, where bin (run) files are located\n", + " -p <project name> : Project name (suggested format: NAMEXX)\n", + " -v <CORSIKA version> : CORSIKA version\n", + " -h <HE Int Model (EPOS|QGSII)> : Define the high interaction model to be used\n", + " -u <user name> : User Name.\n", + " -j <procs> : Number of processors to use\n", + "Physical parameters\n", + " -t <flux time> : Flux time (in seconds) for simulations\n", + " -m <Low edge zenith angle> : Low edge of zenith angle.\n", + " -n <High edge zenith angle> : High edge of zenith angle.\n", + " -r <Low primary particle energy> : Lower limit of the primary particle energy.\n", + " -i <Upper primary particle energy> : Upper limit of the primary particle energy.\n", + " -a <high energy ecuts> : High energy cuts for ECUTS; (if set value in GV = enabled).\n", + " -y : Select volumetric detector mode (default=flat array)\n", + "Site parameters\n", + " -s <site> : Location (several options)\n", + " -k <altitude, in cm> : Fix altitude, even for predefined sites\n", + " -c <atm_model> : Fix Atmospheric Model even for predefined sites.\n", + " -o <BX> : Horizontal comp. of the Earth's mag. field.\n", + " -q <BZ> : Vertical comp. of the Earth's mag. field.\n", + " -b <rigidity cutoff> : Rigidity cutoff; (if set value in GV = enabled).\n", + "Modifiers\n", + " -l : Enables SLURM cluster compatibility (with sbatch).\n", + " -e : Enable CHERENKOV mode\n", + " -d : Enable DEBUG mode\n", + " -x : Enable other defaults (It doesn't prompt user for unset parameters)\n", + " -? : Shows this help and exit." + ] + }, + { + "cell_type": "markdown", + "id": "008d068f", + "metadata": {}, + "source": [ + "Con la siguiente linea se van a generar 15 scripts de bash que se deben correr uno por uno. \n", + "No es recomendable correr todos los scripts de una vez porque se va a sobrecargar el PC.\n", + "Sin embargo, esto depende de la capacidad computacional que se tenga.\n", + "\n", + "Los scripts se encuentran el directorio \"run\", ubicado en '/opt/lago-corsika-77402/run/'" + ] + }, + { + "cell_type": "raw", + "id": "34dbf1de", + "metadata": {}, + "source": [ + "./do_sims.sh -w /opt/lago-corsika-77402/run/ -p miPrimeraSimulacion -v 77402 -u MiNombre -t 60 -s bga" + ] + }, + { + "cell_type": "markdown", + "id": "0f6ccf87", + "metadata": {}, + "source": [ + "En este caso se usaron las siguientes opciones:\n", + "\n", + "w -> directorio en el que se encuentra el ejecutable de CORSIKA\n", + "\n", + "p -> nombre de la carpeta donde se van a generar las simulaciones\n", + "\n", + "v -> versión de CORSIKA que tenemos en el PC\n", + "\n", + "u -> nombre del usuario\n", + "\n", + "t -> tiempo que se va a simular\n", + "\n", + "s -> sigla del sitio, esto incluye la latitud, longitud, altura y coordenadas del campo geomagnético." + ] + }, + { + "cell_type": "markdown", + "id": "5dd922a3", + "metadata": {}, + "source": [ + "Luego de correr los 15 scripts se van a generar tres tipos de archivos:\n", + "\n", + " DATNNNNNN -> toda la info de los secundarios (archivo binario)\n", + " DATNNNNNN.dbase -> librerÃas e info de la lluvia\n", + " DATNNNNNN.lst -> archivo ‘log’ para controlar la salida\n", + "\n", + "Es importante revisar los 60 archivos '.lst' para verificar que la simulación haya terminado correctamente. \n", + "Esto se hace viendo la última linea del archivo y verificando que este la leyenda 'END OF RUN'.\n", + "Para hacer una revisión automatica se puede correr en la terminal el siguiente comando:\n" + ] + }, + { + "cell_type": "raw", + "id": "023c780f", + "metadata": {}, + "source": [ + "ls -lR | bzgrep \"END OF RUN\" *lst.bz2 | wc -l" + ] + }, + { + "cell_type": "markdown", + "id": "6a8ee819", + "metadata": {}, + "source": [ + "Para extraer los secundarios es necesario leer los archivos binarios que se encuentran en el directorio\n", + "'miPrimeraSimulacion'. Con el siguiente comando se puede hacer de forma automatica:" + ] + }, + { + "cell_type": "raw", + "id": "1de5511f", + "metadata": {}, + "source": [ + "for i in DAT??????.bz2; do j=$(echo $i | sed -e 's/.bz2//'); u=$(echo $j | sed -e 's/DAT//'); bzip2 -d -k $i; echo $j | ../../../arti/analysis/lagocrkread | ../../../arti/analysis/analysis -p -v $u; rm $j; done" + ] + }, + { + "cell_type": "markdown", + "id": "3eef1cba", + "metadata": {}, + "source": [ + "Para hacer un breve analisis de los datos recien obtenidos se puede usar el siguiente comando,\n", + "el valor de '5100' " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4140c7e4", + "metadata": {}, + "outputs": [], + "source": [ + "bzcat *sec.bz2 | ../../../arti/analysis/showers -a 10 -d 10 -c 5100. -n 1 1 -v nombreDelArchivo" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} -- GitLab