quantum-espresso/PWCOND/examples/example01/run_xml_example

924 lines
16 KiB
Bash
Executable File

#!/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
<?xml version="1.0" encoding="UTF-8"?>
<input calculation="scf" prefix="al">
<cell type="qecell">
<qecell ibrav="6" alat="5.3">
<real rank="1" n1="5">
0.0 1.414 0.0 0.0 0.0
</real>
</qecell>
</cell>
<atomic_species ntyp="1">
<specie name="Al">
<property name="mass">
<real>26.98</real>
</property>
<property name="pseudofile">
<string>Al.pz-vbc.UPF</string>
</property>
</specie>
</atomic_species>
<atomic_list units="alat" nat="2" >
<atom name="Al">
<position>
<real rank="1" n1="3">
0.0 0.0 0.0
</real>
</position>
</atom>
<atom name="Al">
<position>
<real rank="1" n1="3">
0.5 0.5 0.707
</real>
</position>
</atom>
</atomic_list>
<field name="InputOutput">
<parameter name="restart_mode">
<string>
from_scratch
</string>
</parameter>
<parameter name="pseudo_dir">
<string>
$PSEUDO_DIR/
</string>
</parameter>
<parameter name="outdir">
<string>
$TMP_DIR/
</string>
</parameter>
</field>
<field name="Numerics">
<parameter name="ecutwfc">
<real>
15.0
</real>
</parameter>
<parameter name="mixing_beta">
<real>
0.7
</real>
</parameter>
<parameter name="conv_thr">
<real>
1.0e-8
</real>
</parameter>
</field>
<field name="Options">
<parameter name="occupations">
<string>
smearing
</string>
</parameter>
<parameter name="smearing">
<string>
methfessel-paxton
</string>
</parameter>
<parameter name="degauss">
<real>
0.01
</real>
</parameter>
</field>
<k_points type="automatic">
<mesh>
<integer rank="1" n1="6">
4 4 4 1 1 1
</integer>
</mesh>
</k_points>
</input>
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
<?xml version="1.0" encoding="UTF-8"?>
<input calculation="scf" prefix="alw">
<cell type="qecell">
<qecell ibrav="6" alat="12.0">
<real rank="1" n1="5">
0.0 0.375 0.0 0.0 0.0
</real>
</qecell>
</cell>
<atomic_species ntyp="1">
<specie name="Al">
<property name="mass">
<real>26.98</real>
</property>
<property name="pseudofile">
<string>Al.pz-vbc.UPF</string>
</property>
</specie>
</atomic_species>
<atomic_list units="alat" nat="1" >
<atom name="Al">
<position>
<real rank="1" n1="3">
0.0 0.0 0.000
</real>
</position>
</atom>
</atomic_list>
<field name="InputOutput">
<parameter name="restart_mode">
<string>
from_scratch
</string>
</parameter>
<parameter name="pseudo_dir">
<string>
$PSEUDO_DIR/
</string>
</parameter>
<parameter name="outdir">
<string>
$TMP_DIR/
</string>
</parameter>
</field>
<field name="Numerics">
<parameter name="ecutwfc">
<real>
15.0
</real>
</parameter>
<parameter name="mixing_beta">
<real>
0.7
</real>
</parameter>
<parameter name="conv_thr">
<real>
1.0e-8
</real>
</parameter>
</field>
<field name="Options">
<parameter name="occupations">
<string>
smearing
</string>
</parameter>
<parameter name="smearing">
<string>
methfessel-paxton
</string>
</parameter>
<parameter name="degauss">
<real>
0.01
</real>
</parameter>
</field>
<field name="Fields">
<parameter name="nspin">
<integer>
1
</integer>
</parameter>
</field>
<k_points type="automatic">
<mesh>
<integer rank="1" n1="6">
1 1 15 0 0 0
</integer>
</mesh>
</k_points>
</input>
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
<?xml version="1.0" encoding="UTF-8"?>
<input calculation="scf" prefix="ni">
<cell type="qecell">
<qecell ibrav="6" alat="4.57">
<real rank="1" n1="5">
0.0 1.414 0.0 0.0 0.0
</real>
</qecell>
</cell>
<atomic_species ntyp="1">
<specie name="Ni">
<property name="mass">
<real>58.69</real>
</property>
<property name="pseudofile">
<string>Ni.pz-nd-rrkjus.UPF</string>
</property>
<property name="starting_magnetization">
<real>
0.7
</real>
</property>
</specie>
</atomic_species>
<atomic_list units="alat" nat="2" >
<atom name="Ni">
<position>
<real rank="1" n1="3">
0.0 0.0 0.0
</real>
</position>
</atom>
<atom name="Ni">
<position>
<real rank="1" n1="3">
0.5 0.5 0.707
</real>
</position>
</atom>
</atomic_list>
<field name="InputOutput">
<parameter name="restart_mode">
<string>
from_scratch
</string>
</parameter>
<parameter name="pseudo_dir">
<string>
$PSEUDO_DIR/
</string>
</parameter>
<parameter name="outdir">
<string>
$TMP_DIR/
</string>
</parameter>
</field>
<field name="Numerics">
<parameter name="ecutwfc">
<real>
25.0
</real>
</parameter>
<parameter name="ecutrho">
<real>
250.0
</real>
</parameter>
<parameter name="mixing_beta">
<real>
0.7
</real>
</parameter>
<parameter name="conv_thr">
<real>
1.0e-8
</real>
</parameter>
</field>
<field name="Options">
<parameter name="occupations">
<string>
smearing
</string>
</parameter>
<parameter name="smearing">
<string>
methfessel-paxton
</string>
</parameter>
<parameter name="degauss">
<real>
0.01
</real>
</parameter>
</field>
<field name="Fields">
<parameter name="nspin">
<integer>
2
</integer>
</parameter>
</field>
<k_points type="automatic">
<mesh>
<integer rank="1" n1="6">
4 4 3 1 1 1
</integer>
</mesh>
</k_points>
</input>
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
<?xml version="1.0" encoding="UTF-8"?>
<input calculation="scf" prefix="alw">
<cell type="qecell">
<qecell ibrav="6" alat="12.0">
<real rank="1" n1="5">
0.0 0.375 0.0 0.0 0.0
</real>
</qecell>
</cell>
<atomic_species ntyp="1">
<specie name="Al">
<property name="mass">
<real>26.98</real>
</property>
<property name="pseudofile">
<string>Al.pz-vbc.UPF</string>
</property>
</specie>
</atomic_species>
<atomic_list units="alat" nat="1" >
<atom name="Al">
<position>
<real rank="1" n1="3">
0.0 0.0 0.000
</real>
</position>
</atom>
</atomic_list>
<field name="InputOutput">
<parameter name="restart_mode">
<string>
from_scratch
</string>
</parameter>
<parameter name="pseudo_dir">
<string>
$PSEUDO_DIR/
</string>
</parameter>
<parameter name="outdir">
<string>
$TMP_DIR/
</string>
</parameter>
</field>
<field name="Numerics">
<parameter name="ecutwfc">
<real>
25.0
</real>
</parameter>
<parameter name="ecutrho">
<real>
150.0
</real>
</parameter>
<parameter name="mixing_beta">
<real>
0.7
</real>
</parameter>
<parameter name="conv_thr">
<real>
1.0e-8
</real>
</parameter>
</field>
<field name="Options">
<parameter name="occupations">
<string>
smearing
</string>
</parameter>
<parameter name="smearing">
<string>
methfessel-paxton
</string>
</parameter>
<parameter name="degauss">
<real>
0.01
</real>
</parameter>
</field>
<field name="Fields">
<parameter name="nspin">
<integer>
1
</integer>
</parameter>
</field>
<k_points type="automatic">
<mesh>
<integer rank="1" n1="6">
2 2 24 1 1 1
</integer>
</mesh>
</k_points>
</input>
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
<?xml version="1.0" encoding="UTF-8"?>
<input calculation="scf" prefix="alh">
<cell type="qecell">
<qecell ibrav="6" alat="12.0">
<real rank="1" n1="5">
0.0 1.875 0.0 0.0 0.0
</real>
</qecell>
</cell>
<atomic_species ntyp="2">
<specie name="Al">
<property name="mass">
<real>26.98</real>
</property>
<property name="pseudofile">
<string>Al.pz-vbc.UPF</string>
</property>
</specie>
<specie name="H">
<property name="mass">
<real>1.0</real>
</property>
<property name="pseudofile">
<string>H.pz-vbc.UPF</string>
</property>
</specie>
</atomic_species>
<atomic_list units="alat" nat="6" >
<atom name="Al">
<position>
<real rank="1" n1="3">
0.00000000 0.00000000 0.0000
</real>
</position>
</atom>
<atom name="Al">
<position>
<real rank="1" n1="3">
0.00000000 0.00000000 0.375
</real>
</position>
</atom>
<atom name="Al">
<position>
<real rank="1" n1="3">
-0.02779870 0.00000000 .75537515
</real>
</position>
</atom><atom name="H">
<position>
<real rank="1" n1="3">
0.19269012 0.00000000 .93750000
</real>
</position>
</atom><atom name="Al">
<position>
<real rank="1" n1="3">
-0.02779870 0.00000000 1.11962485
</real>
</position>
</atom><atom name="Al">
<position>
<real rank="1" n1="3">
0.00000000 0.00000000 1.5
</real>
</position>
</atom>
</atomic_list>
<field name="InputOutput">
<parameter name="restart_mode">
<string>
from_scratch
</string>
</parameter>
<parameter name="pseudo_dir">
<string>
$PSEUDO_DIR/
</string>
</parameter>
<parameter name="outdir">
<string>
$TMP_DIR/
</string>
</parameter>
</field>
<field name="Numerics">
<parameter name="ecutwfc">
<real>
25.0
</real>
</parameter>
<parameter name="ecutrho">
<real>
150.0
</real>
</parameter>
<parameter name="mixing_beta">
<real>
0.7
</real>
</parameter>
<parameter name="conv_thr">
<real>
1.0e-8
</real>
</parameter>
</field>
<field name="Options">
<parameter name="occupations">
<string>
smearing
</string>
</parameter>
<parameter name="smearing">
<string>
methfessel-paxton
</string>
</parameter>
<parameter name="degauss">
<real>
0.01
</real>
</parameter>
</field>
<k_points type="automatic">
<mesh>
<integer rank="1" n1="6">
2 2 2 1 1 1
</integer>
</mesh>
</k_points>
</input>
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"