#!/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 # 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 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 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" PP_COMMAND="$PARA_PREFIX $BIN_DIR/pp.x $PARA_POSTFIX" PLOTRHO_COMMAND="$BIN_DIR/plotrho.x" BANDS_COMMAND="$PARA_PREFIX $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 # clean TMP_DIR $ECHO " cleaning $TMP_DIR...\c" rm -rf $TMP_DIR/* $ECHO " done" # self-consistent calculation cat > si.scf.in << EOF &control calculation='scf' restart_mode='from_scratch', prefix='si' pseudo_dir = '$PSEUDO_DIR/', outdir='$TMP_DIR/' / &system ibrav= 2, celldm(1)= 10.2, nat= 2, ntyp= 1, ecutwfc =18.0 / &electrons conv_thr = 1.0d-8 mixing_beta = 0.7 / ATOMIC_SPECIES Si 28.086 Si.pz-vbc.UPF ATOMIC_POSITIONS Si 0.00 0.00 0.00 Si 0.25 0.25 0.25 K_POINTS 10 0.1250000 0.1250000 0.1250000 1.00 0.1250000 0.1250000 0.3750000 3.00 0.1250000 0.1250000 0.6250000 3.00 0.1250000 0.1250000 0.8750000 3.00 0.1250000 0.3750000 0.3750000 3.00 0.1250000 0.3750000 0.6250000 6.00 0.1250000 0.3750000 0.8750000 6.00 0.1250000 0.6250000 0.6250000 3.00 0.3750000 0.3750000 0.3750000 1.00 0.3750000 0.3750000 0.6250000 3.00 EOF $ECHO " running the scf calculation...\c" $PW_COMMAND < si.scf.in > si.scf.out check_failure $? $ECHO " done" # post-processing for charge density cat > si.pp_rho.in << EOF &inputpp prefix = 'si' outdir = '$TMP_DIR/' filplot = 'sicharge' plot_num= 0 / &plot nfile = 1 filepp(1) = 'sicharge' weight(1) = 1.0 iflag = 2 output_format = 2 fileout = 'si.rho.dat' e1(1) =1.0, e1(2)=1.0, e1(3) = 0.0, e2(1) =0.0, e2(2)=0.0, e2(3) = 1.0, nx=56, ny=40 / EOF $ECHO " running pp.x to do a 2-d plot of the charge density...\c" $PP_COMMAND < si.pp_rho.in > si.pp_rho.out check_failure $? $ECHO " done" # plotrho cat > si.plotrho.in << EOF si.rho.dat si.rho.ps n 0 0.09 6 EOF $ECHO " running plotrho.x to generate rho.ps...\c" $PLOTRHO_COMMAND < si.plotrho.in > si.plotrho.out $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' / &system ibrav= 2, celldm(1) =10.20, nat= 2, ntyp= 1, ecutwfc =18.0, nbnd = 8, / &electrons / ATOMIC_SPECIES Si 28.086 Si.pz-vbc.UPF ATOMIC_POSITIONS Si 0.00 0.00 0.00 Si 0.25 0.25 0.25 K_POINTS 36 0.5 0.5 0.5 1 0.4 0.4 0.4 2 0.3 0.3 0.3 3 0.2 0.2 0.2 4 0.1 0.1 0.1 5 0.0 0.0 0.0 6 0.0 0.0 0.1 7 0.0 0.0 0.2 8 0.0 0.0 0.3 9 0.0 0.0 0.4 10 0.0 0.0 0.5 11 0.0 0.0 0.6 12 0.0 0.0 0.7 13 0.0 0.0 0.8 14 0.0 0.0 0.9 15 0.0 0.0 1.0 16 0.0 0.1 1.0 17 0.0 0.2 1.0 18 0.0 0.3 1.0 19 0.0 0.4 1.0 20 0.0 0.5 1.0 21 0.0 0.6 1.0 22 0.0 0.7 1.0 23 0.0 0.8 1.0 24 0.0 0.9 1.0 25 0.0 1.0 1.0 26 0.0 0.9 0.9 27 0.0 0.8 0.8 28 0.0 0.7 0.7 29 0.0 0.6 0.6 30 0.0 0.5 0.5 31 0.0 0.4 0.4 32 0.0 0.3 0.3 33 0.0 0.2 0.2 34 0.0 0.1 0.1 35 0.0 0.0 0.0 36 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 &inputpp prefix = 'si' outdir = '$TMP_DIR/' filband = 'sibands.dat' / 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" $ECHO $ECHO "$EXAMPLE_DIR: done"