一、安裝
0. 作者
Author: Zhi-Yong Chen Source: Experience of failure date: 09.25.2020 注意: 截至今天,可以安裝日期前的最新版
1. 系統
windows 7
2. 環境
anaconda 3.7
安裝最新版即可,網址: https://www.anaconda.com
C++14 或以上
安裝 Visual Studio 2015 或以上 Windows 10 系統建議直接安裝官網最新的 Visual Studio 2019+,網址:
https://visualstudio.microsoft.com/zh-hans/downloads/
可能是 Windows 7 的原因,我的電腦無法安裝 Visual Studio 2019+ 版本。 Visual Studio 2015 安裝:
百度網盤-鏈接:https://pan.baidu.com/s/14Hk72X2vNObBFspc23Tnqg
提取碼:fzpu備注:文件為壓縮包,沒有設密碼
注意:安裝好 Visual Studio 后,要測試一個簡單的 C++ 程序,確保C++14 已被安裝
3. 安裝 pymatgen
打開 Python 命令行 安裝依賴庫 ase:
pip
install ase
安裝 pymatgen
pip
install pymatgen
進入 ipython 測試 pymatgen
In
[ 1 ] : import pymatgen
二、使用
準備輸入文件 (vasp 結果文件,注意:最好 INCAR 設置 LORBIT=11 , 全部文件放置在同一個文件夾,我記為 HSE_example ) 。下面是計算 HSE 能帶的一個例子:
KPOINTS POTCAR vasprun.xml
67
Reciprocal lattice
0.00000000000000 0.00000000000000 0.00000000000000 1 0.14285714285714 0.00000000000000 0.00000000000000 6 0.28571428571429 0.00000000000000 0.00000000000000 6 0.42857142857143 0.00000000000000 0.00000000000000 6 0.14285714285714 0.14285714285714 0.00000000000000 6 0.28571428571429 0.14285714285714 0.00000000000000 12 0.42857142857143 0.14285714285714 0.00000000000000 6 0.28571428571429 0.28571428571429 0.00000000000000 6 0.00000000000000 0.00000000000000 0.00000000000000 0 G
0.02380952380952 0.00000000000000 0.00000000000000 0 0.04761904761905 0.00000000000000 0.00000000000000 0 0.07142857142857 0.00000000000000 0.00000000000000 0 0.09523809523810 0.00000000000000 0.00000000000000 0 0.11904761904762 0.00000000000000 0.00000000000000 0 0.14285714285714 0.00000000000000 0.00000000000000 0 0.16666666666667 0.00000000000000 0.00000000000000 0 0.19047619047619 0.00000000000000 0.00000000000000 0 0.21428571428571 0.00000000000000 0.00000000000000 0 0.23809523809524 0.00000000000000 0.00000000000000 0 0.26190476190476 0.00000000000000 0.00000000000000 0 0.28571428571429 0.00000000000000 0.00000000000000 0 0.30952380952381 0.00000000000000 0.00000000000000 0 0.33333333333333 0.00000000000000 0.00000000000000 0 0.35714285714286 0.00000000000000 0.00000000000000 0 0.38095238095238 0.00000000000000 0.00000000000000 0 0.40476190476190 0.00000000000000 0.00000000000000 0 0.42857142857143 0.00000000000000 0.00000000000000 0 0.45238095238095 0.00000000000000 0.00000000000000 0 0.47619047619048 0.00000000000000 0.00000000000000 0 0.50000000000000 0.00000000000000 0.00000000000000 0 M
0.50000000000000 0.00000000000000 0.00000000000000 0 M
0.48484848484545 0.03030303030000 0.00000000000000 0 0.46969696969091 0.06060606060000 0.00000000000000 0 0.45454545453636 0.09090909090000 0.00000000000000 0 0.43939393938182 0.12121212120000 0.00000000000000 0 0.42424242422727 0.15151515150000 0.00000000000000 0 0.40909090907273 0.18181818180000 0.00000000000000 0 0.39393939391818 0.21212121210000 0.00000000000000 0 0.37878787876364 0.24242424240000 0.00000000000000 0 0.36363636360909 0.27272727270000 0.00000000000000 0 0.34848484845455 0.30303030300000 0.00000000000000 0 0.33333333330000 0.33333333330000 0.00000000000000 0 K
0.33333333330000 0.33333333330000 0.00000000000000 0 K
0.31944444441250 0.31944444441250 0.00000000000000 0 0.30555555552500 0.30555555552500 0.00000000000000 0 0.29166666663750 0.29166666663750 0.00000000000000 0 0.27777777775000 0.27777777775000 0.00000000000000 0 0.26388888886250 0.26388888886250 0.00000000000000 0 0.24999999997500 0.24999999997500 0.00000000000000 0 0.23611111108750 0.23611111108750 0.00000000000000 0 0.22222222220000 0.22222222220000 0.00000000000000 0 0.20833333331250 0.20833333331250 0.00000000000000 0 0.19444444442500 0.19444444442500 0.00000000000000 0 0.18055555553750 0.18055555553750 0.00000000000000 0 0.16666666665000 0.16666666665000 0.00000000000000 0 0.15277777776250 0.15277777776250 0.00000000000000 0 0.13888888887500 0.13888888887500 0.00000000000000 0 0.12499999998750 0.12499999998750 0.00000000000000 0 0.11111111110000 0.11111111110000 0.00000000000000 0 0.09722222221250 0.09722222221250 0.00000000000000 0 0.08333333332500 0.08333333332500 0.00000000000000 0 0.06944444443750 0.06944444443750 0.00000000000000 0 0.05555555555000 0.05555555555000 0.00000000000000 0 0.04166666666250 0.04166666666250 0.00000000000000 0 0.02777777777500 0.02777777777500 0.00000000000000 0 0.01388888888750 0.01388888888750 0.00000000000000 0 0.00000000000000 0.00000000000000 0.00000000000000 0 G
注意: HSE 計算能帶的 KPOINTS 前面權重(第 4 列 不為 0 的不管,從 第一個為 0 的點 開始看,設置高對稱點名稱(第五列 只要手動補充一組字母路徑 (G-M-K-G))) 如果 KPOINTS 不添加高對稱點 ,畫出的圖橫坐標不會顯示高對稱點。其它的文件內容 (POTCAR , vasprun.xml ) 太長,就不列舉。
在文件夾右鍵打開命令行終端,并輸入命令進入 ipython 終端:
$ ipython
Python 3.7.3
( default, Apr 24 2019, 15:29:51
) [ MSC v.1915 64 bit
( AMD64
) ]
Type
'copyright' ,
'credits' or
'license' for more information
IPython 7.6.1 -- An enhanced Interactive Python. Type
'?' for help.
In
[ 1
] :
輸入 “! dir ” 查看文件,能看到 “KPOINTS”, “POTCAR”, “vasprun.xml” 即可,我的是 git bash 終端,輸入 “! ls -l ”
In
[ 1 ] : ! ls
- l
total
2064
- rw
- r
- - r
- - 1 lenovo
197121 4653 六月
27 14 : 21 KPOINTS
- rw
- r
- - r
- - 1 lenovo
197121 437216 六月
27 14 : 18 POTCAR
- rw
- r
- - r
- - 1 lenovo
197121 1664929 六月
27 14 : 18 vasprun
. xml
在 python 終端操作 (導入庫):
In
[ 2 ] : from pymatgen
. io
. vasp
. outputs
import VasprunIn
[ 3 ] : from pymatgen
. electronic_structure
. plotter
import BSDOSPlotter
, DosPlotter
輸入(初始化變量):
In
[ 4 ] : bs_vasprun
= Vasprun
( "vasprun.xml" , parse_projected_eigen
= True )
C
: \ProgramData\Anaconda3\lib\site
- packages\pymatgen\io\vasp\inputs
. py
: 1857 : BadPotcarWarning
: POTCAR
with symbol Se has metadata that does
not match
any VASP POTCAR known to pymatgen
. The data
in thisPOTCAR
is known to match the following functionals
: [ 'PBE_54' , 'PBE_52' , 'unvie_PBE_52' ] BadPotcarWarning
)
C
: \ProgramData\Anaconda3\lib\site
- packages\pymatgen\io\vasp\inputs
. py
: 1857 : BadPotcarWarning
: POTCAR
with symbol In has metadata that does
not match
any VASP POTCAR known to pymatgen
. The data
in thisPOTCAR
is known to match the following functionals
: [ 'PBE_54' , 'PBE_52' , 'unvie_PBE_52' ] BadPotcarWarning
)
In
[ 5 ] : bs_data
= bs_vasprun
. get_band_structure
( line_mode
= True , force_hybrid_mode
= True )
In
[ 6 ] : dos_data
= bs_vasprun
. complete_dos
例子 1 (只畫能帶):
In
[ 7 ] : bands_plot
= BSDOSPlotter
( )
In
[ 8 ] : plt
= bands_plot
. get_plot
( bs
= bs_data
)
In
[ 9 ] : plt
. savefig
( "InSe_HSE_bands.tif" )
In
[ 10 ] : plt
. savefig
( "InSe_HSE_bands.png" )
例子 2 (只畫態密度):
In
[ 11 ] : dos_plot
= DosPlotter
( )
In
[ 12 ] : dos_plot
. add_dos
( "Total DOS" , dos_data
)
In
[ 13 ] : plt
= dos_plot
. get_plot
( [ - 4 , 4 ] , [ 0 , 12 ] )
In
[ 14 ] : plt
. savefig
( "InSe_HSE_dos.png" )
8.例子 3 (能帶和態密度放一張圖)
In
[ 15 ] : bs_dos_plot
= BSDOSPlotter
( bs_projection
= 'elements' , dos_projection
= 'elements' )
In
[ 16 ] : plt
= bs_dos_plot
. get_plot
( bs
= bs_data
, dos
= dos_data
)
In
[ 17 ] : plt
. savefig
( "InSe_HSE_band_dos.png" )
三、整理腳本
1. 只畫能帶
from pymatgen
. io
. vasp
. outputs
import Vasprun
from pymatgen
. electronic_structure
. plotter
import BSDOSPlotter
, DosPlotter
bs_vasprun
= Vasprun
( "vasprun.xml" , parse_projected_eigen
= True )
bs_data
= bs_vasprun
. get_band_structure
( line_mode
= True , force_hybrid_mode
= True )
dos_data
= bs_vasprun
. complete_dos
def plot_band ( ) : bands_plot
= BSDOSPlotter
( ) plt
= bands_plot
. get_plot
( bs
= bs_data
) plt
. savefig
( "InSe_HSE_bands.tif" ) plt
. savefig
( "InSe_HSE_bands.png" ) def plot_dos ( ) : dos_plot
= DosPlotter
( ) dos_plot
. add_dos
( "Total DOS" , dos_data
) plt
= dos_plot
. get_plot
( [ - 4 , 4 ] , [ 0 , 12 ] ) plt
. savefig
( "InSe_HSE_dos.png" ) def plot_bands_dos ( ) : bs_dos_plot
= BSDOSPlotter
( bs_projection
= 'elements' , dos_projection
= 'elements' ) plt
= bs_dos_plot
. get_plot
( bs
= bs_data
, dos
= dos_data
) plt
. savefig
( "InSe_HSE_band_dos.png" ) if __name__
== "__main__" : plot_band
( ) plot_dos
( ) plot_bands_dos
( )
四、修改格式
0. 說在前面
可能因為是做計算的課題組寫的代碼緣故(不是專業寫代碼的課題組),只能實現它的基本功能,沒有提取數據的接口,默認畫的圖太難看等等。要實現其它功能或許只能修改它的源碼
1. 修改畫圖格式(由于太繁瑣,并且平時也不怎么用,我也只研究了上面 “例子 3 (能帶和態密度放一張圖)”的畫圖格式)
修改 C:\ProgramData\Anaconda3\Lib\site-packages\pymatgen\electronic_structure 下的 plotter.py
\ \ \
1. 用 VS code 打開,搜索 “bs_ax ”
\
2. 仔細觀察
\ \
3. 修改源碼,保存
\
4. 重新跑腳本 (三、整理腳本) plot_vasp_band_structure.py
五、其它操作
推薦:
0. http://matgenb.materialsvirtuallab.org
1. https://mp.weixin.qq.com/s?__biz=MzI2OTQ4OTExOA==&mid=2247484405&idx=1&sn=d62277344ab874acc237d77188a3829c&chksm=eadec544dda94c52d91e45dda5b4b26293d0763187a9fed0702bad5c099dfde1e617f9ae1f5e&mpshare=1&scene=23&srcid=#rd
2. https://mp.weixin.qq.com/s?__biz=MzI2OTQ4OTExOA==&mid=2247485108&idx=1&sn=286449e79eda774f5753dc7477783383&chksm=eadec005dda94913eab48d136059e47a6146e21e19763f2aa155929bb15de6da3a4ebd7c4511&mpshare=1&scene=23&srcid=&sharer_sharetime=1567245116026&sharer_shareid=7391011dffdb5e46d46643d0c3ee23dc#rd
總結
以上是生活随笔 為你收集整理的VASP 系列001. 高通量计算 Python 库 pymatgen 安装和一些使用(用 pymatgen 画 HSE 能带的细节和输出图片字体的简单调整) 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。