xiaoqiugood的个人博客分享 http://blog.sciencenet.cn/u/xiaoqiugood

博文

VASP GW0计算态密度和能带结构脚本分析

已有 14112 次阅读 2014-6-18 11:34 |个人分类:电子结构计算|系统分类:科研笔记

NEDOS = 2000  # EMIN = -20 ; EMAX = 20 ; NEDOS = 1000 usefull energy range for density of states关注:

1) 大部分疑问其实都来自于对物理概念的缺乏深入理解

2) GW0、GW、G0W0方法的区别

3)GW0方法计算态密度和能带结构的步骤与常规方法计算步骤的异同

http://blog.sciencenet.cn/blog-567091-675253.html

 

 Comments:

     前三步(DFT、virtual bands、GW0)相当于常规态密度、能带结构计算前的自洽运算,后两步为非自洽的态密度计算(LORBIT = 11)和能带结构计算(LWANNIER90_RUN = .TRUE.  ,得到wannier函数)。

 

 

 

脚本:

 

################## step 1: a DFT groundstate calculation ###################

cat > INCAR << EOF

System  = SrVO3-dft

NBANDS = 48    

ISMEAR = -5

NEDOS = 2000  # EMIN = -20 ; EMAX = 20 ; NEDOS = 1000 usefull energy range for density of states

EDIFF = 1E-8                           # high precision for groundstate calculation

#KPAR = 3
EOF

# start calculation

$PARA -n $NP -machinefile .nodelists.$$ $EXEC  > STDOUT
 
cp OUTCAR OUTCAR-01
cp STDOUT STDOUT-01

 


####################################### step 2: obtain DFT virtual orbitals and analysize dielectric function #####################


cat > INCAR << EOF
System  = SrVO3-get virtual orbitalss

ISMEAR = -5
NEDOS = 2000  # EMIN = -20 ; EMAX = 20 ; NEDOS = 1000 usefull energy range for density of states

ALGO = Exact  ; NELM = 1               # exact diagonalization one step suffices,NELM default
EDIFF = 1E-8                           # high precision for groundstate calculation
NBANDS = 48                            # need for a lot of bands in GW  ( how to determine the value of NBANDS?)
LOPTICS = .TRUE.                       # This is new  we need d phi/ d k  for GW calculations

#KPAR = 3


EOF

 

#参数说明:For ALGO=GW and ALGO=GW0 the orbitals of the previous groundstate calculations are maintained, and single shot G$ _0$W$ _0$ calculations are performed. If NELM is set as well, several iterations are performed,  and the eigenvalues are updated in the calculation of G (ALGO=GW0)  or W and G (ALGO=GW).

 

 

# start calculation

$PARA -n $NP -machinefile .nodelists.$$ $EXEC > STDOUT

cp WAVECAR WAVECAR.LOPTICS
cp WAVEDER WAVEDER.LOPTICS
cp OUTCAR OUTCAR-02
cp STDOUT STDOUT-02


## 2-1: analysis dielectric function  ##
   
    ./plotoptics2
   
    cp  imag.dat  imag-dft2.dat
    cp  real.dat   real-dft2.dat

plotoptics2文件内容:从vasprun.xml中提取数据与绘图

 cat  plotoptics2
awk 'BEGIN{i=1} /imag/,\
               /\/imag/ \
                {a[i]=$2 ; b[i]=$3 ; i=i+1} \
    END{for (j=12;j<i-3;j++) print a[j],b[j]}' vasprun.xml > imag.dat

awk 'BEGIN{i=1} /real/,\
               /\/real/ \
                {a[i]=$2 ; b[i]=$3 ; i=i+1} \
    END{for (j=12;j<i-3;j++) print a[j],b[j]}' vasprun.xml > real.dat

cat >plotfile<<!
# set term postscript enhanced eps colour lw 2 "Helvetica" 20
# set output "optics.eps"
plot [0:25] "imag.dat" using (\$1):(\$2) w lp, "real.dat" using (\$1):(\$2) w lp
!

gnuplot -persist plotfile

# rm imag.dat real.dat plotfile

   


# #######################step 3:  GW0 + WANNIER90  #################################

cat > INCAR << EOF

System  = SrVO3-gw0

ISMEAR = -5
NEDOS = 2000  # EMIN = -20 ; EMAX = 20 ; NEDOS = 1000 usefull energy range for density of states

