py4vasp专题

py4vasp cRPA有效相互作用

用SrVO3真实四频率响应读取U、u、J、完整库仑张量,并解释截断修正和动态复数结果。

更新于 2026-11-08约 10 分钟阅读按任务与环境选择适用配置
阅读本篇目录

用SrVO3真实四频率响应读取U、u、J、完整库仑张量,并解释截断修正和动态复数结果。

1. 下载实例,先看图再提取#

下载本篇终端实操资料包,在新目录解压:

unzip py4vasp-effective-coulomb-practical-wave292-*.zip
cd py4vasp-effective-coulomb-practical-wave292
bash preview.sh

preview/figures/生成三张参考图。完整提取、原生报告和重新画图只需:

bash run.sh
ls results/data
ls tools-output
ls plots/figures

run.sh依次执行prepare.sh、extract.sh、tools.sh、plot.sh。results/data/是提取的CSV与张量,tools-output/是原生报告,plots/figures/是PNG。输出目录受保护;再次操作请换一个新解压目录。随包figures/可以直接查看。

后处理使用py4vasp/0.11.3的Python3.11环境,静态图使用pymatgen/2026.9.24中的NumPy2.3.5、Matplotlib3.11.2。已分配资源内1个CPU即可,不会重新运行VASP。carriers/保存本例导出的自有全分辨率数值与字段配方;脚本在work/重建明确标记的最小HDF读取载体,它不是原始完整VASP输出。下载包不含PAW、波函数、响应导数、Wannier系数或程序。

2. 从什么文件开始#

本例为立方SrVO₃,5原子、晶格常数3.84652 Å,V位于胞心。先完成自己的DFT和空带计算、Wannier局域基,再做cRPA。已有匹配文件 → 固定相关子空间 → 选择外部频率 → 运行响应 → 提取完整张量 → 求U/u/J → 检查截断和子空间收敛。

本次复用真实收敛的WAVECAR、WAVEDER、CHGCAR及WANPROJ,不重新优化Wannier函数。三个V t₂g-like MLWF对应本例孤立的原生能带21–23;64个k点的投影正交性误差小于1E−10。这里投影本征值为0/1,不能将其说成展示了纠缠带分数权重的优势。

SrVO3真实结构与截断、屏蔽对照

计算环境为VASP6.6.1、Intel oneAPI2024.2/Intel MPI、HDF51.14.6、Wannier903.1.0接口,8个MPI进程、每进程1线程。本例需要同时支持HDF5和Wannier90接口的可执行程序;当前仅HDF5的常规模块不能直接替代。需要重新计算时,先确认可用的双接口构建路径,再写入提交脚本;资料包中的提取和绘图不依赖这个VASP构建。

mkdir SrVO3-crpa
cp inputs/SrVO3-spectral-MLWF-omega0/{INCAR,POSCAR,KPOINTS} SrVO3-crpa/
# 放入自己匹配的POTCAR、WAVECAR、WAVEDER、CHGCAR、WANPROJ
cd SrVO3-crpa
sbatch submit.sh

关键输入如下,完整文件见文末:

ALGO = CRPA
LSCRPA = .TRUE.
LOCALIZED_BASIS = MLWF
NUM_WANN = 3
NTARGET_STATES = 1 2 3
NBANDS = 144
ENCUTGW = 200
OMEGAMAX = 0
CSHIFT = 0.1

NTARGET_STATES选择相关局域基的编号,不是简单填DFT能带21、22、23。方法含义参考VASP LSCRPA。本例分别运行OMEGAMAX=0、5、10、20 eV;当前这条输出路径每次保存一个外部频率,NOMEGA=8不表示本文件有8个外部频率点。不要仅看INCAR猜HDF数组长度。

3. 提取原生张量,先核对频率#

在资料根目录:

module load py4vasp/0.11.3
python - <<'PYCODE'
import h5py
import numpy as np
import py4vasp
p = 'work/SrVO3-spectral-MLWF-omega0'
c = py4vasp.Calculation.from_path(p)
print(c.effective_coulomb)
d = c.effective_coulomb.read()
with h5py.File(p+'/vaspout.h5') as h:
    print('外部频率[实部,虚部]/eV', h['results/crpa/comega'][...])
U = d['screened'][0].transpose(0,3,2,1)
print('原生I,J,K,L顺序的完整张量', U)
print('平均同轨道U/eV', np.mean([U[i,i,i,i] for i in range(3)]))
PYCODE

