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