Phonopy Born电荷与介电张量提取
从实际VASP响应读取BORN,说明固定离子介电张量、原子顺序,以及QE旧输出和CRYSTAL读取方法。
阅读本篇目录
unzip phonopy-response-electronic-data-wave244-*.zip -d phonopy-data-practice
cd phonopy-data-practice
在已分配CPU资源内,用普通账号选择一种入口:bash run.sh一次生成全部数值和三张图;或者在一份新的解压目录只运行本篇指定的Python程序。输出目录已存在时另解压,避免覆盖。完整运行每次1个CPU,无需GPU,不提交新DFT,也不会训练一个势模型。
环境为Phonopy4.8.3、Python3.11.16、NumPy2.3.5、GCC13.3 C/OpenMP、phonors0.6.0与symfc1.7.3。包内是实际计算的数值资料和经过选取的结构/响应字段;不包含完整原始VASP输出、势文件或波函数。
1. 先算响应,再提取BORN#
结构与电子精度准备好后,运行产生Born有效电荷和介电张量的线性响应计算,再用Phonopy工具整理为BORN,最后与同源声子力常数一起做非解析项修正。
Born有效电荷是极化对原子位移的动态响应,单位为电子电荷e;它与Bader电荷、形式化合价含义不同。声子NAC使用固定离子的电子介电张量,不能把包含离子贡献的总静态介电张量再代入。
本包Si、NaCl和ZnS数据来自本集群已有VASP6.6.1 CPU DFPT,使用oneAPI2024.2、IntelMPI2021.13与HDF51.14.6。三个小例子的实际INCAR/POSCAR/KPOINTS在inputs/response-inputs/;它们用于演示输入与数据提取,精细材料参数仍需检查电子k网格等收敛。
cat inputs/response-inputs/nacl/INCAR
cat inputs/response-inputs/nacl/KPOINTS
cat inputs/response-inputs/nacl/POSCAR
选择支持该响应功能的VASP程序和CPU作业资源,按第一性原理软件环境提交自己的作业。重点是确认确实产生了LEPSILON等响应数组;普通SCF输出不会自动补出Born张量。
2. 用原生命令读取真实响应#
在新解压目录可直接运行:
source /etc/profile
module load phonopy/4.8.3
python born.py
cat born/nacl.BORN
程序实际调用的命令包括:
phonopy-vasp-born --nost inputs/nacl.response-selected.h5 > manual.BORN
response-selected.h5只保留原始计算的结构和线性响应八个确切字段,没有改写张量数值;它不是完整VASP执行文件。使用自己的完整输出时,命令形式为:
phonopy-vasp-born --nost vaspout.h5 > BORN
--nost在本例关闭张量对称化,方便逐项读取原始数值。是否施加对称约束,应与自己的结构、计算结果和后续流程一致。
3. BORN文件怎样读#
本例NaCl的输出按原子顺序为Cl、Na,主要内容如下:
# epsilon and Z* of atoms 1 2
2.44540831 0 0 0 2.44540831 0 0 0 2.44540831
-1.10453402 0 0 0 -1.10453402 0 0 0 -1.10453402
1.10453402 0 0 0 1.10453402 0 0 0 1.10453402
介电矩阵和每个有效电荷矩阵都按九个分量展开。第一行注释说明选出的独立原子编号;Si的等价原子可能只输出一个独立张量,不能据此认定丢失了原子。

图中Born张量只展示每例第一个选定独立原子,所以NaCl显示Cl负值,ZnS显示S负值;对应另一元素的数据仍在BORN和born/TENSORS.json里。Si原例的小网格电子介电值约23.84,用于展示实际数据读法,不能直接当作收敛Si介电常数;使用自己的材料数据时应加密网格并检查结构与泛函。
4. QE旧版输出怎样读#
当前4.8.3的原生phonopy-qe-born读取器识别带without acoustic字样的有效电荷表头。官方旧NaCl例子使用较早表头,可使用包内兼容脚本:
python qe_legacy.py inputs/QE-NaCl.in \
inputs/QE-response.selected > QE.BORN
cat QE.BORN
.selected是官方Phonopy4.7.2示例中两个真实打印张量块的原样摘录,行号和来源哈希在inputs/PROVENANCE.json;它不是完整ph.x输出,也不是本次新跑QE。
脚本按旧表头读取实际数值,再明确进行对称和电荷中性投影;结果与官方BORN一致,电子介电对角元为2.472958201,Na/Cl有效电荷对角元约±1.105385。对自己的兼容格式完整输出,原生命令形式为:
phonopy-qe-born your-pw.in your-ph.out > BORN
先检查实际输出表头与张量含义,不要仅改一个表头来把不同物理处理冒充成同一格式。
5. CRYSTAL与其他接口#
已有自己的真实CRYSTAL响应输出时:
phonopy-crystal-born your-crystal.o > BORN
本集群已用官方NaCl真实输出运行此读取器,得到介电对角元1.8126、有效电荷对角元约±1.0238;数值文件在inputs/CRYSTAL-official.BORN。这是读取已有官方资料,不是本次新跑CRYSTAL,不与本包另一套结构/计算设置下的VASP或QE数值作精度比较。
Octopus读取器需要对应的真实epsilon、born_charges及同源几何,本包没有提供Octopus电子计算数据。各入口的文件前提见命令索引。继续做LO–TO分裂可看ZnS非解析项教程的完整配套流程;Born、介电张量与力常数应来自相配的计算设置。