ASE专题

ASE结构维度识别:从0D到3D

用真实Cu、石墨烯、碳链和水分子输入运行原生RDA,读取评分区间、连通分量与周期边界。

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

判断结构是分子、链、层还是三维网络,不能只数POSCAR里有几个晶格矢量。本篇用ASE3.29.0原生RDA工具,实际处理Cu体相、石墨烯、碳链和水分子,展示如何读结构、运行、提取区间与连通分量。

这些是明确给定的几何模型,不是新DFT或实验维度测量。三种周期模型都输入三维周期边界;石墨烯与碳链的低维特征来自键网络在大真空中的连通,而不是简单把PBC标志设成2维或1维。

1. 下载,先运行现成参考#

下载结构维度与晶胞优化完整实操包,新目录解压:

python3 -m zipfile -e ase-dimensionality-cell-pressure-wave309-*.zip .
cd ase-dimensionality-cell-pressure-wave309
bash preview.sh
bash run.sh

两条脚本只读取已有完整数据并画三张图,不重新进行晶胞优化。数据在results/,图在plots/;再次运行请使用新解压目录。

四种实际结构与原生维度分类,碳链展示三个周期胞

图按原子实际范围显示,以看清连通;完整晶胞和坐标保留在输入中。碳链仅为展示重复三个原胞,原始输入仍为两个C。

2. 四个模型怎样建立#

from ase import Atoms
from ase.build import bulk, graphene, molecule

cu = bulk('Cu', 'fcc', a=3.6, cubic=True) * (2, 2, 2)
sheet = graphene(a=2.46, size=(2, 2, 1), vacuum=10)
sheet.pbc = True
chain = Atoms('C2',
              positions=[[10, 10, 0], [10, 10, 1.3]],
              cell=[20, 20, 2.6], pbc=True)
water = molecule('H2O')
water.center(vacuum=10)
water.pbc = False

Cu有32个原子,石墨烯8个,碳链2个,水3个。水是孤立有限分子,使用非周期边界;不要仅因为文件里有一个真空盒,就把它当成周期水晶体。

3. 对自己的结构直接调用RDA#

module purge
module load ase/3.29.0

新建dimension.py:

from ase.io import read
from ase.geometry.dimensionality import analyze_dimensionality

atoms = read('native-reference/graphene/structure.extxyz')
intervals = analyze_dimensionality(atoms, method='RDA')
for item in intervals:
    print(item.dimtype, item.score, item.a, item.b, item.h)
print('Highest score:', intervals[0].dimtype)
print('Component IDs:', intervals[0].components)
python dimension.py

换成自己的结构时修改read()中的路径,并先核对晶胞与PBC。输入文件若漏掉正确晶胞,近邻镜像与维度也可能改变。

4. 区间和评分是什么意思#

RDA用原子间距相对于共价半径之和的比例考察键连接,随着比例范围改变分析连通网络。a和b是对应比例区间;h给出0D、1D、2D、3D分量的数量;components为每个原子的连通分量编号。

评分不是材料属于某种维度的概率,也不是稳定性或导电率。 相同维度的区间合并后,总评分归一;混合结构也可能出现01D、1D+3D等类型。方法与接口见ASE维度分析教程。

5. 本次实际结果#

输入 原子数 最高评分类型 原生评分
bulk-Cu 32 3D 1.000000000
graphene 8 2D 0.999847805
C-chain 2 1D 0.999847805
water 3 0D 1.000000000

完整原生RDA区间评分,零评分条目仍保存在数据中

全部区间、完整每原子连通分量和维度字典保存在DIMENSIONS.json。无上界区间在JSON中写成upper: null并标记upper_unbounded: true,表示无限上界,不表示缺测。

cat results/DIMENSIONS.json
python read_native_tools.py native-reference --output my-read
ls my-read

当前版本在某些带大真空间隔的周期分子输入上,近邻扩展可能不能形成所需终止区间;孤立分子应按真实有限边界使用pbc=False。不要为了获得一个想要的分类而随意改变材料本身的周期性。

6. 晶胞优化是另一个问题#

维度识别只分析已有几何,不替你找到平衡晶格。需要同时调整原子与晶胞、添加外压、检查力和应力时,继续看ASE晶胞与原子联合优化。资料包也提供sbatch run.slurm从头运行四个维度模型和两个小铜晶胞,ASE/EMT使用CPU路径,不提供GPU加速结论。

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

查看配图

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

100%查看原图 ↗