Custom HPC software & tools from Wirawan. Primarily tailored toward ODU HPC sytems.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

97 lines
2.1 KiB

#!/bin/bash
#
# GAUSSIAN09 SUBMISSION SCRIPT
#
# Author: ODU Research Computing Services
#
# Usage: g09slurm INPUT_FILE.com [OUTPUT_FILE.out] [START_TIME]
usage () {
echo "Usage: g09slurm INPUT_FILE.com [OUTPUT_FILE.out] [START_TIME]"
echo "Please refer to https://wiki.hpc.odu.edu/Software/Gaussian for more information"
}
if [ "$1" == --help ]; then
echo "g09slurm - Gaussian09 submission script"
usage
exit 0
fi
if [ $# -lt 1 ]; then
echo "Error: Missing Gaussian G09 input file"
usage >&2
exit 1
fi
input_file=$1
output_file=$2
begin_date=$3
if [ ! -r $1 ]; then
echo "Error: Unable to open Gaussian G09 input file"
usage >&2
exit 2
fi
if [ -z "$output_file" ]; then
output_file=${input_file%.[Cc][Oo][Mm]}.out
fi
# Detect & support multicore Gaussian calculations
ncpus=$(grep -E '^ *%' "$1" | grep -i -w nprocshared | awk '{ L = tolower($0); print gensub("%nprocshared=","","G", L)}')
if [ -z "$ncpus" ]; then
ncpus=$(grep -E '^ *%' "$1" | grep -i -w 'nprocs?' | awk '{ L = tolower($0); print gensub("%nprocs?=","","G", L)}')
fi
if [ -z "$ncpus" ]; then
ncpus=1
fi
# Allow delayed start
if [ -z "$begin_date" ]; then
begin_date=now
fi
if [ -f "$output_file" ]; then
read -p "Output file $output_file already exists, do you want overwrite? [N/y]" confirm
if [ "$confirm" = "y" ]; then
> "$output_file"
else
echo "Cancelling job submission" >&2
exit 1
fi
fi
CLUSTER=$(cat /etc/cluster)
case "$CLUSTER" in
wahab)
SBATCH=/shared/apps/common/slurm/current/bin/sbatch
;;
turing)
SBATCH=/cm/shared/applications/slurm/current/bin/sbatch
;;
*)
echo "Error: unsupported cluster. Please contact itshelp@odu.edu for assistance." >&2
exit 2
;;
esac
GAUSSIAN_SCRIPT=/cm/shared/apps/gaussian/g09revD.01/script/g09/script/g09.slurm
"$SBATCH" \
--job-name="G09-$input_file" \
--ntasks=1 \
--cpus-per-task=$ncpus \
--output="$output_file" \
--begin=$begin_date \
"$GAUSSIAN_SCRIPT" "$input_file"