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_100
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_100
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
87 echo "==> Running $SCAT with tbtrans=$TBT"
88 mkdir TBT_$SCAT
89 cd TBT_$SCAT
90 # Copy input files
91 ln ../Elec/${ELEC}.TSHS .
92 ln ../Scat_$SCAT/${SCAT}.TSHS .
93 ln ../../${SCAT}.fdf .
94 $TBT ${SCAT}.fdf > tbt_${SCAT}.out
95 RETVAL=$?
96 if [ $RETVAL -ne 0 ]; then
97   echo "The scattering region calculation did not go well ..."
98   exit
99 fi
100 cp tbt_${SCAT}.out $SCAT.TBT.TRANS_Left-Right ../..
101 #
102 # Go back to base directory
103 #
104 cd ..
105done
106# If it gets here it's because it finished without error
107touch ../completed
108