[Sax-project-users] GW calculation on organic semiconductor --1st
marsamos at democritos.it
marsamos at democritos.it
Mon May 4 15:28:12 CEST 2009
Dear User, to perform an EXX calculation with espresso you need first
to download the cvs version (go to www.qe-forge.org, select quantum
ESPRESSO and there select SCM and follow instruction for anonymous
connection). Then as always execute ./configure then add the -DEXX flag
to the DFLAGS line of make.sys:
DFLAGS = ...... -DEXX
then you have to compile espresso and the post-processing programs
(pw_export.x). As attachment you can find an example of run with EXX
and then GW for Polyacetylene (30 k points).
I have perform some calculations on Polyacetylene, polyethylene and PPV
with the new way of implementing Gigi-Baldereschi within the plasmon
pole and it works very well (the agreement with experiment is
impressive). If you want, instead of waiting for the release, I can
send you the new version of the sax routine
pw_pp_parameters_extern.f90. With this new version you will be able to
perform GW calculation with the plasmon pole on your polymers!!!
best regards
Layla
Quoting xiaoyinxie <xiaoyinxie at 126.com>:
> Dear marsamos:
> thank you for your kind help!
> your previous reply surgested me to implement a BSE calculation based
> on a Exact-exchange and I need to modify somewhere of pwscf.
> could you tell me which part I nend to modify in order to perform a
> EXX ,and what is the exact computational procedure?
> best wishes
> Xie Xiaoyin
>
>
>
>
> --
>
> ???????,???????!
>
>
> ?2009-04-20,marsamos at democritos.it ??:
>> Dear user, we where already aware of such 1D problems! I perform some
>> calculations on PPV, polyacetylene and polyethylene and found that for
>> PPV the agreement with experiment is good instead PA and PE seems to
>> behave abnormaly, in the way you already noticed. If you try a
>> calculation with cohsex option instead of plasmonpole you will see that
>> the results are completely different. We suspect that the problem comes
>> from the way plasmon-pole is interpolating. In fact in strongly
>> anisotropic systems the traditional way of doing plasmon-pole is not
>> consistent. We are now working in a modification of the plasmon pole. I
>> hope that for august (beginning of september) we will release a new sax
>> version. But if you need the optical properties, i.e. to solve Bethe
>> Salpeter equation and you prefer to have the results before I suggest
>> to you to do the following:
>>
>> Perform a DFT calculation with exact-exchange (this really give good
>> results for the electronic structure, I test this for PA and PE). Then
>> calculate with sax the screening (Polarizability and W), and then
>> perform the Bethe-Salpeter calculation. This procedure is theoretically
>> correct with the lesser approximation. As EXX is still experimental
>> within espresso you will have to modify some things within the code (is
>> very easy). Let me now and I give you the exact computational procedure.
>>
>>
>> Best regards
>>
>> Layla
>>
>>
>> of this We are now studying polyacetylene Quoting xiaoyinxie
>> <xiaoyinxie at 126.com>:
>>
>
----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.
-------------- next part --------------
#############################################################
# Path definitions
#############################################################
JOB="PA2"
JOB_DIR="/home/deisa/cne/cne0de00/cne0de00/$JOB"
PSEUDO_DIR="/home/deisa/cne/cne0de00/cne0de00/pseudo"
WORK_DIR="/ptmp1/pr23qu/cne0de00/$JOB"
SAX_BIN="/home/deisa/cne/cne0de00/cne0de00/codes/S3DE/sax/bin"
DFT_BIN="/home/deisa/cne/cne0de00/cne0de00/codes/espresso-4.0.5/bin"
PW_EXE="$DFT_BIN/pw.x"
PP_EXE="$DFT_BIN/pw_export.x"
GW_EXE="$SAX_BIN/gw.x"
PW_INPUT="$JOB_DIR/pw.in"
PW_OUTPUT="$JOB_DIR/pw.out"
PWN1_INPUT="$JOB_DIR/pwn1.in"
PWN1_OUTPUT="$JOB_DIR/pwn1.out"
PWN2_INPUT="$JOB_DIR/pwn2.in"
PWN2_OUTPUT="$JOB_DIR/pwn2.out"
PP_INPUT="$JOB_DIR/pp.in"
PP_OUTPUT="$JOB_DIR/pp.out"
GW1_INPUT="$JOB_DIR/gw1.in"
GW1_OUTPUT="$JOB_DIR/gw1.log"
GW2_INPUT="$JOB_DIR/gw2.in"
GW2_OUTPUT="$JOB_DIR/gw2.log"
#############################################################
test -d $WORK_DIR || mkdir $WORK_DIR
test -s $JOB_DIR/work_dir && rm -f $JOB_DIR/work_dir
ln -s $WORK_DIR $JOB_DIR/work_dir
test -s $WORK_DIR/job_dir && rm -f $WORK_DIR/job_dir
ln -s $JOB_DIR $WORK_DIR/job_dir
#############################################################
# generation of pwscf input file with a shifted k-point grid
#############################################################
cat << EOF > $PW_INPUT
&CONTROL
title="chain"
calculation='scf',
restart_mode = 'from_scratch',
tprnfor=.t.,
PSEUDO_DIR='$PSEUDO_DIR/',
prefix='chain',
/
&SYSTEM
ibrav = 8,
celldm(1)=20, celldm(2) = 1.0000,
celldm(3) = 0.23161107,
nat = 4,
ntyp = 2,
ecutwfc = 45.0 ,
nbnd = 10,
input_dft= 'PBE0'
nqx1=1, nqx2=1, nqx3=30
/
&ELECTRONS
/
ATOMIC_SPECIES
C 1.00000 C.GG.UPF
H 1.00000 H.vbc.new.UPF
ATOMIC_POSITIONS angstrom
C 0.000000000 0.000000000 -0.600000000
H 0.000000000 -1.098588601 -0.606136533
C 0.000000000 0.715952600 0.532701000
H 0.000000000 1.814245106 0.538665335
K_POINTS automatic
1 1 30 0 0 1
EOF
#################################################
cat << EOF > $PWN1_INPUT
&CONTROL
title="chain"
calculation='nscf',
tprnfor=.t.,
PSEUDO_DIR='$PSEUDO_DIR/',
prefix='chain',
/
&SYSTEM
ibrav = 0,
celldm(1) = 20.0000,
nat = 4,
ntyp = 2,
ecutwfc = 45.0 ,
nbnd = 32,
nosym= .true.
input_dft= 'PBE0'
nqx1=1, nqx2=1, nqx3=30
/
&ELECTRONS
/
CELL_PARAMETERS cubic
1.0 0.000000000 0.000000000
0.0 1.000000000 0.000000000
0.0 0.000000000 0.23161107
ATOMIC_SPECIES
C 1.00000 C.GG.UPF
H 1.00000 H.vbc.new.UPF
ATOMIC_POSITIONS angstrom
C 0.000000000 0.000000000 -0.600000000
H 0.000000000 -1.098588601 -0.606136533
C 0.000000000 0.715952600 0.532701000
H 0.000000000 1.814245106 0.538665335
K_POINTS crystal
30
0.000000000 0.000000000 0.016666667 0.033333333
0.000000000 0.000000000 0.050000000 0.033333333
0.000000000 0.000000000 0.083333333 0.033333333
0.000000000 0.000000000 0.116666667 0.033333333
0.000000000 0.000000000 0.150000000 0.033333333
0.000000000 0.000000000 0.183333333 0.033333333
0.000000000 0.000000000 0.216666667 0.033333333
0.000000000 0.000000000 0.250000000 0.033333333
0.000000000 0.000000000 0.283333333 0.033333333
0.000000000 0.000000000 0.316666667 0.033333333
0.000000000 0.000000000 0.350000000 0.033333333
0.000000000 0.000000000 0.383333333 0.033333333
0.000000000 0.000000000 0.416666667 0.033333333
0.000000000 0.000000000 0.450000000 0.033333333
0.000000000 0.000000000 0.483333333 0.033333333
0.000000000 0.000000000 0.516666667 0.033333333
0.000000000 0.000000000 0.550000000 0.033333333
0.000000000 0.000000000 0.583333333 0.033333333
0.000000000 0.000000000 0.616666667 0.033333333
0.000000000 0.000000000 0.650000000 0.033333333
0.000000000 0.000000000 0.683333333 0.033333333
0.000000000 0.000000000 0.716666667 0.033333333
0.000000000 0.000000000 0.750000000 0.033333333
0.000000000 0.000000000 0.783333333 0.033333333
0.000000000 0.000000000 0.816666667 0.033333333
0.000000000 0.000000000 0.850000000 0.033333333
0.000000000 0.000000000 0.883333333 0.033333333
0.000000000 0.000000000 0.916666667 0.033333333
0.000000000 0.000000000 0.950000000 0.033333333
0.000000000 0.000000000 0.983333333 0.033333333
EOF
#################################################
cat << EOF > $PWN2_INPUT
&CONTROL
title="chain"
calculation='nscf',
tprnfor=.t.,
PSEUDO_DIR='$PSEUDO_DIR/',
prefix='chain',
/
&SYSTEM
ibrav = 0,
celldm(1) = 20.0000,
nat = 4,
ntyp = 2,
ecutwfc = 45.0 ,
nbnd = 32,
nosym= .true.
input_dft= 'PBE0'
nqx1=1, nqx2=1, nqx3=30
/
&ELECTRONS
/
CELL_PARAMETERS cubic
1.0 0.000000000 0.000000000
0.0 1.000000000 0.000000000
0.0 0.000000000 0.23161107
ATOMIC_SPECIES
C 1.00000 C.GG.UPF
H 1.00000 H.vbc.new.UPF
ATOMIC_POSITIONS angstrom
C 0.000000000 0.000000000 -0.600000000
H 0.000000000 -1.098588601 -0.606136533
C 0.000000000 0.715952600 0.532701000
H 0.000000000 1.814245106 0.538665335
K_POINTS crystal
30
0.000000000 0.000000000 0.000000000 0.033333333
0.000000000 0.000000000 0.033333333 0.033333333
0.000000000 0.000000000 0.066666667 0.033333333
0.000000000 0.000000000 0.100000000 0.033333333
0.000000000 0.000000000 0.133333333 0.033333333
0.000000000 0.000000000 0.166666667 0.033333333
0.000000000 0.000000000 0.200000000 0.033333333
0.000000000 0.000000000 0.233333333 0.033333333
0.000000000 0.000000000 0.266666667 0.033333333
0.000000000 0.000000000 0.300000000 0.033333333
0.000000000 0.000000000 0.333333333 0.033333333
0.000000000 0.000000000 0.366666667 0.033333333
0.000000000 0.000000000 0.400000000 0.033333333
0.000000000 0.000000000 0.433333333 0.033333333
0.000000000 0.000000000 0.466666667 0.033333333
0.000000000 0.000000000 0.500000000 0.033333333
0.000000000 0.000000000 0.533333333 0.033333333
0.000000000 0.000000000 0.566666667 0.033333333
0.000000000 0.000000000 0.600000000 0.033333333
0.000000000 0.000000000 0.633333333 0.033333333
0.000000000 0.000000000 0.666666667 0.033333333
0.000000000 0.000000000 0.700000000 0.033333333
0.000000000 0.000000000 0.733333333 0.033333333
0.000000000 0.000000000 0.766666667 0.033333333
0.000000000 0.000000000 0.800000000 0.033333333
0.000000000 0.000000000 0.833333333 0.033333333
0.000000000 0.000000000 0.866666667 0.033333333
0.000000000 0.000000000 0.900000000 0.033333333
0.000000000 0.000000000 0.933333333 0.033333333
0.000000000 0.000000000 0.966666667 0.033333333
EOF
##################################################################
# CONVERSION
##################################################################
cat << EOF > $PP_INPUT
&inputpp
prefix="chain",
/
EOF
##################################################################
# GW1 screening
##################################################################
cat << EOF > $GW1_INPUT
<input>
<sax_options
calculation_kind = "GW"
start_from = "DFT"
gw_integration_method = "plasmon_pole"
calc_plasmon_pole_parameters = "T"
lorentzian_broadening = "0.007"
plasmon_energy = "1.0"
nbandmin = "1"
nbandmax = "32"
nelec = "10.0"
convert_from_pwscf="T"
convert_from_pwscf_file="chain.export/index.xml"
system_kind="3D"
calc_polarizability="T"
cutoff_polarizability="6.0"
calc_w="T"
cutoff_fock="45.0"
/>
<structure>
<direct
a1 = " 20.00000 , 0.000000000 , 0.000000000"
a2 = " 0.00000000 , 20.000000 , 0.000000000"
a3 = " 0.00000000 , 0.00000000 , 4.6322214" />
</structure>
<atoms>
<types ntypes="2">
C "$PSEUDO_DIR/C.GG.UPF" 45.0
H "$PSEUDO_DIR/H.vbc.new.UPF" 45.0
</types>
<positions natoms="4" units="angstrom" alat="20.00">
C 0.000000000 0.000000000 -0.600000000
H 0.000000000 -1.098588601 -0.606136533
C 0.000000000 0.715952600 0.532701000
H 0.000000000 1.814245106 0.538665335
</positions>
</atoms>
<kmesh>
<mesh nk="1 1 30" shift="0.0 0.0 0.5"/>
</kmesh>
</input>
EOF
##################################################################
# GW2 self-energy
##################################################################
cat << EOF > $GW2_INPUT
<input>
<sax_options
calculation_kind = "GW"
start_from = "DFT"
gw_integration_method = "plasmon_pole"
lorentzian_broadening = "0.007"
plasmon_energy = "1.0"
nbandmin = "1"
nbandmax = "32"
nelec = "10.0"
convert_from_pwscf="T"
convert_from_pwscf_file="chain.export/index.xml"
system_kind="3D"
cutoff_polarizability="6.0"
cutoff_fock="45.0"
calc_sigma_x="T"
calc_sigma_c="T"
calc_energies = "T"
calc_sp_hmatrix = "T"
sigma_nbmin = "1"
sigma_nbmax = "32"
diagonal = "T"
sigma_first_order = "T"
sax_to_want = "T"
calc_QP_states = "T"
/>
<structure>
<direct
a1 = " 20.00000 , 0.000000000 , 0.000000000"
a2 = " 0.00000000 , 20.000000 , 0.000000000"
a3 = " 0.00000000 , 0.00000000 , 4.6322214" />
</structure>
<atoms>
<types ntypes="2">
C "$PSEUDO_DIR/C.GG.UPF" 45.0
H "$PSEUDO_DIR/H.vbc.new.UPF" 45.0
</types>
<positions natoms="4" units="angstrom" alat="20.00">
C 0.000000000 0.000000000 -0.600000000
H 0.000000000 -1.098588601 -0.606136533
C 0.000000000 0.715952600 0.532701000
H 0.000000000 1.814245106 0.538665335
</positions>
</atoms>
<kmesh>
<mesh nk="1 1 30" shift="0.0 0.0 0.0"/>
</kmesh>
</input>
EOF
#############################################################
# Running
#############################################################
cd $WORK_DIR
$PW_EXE < $PW_INPUT > $PW_OUTPUT
$PW_EXE < $PWN1_INPUT > $PWN1_OUTPUT
$PP_EXE < $PP_INPUT > $PP_OUTPUT
$GW_EXE << EOF
$GW1_INPUT
$GW1_OUTPUT
EOF
$PW_EXE < $PW_INPUT > $PW_OUTPUT
$PW_EXE < $PWN2_INPUT > $PWN2_OUTPUT
$PP_EXE < $PP_INPUT > $PP_OUTPUT
$GW_EXE << EOF
$GW2_INPUT
$GW2_OUTPUT
EOF
More information about the Sax-project-users
mailing list