Critic2专题

Critic2 分子标架转换与结构去重

两个非共线分子的格式转换、四个结构的reduce筛选,以及输入标签和真实能量的区别。

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

下载输入、原生输出、80关键词表和配图,保存为 example.zip:

python3 -m zipfile -e example.zip .
cd critic2-language-examples
bash results.sh
bash plot.sh

使用 critic2/1.4(内部1.4.155),GCC/GFortran13.3、OpenMP、LAPACK3.12.1/BLAS。新操作只用1线程,不需要GPU;数据复用以前的水晶体和NEP振动结果,没有新增DFT。

1. 先分清本例的两项操作#

makemolsnc把NEIGHCRYS风格的fort.21片段转成分子标架文件;trick reduce按体积、输入标签和粉末衍射相似度筛候选结构。它们都不计算新的电子能量。

本包fort.21是我们自建的格式测试数据,包含两个非共线水分子,不是实际运行DMACRYS生成的结果。原子位置只用于验证分组和标架选择。

cat inputs/molecular-frames/in.cri
cat data/own-fort.21
sbatch job.slurm molecular-frames

输入只有一行:

makemolsnc ../data/own-fort.21 molecular-frames.mols

Slurm脚本在独立work目录中运行。随包参考输出为:

MOLX 2
X LINE  O1 H1 1
Y PLANE O1 H1 1 H2 1
X LINE  O2 H3 1
Y PLANE O2 H3 1 H4 1
ENDS

X方向沿O–H,另一个不共线的H确定平面。安装版这个转换入口需要每个分子能找到三个非共线原子,不能直接用于只有两原子或严格线性的分子。

2. 为结构去重准备列表#

本例从既有14 Å立方水晶体构造四个几何控制。第二个与第一个相同,第三个几何相同但筛选标签不同,第四个把晶胞边长改为14.1 Å。

cat inputs/structure-dedup/structures.list
cat inputs/structure-dedup/in.cri
sbatch job.slurm structure-dedup

列表如下,第二列是人为赋予的筛选标签,单位按这个源码入口的kcal/mol约定。这些数值不是本次计算的DFT能量或焓。

../data/water-a.cif 0.0
../data/water-copy.cif 0.01
../data/water-high-energy.cif 1.0
../data/water-volume.cif 0.0

输入:

trick reduce structures.list

trick reduce属于该版本源码中的辅助入口,阈值固定在实现里,使用前保留版本;普通结构比较也可选结构比较教程中的公开入口。

3. 实际哪些结构被保留#

程序要求三个条件同时满足才去重:每分子体积差小于0.1 ų、标签转换后的差小于0.01 eV、粉末图差指标小于0.07。不能只看两个CIF文件名是否不同。

输入 实际决定 原因
water-a 保留 参考结构
water-copy 去重 相同几何,标签差0.01 kcal/mol≈0.00043364 eV
water-high-energy 保留 标签差1 kcal/mol≈0.0433641 eV超过阈值
water-volume 保留 每分子体积差超过阈值
grep -E 'PRUNED|KEPT|Structures' reference-results/structure-dedup/out.cro
grep -E 'PRUNED|KEPT|Structures' work/structure-dedup/out.cro

最终输出 1/3/4,依次表示去重、写出/保留、总数。屏幕列表中的V和H为源码采用的内部体积与原输入标签显示;不要把它们直接当成ų和eV混算。

两个分子标架和实际四结构筛选决定;右图为人工标签

这只是控制例子,保留结构不等于热力学稳定;改变晶胞也不代表已做结构优化。真实候选筛选应使用一致方法计算的有效能量/焓,并确认源码的单位和分子计数定义。

4. 核对振动别名和数据类型#

cat inputs/vibration-alias/in.cri
sbatch job.slurm vibration-alias
crystal ../data/unit.vasp
vibration load ../data/qpoints.yaml
vibration print summary

单数 vibration与复数 vibrations进入同一功能,本次真实读到4个q点、每点6个频率。只有频率YAML时,输出仍明确写“Second-order force constants NOT available”;不能因为成功加载频率,就认为已经读入完整FC2。后续计算见振动文件与格式。

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

查看配图

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

100%查看原图 ↗