軟模找相變

一.通過擴胞把其他點的虛頻折射到Gamma點

  1. 進行primitive cell的計算時,往往會出現(xiàn)虛頻

    • 一般可以對unit cell進行擴胞來消除虛頻(削弱周期性邊界條件的影響),或者虛頻會被折射到\Gamma
  2. 擴胞計算聲子譜,查看\Gamma點聲子譜

    • 運行命令phonopy band.conf

      舉個band.conf的栗子:

      ATOM_NAME = Sn O2
      DIM = 2 1 3
      EIGNENVECTORS = .TRUE. #這個參數(shù)可以實現(xiàn)輸出虛頻的振動本征值
      BAND = 0.0 0.0 0.0 ... -0.5 0.5 0.5
      # BAND_LABELS = G Z T Y S X U R
      
  • band.yaml文件中可以看到,振動對應(yīng)的實部和虛部
    實部和虛部

二.利用phonopy中的MODULATION參數(shù)來移動出現(xiàn)虛頻的原子

比如,j點處的原子的移動公式為:
\frac{A}{\sqrt{N_am_j}}R_e[exp(i\phi)\pmb{e}_jexp(\pmb q \cdot \pmb r_{jl})]
這里A是amplitude,\phi是phase,N_a是超胞中的原子數(shù),m_j是第j個原子的質(zhì)量,\pmb q是指定的\pmb q點,\pmb r_{jl}是第l個unit cell中的第j個原子的位置,\pmb e_j是第j個原子部分的本征矢量。

三.conf的書寫

ATOM_Name = SnO2
DIM = 2 1 3
SYMMETRY_TOLERANCE = 1e-3
MODULATION = 1 2 1,0 0.5 0 1 a
# MODULATION參數(shù)解釋:
# 1 2 3參數(shù):為unitcell的闊胞參數(shù)1 2 1,由于在0 0.5 0 方向上有虛頻,所以在y軸方向上闊胞,,
# 4 5 6參數(shù):出現(xiàn)虛頻的q點
#    7 參數(shù):虛頻一般就是第一個band,所以我們這里用1
#    8 參數(shù):振幅大小
#    9 參數(shù):是弧度制的相因子,默認為0,可以不寫

四.所用生成腳本

#!/usr/bin/env python
# coding=utf-8
import os
import shutil


def MODULATION(delta, fileNumber):
    for i in range(0, fileNumber + 1):
        displace = float(i * delta)
        filename = 'modulation-' + str(displace)
        conf = 'modulation-' + str(displace) + '.conf'
        f = open(conf, 'w')
        f.write('ATOM_Name = SnO2-' + str(displace) + '\n')
        # 之前用于算聲子譜的擴胞系數(shù)
        f.write('DIM = 2 1 3\n')
        # 闊胞時分析對稱性的允許誤差
        f.write('SYMMETRY_TOLERANCE = 1e-3\n')
        # 前三個為軟膜找相變,將unitcell所闊的胞,由于在0 0.5 0 方向上有虛頻,所以在y軸方向上闊胞
        f.write('MODULATION = 1 2 1,0 0.5 0 1 ' + str(displace))
        f.close()
        os.system('phonopy ' + conf)
        os.system('rm MPOSCAR-001')
        os.system('mv MPOSCAR POSCAR-' + str(displace))

    for i in range(0, fileNumber + 1):
        displace = i * delta
        foldname = 'Modulation-' + str(displace)
        if not os.path.exists(foldname):
            os.system('mkdir ' + foldname)
        for file in ['INCAR', 'POTCAR', 'POSCAR-' + str(displace)]:
            shutil.copy2(file, foldname)
        os.chdir(foldname)
        os.rename('POSCAR-' + str(displace), 'POSCAR')
        os.chdir('..')

    os.system('rm modulation-*')
    os.system('rm POSCAR-*')


if __name__ == '__main__':
    MODULATION(delta=1.0, fileNumber=20)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容