NBANDS = 48                           # need for a lot of bands in GW

ALGO = GW0                             #
NELM = 1                              # one step so this is really G0W0,not G2W0 or GW
PRECFOCK = Fast                        # select fast mode for FFT's
ENCUTGW = 100                          # energy cutoff for response function
NOMEGA = 50                          # for metal, we need a lot of frequency points;NOMEGA = 200
MAXMEM = 2500                          # memory per core
#NKRED = 2         # sample down the GW to a coarse 2x2x2 grid, for accuarate, comment out this iterm.

#KPAR = 3

EOF


cp  WAVECAR.LOPTICS WAVECAR
cp  WAVEDER.LOPTICS  WAVEDER

# start calculation

$PARA -n $NP -machinefile .nodelists.$$ $EXEC > STDOUT

cp OUTCAR OUTCAR-03
cp STDOUT STDOUTi03

 


# #######################step 3.1:  Analysis of the DOS   #################################

cat > INCAR << EOF

System  = SrVO3-gw0-dos

ISMEAR = -5
NEDOS = 2000  # EMIN = -20 ; EMAX = 20 ; NEDOS = 1000 usefull energy range for density of states

NBANDS = 48                           # need for a lot of bands in GW

ALGO = none                             #
NELM = 1                               # one step so this is really G0W0
PRECFOCK = Fast                        # select fast mode for FFT's
ENCUTGW = 100                          # energy cutoff for response function
NOMEGA = 200                           # metal, we need a lot of frequency points
MAXMEM = 2500                          # memory per core
#NKRED = 2                              # sample down the GW to a coarse 2x2x2 grid

#KPAR = 3
LORBIT = 11                           # for DOS

EOF

# start calculation

$PARA -n $NP -machinefile .nodelists.$$ $EXEC > STDOUT

cp OUTCAR OUTCAR-03
cp STDOUT STDOUTi-03


# giving total.dat

./plotdos  

mv  total.dat  total-dos-afterGW0.dat

 

 分割DOSCAR数据并通过gnuplot绘图【GW计算后会更新DOSCAR吗】

cat  plotdos
head -1006 DOSCAR | tail -1000 > total.dat
head -2007 DOSCAR | tail -1000 > Sr.dat
head -3008 DOSCAR | tail -1000 > V.dat
head -4009 DOSCAR | tail -1000 > O1.dat
head -5010 DOSCAR | tail -1000 > O2.dat
tail -1000 DOSCAR              > O3.dat

cat >plotfile<<!
plot \
"total.dat" using (\$1):(\$2) with lines title "total", \
"V.dat" using (\$1):(\$6+\$7+\$9) with lines title "V t2g", \
"V.dat" using (\$1):(\$8+\$10) with lines title "V eg"
!

gnuplot -persist plotfile

 

 

 

 

 

##3.2: analysis of the dielectric function ###
 
 ./plotchi
 
mv chi0.dat    chi0-real-aftergw.dat
mv chi.dat  chi-image-aftergw.dat
 
 

从OUTCAR中提取数据并绘图

 cat  plotchi
awk 'BEGIN{i=1} /HEAD OF MICRO/,\
               /XI_LOCAL/ \
                {if ($4=="dielectric") {a[i]=$1 ; b[i]=$2 ; c[i]=$3 ; i=i+1}} \
    END{for (j=1;j<i;j++) print a[j],b[j],c[j]}' OUTCAR > chi0.dat

awk 'BEGIN{i=1} /INVERSE MACRO/,\
               /XI_TO_W/ \
                {if ($4=="dielectric") {a[i]=$1 ; b[i]=$2 ; c[i]=$3 ; i=i+1}} \
    END{for (j=1;j<i;j++) print a[j],b[j],c[j]}' OUTCAR > chi.dat

cat >plotfile<<!
# set term postscript enhanced eps colour lw 2 "Helvetica" 20
# set output "optics.eps"

plot "chi0.dat" using (\$1):(\$2)  w lp lt -1 lw 2 pt 4 title "chi0 real", \
    "chi0.dat" using (\$1):(-\$3) w lp lt  0 lw 2 pt 4 title "chi0 imag", \
    "chi.dat"  using (\$1):(\$2)  w lp lt  1 lw 2 pt 2 title "chi  real", \
    "chi.dat"  using (\$1):(-\$3) w lp lt  0 lw 2 pt 2 lc 1 title "chi  imag"
