GW计算过程

  • 计算所需的文件结构如下:

├── 5-epsilon
│   ├── bash
│   └── epsilon.inp
├── 6-sigma
│   ├── bash
│   ├── eqp.py
│   └── sigma.inp
├── 7-kernel
│   ├── bash
│   └── kernel.inp
├── 8-absorption
│   ├── absorption.inp
│   └── bash
├── 9-inteqp
│   ├── bash
│   └── inteqp.inp
└── ESPRESSO
    ├── 0-kgrid
    │   ├── script_0
    │   ├── WFN_fi.in
    │   ├── WFN_fiq.in
    │   ├── WFN.in
    │   └── WFNq.in
    ├── 1-scf
    │   ├── bash
    │   ├── B.SG15.PBE.UPF
    │   ├── input
    │   └── N.SG15.PBE.UPF
    ├── 2-wfn
    │   ├── bash
    │   ├── degeneracy_check.x
    │   ├── input
    │   └── pp_in
    ├── 3-wfnq
    │   ├── bash
    │   ├── input
    │   └── pp_in
    ├── 5-wfn_fi
    │   ├── bash
    │   ├── input
    │   └── pp_in
    ├── 6-wfn_fiq
    │   ├── bash
    │   ├── input
    │   └── pp_in
    ├── 7-band
    │   ├── bash
    │   ├── input
    │   └── pp_in
    └── script_1

Quantum ESPRESSO计算

0-kgrid文件修改

  • WFN.in

5   5   1         # k点网格
0.0  0.0  0.0
0.0  0.0  0.0
      2.5124282300       0.0000000000       0.0000000000  # 晶格常数
     -1.2562141150       2.1758266724       0.0000000000  # 晶格常数
      0.0000000000       0.0000000000       7.7072650000  # 晶格常数

4 # 原子总数
 1     0.6666666700       0.3333333300       0.7500000000 # 第一个原子分数坐标
 1     0.3333333300       0.6666666700       0.2500000000 # 第二个原子分数坐标
 2     0.6666666700       0.3333333300       0.2500000000 # 第三个原子分数坐标
 2     0.3333333300       0.6666666700       0.7500000000 # 第四个原子分数坐标
24 24 81 # 傅里叶变换网格
.false.
  • WFNq.in

5   5   1
0.0    0.0  0.0
0.001  0.0  0.0 # 第一个数变为0.001
      2.5124282300       0.0000000000       0.0000000000
     -1.2562141150       2.1758266724       0.0000000000
      0.0000000000       0.0000000000       7.7072650000

4
 1     0.6666666700       0.3333333300       0.7500000000
 1     0.3333333300       0.6666666700       0.2500000000
 2     0.6666666700       0.3333333300       0.2500000000
 2     0.3333333300       0.6666666700       0.7500000000
24 24 81
.false.
  • WFN_fi.in

7   7   1    # k点网格变密,根据服务器计算能力修改
0.0  0.0  0.0
0.0  0.0  0.0
      2.5124282300       0.0000000000       0.0000000000
     -1.2562141150       2.1758266724       0.0000000000
      0.0000000000       0.0000000000       7.7072650000

4
 1     0.6666666700       0.3333333300       0.7500000000
 1     0.3333333300       0.6666666700       0.2500000000
 2     0.6666666700       0.3333333300       0.2500000000
 2     0.3333333300       0.6666666700       0.7500000000
24 24 81
.false.
  • WFN_fiq.in

7   7   1
0.0    0.0    0.0
0.001  0.001  0.0 # 第一个与第二个数变为0.001
      2.5124282300       0.0000000000       0.0000000000
     -1.2562141150       2.1758266724       0.0000000000
      0.0000000000       0.0000000000       7.7072650000

4
 1     0.6666666700       0.3333333300       0.7500000000
 1     0.3333333300       0.6666666700       0.2500000000
 2     0.6666666700       0.3333333300       0.2500000000
 2     0.3333333300       0.6666666700       0.7500000000
24 24 81
.false.
  • script_0

#!/bin/bash

#
KGRID="/home/gengzi/apps/BerkeleyGW-2.1/bin/kgrid.x" #修改BerkeleyGW路径

#
$KGRID ./WFN.in ./WFN.out ./WFN.log
$KGRID ./WFNq.in ./WFNq.out ./WFNq.log
#$KGRID ./WFN_co.in ./WFN_co.out ./WFN_co.log
$KGRID ./WFN_fi.in ./WFN_fi.out ./WFN_fi.log
$KGRID ./WFN_fiq.in ./WFN_fiq.out ./WFN_fiq.log

cd ..
  • 生成输入文件

bash script_0

链接全局环境变量

#!/bin/bash
#

sys=BN                          # 体系名称
PO1=B.SG15.PBE.UPF              # 势文件名称
PO2=N.SG15.PBE.UPF              # 势文件名称