0.11.3的单频read()不带频率字段,故单独读取comega。本例均为[ω,0]的实轴推迟响应,不是Matsubara虚频。API数组索引[spin,i,l,k,j]对应原生文本的I,J,K,L,转成原生四指标使用上面的transpose(0,3,2,1);不能只把数组强行reshape成自己习惯的顺序。

4. 截断修正量不是低截断裸相互作用#

在本例VASP6.6.1输出驱动中,HDF字段cijkl保存:

cijkl = V_high − V_low

py4vasp0.11.3把它命名为bare_low_cutoff,但在这个版本组合中应当将其解释为截断修正量。真正的低截断裸相互作用需要重建:

python - <<'PYCODE'
import numpy as np
import py4vasp
c = py4vasp.Calculation.from_path('work/SrVO3-spectral-MLWF-omega0')
d = c.effective_coulomb.read()
high = d['bare_high_cutoff']
correction = d['bare_low_cutoff']
low = high - correction
for name, a in [('high',high),('correction',correction),('low',low)]:
    print(name, np.mean([a[0,i,i,i,i].real for i in range(3)]))
PYCODE

本例同轨道平均高截断裸值约16.270731 eV,修正量约0.306126 eV,重建低截断值约15.964605 eV。screened已经包含相应修正,不能再加一次。自己更换VASP/py4vasp版本后,应与OUTCAR中的高、低截断表重新核对,不能永久依赖字段名猜物理含义。

5. 从完整四指标张量得到U、u、J#

采用原生I,J,K,L顺序的张量T:U为T[i,i,i,i]平均;不同轨道的直接项u为T[i,i,j,j]平均;交换J为T[i,j,j,i]平均,后两项只取i≠j。不同文献的四指标定义可能不同,比较前应先对齐排列。

SrVO3真实静态裸与屏蔽直接相互作用矩阵

外部实频/eV 平均Re U/eV 平均Im U/eV
0 3.277326 约0
5 2.454069 −1.494004
10 −0.243338 −3.919897
20 5.436308 −7.986530

SrVO3真实频率依赖U、u、J

10 eV处Re U为负是本次动态响应的真实结果。它不是静态Hubbard U,也不能单凭它判断材料静态不稳定。虚部采用原生推迟响应符号。四个频率点之间的直线只引导视线,不代表计算了中间频率。

head -13 results/data/SrVO3-screening-frequency.csv
head -5 results/data/SrVO3-native-tensor-text.csv
cat tools-output/SrVO3-spectral-MLWF-omega0.txt

本例实际提取全部81个四指标元素,四个频率的裸/屏蔽复张量均与原生VIJKL、UIJKL文本逐项对应。数据文件同时保存实部和虚部,不能只保留绝对值。用于材料研究前,需收敛DFT网格、空带数、ENCUTGW、展宽与频率网格,并测试相关子空间;本例144能带和200 eV响应截断只是流程参数。

提交新的响应计算#

重新计算需要管理员提供的HDF5+Wannier90双接口VASP路径。将它设为VASP_EXE后,提交CPU分区任务;按账户实际开放分区替换占位值:

cat > submit.sh <<'SH'
#!/bin/bash
#SBATCH --partition=YOUR_CPU_PARTITION
#SBATCH --ntasks=8
#SBATCH --cpus-per-task=1
#SBATCH --time=00:30:00
source /etc/profile
export OMP_NUM_THREADS=1
ulimit -s unlimited
: "${VASP_EXE:?请指定HDF5和Wannier90双接口VASP路径}"
mpirun -np 8 "$VASP_EXE" > vasp.log
SH
sbatch --export=ALL submit.sh

先加载该可执行程序匹配的IntelMPI/oneAPI运行环境。不要在未获得计算资源时直接运行响应程序;缺少双接口构建时,可以先完整完成本篇数据提取与绘图,再联系配置计算环境。

本例完整输入#

以下文件已包含在资料包inputs/中。POTCAR和匹配的前置响应文件需自行提供。

SrVO3-spectral-MLWF-omega0:完整输入

INCAR

SYSTEM=SrVO3-spectral-MLWF-t2g
ENCUT=550
PREC=Accurate
EDIFF=1E-6
ISMEAR=-1
SIGMA=.1
IBRION=-1
NSW=0
LREAL=.FALSE.
LASPH=.TRUE.
NCORE=1
LWAVE=.FALSE.
LCHARG=.FALSE.
LH5=.FALSE.
ISTART=1
ICHARG=11
ALGO=CRPA
NBANDS=144
ENCUTGW=200
NCSHMEM=1
PRECFOCK=Fast
NOMEGA=8
OMEGAMAX=0
CSHIFT=.1
LSCRPA=.TRUE.
LOCALIZED_BASIS=MLWF
NTARGET_STATES=1 2 3
NUM_WANN=3
LWRITE_WANPROJ=.FALSE.