!

gnuplot -persist plotfile

# rm chi0.dat chi.dat plotfile


 
# #######################step 3.1:  Analysis of gw band, by using  LWANNIER90_RUN = .TRUE.  #################################

cat > INCAR << EOF

System  = SrVO3-gw0-band

ISMEAR = -5
NEDOS = 2000  # EMIN = -20 ; EMAX = 20 uefull energy range for density of states

NBANDS = 48                            # need for a lot of bands in GW

ALGO = none                             #
NELM = 1                               # one step so this is really G0W0
PRECFOCK = Fast                        # select fast mode for FFT's
ENCUTGW = 100                          # energy cutoff for response function
NOMEGA = 200                           # metal, we need a lot of frequency points
MAXMEM = 2500                          # memory per core
#NKRED = 2                              # sample down the GW to a coarse 2x2x2 grid

#KPAR = 3
#LORBIT = 11

LWANNIER90_RUN = .TRUE.     # for band calculation,通过VASP计算得带wannier函数

EOF

cat > wannier90.win << EOF

num_wann=24

num_bands=48


# for GW uncomment
exclude_bands 31-48

Begin Projections
Sc:l=0;l=1;l=2
H: l=0
End Projections


dis_froz_max=9
dis_num_iter=1000
guiding_centres=true

 

EOF

# start calculation

$PARA -n $NP -machinefile .nodelists.$$ $EXEC  > STDOUT
 
cp OUTCAR OUTCAR-01
cp STDOUT STDOUT-01
cp  wannier90_band.dat  wannier90_band-gw.dat

完整脚本如下:

 

################## step 1: a DFT groundstate calculation , and get DOS and band  ###################

cat > INCAR << EOF

System  = SrVO3-dft

NBANDS = 48    

ISMEAR = -5

NEDOS = 1000  # EMIN = -20 ; EMAX = 20 ; NEDOS = 1000 usefull energy range for density of states

EDIFF = 1E-8                           # high precision for groundstate calculation

#KPAR = 3
ENCUT = 400
EOF

# start calculation

$PARA -n $NP -machinefile .nodelists.$$ $EXEC  > STDOUT
 
cp OUTCAR OUTCAR-01
cp STDOUT STDOUT-01

 


####################################### step 2: obtain DFT virtual orbitals and analysize dielectric function #####################


cat > INCAR << EOF
System  = SrVO3-get virtual orbitalss

ISMEAR = -5
NEDOS = 2000  # EMIN = -20 ; EMAX = 20 ; NEDOS = 1000 usefull energy range for density of states

ALGO = Exact  ; NELM = 1               # exact diagonalization one step suffices,NELM default
EDIFF = 1E-8                           # high precision for groundstate calculation
NBANDS = 48                            # need for a lot of bands in GW  ( how to determine the value of NBANDS?)
LOPTICS = .TRUE.                       # This is new  we need d phi/ d k  for GW calculations

#KPAR = 3
ENCUT = 400

EOF

# start calculation

$PARA -n $NP -machinefile .nodelists.$$ $EXEC > STDOUT

cp WAVECAR WAVECAR.LOPTICS
cp WAVEDER WAVEDER.LOPTICS
cp OUTCAR OUTCAR-02
cp STDOUT STDOUT-02


# #######################step 3:  GW0 + WANNIER90  #################################

cat > INCAR << EOF

System  = SrVO3-gw0

ISMEAR = -5
NEDOS = 2000  # EMIN = -20 ; EMAX = 20 ; NEDOS = 1000 usefull energy range for density of states

NBANDS = 48                            # need for a lot of bands in GW

ALGO = GW0                             #
NELM = 1                               # one step so this is really G0W0
PRECFOCK = Fast                        # select fast mode for FFT's
ENCUTGW = 100                          # energy cutoff for response function
NOMEGA = 200                           # metal, we need a lot of frequency points
MAXMEM = 2500                          # memory per core
#NKRED = 2         # sample down the GW to a coarse 2x2x2 grid, for accuarate, comment out this iterm.

#KPAR = 3
ENCUT = 400
EOF


cp  WAVECAR.LOPTICS WAVECAR
cp  WAVEDER.LOPTICS  WAVEDER

