给出POSCAR的正负电荷中心位置

 错误!

众所周知,铁电材料极化来源于体系正负电荷中心不重合。为了方便快速得到结构的正负电荷中心位置,我们写了一个简单的脚本。

下面是HfO2结构的POSCAR:

Hf4 O8
1.0
        5.0401377678         0.0000000000         0.0000000000
        0.0000000000         5.0744509697         0.0000000000
        0.0000000000         0.0000000000         5.2692761421
   Hf    O
    4    8
Direct
     0.767436034         0.248988996         0.517085015
     0.767436034         0.748989066         0.949495013
     0.232563966         0.248988996         0.017084998
     0.232563966         0.748989066         0.449494967
     0.572143017         0.383266984         0.851201030
     0.572143017         0.883267031         0.615378998
     0.959797009         0.500003994         0.216577992
     0.959797009         0.000003977         0.250001991
     0.040202976         0.000003977         0.750002013
     0.040202976         0.500003994         0.716578014
     0.427856983         0.383266984         0.351200962
     0.427856983         0.883267031         0.115379020

这里的正电荷来自 Hf, 负电荷来自 O。

 

Python脚本如下:

filepath = 'POSCAR'
with open(filepath,'r') as f:
    content = f.readlines()

element = [i for i in content[5].split()] 
N_type = [int(i) for i in content[6].split()]
res = []
index = 8
for i in range(len(N_type)):
    center = [0,0,0]
    tmp = content[index:index+N_type[i]]
    index += N_type[i]
    tmp1 = []
    for j in tmp:
        tmp2 = [float(each) for each in j.split()]
        tmp1.append(tmp2)
        center[0] += tmp2[0]
        center[1] += tmp2[1]
        center[2] += tmp2[2]
    res.append(tmp1)
    center = [ center[x]/N_type[i] for x in range(len(center))]
    print(element[i], 'atom center: ',center)

 

输出:

Hf atom center:  [0.5, 0.498989031, 0.4832899982500001]
O atom center:  [0.4999999962499999, 0.4416354965, 0.4832900025]
[Finished in 210ms]

这样我们就能看出来,该结构极化方向是沿着b轴。

posted @ 2022-05-23 11:38  ghzphy  阅读(277)  评论(2)    收藏  举报