Bader专题

Bader选项组合、区域编号与密度检查

NaCl真实密度的17组操作,说明分析开关、区域列表与区间、原子和盆编号差异,并从导出网格核对电子积分。

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

Bader命令中的atom、bader、区域列表和参考密度很容易混淆。本篇使用鸢算科技集群已公开的NaCl真实VASP密度,实际运行17组命令,用文件和积分说明区别。软件为Bader1.05(GCC13.3),分析使用sisl0.16.4模块内的Python、NumPy和Matplotlib;没有重新生成DFT标签。

1. 下载并运行#

下载真实密度、全部命令与绘图脚本。保存为bader-cli.zip:

unzip bader-cli.zip -d bader-cli
cd bader-cli
ls inputs
cat job.slurm
sbatch job.slurm

包内包含CHGCAR、AECCAR0、AECCAR2,不含POTCAR或VASP程序。CPU分区按账号可用资源选择,当前集群CPU分区需按56物理核整节点申请;模板请求56核,工具仍顺序以1线程处理这些小文件。若正在已分配的CPU作业里,也可执行:

bash run.sh

完成后查看:

cat analysis/SUMMARY.json
head analysis/options.csv
ls figures

run.py先按相同网格逐点相加AECCAR0+AECCAR2生成inputs/CHGCAR_ref,再在17个独立目录执行原生Bader;每条命令保存在cases/*/command.sh。后处理检查电子积分、总体积和区域网格相加。参考密度只用于分盆,电子数仍积分输入CHGCAR的价电子密度。

2. 分析开关怎样组合#

以下命令要放在互相独立、各含CHGCAR和CHGCAR_ref的工作目录,避免覆盖输出。自动包已经准备好这些目录。

module load bader/1.05
bader CHGCAR -ref CHGCAR_ref
bader CHGCAR -ref CHGCAR_ref -c bader -n voronoi
bader CHGCAR -ref CHGCAR_ref -c bader -c voronoi
bader CHGCAR -ref CHGCAR_ref -n bader -c voronoi

-c开启、-n关闭后面的分析。默认开启Bader、关闭Voronoi;两者同时开启会得到两种分区结果,并不会把它们变成同一个定义。

分区 Cl区域电子数 Na区域电子数 合计
Bader 7.831068 0.168932 8.000000
Voronoi 7.3891 0.6109 8.0000

本例PAW价电子参照为Cl7、Na1,因此Bader净电荷为Cl−0.831068e、Na+0.831068e。它是这套密度与分区定义下的结果,不是形式氧化态。Voronoi按空间几何距离划分,数值不同是定义不同。

bader CHGCAR -ref CHGCAR_ref -n bader -n voronoi

两个分析都关掉后,不会生成ACF.dat;这条只用于说明开关行为,不能称为完成电荷分析。

3. 把默认值明确写出来#

bader CHGCAR -ref CHGCAR_ref -c bader -n voronoi \
  -b neargrid -r -1 -m known -vac off -i chgcar

在本NaCl体相例子中,这条与基础命令的原子电子数和体积完全相同。-vac off明确不划真空;本体相没有低密度真空区,因此不能把这个对照用于证明表面、分子真空阈值也无影响。

其他算法、细化、真空和终止条件的独立实算见原命令选项教程。实际安装版本的帮助可直接查看:

bader -h

4. 列表、区间和求和的写法#

以原子区域为例,以下两种选择都输出两个独立区域文件:

bader CHGCAR -ref CHGCAR_ref -p sel_atom 1 2
bader CHGCAR -ref CHGCAR_ref -p sel_atom 1-2

本例输出BvAt0001.dat和BvAt0002.dat,与-p all_atom中对应文件逐字节相同。要把两者相加成一个网格:

bader CHGCAR -ref CHGCAR_ref -p sum_atom 1 2
bader CHGCAR -ref CHGCAR_ref -p sum_atom 1-2
bader CHGCAR -ref CHGCAR_ref -p sum_atom 2 1

三个命令均输出BvAt_summed.dat,得到相同的求和密度。换成盆区域时:

bader CHGCAR -ref CHGCAR_ref -p sel_bader 1 2
bader CHGCAR -ref CHGCAR_ref -p sel_bader 1-2
bader CHGCAR -ref CHGCAR_ref -p sum_bader 1 2
bader CHGCAR -ref CHGCAR_ref -p sum_bader 1-2
bader CHGCAR -ref CHGCAR_ref -p sum_bader 2 1

对应输出前缀为Bvol,求和为Bvol_summed.dat。sel输出若干独立文件,sum输出它们的和,不能混用。

5. 原子编号不一定等于盆编号#

本次输入原子1是Cl、原子2是Na,但原生盆编号刚好相反:

文件 对应内容 从网格重新积分的电子数
BvAt0001.dat 原子1,Cl 7.831067987
BvAt0002.dat 原子2,Na 0.168931836
Bvol0001.dat 盆1,本例位于Na 0.168931836
Bvol0002.dat 盆2,本例位于Cl 7.831067987

原子区域可能汇总一个或多个盆。选特定区域前先核对ACF.dat和BCF.dat的坐标与关联,不要认为sel_bader 1一定等于sel_atom 1。

实际分区电子数与区域网格积分

本例只有两个盆,不代表任意材料都满足“一原子一盆”。非核吸引子、伪势和网格都会影响盆的数量及映射。

6. 从导出网格检查有没有漏区域#

analyze.py逐点比较两个独立区域的和与原CHGCAR。本次64³网格结果:总体积46.29825ų,价电子积分约8e;两区域没有正密度重叠,相加逐点还原输入。列表、区间和反序求和均给出相同结果。

原始密度和两个原子区域的实际截面

图使用相同色标,坐标是晶格分数坐标,固定第三个网格方向在0.5。该截面靠近Cl高密度区,Na图色值很低,不表示其三维积分为零。CHGCAR文件中的网格值是密度乘晶胞体积,不能直接当e/ų;此文件格式下,全部网格值的平均才对应总电子数。

7. 其他选项去哪里看#

已安装帮助中的命令族 实际操作资料
-c/-n bader/voronoi、显式默认值 本篇第2–3节
-b neargrid/ongrid/weight、-r、-m、-vac、-ref 算法与参考密度及网格收敛
-p all/sel/sum 的atom与bader,列表及区间 本篇第4–6节
-p atom_index/bader_index/surfaces_atoms 原命令选项教程及自旋与区域可视化
-i chgcar/cube、自动识别、-v CHGCAR/CUBE转换
-cp 密度临界点
-h 当前终端帮助,无科学计算输出

这些资料合起来覆盖安装版帮助列出的命令族与主要写法,不代表所有体系、网格和拓扑都已收敛。临界点输出的Laplacian列与Hessian迹存在已记录差异,继续保留原文限制;不要仅凭临界点计数就作定量成键结论。

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

查看配图

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

100%查看原图 ↗