# start calculation

$PARA -n $NP -machinefile .nodelists.$$ $EXEC > STDOUT

cp OUTCAR OUTCAR-03
cp STDOUT STDOUTi-03

 


# #######################step 3.1:  Analysis of the DOS   #################################

cat > INCAR << EOF

System  = SrVO3-gw0-dos

ISMEAR = -5
NEDOS = 1000  # EMIN = -20 ; EMAX = 20 ; NEDOS = 1000 usefull energy range for density of states

NBANDS = 48                           # need for a lot of bands in GW

ALGO = none                             #
NELM = 1                               # one step so this is really G0W0
PRECFOCK = Fast                        # select fast mode for FFT's
ENCUTGW = 100                          # energy cutoff for response function
NOMEGA = 200                           # metal, we need a lot of frequency points
MAXMEM = 2500                          # memory per core
#NKRED = 2                              # sample down the GW to a coarse 2x2x2 grid

#KPAR = 3
LORBIT = 11                           # for DOS
ENCUT = 400
EOF

# start calculation

$PARA -n $NP -machinefile .nodelists.$$ $EXEC > STDOUT

cp OUTCAR OUTCAR-03
cp STDOUT STDOUTi-03


# giving total.dat

./plotdos  

mv  total.dat  total-dos-afterGW0.dat


 
# #######################step 3.1:  Analysis of gw band, by using  LWANNIER90_RUN = .TRUE.  #################################

cat > INCAR << EOF

System  = SrVO3-gw0-band

ISMEAR = -5
NEDOS = 1000  # EMIN = -20 ; EMAX = 20 ; NEDOS = 1000 usefull energy range for density of states

NBANDS = 96                            # need for a lot of bands in GW

ALGO = none                             #
NELM = 1                               # one step so this is really G0W0
PRECFOCK = Fast                        # select fast mode for FFT's
ENCUTGW = 100                          # energy cutoff for response function
NOMEGA = 50                           # metal, we need a lot of frequency points,NOMEGA = 200
MAXMEM = 2500                          # memory per core
#NKRED = 2                              # sample down the GW to a coarse 2x2x2 grid

#KPAR = 3
#LORBIT = 11

LWANNIER90_RUN = .TRUE.     # for band calculation
ENCUT = 400
EOF

cat > wannier90.win << EOF

num_wann=24

num_bands=48


# for GW uncomment
exclude_bands 31-48

Begin Projections
Sc:l=0;l=1;l=2
H: l=0
End Projections


dis_froz_max=9
dis_num_iter=1000
guiding_centres=true

 

EOF

# start calculation

$PARA -n $NP -machinefile .nodelists.$$ $EXEC  > STDOUT
 
cp OUTCAR OUTCAR-01
cp STDOUT STDOUT-01
cp  wannier90_band.dat  wannier90_band-gw.dat

完整脚本如下:

 

 

 

################## step 1: a DFT groundstate calculation , and get DOS and band  ###################

cat > INCAR << EOF

System  = SrVO3-dft

NBANDS = 48    

ISMEAR = -5

NEDOS = 2000  # EMIN = -20 ; EMAX = 20 ; NEDOS = 1000 usefull energy range for density of states

EDIFF = 1E-8                           # high precision for groundstate calculation

#KPAR = 3
ENCUT = 400
EOF

# start calculation

$PARA -n $NP -machinefile .nodelists.$$ $EXEC  > STDOUT
 
cp OUTCAR OUTCAR-01
cp STDOUT STDOUT-01

 


####################################### step 2: obtain DFT virtual orbitals and analysize dielectric function #####################


cat > INCAR << EOF
System  = SrVO3-get virtual orbitalss

ISMEAR = -5
NEDOS = 2000  # EMIN = -20 ; EMAX = 20 ; NEDOS = 1000 usefull energy range for density of states

ALGO = Exact  ; NELM = 1               # exact diagonalization one step suffices,NELM default
EDIFF = 1E-8                           # high precision for groundstate calculation
NBANDS = 48                            # need for a lot of bands in GW  ( how to determine the value of NBANDS?)
LOPTICS = .TRUE.                       # This is new  we need d phi/ d k  for GW calculations

#KPAR = 3
ENCUT = 400

EOF

# start calculation

