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