quantum-espresso/examples/example06/run_example

187 lines
4.1 KiB
Bash
Executable File

#!/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 calculate interatomic force constants in"
$ECHO "real space for AlAs in zincblende structure."
# set the needed environment variables
. ../environment_variables
# required executables and pseudopotentials
BIN_LIST="pw.x ph.x q2r.x matdyn.x"
PSEUDO_LIST="Al.pz-vbc.UPF As.pz-bhs.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"
PH_COMMAND="$PARA_PREFIX $BIN_DIR/ph.x $PARA_POSTFIX"
Q2R_COMMAND="$PARA_PREFIX $BIN_DIR/q2r.x $PARA_POSTFIX"
MATDYN_COMMAND="$PARA_PREFIX $BIN_DIR/matdyn.x $PARA_POSTFIX"
$ECHO
$ECHO " running pw.x as: $PW_COMMAND"
$ECHO " running ph.x as: $PH_COMMAND"
$ECHO " running q2r.x as: $Q2R_COMMAND"
$ECHO " running matdyn.x as: $MATDYN_COMMAND"
$ECHO
# clean TMP_DIR
$ECHO " cleaning $TMP_DIR...\c"
rm -rf $TMP_DIR/*
$ECHO " done"
# self-consistent calculation
cat > alas.scf.in << EOF
&control
calculation='scf'
restart_mode='from_scratch',
tstress = .true.
tprnfor = .true.
prefix='alas',
pseudo_dir = '$PSEUDO_DIR/',
outdir='$TMP_DIR/'
/
&system
ibrav= 2, celldm(1) =10.50, nat= 2, ntyp= 2,
ecutwfc =16.0
/
&electrons
conv_thr = 1.0d-8
mixing_beta = 0.7
/
ATOMIC_SPECIES
Al 26.98 Al.pz-vbc.UPF
As 74.92 As.pz-bhs.UPF
ATOMIC_POSITIONS
Al 0.00 0.00 0.00
As 0.25 0.25 0.25
K_POINTS
2
0.25 0.25 0.25 1.0
0.25 0.25 0.75 3.0
EOF
$ECHO " running the scf calculation...\c"
$PW_COMMAND < alas.scf.in > alas.scf.out
check_failure $?
$ECHO " done"
# phonon calculation on a (444) uniform grid of q-points
cat > alas.ph.in << EOF
phonons of AlAs
&inputph
tr2_ph=1.0d-12,
prefix='alas',
ldisp=.true.,
nq1=4, nq2=4, nq3=4
amass(1)=26.98,
amass(2)=74.92,
outdir='$TMP_DIR/',
fildyn='alas.dyn',
/
EOF
$ECHO " running the phonon calculation ...\c"
$PH_COMMAND < alas.ph.in > alas.ph.out
check_failure $?
$ECHO " done"
cat > q2r.in <<EOF
&input
fildyn='alas.dyn', zasr='simple', flfrc='alas444.fc'
/
EOF
$ECHO " transforming C(q) => C(R)...\c"
$Q2R_COMMAND < q2r.in > q2r.out
check_failure $?
$ECHO " done"
cat > matdyn.in <<EOF
&input
asr='simple', amass(1)=26.98, amass(2)=74.922,
flfrc='alas444.fc', flfrq='alas.freq'
/
9
0.000 0.0 0.0 0.0
0.125 0.0 0.0 0.0
0.250 0.0 0.0 0.0
0.375 0.0 0.0 0.0
0.500 0.0 0.0 0.0
0.625 0.0 0.0 0.0
0.750 0.0 0.0 0.0
0.875 0.0 0.0 0.0
1.000 0.0 0.0 0.0
EOF
$ECHO " recalculating omega(q) from C(R)...\c"
$MATDYN_COMMAND < matdyn.in > matdyn.out
check_failure $?
$ECHO " done"
cat > phdos.in <<EOF
&input
asr='simple', dos=.true. amass(1)=26.98, amass(2)=74.922,
flfrc='alas444.fc', fldos='alas.phdos', nk1=6,nk2=6,nk3=6
/
EOF
$ECHO " calculating phonon DOS ...\c"
$MATDYN_COMMAND < phdos.in > phdos.out
check_failure $?
$ECHO " done"
$ECHO
$ECHO "$EXAMPLE_DIR: done"