||
1. Phonopy 简介
Phonopy 是一个由 python 实现的的晶体声子分析程序。它是目前提供了 VASP 的 Wien2k 的接口用来计算原子受力。它的主要功能有:
计算声子色散谱;
计算声子态密度,包括分立态密度;
声子热力学性质,包括自由能,热容量,焓;
Phonopy 通过力常数的方法计算声子谱。力常数由计算原子在超晶胞中被移动后的受力得到(Parlinsk-Li-Kawasoe 方法)。
同样类型的程序还有 phon, fropho, phonon. 其中 phonon 是商业软件,卖的很贵,fropho 和 phonopy 的代码其实都是来自于 phon, fropho 是为了代替 phon 而开发的,目的是为了使用 phon 更方便,phon 和 fropho 主要都是由 fortran 开发的,而现在 fropho 已经停止开发,由 python 开发的 phonopy 代替了 fropho, phonopy 在使用上更为方便,在计算量上更为减少。因为 phon, fropho 和 phonon 在移动原子位置时都是一次只移动一个原子的一个方向,而 phonopy 则可以一次移动一个原子的多个方向,所以和其它程序相比, phonopy 最多可以减少 2/3 的计算量。
2. Phonopy 的安装
phonopy 主要由 python 开发,其中的找晶体空间群功能是由 C 语言(spglib)实现。在安装 phonopy 时需要安装以下它所依赖的软件包:
Python 的开发包
numpy , numpy-dev
matplotlib
python-lxml
python-yaml
如果是使用的 Ubuntu/Debian 系统只需:
sudo aptitude install python-dev python-numpy
python-matplotlib python-tk python-lxml python-yaml
如果是 OpenSUSE 则可以去 http://software.opensuse.org/search 搜索下载安装相关软件包。
去 https://sourceforge.net/projects/phonopy/ 下载 phonopy 的最新软件包.
解压后进入 软件包的 c 目录,
su
python setup.py install
编译安装所需要的 python 模块。
将 PATH/phonopy-0.6.1 $PATH 里:
比如:
export PATH=~/opt/phonopy-0.6.1:$PATH
3. Phonopy 的简单使用
下面我以 BC5 为例说明如何和 VASP 做接口计算声子谱:
a, 建立超胞
准备 POSCAR 文件
单胞和原胞都可以
准备 INPHON 文件
ATOM_NAME = B C
NDIM = 2 2 1
LSUPER = .TRUE.
简单说明:
第一行为原子符号名 B C ,注意要和 POSCAR 中的顺序相同。
第二行为要建的超胞的维数。
第三行是指要建立移动原子的 POSCAR.
然后输入命令:
phonopy.py
就会输出 DISP, POSCAR-* (001, 002, 003, …)
在本例出会输出 12 个 POSCAR-*, 依次为 POSCAR-001,…POSCAR-012
b, 计算力常数
将这些 POSCAR-* 做 SCF, 将输出文件 vasprun.xml 保存下来。
我的计算脚本为:
#!/bin/sh
for a in 01 02 03 04 05 06 07 08 09 10 11 12
do
cp POSCAR-0$a POSCAR
/opt/intel/impi/3.1/bin64/mpiexec -n 8 /share/apps/vasp/bin/vaspmpi_mkl10_O1 >>out.vasp 2>>err.vasp &
wait
cp vasprun.xml vasprun.xml-0$a
done
我的 INCAR 为:
SYSTEM = BC5
PREC = Accurate
ENCUT = 520
EDIFF = 1e-5
NSW = 0
ISMEAR = 0
SIGMA = 0.05
LCHARG = FALSE
LWAVE = FALSE
这样计算结束后会得到 vasprun.xml-001, …, vasprun.xml-012
然后,执行命令:
phonopy.py -f vasprun.xml-*
就会得到文件 FORCES
c, 得到声子谱
有了文件 FORCES 后就可以计算声子谱了,这时将 INPHON 改为以下内容:
ATOM_NAME = B C
NDIM = 2 2 1
ND = 7
NPOINTS = 51
QI = 0.0 0.0 0.5 0.0 0.5 0.5 0.0 0.5 0.0 0.0 0.0 0.0 0.5 0.5 0.0 0.5 0.0 0.0 0.5 0.0 0.5
QF = 0.0 0.5 0.5 0.0 0.5 0.0 0.0 0.0 0.0 0.5 0.5 0.0 0.5 0.0 0.0 0.5 0.0 0.5 0.5 0.5 0.5
简单说明:
ND 是指有几条路径;
NPOINTS 是指在每两个高对称性点间插入多少个点,包括边界;
QI 和 QF 给出路径的起始和结束点。
其中我用的 Q 点顺序为:
0.0 0.0 0.5 Z
0.0 0.5 0.5 T
0.0 0.5 0.0 Y
0.0 0.0 0.0 G
0.5 0.5 0.0 S
0.5 0.0 0.0 X
0.5 0.0 0.5 U
0.5 0.5 0.5 R
执行 命令
phonopy.py -p
即可画出声子谱, 如果执行
phonopy.py -p -s
即可将声子谱曲线保存为 PDF 文件。
其中 声子谱的数据是以 yaml 格式保存在 band.yaml 里的。
如果你想用 Origin, Qtiplot, Xmgrace 等工具画图的话,可以用我写的 python 脚本,readband.py (http://www.zhuli.name/file/readband.py) 将 band.yaml 转换一下,输出文件有两个 band.dat, qpoint.dat.
其中 band.dat 是声子谱数据, qpoint.dat 是高对称性点的数据。
以上只是 phonopy 的其本用法,如果要计算声子态度度和热力学性质的话可以参考
http://phonopy.sourceforge.net 上的文档,还是比较简单的。
1/1 | 闂傚倸鍊搁崐鎼佸磹閹间礁纾圭€瑰嫭鍣磋ぐ鎺戠倞妞ゆ帒顦伴弲顏堟⒑閸濆嫮鈻夐柛妯垮亹缁牓宕奸悢绋垮伎濠殿喗顨呭Λ妤呭礉閿曞倹鐓ユ繝闈涙-濡插摜绱掗悩鐑樼彧濞e洤锕俊鍫曞椽閸愨晜鏆伴梻浣告惈閹锋垹绱炴担鍓叉綎闁惧繗顫夊畷澶愭煏婵炲灝鍔滈柣婵勫灲濮婃椽鎮烽弶鎸庮唨闂佺懓鍤栭幏锟�:5 | 婵犵數濮烽弫鍛婃叏閻戝鈧倿鎸婃竟鈺嬬秮瀹曘劑寮堕幋鐙呯幢闂備浇顫夊畷妯衡枖濞戞碍顐介柕鍫濇啒閺冨牊鏅查柛娑卞幗濞堟煡姊虹粙娆惧剰妞ゆ垵顦靛濠氭晲閸涘倻鍠庨埢搴ㄥ箚瑜庨鍕煛婢跺棙娅嗙紒璇茬墕椤繘鎼圭憴鍕/闂侀潧枪閸庢煡鎮甸姀銈嗏拺闁荤喐婢樺▓鈺呮煙閸戙倖瀚� | 婵犵數濮烽弫鍛婃叏閻戣棄鏋侀柟闂寸绾惧鏌i幇顒佹儓闁搞劌鍊块弻娑㈩敃閿濆棛顦ョ紓浣哄С閸楁娊寮婚悢鍏尖拻閻庣數枪婵′粙姊洪崫鍕櫤缂佽鐗撳濠氬Ω閵夈垺鏂€闂佺硶鍓濋敋缂佹劖鐩娲川婵犲孩鐣烽悗鍏夊亾闁归棿绀佺粻鏍ㄤ繆閵堝倸浜鹃梺瀹犳椤︻垶鍩㈠鍡樼秶闁靛ě鍛帒缂傚倷绀侀崐鍝ョ矓閹绢喓鍋戝ù鍏兼綑闁卞洭鏌i弬鎸庢儓鐎殿喗濞婂缁樻媴閾忕懓绗″┑鐐插级閻楃姴鐣烽幇鏉挎嵍妞ゆ挻绋戞禍鐐叏濡厧浜鹃悗姘炬嫹 | 婵犵數濮烽弫鍛婃叏閻戣棄鏋侀柟闂寸绾惧鏌i幇顒佹儓闁搞劌鍊块弻娑㈩敃閿濆棛顦ョ紓浣哄С閸楁娊寮婚悢鍏尖拻閻庡灚鐡曠粣妤呮⒑鏉炴壆顦﹂悗姘嵆瀵鈽夐姀鐘插祮闂侀潧枪閸庤京绮绘繝姘拺闁告稑饪村▓鏇犫偓鍏夊亾闁归棿绀佺粻鏍ㄤ繆閵堝倸浜鹃梺瀹犳椤︻垶鍩㈠鍡樼秶闁靛ě鍛帒缂傚倷绀侀崐鍝ョ矓閹绢喓鍋戝ù鍏兼綑闁卞洭鏌i弬鎸庢儓鐎殿喗濞婂缁樻媴閾忕懓绗″┑鐐插级閻楃姴鐣烽幇鏉挎嵍妞ゆ挻绋戞禍鐐叏濡厧浜鹃悗姘炬嫹 | 闂傚倸鍊搁崐鎼佸磹閹间礁纾瑰瀣捣閻棗銆掑锝呬壕濡ょ姷鍋為悧鐘汇€侀弴銏℃櫆闁芥ê顦純鏇熺節閻㈤潧孝闁挎洏鍊濋幃褔宕卞▎蹇f闁荤姴娲︾粊鎾绩娴犲鐓熸俊顖氭惈缁狙囨煙閸忕厧濮堟繛鑹邦嚙閳规垹鈧綆鍋€閹锋椽鏌i悩鍏呰埅闁告柨鑻埢宥夊箛閻楀牏鍘甸梺鍛婂灟閸婃牜鈧熬鎷� | 闂傚倸鍊搁崐鎼佸磹瀹勬噴褰掑炊瑜忛弳锕傛煕椤垵浜濋柛娆忕箻閺岀喓绱掗姀鐘崇亪缂備胶濮鹃~澶愬Φ閸曨垰绠涢柛顐f礃椤庡秹姊虹粙娆惧剾濞存粠浜璇测槈閵忕姈銊︺亜閺傚灝缍栨慨瑙勵殜閹嘲饪伴崨顓ф毉闁汇埄鍨遍〃濠傤嚕閺屻儱绠瑰ù锝呮贡閸欏棝姊虹紒妯荤闁稿﹤婀遍埀顒佺啲閹凤拷 |
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2025-1-20 15:50
Powered by ScienceNet.cn
Copyright © 2007-2025 中国科学报社