1#!/bin/sh 2 3# run from directory where this script is 4cd `echo $0 | sed 's/\(.*\)\/.*/\1/'` # extract pathname 5EXAMPLE_DIR=`pwd` 6 7# check whether echo has the -e option 8if test "`echo -e`" = "-e" ; then ECHO=echo ; else ECHO="echo -e" ; fi 9 10$ECHO 11$ECHO "$EXAMPLE_DIR : starting" 12$ECHO 13$ECHO "This example shows how to calculate Fermi surfaces colored with the Fermi velocity and projections." 14 15# set the needed environment variables 16. ../../../environment_variables 17 18# required executables and pseudopotentials 19BIN_LIST="pw.x fermi_velocity.x projwfc.x fermi_proj.x" 20PSEUDO_LIST="Mg.pbe-n-kjpaw_psl.0.3.0.upf B.pbe-n-kjpaw_psl.0.1.upf" 21 22$ECHO 23$ECHO " executables directory: $BIN_DIR" 24$ECHO " pseudo directory: $PSEUDO_DIR" 25$ECHO " temporary directory: $TMP_DIR" 26$ECHO " checking that needed directories and files exist...\c" 27 28# check for directories 29for DIR in "$BIN_DIR" "$PSEUDO_DIR" ; do 30 if test ! -d $DIR ; then 31 $ECHO 32 $ECHO "ERROR: $DIR not existent or not a directory" 33 $ECHO "Aborting" 34 exit 1 35 fi 36done 37for DIR in "$TMP_DIR" "$EXAMPLE_DIR/results" ; do 38 if test ! -d $DIR ; then 39 mkdir $DIR 40 fi 41done 42cd $EXAMPLE_DIR/results 43 44# check for executables 45for FILE in $BIN_LIST ; do 46 if test ! -x $BIN_DIR/$FILE ; then 47 $ECHO 48 $ECHO "ERROR: $BIN_DIR/$FILE not existent or not executable" 49 $ECHO "Aborting" 50 exit 1 51 fi 52done 53 54# check for pseudopotentials 55for FILE in $PSEUDO_LIST ; do 56 if test ! -r $PSEUDO_DIR/$FILE ; then 57 $ECHO 58 $ECHO "Downloading $FILE to $PSEUDO_DIR...\c" 59 $WGET $PSEUDO_DIR/$FILE $NETWORK_PSEUDO/$FILE 2> /dev/null 60 fi 61 if test $? != 0; then 62 $ECHO 63 $ECHO "ERROR: $PSEUDO_DIR/$FILE not existent or not readable" 64 $ECHO "Aborting" 65 exit 1 66 fi 67done 68$ECHO " done" 69 70# how to run executables 71PW_COMMAND="$PARA_PREFIX $BIN_DIR/pw.x $PARA_POSTFIX" 72PROJWFC_COMMAND="$PARA_PREFIX $BIN_DIR/projwfc.x $PARA_POSTFIX" 73FERMI_PROJ_COMMAND="$BIN_DIR/fermi_proj.x " 74FERMI_VELOCITY_COMMAND="$BIN_DIR/fermi_velocity.x " 75$ECHO 76$ECHO " running pw.x as: $PW_COMMAND" 77$ECHO " running projwfc.x as: $PROJWFC_COMMAND" 78$ECHO " running fermi_velocity.x as: $FERMI_VELOCITY_COMMAND" 79$ECHO " running fermi_proj.x as: $FERMI_PROJ_COMMAND" 80$ECHO 81 82# self-consistent calculation 83cat > mgb2.scf.in << EOF 84&CONTROL 85 calculation = 'scf', 86 pseudo_dir = '$PSEUDO_DIR/', 87 prefix = 'mgb2' , 88 outdir = '$TMP_DIR/' 89/ 90&SYSTEM 91 ibrav = 4, 92 celldm(1) = 5.808563789, 93 celldm(3) = 1.145173082, 94 nat = 3, 95 ntyp = 2, 96 ecutwfc = 50.0 , 97 ecutrho = 500.0 , 98 occupations = 'tetrahedra_opt', 99/ 100&ELECTRONS 101/ 102ATOMIC_SPECIES 103 Mg 24.3050 Mg.pbe-n-kjpaw_psl.0.3.0.upf 104 B 10.811 B.pbe-n-kjpaw_psl.0.1.upf 105ATOMIC_POSITIONS crystal 106 Mg 0.000000000 0.000000000 0.000000000 107 B 0.333333333 0.666666667 0.500000000 108 B 0.666666667 0.333333333 0.500000000 109K_POINTS automatic 110 16 16 12 0 0 0 111EOF 112$ECHO " running the scf calculation for MgB2...\c" 113$PW_COMMAND -in mgb2.scf.in > mgb2.scf.out 114check_failure $? 115$ECHO " done" 116 117$ECHO 118$ECHO " Fermi velocity at the Fermi surface ..." 119 120$FERMI_VELOCITY_COMMAND -in mgb2.scf.in > FS_vf.out 121check_failure $? 122 123$ECHO 124$ECHO " Calcuration of projections of atomic orbitals ..." 125 126cat > mgb2.proj.in << EOF 127&projwfc 128 outdir = '$TMP_DIR/' 129 prefix='mgb2' 130 Emin=-0.3422, 131 Emax=10.0578, 132 DeltaE=0.1 133/ 1342 1356 10 136EOF 137$ECHO " running projection calculation for MgB2...\c" 138$PROJWFC_COMMAND -in mgb2.proj.in > mgb2.proj.out 139check_failure $? 140$ECHO " done" 141 142$ECHO 143$ECHO " Orbital projections at the Fermi Surface..." 144 145# 146# Step 2b-2. Run proj_fermi.x 147# 148$ECHO "" 149$ECHO "grep state mgb2.proj.out" 150$ECHO "" 151grep state mgb2.proj.out 152# 153$ECHO "" 154$ECHO " Compute B2pz-projected (Wfc6+Wfc10) fermi surfaces." 155$ECHO "" 156$FERMI_PROJ_COMMAND -in mgb2.proj.in > FS_b2pz.out 157check_failure $? 158$ECHO "mv proj.frmsf b2pz.frmsf" 159mv proj.frmsf b2pz.frmsf 160 161$ECHO 162$ECHO " Use 'fermisurfer results/b2pz.frmsf' to plot the Fermi Surface" 163 164$ECHO " cleaning $TMP_DIR...\c" 165rm -rf $TMP_DIR/mgb2.* 166$ECHO " done" 167 168$ECHO 169$ECHO "$EXAMPLE_DIR: done" 170