[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