||
关注:
1) 零点振动能的本质;
Perosonal view:
ZPE是物质的固有属性,不随计算方法而改变,即选取不同的参数如赝势种类、截断能大小等,只要精度足够,不影响计算得到的零点能数值。
2) 零点能的表达式;
3) 从PWscf获取零点能的步骤
感谢LHY分享此脚本:
#!/usr/bin/python
# this program is for calculating zero point energy (ZPE), combination with PWSCF.
# note: integrating DOS of phonon.
# date: April 23,2011
# Hanyu <ouuing@gmail.com>
import sys
import math
def getZPE(phdos,natom):
temperature = 300
f = open(phdos)
dos = []
E_zpe = 0.0
sum_dos = 0.0
free_energy = 0.0
sinh_tmp = 0.0
for line in f:
dos.append(map(float,line.split()))
f.close
for index in range(len(dos)):
sum_dos +=dos[index][1]
for index in range(len(dos)-1):
if dos[index][0] >= 0:
domega=dos[index+1][0]-dos[index][0]
# E_zpe+=domega*dos[index][1]*dos[index][0]*0.5
E_zpe+=dos[index][1]*dos[index][0]*0.5
if temperature == 0:
continue
sinh_tmp = 2.0*math.sinh(float(dos[index][0])/2.0/(temperature/50.0*33.356631209780147))
if sinh_tmp <= 0:
continue
log_tmp = math.log(sinh_tmp)
# free_energy += temperature/50.0/0.02998*domega*dos[index][1]*log_tmp
free_energy += temperature/50.0/0.02998*dos[index][1]*log_tmp
# print free_energy/8065.5/int(natom)
print E_zpe/8065.5/int(natom), 'eV', 'Zero point energy'
print free_energy/8065.5/int(natom), 'eV', 'Free energy', 'at', temperature, 'K'
print sum_dos,'modes of phonon'
if len(sys.argv) < 2:
print 'No PHDOS.',
print "executing: "
print "./pw_zero.py phonon.dos 12"
print " file atoms"
sys.exit()
if len(sys.argv) == 2:
natom=1
phdos=sys.argv[1]
if len(sys.argv) == 3:
natom=sys.argv[2]
phdos=sys.argv[1]
getZPE(phdos,natom)
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-9-27 11:58
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社