mkdir ./2-wfn/$sys.save
ln -s ../1-scf/$PO1 ./2-wfn     # 连接势文件,如果体系原子增加,相应的势文件也要增加
ln -s ../1-scf/$PO2 ./2-wfn
#ln -s ../1-scf/vdW_kernel_table ./2-wfn
ln -s ../../1-scf/$sys.save/data-file-schema.xml ./2-wfn/$sys.save
ln -s ../../1-scf/$sys.save/charge-density.dat ./2-wfn/$sys.save
#
mkdir ./3-wfnq/$sys.save
ln -s ../1-scf/$PO1 ./3-wfnq
ln -s ../1-scf/$PO2 ./3-wfnq
#ln -s ../1-scf/vdW_kernel_table   ./3-wfnq
ln -s ../../1-scf/$sys.save/data-file-schema.xml ./3-wfnq/$sys.save
ln -s ../../1-scf/$sys.save/charge-density.dat ./3-wfnq/$sys.save
#
#
mkdir ./5-wfn_fi/$sys.save
ln -s ../1-scf/$PO1 ./5-wfn_fi
ln -s ../1-scf/$PO2 ./5-wfn_fi
#ln -s ../1-scf/vdW_kernel_table   ./5-wfn_fi
ln -s ../../1-scf/$sys.save/data-file-schema.xml ./5-wfn_fi/$sys.save
ln -s ../../1-scf/$sys.save/charge-density.dat ./5-wfn_fi/$sys.save

mkdir ./6-wfn_fiq/$sys.save
ln -s ../1-scf/$PO1  ./6-wfn_fiq
ln -s ../1-scf/$PO2  ./6-wfn_fiq
#ln -s ../1-scf/vdW_kernel_table   ./6-wfn_fiq
ln -s ../../1-scf/$sys.save/data-file-schema.xml ./6-wfn_fiq/$sys.save
ln -s ../../1-scf/$sys.save/charge-density.dat ./6-wfn_fiq/$sys.save

mkdir ./7-band/$sys.save
ln -s ../1-scf/$PO1  ./7-band
ln -s ../1-scf/$PO2  ./7-band
#ln -s ../1-scf/vdW_kernel_table   ./6-wfn_fiq
ln -s ../../1-scf/$sys.save/data-file-schema.xml ./7-band/$sys.save
ln -s ../../1-scf/$sys.save/charge-density.dat ./7-band/$sys.save

ln -s ../ESPRESSO/2-wfn/wfn.complex ../5-epsilon/WFN
ln -s ../ESPRESSO/3-wfnq/wfn.complex ../5-epsilon/WFNq
#
ln -s ../ESPRESSO/2-wfn/vxc.dat ../6-sigma/vxc.dat
ln -s ../ESPRESSO/2-wfn/rho.cplx ../6-sigma/RHO
ln -s ../ESPRESSO/2-wfn/wfn.complex ../6-sigma/WFN_inner
ln -s ../5-epsilon/eps0mat ../6-sigma
ln -s ../5-epsilon/epsmat ../6-sigma
#
ln -s ../ESPRESSO/2-wfn/wfn.complex ../7-kernel/WFN_co
ln -s ../5-epsilon/eps0mat ../7-kernel
ln -s ../5-epsilon/epsmat ../7-kernel
#
ln -s ../ESPRESSO/2-wfn/wfn.complex ../8-absorption/WFN_co
ln -s ../ESPRESSO/5-wfn_fi/wfn.complex ../8-absorption/WFN_fi
ln -s ../ESPRESSO/6-wfn_fiq/wfn.complex ../8-absorption/WFNq_fi
ln -s ../5-epsilon/eps0mat ../8-absorption
ln -s ../5-epsilon/epsmat ../8-absorption
ln -s ../7-kernel/bsedmat ../8-absorption
ln -s ../7-kernel/bsexmat ../8-absorption
#
ln -s ../ESPRESSO/2-wfn/wfn.complex ../9-inteqp/WFN_co
ln -s ../ESPRESSO/7-band/wfn.complex ../9-inteqp/WFN_fi
ln -s ../5-epsilon/eps0mat ../9-inteqp
ln -s ../5-epsilon/epsmat ../9-inteqp
#
ln -s ../8-absorption/eqp_co.dat ../9-inteqp
  • 运行脚本

bash script_1

1-scf

  • input文件

  &CONTROL
  calculation = 'scf'
  etot_conv_thr =   4.0000000000d-05
  forc_conv_thr =   1.0000000000d-04
  outdir = './'
  prefix = 'BN'
  pseudo_dir = './'
  wfcdir = './'
  tprnfor = .true.
  tstress = .true.
  verbosity = 'high'
  wf_collect = .false.
/
&SYSTEM
  ecutwfc =   4.0000000000d+01
  ibrav = 0
  nat = 4
  ntyp = 2
/
&ELECTRONS
  conv_thr =   1.0000000000d-7
  electron_maxstep = 80
  mixing_beta =   4.0000000000d-01
  mixing_mode = 'plain'
  diagonalization = 'david'
  diago_david_ndim = 8
  diago_full_acc = .true.
