quantum-espresso/GWW/examples/example05/run_example

363 lines
7.5 KiB
Bash
Executable File

#!/bin/sh
# run from directory where this script is
cd `dirname $0`
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 head.x pw4gww.x gww. x to calculate"
$ECHO "the GW QP levels of bulk Si"
# set the needed environment variables
. ../../../environment_variables
# required executables and pseudopotentials
BIN_LIST="pw.x head.x pw4gww.x gww.x simple.x simple_bse.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 "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="$PARA_PREFIX $BIN_DIR/pw.x "
$ECHO
$ECHO " running pw.x as: $PW_COMMAND"
$ECHO
HEAD_COMMAND="$PARA_PREFIX $BIN_DIR/head.x "
$ECHO
$ECHO " running pw.x as: $HEAD_COMMAND"
$ECHO
PW4GWW_COMMAND="$PARA_PREFIX $BIN_DIR/pw4gww.x "
$ECHO
$ECHO " running pw4gww.x as: $PW4GWW_COMMAND"
$ECHO
GWW_COMMAND="$PARA_PREFIX $BIN_DIR/gww.x "
$ECHO
$ECHO " running gww.x as: $GWW_COMMAND"
$ECHO
SIMPLE_COMMAND="$PARA_PREFIX $BIN_DIR/simple.x "
$ECHO
$ECHO " running simple.x as: $SIMPLE_COMMAND"
$ECHO
SIMPLE_BSE_COMMAND="$PARA_PREFIX $BIN_DIR/simple_bse.x "
$ECHO
$ECHO " running simple_bse.x as: $SIMPLE_BSE_COMMAND"
$ECHO
ABCOEFF_TO_EPS_COMMAND="$BIN_DIR/abcoeff_to_eps.x"
# self-consistent calculation
cat > si_scf_k.in << EOF
&control
calculation='scf'
restart_mode='from_scratch',
prefix='si'
pseudo_dir = '$PSEUDO_DIR/',
outdir='$TMP_DIR/'
/
&system
ibrav= 8, celldm(1)= 10.26,celldm(2)= 1, celldm(3)=1,
nat= 8, ntyp= 1,
ecutwfc = 15.0
/
&electrons
diagonalization='david',
conv_thr = 1.0d-10,
mixing_beta = 0.5,
startingwfc='random',
/
ATOMIC_SPECIES
Si 1. Si.pz-vbc.UPF
ATOMIC_POSITIONS (crystal)
Si 0.00000 0.00000 0.00000
Si 0.50000 0.50000 0.00000
Si 0.00000 0.50000 0.50000
Si 0.50000 0.00000 0.50000
Si 0.25000 0.25000 0.25000
Si 0.75000 0.75000 0.25000
Si 0.75000 0.25000 0.75000
Si 0.25000 0.75000 0.75000
K_POINTS (automatic)
4 4 4 1 1 1
EOF
$ECHO " running the scf calculation for Si...\c"
$PW_COMMAND < si_scf_k.in > si_scf_k.out
check_failure $?
$ECHO " done"
#calculation of head
cat > si_head.in << EOF
calculation of head
&inputph
l_head=.true.
tr2_ph=1.d-4,
prefix='si',
omega_gauss=20.0
n_gauss=97
grid_type=5
second_grid_i=1
second_grid_n=10
niter_ph=1
nsteps_lanczos=30
outdir='$TMP_DIR/'
/
0.0 0.0 0.0
EOF
$ECHO " running the head calculation for Si...\c"
$HEAD_COMMAND < si_head.in > si_head.out
check_failure $?
$ECHO " done"
# non self-consistent calculation
cat > si_nscf.in << EOF
&control
calculation='nscf'
restart_mode='from_scratch',
prefix='si'
pseudo_dir = '$PSEUDO_DIR/',
outdir='$TMP_DIR/'
/
&system
ibrav= 8, celldm(1)= 10.26,celldm(2)= 1, celldm(3)=1,
nat= 8, ntyp= 1,
ecutwfc = 15.0,nbnd=32
/
&electrons
diagonalization='david',
conv_thr = 1.0d-10,
mixing_beta = 0.5,
startingwfc='random',
/
ATOMIC_SPECIES
Si 1. Si.pz-vbc.UPF
ATOMIC_POSITIONS (crystal)
Si 0.00000 0.00000 0.00000
Si 0.50000 0.50000 0.00000
Si 0.00000 0.50000 0.50000
Si 0.50000 0.00000 0.50000
Si 0.25000 0.25000 0.25000
Si 0.75000 0.75000 0.25000
Si 0.75000 0.25000 0.75000
Si 0.25000 0.75000 0.75000
K_POINTS (gamma)
EOF
$ECHO " running the nscf calculation for Si...\c"
$PW_COMMAND < si_nscf.in > si_nscf.out
check_failure $?
$ECHO " done"
#pw4gww calculations
cat > si_pw4gww.in << EOF
&inputpw4gww
prefix='si'
num_nbndv(1)=16
num_nbnds=32
l_truncated_coulomb=.false.
numw_prod=100
pmat_cutoff=3d0
s_self_lanczos=1d-8
outdir='$TMP_DIR'
l_simple=.true.
/
EOF
$ECHO " running the pw4gww calculation for Si...\c"
$PW4GWW_COMMAND < si_pw4gww.in > si_pw4gww.out
check_failure $?
$ECHO " done"
cat > si_gww.in << EOF
&inputgww
ggwin%prefix='si'
ggwin%n=97,
ggwin%n_fit=120,
ggwin%max_i=32,
ggwin%i_min=1
ggwin%i_max=32
ggwin%l_truncated_coulomb=.false.
ggwin%grid_time=3
ggwin%grid_freq=5
ggwin%second_grid_i=1
ggwin%second_grid_n=10
ggwin%omega=20
ggwin%omega_fit=20
ggwin%n_grid_fit=240
ggwin%tau=9.8
ggwin%n_set_pola=16
ggwin%outdir='$TMP_DIR'
/
EOF
$ECHO " running the gww calculation for Si...\c"
$GWW_COMMAND < si_gww.in > si_gww.out
check_failure $?
$ECHO " done"
# non self-consistent calculation
cat > si_nscf_k.in << EOF
&control
calculation='nscf'
restart_mode='from_scratch',
prefix='si'
pseudo_dir = '$PSEUDO_DIR/',
outdir='$TMP_DIR/'
/
&system
ibrav= 8, celldm(1)= 10.26,celldm(2)= 1, celldm(3)=1,
nat= 8, ntyp= 1,
ecutwfc = 15.0,nbnd=40
nosym=.true.,noinv=.true.
/
&electrons
diagonalization='david',
conv_thr = 1.0d-10,
mixing_beta = 0.5,
startingwfc='random',
/
ATOMIC_SPECIES
Si 1. Si.pz-vbc.UPF
ATOMIC_POSITIONS (crystal)
Si 0.00000 0.00000 0.00000
Si 0.50000 0.50000 0.00000
Si 0.00000 0.50000 0.50000
Si 0.50000 0.00000 0.50000
Si 0.25000 0.25000 0.25000
Si 0.75000 0.75000 0.25000
Si 0.75000 0.25000 0.75000
Si 0.25000 0.75000 0.75000
K_POINTS (automatic)
2 2 2 1 0 0
EOF
$ECHO " running the pw.x calculation for Si...\c"
$PW_COMMAND < si_nscf_k.in > si_nscf_k.out
check_failure $?
$ECHO " done"
# simple calculation
cat > si_simple.in << EOF
&inputsimple
prefix='si'
outdir='$TMP_DIR/'
calc_mode=0
num_nbndv=16
num_val=16
num_cond=24
s_bands=0.1
s_product=1.0
nkpoints(1)=2
nkpoints(2)=2
nkpoints(3)=2
w_type=0
l_truncated_coulomb=.false.
numpw=100
/
EOF
$ECHO " running the simple calculation for Si...\c"
$SIMPLE_COMMAND < si_simple.in > si_simple.out
check_failure $?
$ECHO " done"
# simple calculation
cat > si_simple_bse.in << EOF
&inputsimple
simple_in%prefix='si'
simple_in%outdir='$TMP_DIR/'
simple_in%scissor=0.6
simple_in%spin_state=1
simple_in%h_level=3
simple_in%task=1
simple_in%lanczos_step=100
/
EOF
$ECHO " running the simple_bse calculation for Si...\c"
$SIMPLE_BSE_COMMAND < si_simple_bse.in > si_simple_bse.out
check_failure $?
$ECHO " done"
# post processing calculation of complex dielectric function
cat > abcoeff_to_eps.in << EOF
100
100
0.
5.
0.2
2000
1080.04
8
2
0.
EOF
$ABCOEFF_TO_EPS_COMMAND < abcoeff_to_eps.in > abcoeff_to_eps.tmp
#copy self_energy files
# $ECHO "copying self-energy files..\c"
# cp $TMP_DIR/si-im_on_im* .
# cp $TMP_DIR/si-re_on_im* .
# clean TMP_DIR
$ECHO " cleaning $TMP_DIR...\c"
rm -rf $TMP_DIR/si*
$ECHO " done"
$ECHO
$ECHO "$EXAMPLE_DIR : done"