VTST专题

VTST的Cube定点取值实操

演示线性、二次和个人修正版三次插值,读取原子位置处的三维网格标量。

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

cubevalue.pl读取Cube网格在文件所列原子位置的值。本篇用已知函数对照三个入口;这些是教学标量场,不是某种材料的DFT静电势。

下载输入、实际输出、CSV和脚本,先查看已完成的结果:

python3 -m zipfile -e vtst-geometry-cube-modes-wave968-*.zip .
cd vtst-geometry-cube-modes
bash read.sh
bash plot.sh

这两步只读取和绘图,不重新执行工具。版本为VTST scripts1040;Perl模块由vtstscripts/1040提供,数据读取使用ASE3.29.0与NumPy。结构是可公开重建的Si₂斜晶胞教学例,没有新增DFT能量计算。

需要自己重新执行整套小例子时,使用新的解压目录:

module load vtstscripts/1040
python3 setup_cube.py
python3 prepare.py
bash run.sh
bash read.sh work-new
bash plot.sh

setup_cube.py在个人目录生成匹配版本的三次Cube取样脚本,不改变公共安装。已有work-new时保留结果、换新目录。本例为小规模文件处理,大网格处理应按集群规则申请CPU资源。

1 先看Cube格式#

head -n 12 inputs/cube-1/field.cube

前两行是注释,第三行给原子数与原点,接着三行给网格点数与步进矢量,再写原子和网格数据。本例8×8×8,步长0.5 Bohr,位置也使用Bohr;z变化最快、y其次、x最慢。

取样点在网格内部,本例不检验边界外或周期越界取样。

2 执行插值#

cubevalue.pl field.cube 1
cubevalue.pl field.cube 2

模块1040的三次入口使用资料包提供的个人脚本。先在根目录执行python3 setup_cube.py,再在对应工作目录执行:

perl ../../tools/cubevalue-fixed.pl field.cube 3

个人脚本修正该版本三次插值的第四采样点与三次项系数符号,按已知多项式对照;公共脚本不变,版本不同应采用匹配处理。

旧入口把第二参数同时作为方法编号和输出文件名,输出就是1、2、3:

cat work-new/cube-1/1
cat work-new/cube-2/2
cat work-new/cube-3/3

3 实际取值#

三个文件分别使用匹配次数的函数:

线性: V = x + 2y - z
二次: V = x² + 0.3y² + 0.1z² + 0.2xy
三次: V = x³ + 0.1y³ - 0.3z³ + 0.2xyz

坐标数值以Bohr计,函数值按教学例定义为Hartree。取样点为(1.2,1.35,1.4)与(1.4,1.1,1.3)。

方法 第一个位置(Ha) 第二个位置(Ha)
线性 2.500000 2.300000
二次 2.506750 2.800000
三次个人脚本 1.604438 2.618400

实际取值与独立多项式结果

三种方法使用不同函数,数值高低不代表方法优劣。CSV保留独立函数值与原始打印数值:

cat analysis-read/VTST-native-cube-values.csv

4 实际数据要核对单位#

源脚本主要面向势类Cube,输出固定标注Hartree与eV,并使用内置换算常数。精确对照时保留Hartree段,再注明换算约定。

Cube也能保存电子密度或其他物理量;文件格式相同不代表单位相同。使用前确认生成程序输出的物理量、坐标单位、原点与网格方向。

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

查看配图

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

100%查看原图 ↗