#!/bin/sh ############################################################################### ## ## HIGH VERBOSITY EXAMPLE ## ############################################################################### # run from directory where this script is cd `echo $0 | sed 's/\(.*\)\/.*/\1/'` # extract pathname EXAMPLE_DIR=`pwd` # check whether echo has the -e option if test "`echo -e`" = "-e" ; then ECHO=echo ; else ECHO="echo -e" ; fi $ECHO $ECHO "$EXAMPLE_DIR : starting" $ECHO $ECHO "This example shows how to use pw.x and pwcond.x to calculate the" $ECHO "complex bands and the transmission coefficient of an open quantum" $ECHO "system." # set the needed environment variables . ../../../environment_variables # required executables and pseudopotentials BIN_LIST="pw.x pwcond.x" PSEUDO_LIST="H.pz-vbc.UPF Al.pz-vbc.UPF Ni.pz-nd-rrkjus.UPF" $ECHO $ECHO " executables directory: $BIN_DIR" $ECHO " pseudo directory: $PSEUDO_DIR" $ECHO " temporary directory: $TMP_DIR" $ECHO " checking that needed directories and files exist...\c" # check for directories for DIR in "$BIN_DIR" "$PSEUDO_DIR" ; do if test ! -d $DIR ; then $ECHO $ECHO "ERROR: $DIR not existent or not a directory" $ECHO "Aborting" exit 1 fi done for DIR in "$TMP_DIR" "$EXAMPLE_DIR/results" ; do if test ! -d $DIR ; then mkdir $DIR fi done cd $EXAMPLE_DIR/results # check for executables for FILE in $BIN_LIST ; do if test ! -x $BIN_DIR/$FILE ; then $ECHO $ECHO "ERROR: $BIN_DIR/$FILE not existent or not executable" $ECHO "Aborting" exit 1 fi done # check for pseudopotentials for FILE in $PSEUDO_LIST ; do if test ! -r $PSEUDO_DIR/$FILE ; then $ECHO $ECHO "Downloading $FILE to $PSEUDO_DIR...\c" $WGET $PSEUDO_DIR/$FILE \ http://www.quantum-espresso.org/pseudo/1.3/UPF/$FILE 2> /dev/null fi if test $? != 0; then $ECHO $ECHO "ERROR: $PSEUDO_DIR/$FILE not existent or not readable" $ECHO "Aborting" exit 1 fi done $ECHO " done" # how to run executables PW_COMMAND="$PARA_PREFIX $BIN_DIR/pw.x $PARA_POSTFIX" PWCOND_COMMAND="$PARA_PREFIX $BIN_DIR/pwcond.x $PARA_POSTFIX" $ECHO $ECHO " running pw.x as: $PW_COMMAND" $ECHO " running pwcond.x as: $PWCOND_COMMAND" $ECHO # clean TMP_DIR $ECHO " cleaning $TMP_DIR...\c" rm -rf $TMP_DIR/* $ECHO " done" # self-consistent calculation for Al bulk along the 001 direction cat > al.scf.xml << EOF 0.0 1.414 0.0 0.0 0.0 26.98 Al.pz-vbc.UPF 0.0 0.0 0.0 0.5 0.5 0.707 from_scratch $PSEUDO_DIR/ $TMP_DIR/ 15.0 0.7 1.0e-8 smearing methfessel-paxton 0.01 4 4 4 1 1 1 EOF $ECHO " running the scf calculation for Al...\c" $PW_COMMAND < al.scf.xml > al.scf.out check_failure $? $ECHO " done" # complex bands of Al along the 001 direction K_perp=0 cat > al.cond.in << EOF &inputcond outdir='$TMP_DIR/' prefixl='al' band_file ='bands.al' ikind=0 energy0=10.d0 denergy=-0.4d0 ewind=1.d0 epsproj=1.d-3 delgep = 1.d-12 cutplot = 3.d0 / 1 0.0 0.0 1.0 60 EOF $ECHO " running pwcond.x to calculate the complex bands of Al...\c" $PWCOND_COMMAND < al.cond.in > al.cond.out check_failure $? $ECHO " done" # self-consistent calculation for Al monatomic wire cat > alwire.scf.xml << EOF 0.0 0.375 0.0 0.0 0.0 26.98 Al.pz-vbc.UPF 0.0 0.0 0.000 from_scratch $PSEUDO_DIR/ $TMP_DIR/ 15.0 0.7 1.0e-8 smearing methfessel-paxton 0.01 1 1 1 15 0 0 0 EOF $ECHO " running the scf calculation for Al monatomic wire...\c" $PW_COMMAND < alwire.scf.xml > alwire.scf.out check_failure $? $ECHO " done" # complex bands of the Al monatomic wire cat > alwire.cond.in << EOF &inputcond outdir='$TMP_DIR/' prefixl='alw' band_file='bands.alwire' ikind=0 energy0=7.0d0 denergy=-0.2d0 ewind=1.d0 epsproj=1.d-3 nz1=3 cutplot = 1.d0 / 1 0. 0. 1.0 71 EOF $ECHO " running pwcond.x to calculate the complex bands of Al wire...\c" $PWCOND_COMMAND < alwire.cond.in > alwire.cond.out check_failure $? $ECHO " done" # self-consistent calculation for bulk Ni cat > ni.scf.xml << EOF 0.0 1.414 0.0 0.0 0.0 58.69 Ni.pz-nd-rrkjus.UPF 0.7 0.0 0.0 0.0 0.5 0.5 0.707 from_scratch $PSEUDO_DIR/ $TMP_DIR/ 25.0 250.0 0.7 1.0e-8 smearing methfessel-paxton 0.01 2 4 4 3 1 1 1 EOF $ECHO " running the scf calculation for Ni bulk...\c" $PW_COMMAND < ni.scf.xml > ni.scf.out check_failure $? $ECHO " done" # complex bands of Ni cat > ni.cond.in << EOF &inputcond outdir='$TMP_DIR/' prefixl='ni' band_file = 'bands.ni_down' ikind=0 iofspin = 2 energy0=1.d0 denergy=-0.2d0 ewind=3.d0 epsproj=1.d-4 nz1=3 / 1 0.0 0.0 1.0 30 EOF $ECHO " running pwcond.x to calculate the complex bands of Ni...\c" $PWCOND_COMMAND < ni.cond.in > ni.cond.out check_failure $? $ECHO " done" # self-consistent calculation for Al monatomic wire cat > alwire1.scf.xml << EOF 0.0 0.375 0.0 0.0 0.0 26.98 Al.pz-vbc.UPF 0.0 0.0 0.000 from_scratch $PSEUDO_DIR/ $TMP_DIR/ 25.0 150.0 0.7 1.0e-8 smearing methfessel-paxton 0.01 1 2 2 24 1 1 1 EOF $ECHO " running the scf calculation for Al monatomic wire...\c" $PW_COMMAND < alwire1.scf.xml > alwire1.scf.out check_failure $? $ECHO " done" # self-consistent calculation for Al-H-Al system cat > AlwireH.scf.xml << EOF 0.0 1.875 0.0 0.0 0.0 26.98 Al.pz-vbc.UPF 1.0 H.pz-vbc.UPF 0.00000000 0.00000000 0.0000 0.00000000 0.00000000 0.375 -0.02779870 0.00000000 .75537515 0.19269012 0.00000000 .93750000 -0.02779870 0.00000000 1.11962485 0.00000000 0.00000000 1.5 from_scratch $PSEUDO_DIR/ $TMP_DIR/ 25.0 150.0 0.7 1.0e-8 smearing methfessel-paxton 0.01 2 2 2 1 1 1 EOF $ECHO " running the scf calculation for Al wire with H impurity...\c" $PW_COMMAND < AlwireH.scf.xml > AlwireH.scf.out check_failure $? $ECHO " done" # transmission calculation for the perfect Al wire cat > AlwireAl.cond.in << EOF &inputcond outdir='$TMP_DIR/', prefixl='alw', prefixs='alw', tran_file='trans.alwire', ikind=1, energy0=2.95d0, denergy=-0.1d0, ewind=1.d0, epsproj=1.d-3, nz1 = 1 / 1 0.0 0.0 1.0 100 EOF $ECHO " running pwcond.x to calculate transmission of a perfect Al wire ...\c" $PWCOND_COMMAND < AlwireAl.cond.in > AlwireAl.cond.out check_failure $? $ECHO " done" # transmission calculation for the Al-C-Al cat > AlwireH.cond.in << EOF &inputcond outdir='$TMP_DIR/', prefixl='alw', prefixs='alh', tran_file='trans.alwireh', ikind = 1, energy0=3.d0, denergy=0.d0, ewind=1.d0, epsproj=1.d-3, nz1 = 1, / 1 0.0 0.0 1.0 18 3.0 2.7 2.5 1.6 1.0 0.9 0.1 -0.1 -0.25 -1.15 -1.45 -1.9 -3.0 -4.0 -5.0 -6.0 -6.2 -6.45 EOF $ECHO " running pwcond.x to calculate transmission of an Al wire with H...\c" $PWCOND_COMMAND < AlwireH.cond.in > AlwireH.cond.out check_failure $? $ECHO " done" $ECHO $ECHO "$EXAMPLE_DIR: done"