#!/bin/bash

### SimSEE, script para ejecución del cmdopt y cmdsim en ClusterUY
### autor: rch@20190413

### parámetros de la corrida
NombreSala="$1" # nombre (sin la extensión) de la Sala empaquetada. En la carpeta corridas debe estar NombreSala.zip
ejecutor="$2" # número único del robot Ejecutor. Sirve para diferenciarlo de otros Robots que puedan ejecutar en el mismo nodo. 
escenario="$3" # nombre del escenario a ejecutar.

nhilos=40
ntareas=$nhilos

### configuracion de directorios
homedir=${HOME}
bindir=${homedir}/SimSEE/bin
salas=${homedir}/SimSEE/salas
resultados=${homedir}/SimSEE/resultados
tmprundir=/scratch/simsee_${USER}
tmpdirsala=${tmprundir}/corridas/${ejecutor}

## intentamos crear los directorios por si no existen
mkdir -p ${tmprundir}
mkdir -p ${tmprundir}/corridas
mkdir -p ${tmpdirsala}
mkdir -p ${tmprundir}/${ejecutor}

## limpiamos los contenidos de los directorios por si tenían algo
rm -rf ${tmprundir}/${ejecutor}/*
rm -rf ${tmpdirsala}/*

## copiamos la sala empaquetada al directorio temporal del nodo
cp ${salas}/${NombreSala}.zip ${tmpdirsala}

## descomprimimos y borramos el zip
cd ${tmpdirsala}
unzip -o ${NombreSala}.zip -d ${NombreSala}
rm -f ${NombreSala}.zip

${bindir}/simsee_sfdb setestadocorrida ${ejecutor} 2
## ejecutar la optimización
cd ${tmpdirsala}/${NombreSala}
${bindir}/cmdopt sala=${tmpdirsala}/${NombreSala}/${NombreSala}.ese ejecutor=${ejecutor} escenario=${escenario} nhilos=${nhilos} ntareas=${ntareas} tmp_base=${tmprundir}

${bindir}/simsee_sfdb setestadocorrida ${ejecutor} 3
## ejecutar la simulación
cd ${tmpdirsala}/${NombreSala}
${bindir}/cmdsim sala=${tmpdirsala}/${NombreSala}/${NombreSala}.ese ejecutor=${ejecutor} escenario=${escenario} nhilos=${nhilos} ntareas=${ntareas} tmp_base=${tmprundir}


## comprimimos las salidas
cd ${tmprundir}/${ejecutor}
archizip=${ejecutor}_sim_${NombreSala}_${escenario}.zip
zip -r ${archizip} *

## copiamos el zip al mismo directorio de la sala
cp ${archizip} ${resultados}/
${bindir}/simsee_sfdb setestadocorrida ${ejecutor} 5

## eliminamos archivos temporales del nodo de cálculo
rm -f ${archizip}
rm -rf ${tmprundir}/${ejecutor}/*
rm -rf ${tmpdirsala}/* 

