#!/bin/bash
#
#   Laboratorio de Fisica Molecular Aplicada (FAMA), UAM-A, Mexico
#   =======================================================================
#                      Dr. Enrique Poulain Garcia
#   Script para encolar los trabajos de ORCA-3.0.1 (Compilado con openmpi-1.6.5) usando PBS
#
#               1 Nodo  = 64 AMD cores en molphys
#
#       Cambio          Usuario                 Descripcion
#      ==========      ===============         ===========
#       30/08/2013      O. Olvera-Neria         Script original
#########################################################################################
# uso:
#       $qsub orca.pbs 
#
#       variables opcionales:
#               #PBS -N nombre_orca  -->Job name visible on the pbs queue
#               #PBS  nodes=1:ppn=8  -->Number of cpu's (in this case 8), it has to agree with the input file
#               FILE=                -->Input file name with no extension.
#               TMP_DIR=             -->Path to the temporary files.
#
#########################################################################################

#PBS -N a2mNm 
#PBS -o orca.out
#PBS -j oe
#PBS -e orca.err
#PBS -l walltime=24:00:00

#PBS -l nodes=1:ppn=8
#PBS -q batch

FILE=a2mNm                 
TMP_DIR=/tmp                 
ORBITALES=                # File with the past orbitals gbw, nat, etc. Be sure to not use the same FILE.gbw name, use another

####### Variables orca 3.0.1 ############
export EXTENDED_GLOB
export NULL_GLOB
export MKL_NUM_THREADS=1
export ORCA_PATH=/share/apps/orca-3.0.1/orca_3_0_1_linux_x86-64

####### Varibles openmpi-1.6.5 #########
export PATH=$PATH:/share/apps/orca-3.0.1/openmpi-1.6.5/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/share/apps/orca-3.0.1/openmpi-1.6.5/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/share/apps/orca-3.0.1/openmpi-1.6.5/lib/openmpi

###### Variables NBO6 ##################
export NBOBIN=/share/apps/nbo6/nbo6/bin
export NBOEXE=$NBOBIN/nbo6.i8.exe
export GENEXE=$NBOBIN/gennbo.i8.exe
export PATH=$PATH:$NBOBIN
export NBOFIL=$FILE
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/share/apps/opt/intel/composerxe-2011.2.137/mkl/lib/intel64
########################################

### Entra al directorio de trabajo actual
echo Working directory is $PBS_O_WORKDIR
cd $PBS_O_WORKDIR

### Carpeta de archivos temporales (Scratch) ######

ORCA_SCRATCH=/$TMP_DIR/$USER

if [ ! -d /$TMP_DIR/$USER ];then mkdir -p /$TMP_DIR/$USER;fi

### Temporal para el calculo actual
mkdir $TMP_DIR/$USER/$PBS_JOBID

ORCA_SCRATCH=$TMP_DIR/$USER/$PBS_JOBID

### Genera un archivo con informacion para monitorear un calculo en proceso
echo "Directorio Temporal del calculo ORCA: $ORCA_SCRATCH" > dir_temporal
echo "Monitorear el calculo:           tail -f $ORCA_SCRATCH/$FILE.out" >> dir_temporal
echo "Abrir la salida en proceso:      vi $ORCA_SCRATCH/$FILE.out" >> dir_temporal
echo "Cambiarse a la carpeta temporal: cd $ORCA_SCRATCH" >> dir_temporal

#### Copiar entrada al archivo temporal ###
cp $PBS_O_WORKDIR/$FILE.inp $ORCA_SCRATCH 
 

#### Copiar archivos de calculos anteriores ###
if [ -f $FILE.gbw ]; then
        cp $FILE.gbw $ORCA_SCRATCH 
        echo "Se copio $FILE.gbw a $ORCA_SCRATCH"
fi

if [ -f $FILE.pot ]; then
        cp $FILE.pot $ORCA_SCRATCH
        echo "Se copio $FILE.pot a $ORCA_SCRATCH"
fi

#Copiamos cualquier .gbw de calculos anteriores
if [ -f $FILE.gbw ]; then
   cp $FILE.gbw $ORCA_SCRATCH
fi

if [ -n $ORBITALES ]; then
     cp $ORBITALES $ORCA_SCRATCH
     echo "Se copio $ORBITALES a $ORCA_SCRATCH"
fi
 
#### Nos pasamos al scratch del calculo
cd $ORCA_SCRATCH
 
echo "Job started from $PBS_O_HOST, running on $HOSTNAME in $ORCA_SCRATCH using orca" 

### Correr orca

$ORCA_PATH/orca $FILE.inp > $FILE.out 

### Analisis de cargas chelpg
if [ -f $FILE.gbw ]; then
   $ORCA_PATH/orca_chelpg $FILE.gbw >> $FILE.out
fi


### Generamos el archivo de molden
if [ -f $FILE.gbw ]; then
   $ORCA_PATH/orca_2mkl $FILE -molden
   mv $FILE.molden.input $FILE.molden
fi

### Copiar archivos de salida

cp *.* $PBS_O_WORKDIR

### Borrar carpeta temporal
rm -rf $ORCA_SCRATCH

exit