POSCAR

SrVO3 cubic fixed reference
3.84652
1 0 0
0 1 0
0 0 1
Sr V O
1 1 3
Direct
0 0 0
.5 .5 .5
.5 .5 0
.5 0 .5
0 .5 .5

KPOINTS

Gamma mesh
0
Gamma
4 4 4
0 0 0
SrVO3-spectral-MLWF-omega5:完整输入

INCAR

SYSTEM=SrVO3-spectral-MLWF-t2g
ENCUT=550
PREC=Accurate
EDIFF=1E-6
ISMEAR=-1
SIGMA=.1
IBRION=-1
NSW=0
LREAL=.FALSE.
LASPH=.TRUE.
NCORE=1
LWAVE=.FALSE.
LCHARG=.FALSE.
LH5=.FALSE.
ISTART=1
ICHARG=11
ALGO=CRPA
NBANDS=144
ENCUTGW=200
NCSHMEM=1
PRECFOCK=Fast
NOMEGA=8
OMEGAMAX=5
CSHIFT=.1
LSCRPA=.TRUE.
LOCALIZED_BASIS=MLWF
NTARGET_STATES=1 2 3
NUM_WANN=3
LWRITE_WANPROJ=.FALSE.

POSCAR

SrVO3 cubic fixed reference
3.84652
1 0 0
0 1 0
0 0 1
Sr V O
1 1 3
Direct
0 0 0
.5 .5 .5
.5 .5 0
.5 0 .5
0 .5 .5

KPOINTS

Gamma mesh
0
Gamma
4 4 4
0 0 0
SrVO3-spectral-MLWF-omega10:完整输入

INCAR

SYSTEM=SrVO3-spectral-MLWF-t2g
ENCUT=550
PREC=Accurate
EDIFF=1E-6
ISMEAR=-1
SIGMA=.1
IBRION=-1
NSW=0
LREAL=.FALSE.
LASPH=.TRUE.
NCORE=1
LWAVE=.FALSE.
LCHARG=.FALSE.
LH5=.FALSE.
ISTART=1
ICHARG=11
ALGO=CRPA
NBANDS=144
ENCUTGW=200
NCSHMEM=1
PRECFOCK=Fast
NOMEGA=8
OMEGAMAX=10
CSHIFT=.1
LSCRPA=.TRUE.
LOCALIZED_BASIS=MLWF
NTARGET_STATES=1 2 3
NUM_WANN=3
LWRITE_WANPROJ=.FALSE.

POSCAR

SrVO3 cubic fixed reference
3.84652
1 0 0
0 1 0
0 0 1
Sr V O
1 1 3
Direct
0 0 0
.5 .5 .5
.5 .5 0
.5 0 .5
0 .5 .5

KPOINTS

Gamma mesh
0
Gamma
4 4 4
0 0 0
SrVO3-spectral-MLWF-t2g:完整输入

INCAR

SYSTEM=SrVO3-spectral-MLWF-t2g
ENCUT=550
PREC=Accurate
EDIFF=1E-6
ISMEAR=-1
SIGMA=.1
IBRION=-1
NSW=0
LREAL=.FALSE.
LASPH=.TRUE.
NCORE=1
LWAVE=.FALSE.
LCHARG=.FALSE.
LH5=.FALSE.
ISTART=1
ICHARG=11
ALGO=CRPA
NBANDS=144
ENCUTGW=200
NCSHMEM=1
PRECFOCK=Fast
NOMEGA=8
OMEGAMAX=20
CSHIFT=.1
LSCRPA=.TRUE.
LOCALIZED_BASIS=MLWF
NTARGET_STATES=1 2 3
NUM_WANN=3
LWRITE_WANPROJ=.FALSE.

POSCAR

SrVO3 cubic fixed reference
3.84652
1 0 0
0 1 0
0 0 1
Sr V O
1 1 3
Direct
0 0 0
.5 .5 .5
.5 .5 0
.5 0 .5
0 .5 .5

KPOINTS

Gamma mesh
0
Gamma
4 4 4
0 0 0

继续查找其他数据入口:py4vasp功能索引。

需要根据你的体系选择资源?联系讨论计算需求。实际可用软件与权限,以当前账户和运行环境为准。

查看配图

放大后可滚动查看细节,按 Esc 关闭。

100%查看原图 ↗