quantum-espresso/examples/example12/run_example

419 lines
8.5 KiB
Bash
Executable File

#!/bin/sh
###############################################################################
##
## HIGH WERBOSITY 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
# function to test the exit status of a job
. ../check_failure.sh
$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.vbc.UPF Al.vbc.UPF NiUS.RRKJ3.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 "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.in << EOF
&control
calculation='scf'
restart_mode='from_scratch',
pseudo_dir = '$PSEUDO_DIR/',
outdir='$TMP_DIR/'
prefix='al'
/
&system
ibrav = 6,
celldm(1) =5.3,
celldm(3) =1.414,
nat= 2,
ntyp= 1,
ecutwfc = 15.0,
occupations='smearing',
smearing='methfessel-paxton',
degauss=0.01
/
&electrons
conv_thr = 1.0e-8
mixing_beta = 0.7
/
ATOMIC_SPECIES
Al 26.98 Al.vbc.UPF
ATOMIC_POSITIONS
Al 0. 0. 0.0
Al 0.5 0.5 0.707
K_POINTS (automatic)
4 4 4 1 1 1
EOF
$ECHO " running the scf calculation for Al...\c"
$PW_COMMAND < al.scf.in > 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.in << EOF
&control
calculation='scf'
restart_mode='from_scratch',
pseudo_dir = '$PSEUDO_DIR/',
outdir='$TMP_DIR/'
prefix='alw'
/
&system
ibrav = 6,
celldm(1) =12.0,
celldm(3) =0.375,
nat= 1,
ntyp= 1,
nspin = 1,
ecutwfc = 15.0,
occupations='smearing',
smearing='methfessel-paxton',
degauss=0.01
/
&electrons
conv_thr = 1.0e-8
mixing_beta = 0.7
/
ATOMIC_SPECIES
Al 26.98 Al.vbc.UPF
ATOMIC_POSITIONS
Al 0.0 0.0 0.000
K_POINTS (automatic)
1 1 15 0 0 0
EOF
$ECHO " running the scf calculation for Al monatomic wire...\c"
$PW_COMMAND < alwire.scf.in > 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.in << EOF
&control
calculation='scf'
restart_mode='from_scratch',
pseudo_dir = '$PSEUDO_DIR/',
outdir='$TMP_DIR/'
prefix='ni'
/
&system
ibrav = 6,
celldm(1) =4.57,
celldm(3) =1.414,
nat= 2,
ntyp= 1,
nspin = 2,
starting_magnetization(1)=0.7,
ecutwfc = 25.0,
ecutrho = 250.0
occupations='smearing',
smearing='methfessel-paxton',
degauss=0.01
/
&electrons
conv_thr = 1.0e-8
mixing_beta = 0.7
/
ATOMIC_SPECIES
Ni 58.69 NiUS.RRKJ3.UPF
ATOMIC_POSITIONS
Ni 0. 0. 0.
Ni 0.5 0.5 0.707
K_POINTS (automatic)
4 4 3 1 1 1
EOF
$ECHO " running the scf calculation for Ni bulk...\c"
$PW_COMMAND < ni.scf.in > 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.in << EOF
&control
calculation='scf'
restart_mode='from_scratch',
pseudo_dir = '$PSEUDO_DIR/',
outdir='$TMP_DIR/'
prefix='alw'
/
&system
ibrav = 6,
celldm(1) =12.0,
celldm(3) =0.375,
nat= 1,
ntyp= 1,
nspin = 1,
ecutwfc = 25.0,
ecutrho = 150.0
occupations='smearing',
smearing='methfessel-paxton',
degauss=0.01
/
&electrons
conv_thr = 1.0e-8
mixing_beta = 0.7
/
ATOMIC_SPECIES
Al 26.98 Al.vbc.UPF
ATOMIC_POSITIONS
Al 0.0 0.0 0.000
K_POINTS (automatic)
2 2 24 1 1 1
EOF
$ECHO " running the scf calculation for Al monatomic wire...\c"
$PW_COMMAND < alwire1.scf.in > alwire1.scf.out
check_failure $?
$ECHO " done"
# self-consistent calculation for Al-H-Al system
cat > AlwireH.scf.in << EOF
&control
calculation='scf',
restart_mode='from_scratch',
pseudo_dir = '$PSEUDO_DIR/',
outdir='$TMP_DIR/',
prefix='alh'
/
&system
ibrav = 6,
celldm(1) =12.0,
celldm(3) =1.875,
nat= 6,
ntyp= 2,
ecutwfc = 25.0,
ecutrho = 150.0
occupations='smearing',
smearing='methfessel-paxton',
degauss=0.01
/
&electrons
conv_thr = 1.0e-8
mixing_beta = 0.7
/
ATOMIC_SPECIES
Al 26.98 Al.vbc.UPF
H 1.0 H.vbc.UPF
ATOMIC_POSITIONS
Al 0.00000000 0.00000000 0.0000
Al 0.00000000 0.00000000 0.375
Al -0.02779870 0.00000000 .75537515
H 0.19269012 0.00000000 .93750000
Al -0.02779870 0.00000000 1.11962485
Al 0.00000000 0.00000000 1.5
K_POINTS (automatic)
2 2 2 1 1 1
EOF
$ECHO " running the scf calculation for Al wire with H impurity...\c"
$PW_COMMAND < AlwireH.scf.in > 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"