1#!/bin/sh 2# 3# The script is passed the (probably relative) path to the transiesta 4# executable 5# 6### set -x 7TS_RAW="$1" 8# 9# Extract last component, in case of mpirun-style string 10# 11TS_REL_PATH=$(echo ${TS_RAW} | awk '{print $NF}') 12TS_EXEC_PREFIX=$(echo ${TS_RAW} | awk '{$NF=""; print}') 13# 14TS_NAME=$(basename ${TS_REL_PATH}) 15EXEC_DIR=$(dirname ${TS_REL_PATH}) 16# 17# Find absolute path ------- 18# 19pushd ${EXEC_DIR} 20ABS_EXEC_DIR=$(pwd) 21popd 22#--------------------------- 23TS_ABS=${ABS_EXEC_DIR}/${TS_NAME} 24TS="$TS_EXEC_PREFIX $TS_ABS" 25OBJDIR=$(basename ${ABS_EXEC_DIR}) 26ROOT_DIR=$(dirname ${ABS_EXEC_DIR}) 27echo "Running script with TranSIESTA=$TS, compiled in OBJDIR=${OBJDIR}" 28 29if [ -z "$TBT" ] ; then 30 TBT="${TS_EXEC_PREFIX} ${ROOT_DIR}/Util/TS/TBtrans/tbtrans" 31 if [ ! -e ${ROOT_DIR}/Util/TS/TBtrans/tbtrans ]; then 32 (cd "${ROOT_DIR}/Util/TS/TBtrans" ; 33 make -j OBJDIR="$OBJDIR" ) 34 fi 35fi 36 37# 38# Start with the electrode calculation 39# 40ELEC=elec_au_111_abc 41echo "Electrode Calculation" 42mkdir Elec 43cd Elec 44ln ../../Au.psf . 45ln ../../${ELEC}.fdf . 46${TS} --electrode ${ELEC}.fdf > ${ELEC}.out 47RETVAL=$? 48if [ $RETVAL -ne 0 ]; then 49 echo "The electrode calculation did not go well ..." 50 exit 51fi 52cp ${ELEC}.out ../.. 53# 54# Go back to base directory 55# 56cd .. 57 58# 59# Scattering region calculation 60# 61for SCAT in au_111_capacitor 62do 63 echo "==> Scattering Region Calculation for $SCAT" 64 mkdir Scat_$SCAT 65 cd Scat_$SCAT 66 ln ../../Au.psf . 67 ln ../../${SCAT}.fdf . 68 # Copy the electrode's .TSHS 69 ln ../Elec/${ELEC}.TSHS . 70 $TS ${SCAT}.fdf > ${SCAT}.out 71 RETVAL=$? 72 if [ $RETVAL -ne 0 ]; then 73 echo "** The scattering region calculation for $SCAT did not go well ..." 74 exit 75 fi 76 cp ${SCAT}.out ../.. 77# 78# Go back to base directory 79# 80 cd .. 81 82# 83# TBTrans calculation 84# 85 echo "==> TBTrans Calculation for $SCAT" 86 echo "==> Running $SCAT with tbtrans=$TBT" 87 mkdir TBT_$SCAT 88 cd TBT_$SCAT 89 # Copy input files 90 ln ../Elec/${ELEC}.TSHS . 91 ln ../Scat_$SCAT/${SCAT}.TSHS . 92 ln ../../${SCAT}.fdf . 93 $TBT ${SCAT}.fdf > tbt_${SCAT}.out 94 RETVAL=$? 95 if [ $RETVAL -ne 0 ]; then 96 echo "The scattering region calculation did not go well ..." 97 exit 98 fi 99 cp tbt_${SCAT}.out $SCAT.TBT.TRANS_Left-Right ../.. 100 # 101 # Go back to base directory 102 # 103 cd .. 104done 105# If it gets here it's because it finished without error 106touch ../completed 107