/
ATOMIC_SPECIES
B      10.811 B.SG15.PBE.UPF
N      14.0067 N.SG15.PBE.UPF
ATOMIC_POSITIONS crystal
B            0.6666666700       0.3333333300       0.7500000000  ! 顺序与0-kgrid中设置相同
B            0.3333333300       0.6666666700       0.2500000000
N            0.6666666700       0.3333333300       0.2500000000
N            0.3333333300       0.6666666700       0.7500000000
K_POINTS automatic
15 15 5 0 0 0
CELL_PARAMETERS angstrom
      2.5124282300       0.0000000000       0.0000000000
     -1.2562141150       2.1758266724       0.0000000000
      0.0000000000       0.0000000000       7.7072650000
  • 提交任务脚本

#!/bin/sh
#PBS -N hey
#PBS -l nodes=1:ppn=40,walltime=500:00:00
##PBS -q workq


cd $PBS_O_WORKDIR
source /home/gengzi/apps/intel/19/parallel_studio_xe_2019/psxevars.sh

date "+01 Today's date is: %D. The time execution %T" >> time.info
mpirun -np 40 /home/gengzi/apps/qe-6.5/bin/pw.x -nk 4  -in ./input &> ./out
rm ./*.wfc*
date "+02 Today's date is: %D. The time finish %T" >> time.info

2-wfn

  • input

 &CONTROL
                       title = 'BN' ,
                 calculation = 'bands' ,
                restart_mode = 'from_scratch' ,
                  wf_collect = .false. ,
                      outdir = './' ,
                      wfcdir = './' ,
                  pseudo_dir = './' ,
                      prefix = 'BN' ,
                     tstress = .false. ,
                     tprnfor = .false. ,
 /
 &SYSTEM
                        ibrav =0,
                         nat = 4,
                        ntyp = 2,
                       ecutwfc =40,
                       nbnd = 80, !要求能带是占据态的10倍


 /
 &ELECTRONS
            electron_maxstep = 100
            conv_thr = 1.0d-7
            mixing_mode = 'plain'
            mixing_beta = 0.4
         diagonalization = 'david'
          diago_david_ndim = 8
          diago_full_acc = .true.
/
ATOMIC_SPECIES
B      10.811 B.SG15.PBE.UPF
N      14.0067 N.SG15.PBE.UPF
ATOMIC_POSITIONS crystal
B            0.6666666700       0.3333333300       0.7500000000
B            0.3333333300       0.6666666700       0.2500000000
N            0.6666666700       0.3333333300       0.2500000000
N            0.3333333300       0.6666666700       0.7500000000
CELL_PARAMETERS angstrom
      2.5124282300       0.0000000000       0.0000000000
     -1.2562141150       2.1758266724       0.0000000000
      0.0000000000       0.0000000000       7.7072650000
K_POINTS crystal ! 来源于0-kgrid/WFN.out
  • pp_in

&input_pw2bgw
   prefix = 'BN'              ! 体系名称
   real_or_complex = 2
   wfng_flag = .true.
   wfng_file = 'wfn.complex'
   wfng_kgrid = .true.
   wfng_nk1 = 5               ! k点网格,与WFN.in设置相同
   wfng_nk2 = 5               ! k点网格,与WFN.in设置相同
   wfng_nk3 = 1               ! k点网格,与WFN.in设置相同
   wfng_dk1 = 0.0
   wfng_dk2 = 0.0
   wfng_dk3 = 0.0
   rhog_flag = .true.
   rhog_file = 'rho.cplx'
   vxcg_flag = .false.
   vxcg_file = 'vxc.cplx'
   vxc_flag = .true.
   vxc_file = 'vxc.dat'
   vxc_diag_nmin = 4
   vxc_diag_nmax = 13
   vxc_offdiag_nmin = 0
   vxc_offdiag_nmax = 0
/
  • 提交任务脚本

#!/bin/sh
#PBS -N hey
#PBS -l nodes=1:ppn=40,walltime=500:00:00
##PBS -q workq


cd $PBS_O_WORKDIR
source /home/gengzi/apps/intel/19/parallel_studio_xe_2019/psxevars.sh

date "+01 Today's date is: %D. The time execution %T" >> time.info
mpirun -np 40 /home/gengzi/apps/qe-6.5/bin/pw.x -nk 1  -in ./input &> ./out
mpirun -np 40 /home/gengzi/apps/qe-6.5/bin/pw2bgw.x -in ./pp_in &> ./pp_out
#rm ./*.wfc*
#rm ./*.igk*
date "+02 Today's date is: %D. The time finish %T" >> time.info
  • degeneracy_check.x程序后处理

degeneracy_check.x complex >> aa
  • aa文件分析

Reading eigenvalues from file wfn.complex
Number of spins:               1
Number of bands:              80
Number of k-points:           25

== Degeneracy-allowed numbers of bands (for epsilon and sigma) ==
           1
           2
           3
           4 ! 取为vxc_diag_nmin的值
           6
           8
           9
          10
          11
          13
          15 ! 取为vxc_diag_nmax的值
          16
          17
          18
          19
          20
          21
          22
          24
          26
          27
          29
          30
          32
          34
          36
          37
          38
          39
          40
          41
          43
          45
          47
          48
          50
          52
          53
          54
          55
          57
          58
          59
          61
          63
          64
          66
          68
          69
          70
          72
          74
          75
          76
          77
          78
          79  ! 取为5-epsilon/epsilon.inp中number_bands的值,通常比总能带数小1
Note: cannot assess whether or not highest band     80 is degenerate.

== Degeneracy-allowed numbers of valence bands (for inteqp, kernel, and absorption) ==
           2
           4
           5
           6
           7
           8

== Degeneracy-allowed numbers of conduction bands (for inteqp, kernel, and absorption) ==
           1
           2
           3
           5
           7
           8
           9
          10
          11
          12
          13
          14
          16
          18
          19
          21
          22
          24
          26
          28
          29
          30
          31
          32
          33
          35
          37
          39
          40
          42
          44
          45
          46
          47
          49
          50
          51
          53
          55
          56
          58
          60
          61
          62
          64
          66
          67
          68
          69
          70
          71
Note: cannot assess whether or not highest conduction band     72 is degenerate.
  • 修改pp_in文件

&input_pw2bgw
   prefix = 'BN'
   real_or_complex = 2
   wfng_flag = .true.
   wfng_file = 'wfn.complex'
   wfng_kgrid = .true.
   wfng_nk1 = 5
   wfng_nk2 = 5
   wfng_nk3 = 1
   wfng_dk1 = 0.0
   wfng_dk2 = 0.0
   wfng_dk3 = 0.0
   rhog_flag = .true.
   rhog_file = 'rho.cplx'
   vxcg_flag = .false.
   vxcg_file = 'vxc.cplx'
   vxc_flag = .true.
   vxc_file = 'vxc.dat'
   vxc_diag_nmin = 4         ! 见Note说明
   vxc_diag_nmax = 13        ! 见Note说明
   vxc_offdiag_nmin = 0
   vxc_offdiag_nmax = 0
/

注解

vxc_diag_nmin取价带顶下约5-10条带,其中取的最下面的一条带要求与下面的带连续,例如取的最下面的带是4,则下一条必须是3

vxc_diag_nmax取导带顶上约5-10条带,其中取的最上面的一条带要求与上面的带连续,例如取的最上面的带是13,则再上一条带必须是14

  • 提交任务重新计算

#!/bin/sh
#PBS -N hey
#PBS -l nodes=1:ppn=40,walltime=500:00:00
##PBS -q workq


cd $PBS_O_WORKDIR
source /home/gengzi/apps/intel/19/parallel_studio_xe_2019/psxevars.sh

date "+01 Today's date is: %D. The time execution %T" >> time.info
# mpirun -np 40 /home/gengzi/apps/qe-6.5/bin/pw.x -nk 1  -in ./input &> ./out
mpirun -np 40 /home/gengzi/apps/qe-6.5/bin/pw2bgw.x -in ./pp_in &> ./pp_out
#rm ./*.wfc*
#rm ./*.igk*
date "+02 Today's date is: %D. The time finish %T" >> time.info

3-wfnq

  • input

 &CONTROL
                       title = 'BN' ,
                 calculation = 'bands' ,
                restart_mode = 'from_scratch' ,
                  wf_collect = .false. ,
                      outdir = './' ,
                      wfcdir = './' ,
                  pseudo_dir = './' ,
                      prefix = 'BN' ,
                     tstress = .false. ,
                     tprnfor = .false. ,
 /
 &SYSTEM
                        ibrav =0,
                         nat = 4,
                        ntyp = 2,
                       ecutwfc =40,
                       nbnd = 8,     ! 设置为占据态数目

 /
 &ELECTRONS
            electron_maxstep = 100
            conv_thr = 1.0d-7
            mixing_mode = 'plain'
            mixing_beta = 0.4
         diagonalization = 'david'
          diago_david_ndim = 8
          diago_full_acc = .true.
/
ATOMIC_SPECIES
B      10.811 B.SG15.PBE.UPF
N      14.0067 N.SG15.PBE.UPF
ATOMIC_POSITIONS crystal
B            0.6666666700       0.3333333300       0.7500000000
B            0.3333333300       0.6666666700       0.2500000000
N            0.6666666700       0.3333333300       0.2500000000
N            0.3333333300       0.6666666700       0.7500000000
CELL_PARAMETERS angstrom
      2.5124282300       0.0000000000       0.0000000000
     -1.2562141150       2.1758266724       0.0000000000
      0.0000000000       0.0000000000       7.7072650000
K_POINTS crystal  ! 来源于0-kgrid/WFNq.out中的k点
  • pp_in

&input_pw2bgw
   prefix = 'BN'             ! 体系名称
   real_or_complex = 2
   wfng_flag = .true.
   wfng_file = 'wfn.complex'
   wfng_kgrid = .true.
   wfng_nk1 = 5              ! 与WFNq.in设置相同
   wfng_nk2 = 5              ! 与WFNq.in设置相同
   wfng_nk3 = 1              ! 与WFNq.in设置相同
   wfng_dk1 = 0.005          ! k点乘以0.001
   wfng_dk2 = 0.0
   wfng_dk3 = 0.0
  • 提交任务脚本

#!/bin/sh
#PBS -N hey
#PBS -l nodes=1:ppn=40,walltime=500:00:00
##PBS -q workq


cd $PBS_O_WORKDIR
source /home/gengzi/apps/intel/19/parallel_studio_xe_2019/psxevars.sh

date "+01 Today's date is: %D. The time execution %T" >> time.info
mpirun -np 40 /home/gengzi/apps/qe-6.5/bin/pw.x -nk 1  -in ./input &> ./out
mpirun -np 40 /home/gengzi/apps/qe-6.5/bin/pw2bgw.x -in ./pp_in &> ./pp_out
rm ./*.wfc*
rm ./*.igk*
date "+02 Today's date is: %D. The time finish %T" >> time.info

5-wfn_fi

  • input

 &CONTROL
                       title = 'BN' ,
                 calculation = 'bands' ,
                restart_mode = 'from_scratch' ,
                  wf_collect = .false. ,
                      outdir = './' ,
                      wfcdir = './' ,
                  pseudo_dir = './' ,
                      prefix = 'BN' ,
                     tstress = .false. ,
                     tprnfor = .false. ,
 /
 &SYSTEM
                        ibrav =0,
                         nat = 4,
                        ntyp = 2,
                       ecutwfc =40,
                       nbnd = 80,        !占据态乘以10


 /
 &ELECTRONS
            electron_maxstep = 100
            conv_thr = 1.0d-7
            mixing_mode = 'plain'
            mixing_beta = 0.4
         diagonalization = 'david'
          diago_david_ndim = 8
          diago_full_acc = .true.
/
ATOMIC_SPECIES
B      10.811 B.SG15.PBE.UPF
N      14.0067 N.SG15.PBE.UPF
ATOMIC_POSITIONS crystal
B            0.6666666700       0.3333333300       0.7500000000
B            0.3333333300       0.6666666700       0.2500000000
N            0.6666666700       0.3333333300       0.2500000000
N            0.3333333300       0.6666666700       0.7500000000
CELL_PARAMETERS angstrom
      2.5124282300       0.0000000000       0.0000000000
     -1.2562141150       2.1758266724       0.0000000000
      0.0000000000       0.0000000000       7.7072650000
K_POINTS crystal  ! k点来源于0-kgrid/WFN_fi.out
  • pp_in

&input_pw2bgw
   prefix = 'BN'
   real_or_complex = 2
   wfng_flag = .true.
   wfng_file = 'wfn.complex'
   wfng_kgrid = .true.
   wfng_nk1 = 7            ! 与WFN_fi.in设置相同
   wfng_nk2 = 7            ! 与WFN_fi.in设置相同
   wfng_nk3 = 1            ! 与WFN_fi.in设置相同
   wfng_dk1 = 0.0
   wfng_dk2 = 0.0
   wfng_dk3 = 0.0
/
  • 提交任务脚本

#!/bin/sh
#PBS -N hey
#PBS -l nodes=1:ppn=40,walltime=500:00:00
##PBS -q workq


cd $PBS_O_WORKDIR
source /home/gengzi/apps/intel/19/parallel_studio_xe_2019/psxevars.sh

date "+01 Today's date is: %D. The time execution %T" >> time.info
mpirun -np 40 /home/gengzi/apps/qe-6.5/bin/pw.x -nk 1  -in ./input &> ./out
mpirun -np 40 /home/gengzi/apps/qe-6.5/bin/pw2bgw.x -in ./pp_in &> ./pp_out
rm ./*.wfc*
rm ./*.igk*
date "+02 Today's date is: %D. The time finish %T" >> time.info

6-wfn_fiq

  • input

 &CONTROL
                       title = 'BN' ,
                 calculation = 'bands' ,
                restart_mode = 'from_scratch' ,
                  wf_collect = .false. ,
                      outdir = './' ,
                      wfcdir = './' ,
                  pseudo_dir = './' ,
                      prefix = 'BN' ,
                     tstress = .false. ,
                     tprnfor = .false. ,
 /
 &SYSTEM
                        ibrav =0,
                         nat = 4,
                        ntyp = 2,
                       ecutwfc =40,
                       nbnd = 8,     ! 设置为占据态

 /
 &ELECTRONS
            electron_maxstep = 100
            conv_thr = 1.0d-7
            mixing_mode = 'plain'
            mixing_beta = 0.4
         diagonalization = 'david'
          diago_david_ndim = 8
          diago_full_acc = .true.
/
ATOMIC_SPECIES
B      10.811 B.SG15.PBE.UPF
N      14.0067 N.SG15.PBE.UPF
ATOMIC_POSITIONS crystal
B            0.6666666700       0.3333333300       0.7500000000
B            0.3333333300       0.6666666700       0.2500000000
N            0.6666666700       0.3333333300       0.2500000000
N            0.3333333300       0.6666666700       0.7500000000
CELL_PARAMETERS angstrom
      2.5124282300       0.0000000000       0.0000000000
     -1.2562141150       2.1758266724       0.0000000000
      0.0000000000       0.0000000000       7.7072650000
K_POINTS crystal   ! k点来源于0-kgrid/WFN_fiq.out
  • pp_in

&input_pw2bgw
   prefix = 'BN'
   real_or_complex = 2
   wfng_flag = .true.
   wfng_file = 'wfn.complex'
   wfng_kgrid = .true.
   wfng_nk1 = 7            ! 与WFN_fiq.in设置相同
   wfng_nk2 = 7            ! 与WFN_fiq.in设置相同
   wfng_nk3 = 1            ! 与WFN_fiq.in设置相同
   wfng_dk1 = 0.007        ! k点乘以0.001
   wfng_dk2 = 0.007        ! k点乘以0.001
   wfng_dk3 = 0.0
/
  • 提交任务的脚本

#!/bin/sh
#PBS -N hey
#PBS -l nodes=1:ppn=40,walltime=500:00:00
##PBS -q workq


cd $PBS_O_WORKDIR
source /home/gengzi/apps/intel/19/parallel_studio_xe_2019/psxevars.sh

date "+01 Today's date is: %D. The time execution %T" >> time.info
mpirun -np 40 /home/gengzi/apps/qe-6.5/bin/pw.x -nk 1  -in ./input &> ./out
mpirun -np 40 /home/gengzi/apps/qe-6.5/bin/pw2bgw.x -in ./pp_in &> ./pp_out
rm ./*.wfc*
rm ./*.igk*
date "+02 Today's date is: %D. The time finish %T" >> time.info

7-band

  • input

&CONTROL
  calculation = 'bands'
  etot_conv_thr =   4.0000000000d-05
  forc_conv_thr =   1.0000000000d-04
  outdir = './'
  prefix = 'BN'
  pseudo_dir = './'
  wfcdir = './'
  tprnfor = .false.
  tstress = .false.
  verbosity = 'high'
  wf_collect = .false.
/
&SYSTEM
  ecutwfc =   4.0000000000d+01
  ibrav = 0
  nat = 4
  ntyp = 2
  nbnd = 80                   ! 占据态乘以10
/
&ELECTRONS
  conv_thr =   1.0000000000d-7
  electron_maxstep = 80
  mixing_beta =   4.0000000000d-01
  mixing_mode = 'plain'
  diagonalization = 'david'
  diago_david_ndim = 8
  diago_full_acc = .true.
/
ATOMIC_SPECIES
B      10.811 B.SG15.PBE.UPF
N      14.0067 N.SG15.PBE.UPF
ATOMIC_POSITIONS crystal
B            0.6666666700       0.3333333300       0.7500000000
B            0.3333333300       0.6666666700       0.2500000000
N            0.6666666700       0.3333333300       0.2500000000
N            0.3333333300       0.6666666700       0.7500000000
CELL_PARAMETERS angstrom
      2.5124282300       0.0000000000       0.0000000000
     -1.2562141150       2.1758266724       0.0000000000
      0.0000000000       0.0000000000       7.7072650000

K_POINTS crystal {crystal_b} ! 能带计算的高对称点路径
  4
  0      0      0  50
  0.5    0      0  50
  0.3333 0.3333 0  50
  0      0      0  0
  • pp_in

&input_pw2bgw
   prefix = 'BN'
   real_or_complex = 2
   wfng_flag = .true.
   wfng_file = 'wfn.complex'
   wfng_kgrid = .true.
   wfng_nk1 = 0
   wfng_nk2 = 0
   wfng_nk3 = 0
   wfng_dk1 = 0.0
   wfng_dk2 = 0.0
   wfng_dk3 = 0.0
   wfng_occupation=.ture
   wfng_nvmin=1          ! 价带最小值,一般设置为1
   wfng_nvmax= 8         ! 价带最大值,也就是占据态
/
  • 提交任务脚本

#!/bin/sh
#PBS -N hey
#PBS -l nodes=1:ppn=40,walltime=500:00:00
##PBS -q workq


cd $PBS_O_WORKDIR
source /home/gengzi/apps/intel/19/parallel_studio_xe_2019/psxevars.sh

date "+01 Today's date is: %D. The time execution %T" >> time.info
mpirun -np 40 /home/gengzi/apps/qe-6.5/bin/pw.x -nk 1  -in ./input &> ./out
mpirun -np 40 /home/gengzi/apps/qe-6.5/bin/pw2bgw.x -in ./pp_in &> ./pp_out
rm ./*.wfc*
rm ./*.igk*
date "+02 Today's date is: %D. The time finish %T" >> time.info

BerkeleyGW计算

5-epsilon

  • epsilon.inp

epsilon_cutoff 10          ! 不需要修改
number_bands 79            ! 取2-wfn/aa中能带的最大值
band_occupation 8*1 71*0   ! 价带*1,导带*0
cell_slab_truncation

begin qpoints ! 来源于WFN.out,最后加1列,第一行为1,其余都是0
  0.001000000  0.000000000  0.000000000   1.0 1 ! 第一个数改为0.001
  0.000000000  0.200000000  0.000000000   1.0 0
  0.000000000  0.400000000  0.000000000   1.0 0
  0.000000000  0.600000000  0.000000000   1.0 0
  0.000000000  0.800000000  0.000000000   1.0 0
  0.200000000  0.000000000  0.000000000   1.0 0
  0.200000000  0.200000000  0.000000000   1.0 0
  0.200000000  0.400000000  0.000000000   1.0 0
  0.200000000  0.600000000  0.000000000   1.0 0
  0.200000000  0.800000000  0.000000000   1.0 0
  0.400000000  0.000000000  0.000000000   1.0 0
  0.400000000  0.200000000  0.000000000   1.0 0
  0.400000000  0.400000000  0.000000000   1.0 0
  0.400000000  0.600000000  0.000000000   1.0 0
  0.400000000  0.800000000  0.000000000   1.0 0
  0.600000000  0.000000000  0.000000000   1.0 0
  0.600000000  0.200000000  0.000000000   1.0 0
  0.600000000  0.400000000  0.000000000   1.0 0
  0.600000000  0.600000000  0.000000000   1.0 0
  0.600000000  0.800000000  0.000000000   1.0 0
  0.800000000  0.000000000  0.000000000   1.0 0
  0.800000000  0.200000000  0.000000000   1.0 0
  0.800000000  0.400000000  0.000000000   1.0 0
  0.800000000  0.600000000  0.000000000   1.0 0
  0.800000000  0.800000000  0.000000000   1.0 0
end
  • 提交任务脚本

#!/bin/sh
#PBS -N hey
#PBS -l nodes=1:ppn=40,walltime=500:00:00
##PBS -q workq

cd $PBS_O_WORKDIR
source /home/gengzi/apps/intel/19/mkl/bin/mklvars.sh intel64
export PATH=$PATH:/home/gengzi/apps/openmpi404/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/gengzi/apps/openmpi404/lib

date "+01 Today's date is: %D. The time execution %T" >> time.info
mpirun -np 40 /home/gengzi/apps/BerkeleyGW-2.1/bin/epsilon.cplx.x &> ./OUT.eps
date "+02 Today's date is: %D. The time finish %T" >> time.info

6-sigma

  • sigma.inp

screened_coulomb_cutoff 10
bare_coulomb_cutoff 70

number_bands 79
band_occupation 8*1 71*0
#frequency_dependence 1
#no_symmetries_q_grid
band_index_min  4  ! 取为2-wfn/pp_in中的vxc_diag_nmin值
band_index_max  13 ! 取为2-wfn/pp_in中的vxc_diag_nmax值
cell_slab_truncation

screening_semiconductor
begin kpoints ! k点来源于WFN.out,最后加一列,第一行为1,其余都是0
  0.000000000  0.000000000  0.000000000   1.0 1
  0.000000000  0.200000000  0.000000000   1.0 0
  0.000000000  0.400000000  0.000000000   1.0 0
  0.000000000  0.600000000  0.000000000   1.0 0
  0.000000000  0.800000000  0.000000000   1.0 0
  0.200000000  0.000000000  0.000000000   1.0 0
  0.200000000  0.200000000  0.000000000   1.0 0
  0.200000000  0.400000000  0.000000000   1.0 0
  0.200000000  0.600000000  0.000000000   1.0 0
  0.200000000  0.800000000  0.000000000   1.0 0
  0.400000000  0.000000000  0.000000000   1.0 0
  0.400000000  0.200000000  0.000000000   1.0 0
  0.400000000  0.400000000  0.000000000   1.0 0
  0.400000000  0.600000000  0.000000000   1.0 0
  0.400000000  0.800000000  0.000000000   1.0 0
  0.600000000  0.000000000  0.000000000   1.0 0
  0.600000000  0.200000000  0.000000000   1.0 0
  0.600000000  0.400000000  0.000000000   1.0 0
  0.600000000  0.600000000  0.000000000   1.0 0
  0.600000000  0.800000000  0.000000000   1.0 0
  0.800000000  0.000000000  0.000000000   1.0 0
  0.800000000  0.200000000  0.000000000   1.0 0
  0.800000000  0.400000000  0.000000000   1.0 0
  0.800000000  0.600000000  0.000000000   1.0 0
  0.800000000  0.800000000  0.000000000   1.0 0
end
  • 提交任务脚本

#!/bin/sh
#PBS -N hey
#PBS -l nodes=1:ppn=40,walltime=500:00:00
##PBS -q workq

cd $PBS_O_WORKDIR
source /home/gengzi/apps/intel/19/mkl/bin/mklvars.sh intel64
export PATH=$PATH:/home/gengzi/apps/openmpi404/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/gengzi/apps/openmpi404/lib

date "+01 Today's date is: %D. The time execution %T" >> time.info
mpirun -np 40 /home/gengzi/apps/BerkeleyGW-2.1/bin/sigma.cplx.x &> ./OUT.eps

python eqp.py  eqp1  sigma_hp.log ../8-absorption/eqp_co.dat
python eqp.py  eqp1  sigma_hp.log ../9-inteqp/eqp_co.dat

date "+02 Today's date is: %D. The time finish %T" >> time.info

注解

eqp.py脚本位于安装文件bin文件夹中,使用python3环境

7-kernel

  • kernel.inp

number_val_bands  5 ! 画图时包含的价带数
number_cond_bands 5 ! 画图时包含的导带数

screened_coulomb_cutoff 10
bare_coulomb_cutoff  70

use_symmetries_coarse_grid

screening_semiconductor
cell_slab_truncation
  • 提交任务脚本

#!/bin/sh
#PBS -N hey
#PBS -l nodes=1:ppn=40,walltime=500:00:00
##PBS -q workq

cd $PBS_O_WORKDIR
source /home/gengzi/apps/intel/19/mkl/bin/mklvars.sh intel64
export PATH=$PATH:/home/gengzi/apps/openmpi404/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/gengzi/apps/openmpi404/lib

date "+01 Today's date is: %D. The time execution %T" >> time.info
mpirun -np 40 /home/gengzi/apps/BerkeleyGW-2.1/bin/kernel.cplx.x &> ./OUT.eps
date "+02 Today's date is: %D. The time finish %T" >> time.info

8-absorption

  • absorption.inp

number_val_bands_coarse 5  ! 画图时包含的价带数
number_val_bands_fine 5    ! 画图时包含的价带数
number_cond_bands_coarse 5 ! 画图时包含的导带数
number_cond_bands_fine 5   ! 画图时包含的导带数

use_symmetries_fine_grid
use_symmetries_shifted_grid
use_symmetries_coarse_grid
diagonalization
screening_semiconductor
cell_slab_truncation
#use_velocity

eqp_co_corrections
#q_shift 0.0006 0.0006 0.000
use_momentum
polarization 1.0 0.0 0.0

energy_resolution 0.05
gaussian_broadening
#write_eigenvectors 10
  • 提交任务脚本

#!/bin/sh
#PBS -N hey
#PBS -l nodes=1:ppn=40,walltime=500:00:00
##PBS -q workq

cd $PBS_O_WORKDIR
source /home/gengzi/apps/intel/19/mkl/bin/mklvars.sh intel64
export PATH=$PATH:/home/gengzi/apps/openmpi404/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/gengzi/apps/openmpi404/lib

date "+01 Today's date is: %D. The time execution %T" >> time.info
mpirun -np 40 /home/gengzi/apps/BerkeleyGW-2.1/bin/absorption.cplx.x &> ./OUT.eps
date "+02 Today's date is: %D. The time finish %T" >> time.info

9-inteqp

  • inteqp.inp

number_val_bands_coarse 5  ! 画图时包含的价带数
number_val_bands_fine 5    ! 画图时包含的价带数
number_cond_bands_coarse 5 ! 画图时包含的导带数
number_cond_bands_fine 5   ! 画图时包含的导带数

#use_symmetries_fine_grid
#no_symmetries_shifted_grid
#use_symmetries_coarse_grid
use_momentum
#comm_mpi
  • 提交任务脚本

#!/bin/sh
#PBS -N hey
#PBS -l nodes=1:ppn=40,walltime=500:00:00
##PBS -q workq

cd $PBS_O_WORKDIR
source /home/gengzi/apps/intel/19/mkl/bin/mklvars.sh intel64
export PATH=$PATH:/home/gengzi/apps/openmpi404/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/gengzi/apps/openmpi404/lib

date "+01 Today's date is: %D. The time execution %T" >> time.info
mpirun -np 40 /home/gengzi/apps/BerkeleyGW-2.1/bin/inteqp.cplx.x &> ./OUT.inteqp
date "+02 Today's date is: %D. The time finish %T" >> time.info
  • 提交任务完成计算,得到`bandstructure.dat`文件

数据处理

  • kline.py (刘仕明开发)

  • klable.txt

 2.5124282300       0.0000000000       0.0000000000 !晶格常数
-1.2562141150       2.1758266724       0.0000000000 !晶格常数
 0.0000000000       0.0000000000       7.7072650000 !晶格常数
 4 ! 能带路径设置
 0      0      0  50
 0.5    0      0  50
 0.3333 0.3333 0  50
 0      0      0  0
  • bandstructure.dat

  • 运行脚本

python3 kline.py
  • 得到kline.dat文件,画图即可