#!/bin/sh # 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 postprocessing codes to make a" $ECHO "contour plot in the [110] plane of the charge density for Si, and to" $ECHO "plot the band structure of Si." # set the needed environment variables . ../../../environment_variables # required executables and pseudopotentials BIN_LIST="pw.x pp.x plotrho.x bands.x plotband.x" PSEUDO_LIST="Si.pz-vbc.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 gnuplot GP_COMMAND=`which gnuplot 2>/dev/null` if [ "$GP_COMMAND" = "" ]; then $ECHO $ECHO "gnuplot not in PATH" $ECHO "Results will not be plotted" fi # 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 $NETWORK_PSEUDO/$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=" mpirun -n 4 $BIN_DIR/pw.x $PARA_POSTFIX" PP_COMMAND="$PARA_PREFIX $BIN_DIR/pp.x $PARA_POSTFIX" PW_COMMAND="$PARA_PREFIX $BIN_DIR/pw.x $PARA_POSTFIX" PLOTRHO_COMMAND="$BIN_DIR/plotrho.x" BANDS_COMMAND="mpirun -n 4 $BIN_DIR/bands.x $PARA_POSTFIX" PLOTBAND_COMMAND="$BIN_DIR/plotband.x" $ECHO $ECHO " running pw.x as : $PW_COMMAND" $ECHO " running pp.x as : $PP_COMMAND" $ECHO " running plotrho.x as : $PLOTRHO_COMMAND" $ECHO " running bands.x as : $BANDS_COMMAND" $ECHO " running plotband.x as: $PLOTBAND_COMMAND" $ECHO # self-consistent calculation cat > si.scf.in << EOF &control calculation='scf' restart_mode='from_scratch', prefix='si' pseudo_dir = '$PSEUDO_DIR/', outdir='$TMP_DIR/' wf_collect = .true. / &system ibrav = 0, nat = 8, ntyp = 1, ecutwfc = 20.0 , ecutrho = 80 , / &electrons conv_thr = 1.0d-8 mixing_beta = 0.7 / CELL_PARAMETERS angstrom 5.314000000 0.000000000 0.000000000 0.000000000 5.314000000 0.000000000 0.000000000 0.000000000 5.314000000 ATOMIC_SPECIES Si 28.08600 Si.pz-vbc.UPF ATOMIC_POSITIONS crystal Si 0.000000000 0.000000000 0.000000000 Si 0.000000000 0.500000000 0.500000000 Si 0.500000000 0.500000000 0.000000000 Si 0.500000000 0.000000000 0.500000000 Si 0.750000000 0.250000000 0.750000000 Si 0.250000000 0.250000000 0.250000000 Si 0.250000000 0.750000000 0.750000000 Si 0.750000000 0.750000000 0.250000000 K_POINTS automatic 2 2 2 0 0 0 EOF $ECHO " running the scf calculation...\c" $PW_COMMAND < si.scf.in > si.scf.out check_failure $? $ECHO " done" # band structure calculation along high-symmetry lines cat > si.band.in << EOF &control calculation='bands' pseudo_dir = '$PSEUDO_DIR/', outdir='$TMP_DIR/', prefix='si' wf_collect = .true. / &system ibrav = 0, nat = 8, ntyp = 1, ecutwfc = 20.0 , ecutrho = 80 , nbnd = 8 / &electrons conv_thr = 1.0d-8 mixing_beta = 0.7 / CELL_PARAMETERS angstrom 5.314000000 0.000000000 0.000000000 0.000000000 5.314000000 0.000000000 0.000000000 0.000000000 5.314000000 ATOMIC_SPECIES Si 28.08600 Si.pz-vbc.UPF ATOMIC_POSITIONS crystal Si 0.000000000 0.000000000 0.000000000 Si 0.000000000 0.500000000 0.500000000 Si 0.500000000 0.500000000 0.000000000 Si 0.500000000 0.000000000 0.500000000 Si 0.750000000 0.250000000 0.750000000 Si 0.250000000 0.250000000 0.250000000 Si 0.250000000 0.750000000 0.750000000 Si 0.750000000 0.750000000 0.250000000 K_POINTS tpiba_b 5 L 20 gG 20 X 0 1.0 1.0 0.0 30 gG 1 EOF $ECHO " running the band-structure calculation for Si...\c" $PW_COMMAND < si.band.in > si.band.out check_failure $? $ECHO " done" # post-processing for band structure cat > si.bands.in << EOF &bands prefix = 'si' outdir = '$TMP_DIR/' filband = 'sibands.dat' lsym=.true., / EOF $ECHO " running the post-processing for band structure...\c" $BANDS_COMMAND < si.bands.in > si.bands.out check_failure $? $ECHO " done" # plotband.x cat > si.plotband.in << EOF sibands.dat -6.0 10 sibands.xmgr sibands.ps 6.255 1.0 6.255 EOF $ECHO " running plotband.x to generate sibands.ps...\c" $PLOTBAND_COMMAND < si.plotband.in > si.plotband.out check_failure $? $ECHO " done"