sisl专题

sisl 几何选择:球、盒、椭球与组合

用实际坐标点演示形状选择和集合运算,为截取结构、定义区域与检查掩码提供参考。

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

使用集群 sisl/0.16.4 的 Python 3.11 环境、NumPy/SciPy、netCDF4 和 Matplotlib。本组是实际执行的解析轨道/网格与几何操作,不是新的SIESTA或外部ATOM自洽计算。

下载完整脚本、原生数据、网格及参考图,解压后进入 sisl-orbitals-grid-examples。

module load sisl/0.16.4
bash results.sh
bash plot.sh

新目录中执行 bash run.sh 运行全部本组短模型,新结果写入 work,参考文件保持在 reference-results。脚本以单线程运行,不提交新的DFT/MD作业。

先创建三个区域#

sisl形状对象可直接判断笛卡尔点是否落入区域,不必先生成原子模型。以下脚本可直接运行:

cat > select.py <<'EOF'
import numpy as np
import sisl
xyz = np.array([[0,0,0],[0.9,0,0],[0,1.8,0],[0,0,2.8],[1.5,0,0]])
sphere = sisl.Sphere(1.0,center=[0,0,0])
box = sisl.Cuboid([2,4,6],center=[0,0,0])
ellipsoid = sisl.Ellipsoid([1,2,3],center=[0,0,0])
for name,shape in [('sphere',sphere),('box',box),('ellipsoid',ellipsoid)]:
    mask = shape.within(xyz)
    print(name,mask,xyz[mask])
EOF
python select.py

球的1是半径;盒子的 [2,4,6] 是三个完整边长;椭球的 [1,2,3] 是半轴长度。把盒边长也当成半轴,选中的范围会大一倍。

本例所有点和尺寸都按Å定义。形状对象本身不会从一组无标签数字推断你使用的是Å、Bohr还是分数坐标,调用前要统一单位。

本次实际采样与独立几何判断#

完整实例使用15×17×19=4845个自有笛卡尔点。分别与下列独立条件比较,所有采样点的选择结果一致:

形状 独立条件
半径1的球 x²+y²+z²≤1
2×4×6盒 |x|≤1、|y|≤2、|z|≤3
1/2/3半轴椭球 x²+(y/2)²+(z/3)²≤1

实际采样点在z=0截面的三种选择

这是几何掩码示例,不是原子密度云或电子密度结果。图上点数由离散采样决定,不能直接拿入选点数当成连续体积。

并集、交集与差集#

python - <<'EOF'
import sisl
import numpy as np
xyz = np.array([[0,0,0],[0.9,0,0],[0,1.8,0],[0,0,2.8],[1.5,0,0]])
s = sisl.Sphere(1.,center=[0,0,0])
b = sisl.Cuboid([2,4,6],center=[0,0,0])
e = sisl.Ellipsoid([1,2,3],center=[0,0,0])
print('union:',(s|b).within(xyz))
print('intersection:',(s&e).within(xyz))
print('box minus sphere:',(b-s).within(xyz))
EOF

实际完整采样同时比较了 |、&、- 与NumPy布尔掩码的并、交、差,结果一致。当前球本身落在给定盒/椭球中,所以部分组合会等同于较大或较小区域;换成不同中心后应重新看几何关系。

用到自己的原子结构#

将真实结构中的笛卡尔坐标数组传给 within,得到布尔掩码,再据此取原子。例如对通过sisl读取的几何对象g,可用 g.sub(np.flatnonzero(shape.within(g.xyz)))生成子结构。

周期体系要先决定是否展开超胞、把中心放在哪个周期像。这里的简单区域选择不会自动替你搜索所有周期像;直接在一个原胞中剪球,可能只得到球的一部分。

原子被删除后,原轨道编号、耦合矩阵、原子分组与化学计量也会变化。截取原子结构不等于对电子矩阵完成严格的开边界消去,后续计算需要重新准备相匹配的输入。

head -n 10 reference-data/Sisl-shape-selections.csv

每个区域的实际入选坐标在 reference-results/shape-selections,可以直接检查选了哪些点,再把同一操作应用到自己的结构。

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

查看配图

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

100%查看原图 ↗