$PARA -n $NP -machinefile .nodelists.$$ $EXEC > STDOUT

cp WAVECAR WAVECAR.LOPTICS
cp WAVEDER WAVEDER.LOPTICS
cp OUTCAR OUTCAR-02
cp STDOUT STDOUT-02


# #######################step 3:  GW0 + WANNIER90  #################################

cat > INCAR << EOF

System  = SrVO3-gw0

ISMEAR = -5
NEDOS = 2000  # EMIN = -20 ; EMAX = 20 ; NEDOS = 1000 usefull energy range for density of states

NBANDS = 48                            # need for a lot of bands in GW

ALGO = GW0                             #
NELM = 1                               # one step so this is really G0W0
PRECFOCK = Fast                        # select fast mode for FFT's
ENCUTGW = 100                          # energy cutoff for response function
NOMEGA = 200                           # metal, we need a lot of frequency points
MAXMEM = 2500                          # memory per core
#NKRED = 2         # sample down the GW to a coarse 2x2x2 grid, for accuarate, comment out this iterm.

#KPAR = 3
ENCUT = 400
EOF


cp  WAVECAR.LOPTICS WAVECAR
cp  WAVEDER.LOPTICS  WAVEDER

# start calculation

$PARA -n $NP -machinefile .nodelists.$$ $EXEC > STDOUT

cp OUTCAR OUTCAR-03
cp STDOUT STDOUTi-03

 


# #######################step 3.1:  Analysis of the DOS   #################################

cat > INCAR << EOF

System  = SrVO3-gw0-dos

ISMEAR = -5
NEDOS = 2000  # EMIN = -20 ; EMAX = 20 ; NEDOS = 1000 usefull energy range for density of states

NBANDS = 48                           # need for a lot of bands in GW

ALGO = none                             #
NELM = 1                               # one step so this is really G0W0
PRECFOCK = Fast                        # select fast mode for FFT's
ENCUTGW = 100                          # energy cutoff for response function
NOMEGA = 200                           # metal, we need a lot of frequency points
MAXMEM = 2500                          # memory per core
#NKRED = 2                              # sample down the GW to a coarse 2x2x2 grid

#KPAR = 3
LORBIT = 11                           # for DOS
ENCUT = 400
EOF

# start calculation

$PARA -n $NP -machinefile .nodelists.$$ $EXEC > STDOUT

cp OUTCAR OUTCAR-03
cp STDOUT STDOUTi-03


# giving total.dat

./plotdos  

mv  total.dat  total-dos-afterGW0.dat


 
# #######################step 3.1:  Analysis of gw band, by using  LWANNIER90_RUN = .TRUE.  #################################

cat > INCAR << EOF

System  = SrVO3-gw0-band

ISMEAR = -5
NEDOS = 2000  # EMIN = -20 ; EMAX = 20 ; NEDOS = 1000 usefull energy range for density of states

NBANDS = 48                            # need for a lot of bands in GW

ALGO = none                             #
NELM = 1                               # one step so this is really G0W0
PRECFOCK = Fast                        # select fast mode for FFT's
ENCUTGW = 100                          # energy cutoff for response function
NOMEGA = 50                           # metal, we need a lot of frequency points,NOMEGA = 200
MAXMEM = 2500                          # memory per core
#NKRED = 2                              # sample down the GW to a coarse 2x2x2 grid

#KPAR = 3
#LORBIT = 11

LWANNIER90_RUN = .TRUE.     # for band calculation
ENCUT = 400
EOF

cat > wannier90.win << EOF

num_wann=24

num_bands=30


# for GW uncomment
exclude_bands 31-48

Begin Projections
Sc:l=0;l=1;l=2
H: l=0
End Projections


dis_froz_max=9
dis_num_iter=1000
guiding_centres=true


EOF

# start calculation

$PARA -n $NP -machinefile .nodelists.$$ $EXEC  > STDOUT
 
cp OUTCAR OUTCAR-01
cp STDOUT STDOUT-01
cp  wannier90_band.dat  wannier90_band-gw.dat

 



https://blog.sciencenet.cn/blog-567091-804374.html

上一篇:VASP计算能带结构和态密度方法之二:利用wannier函数
下一篇:电子结构计算:GW0、GW、G0W0方法的区别与联系
收藏 IP: 61.157.130.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-12-20 01:56

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部