#!/bin/csh #SBATCH --partition=ibfdr #SBATCH --exclusive #SBATCH --ntasks-per-core=1 # ASSUMPTION (1): output files are named dyn.res dyn.trj dyn.out # ASSUMPTION (2): previous restart file read as dyn.rea # cd $SLURM_SUBMIT_DIR if ( ! -d Res ) mkdir Res if ( ! -d Out ) mkdir Out if ( ! -d Crd ) mkdir Crd if ( ! -d Trj ) mkdir Trj set chm = "/usr/local/apps/charmm/bin/c42b2 ompi $SLURM_NTASKS" set nrun = 1 set d = $cwd:t @ krun = 1 while ( $krun <= $nrun ) if ( -e next.seqno ) then $chm dyn.inp D:$d > dyn.out else $chm dynstrt.inp D:$d > dyn.out endif set okay = true # TEST FOR EXISTENCE, THEN NONZERO LENGTH OF OUTPUT FILES if ( -e dyn.res && -e dyn.dcd ) then @ res = `wc dyn.res | awk '{print $1}'` @ tsz = `ls -s dyn.dcd | awk '{print $1}'` @ nrm = `grep ' NORMAL TERMINATION ' dyn.out | wc -l` if ( $res > 100 && $tsz > 0 && $nrm == 1 ) then # SUCCESSFUL RUN; COPY RESTART FILE cp dyn.res dyn.rea # DETERMINE RUN NUMBER if ( -e next.seqno ) then @ i = `cat next.seqno` else @ i = 1 endif # NUMBER AND MOVE THE OUTPUT FILES mv dyn.out Out/dyn$i.out mv dyn.crd Crd/dyn$i.crd mv dyn.res Res/dyn$i.res mv dyn.dcd Trj/dyn$i.dcd gzip -f Out/dyn$i.out Res/dyn$i.res Crd/dyn$i.crd # CONDITIONAL END CHECK if ( -e last.seqno ) then @ l = `cat last.seqno` if ( $i == $l ) then @ i += 1 echo $i > next.seqno exit endif endif @ i += 1 echo $i > next.seqno else # ZERO LENGTH FILE(S) set okay = false endif else # FILE DOESN'T EXIST set okay = false endif # TEST FOR CHARMM RUN FAILED; CREATE .ERR FILE WITH TIMESTAMP if ( $okay == true ) then # SUBMIT THE NEXT JOB if ( $krun == $nrun ) ./sbatch.csh @ krun += 1 else set ts = `date +%m%d.%H%M` date > msg.tmp echo $cwd >> msg.tmp head -64 dyn.out >> msg.tmp tail -64 dyn.out >> msg.tmp mv dyn.out dyn.err.$ts mail -s "$SLURM_JOB_NAME $SLURM_JOB_ID $ts" $USER@helix.nih.gov < msg.tmp exit(201) endif end