VASP 元素周期表(@dsh-vasp/periodic-table)
面向 VASP 用户的 DeepSeek Harness Web 插件:在左侧栏打开一个独立的元素周期表面板, 把「选哪个 PAW 势、ZVAL/ENMAX 是多少、初始磁矩怎么给、ENCUT 取多少、POTCAR 怎么拼」 这些每天要查的东西放在一页里,并可直接复制 INCAR / POTCAR / POSCAR / MAGMOM 片段。
- 面板位置:侧栏图标(
元素周期表)→ 中央 main 面板,不占用对话窗口。 - 技术形态:纯客户端 bundle(Host 半为空,不启动 Python、不发起 RPC、不读写计算目录)。
- 数据:PBE PAW 数据集来自 VASP Wiki
Available PAW potentials表,并逐条与一份 只读的共享 POTCAR 库(真实 POTCAR 头部:ZVAL / ENMAX / POMASS)核对;元素基础数据来自 pymatgen,初始磁矩取 Materials ProjectMPRelaxSet惯例。详见docs/data-elements.md、docs/data-paw.md。
功能
- 周期表:118 元素、18 族 + 镧系/锕系两行;支持符号/中文名/英文名/原子序数搜索。
- 五种着色:分类、磁性倾向、ENMAX、价电子数(ZVAL)、电负性(带图例)。
- 元素详情:
- 原子轨道动画(Canvas,点击元素即出现):由
config电子排布实时推导- 「玻尔壳层」:K/L/M… 倾斜轨道 + 发光电子,各壳层速度/方向不同;
- 核心 = POTCAR 价电子的轨道分布:默认按当前 POTCAR 数据集的价电子构型绘制
「每条被占据子壳层一圈椭圆轨道 + 该子壳层电子数的发光电子点」(带拖尾、深度明暗),
冻结芯电子同时以暗色虚线"鬼环"保留在视野里(可一眼看出「哪些芯态被 POTCAR 收进了价态」),
核区显示
core N光晕;_pv/_sv/_d额外收进价态的半芯态用琥珀色虚线亮环区分; - 电子分布条:冻结芯(斜纹)vs 各子壳层(按 l 着色)按电子数占比绘制,切换数据集时
宽度动画过渡;
POTCAR / 原子一键切换全部电子视图; - POTCAR 切换器:轨道视口标题下方直接列出该元素所有 PBE 数据集(带 ZVAL 角标), 点击即切换并触发射线/轨道形变;右侧 PAW 表点击同样联动;
- 原子 / POTCAR 分屏对照(「对照」模式):左半屏 = 原子全部电子壳层,右半屏 = POTCAR 价电子 + 冻结芯鬼环,中间光点由左向右流动提示「芯态被收进价态」, 两边标注 Z / ZVAL / core / valence,直接对比不同 POTCAR 的电子分布;
- 清晰伪 2D 玻尔轨道(默认模式):同心正圆轨道,每条被占据子壳层一圈;
电子画成固定大小的发光圆点(晕 + 实心点 + 高光),等间距排在轨道上、极慢绕行
(约 60 秒一圈),数量与占据数一致,一眼可以数清;半芯态琥珀虚线、冻结芯暗色虚线
(不画电子);右侧独立标签列显示
3d⁶ ↑5↓1等占据与自旋数;选中某个子壳层 chip 时 该轨道环加粗发光、其余变淡; - 自旋向上/向下(MAGMOM 语义):按 Hund 高自旋规则占据(3d⁶ = 5↑1↓、未成对 4),
轨道上的电子按 ↑ 青 / ↓ 玫红着色(Canvas 左下角有图例);每个子壳层 chip 标
↑n↓m, HUD 显示总 ↑/↓、未成对电子数与元素 MAGMOM(MP 惯例起始猜测,非收敛磁矩); - 导出带标注高清 PNG:Canvas HUD 的 ⤓(或全屏舞台「导出 PNG」)用离屏 1680×1050 重绘深色底 + 当前视图 + 元素/构型/来源数据集/ZVAL/芯-价电子/半芯/未成对自旋/ MAGMOM/ENCUT 信息栏 + 自旋图例 + 来源页脚,文件名含元素与数据集;
- 背景:纯深色渐变 + 静态 HUD 网格/描边(无星点/粒子/扫描线等动态粒子特效);
- 布局:轨道视口固定显示在周期表下方(深空底、全宽 Canvas),右侧详情栏只放文字信息; 窄窗口选中元素后自动把轨道视口滚进视野;
- 全屏轨道舞台(轨道视口标题栏「⛶ 全屏轨道」、Canvas 右上角 ⛶,或双击周期表元素直接进入): 覆盖面板的巨型轨道 + 深色底 + 巨型元素符号水印 + 打开/切元素时的 18 点爆裂; 右侧档案栏(壳层电子数条形图、PAW 数据集/ZVAL/ENMAX/ENCUT/MAGMOM、相位图例); 顶部「‹ ›」逐个元素步进(切换时轨道交叉淡化 + 冲击波 + 46 颗火花)、「⤓ 导出 PNG」、 Esc 关闭;
- 元素切换形变:叉淡化冻结帧 + 双冲击波 + 火花爆裂(内嵌与舞台都生效);
- 绘制细节:原子核质子/中子小球 + 脉冲辉光、旋转 HUD 刻度环、中心径向暗化(保证浅色主题 下电子对比度)、右侧独立标签列;
- 底部子壳层 chip(1s² 2s² 2p⁶ 3s² 3p⁶ 3d⁶ 4s²):点击任意子壳层即高亮该子壳层的轨道圆;
- HUD 行显示壳层电子数、价层子壳层、价电子数,并与当前 PAW 势的 ZVAL 对照;
- 30 fps 上限、
IntersectionObserver滚出视口暂停、页面隐藏暂停、prefers-reduced-motion只画静态帧;
- 基本信息(原子量、周期/族/区、电子排布、电负性、原子半径、氧化态、熔点、密度);
- PAW 势表:该元素全部 PBE 数据集,含 ZVAL、ENMAX、
Wiki 默认与推荐标记, 点击切换当前数据集; - 建议 ENCUT:
max(500 eV, ⌈1.3 × ENMAX⌉)向上取整到 10 eV(500 eV 为默认下限); - 初始 MAGMOM:Materials Project 惯例值 + 按氧化态的备选值,并明确标注"起始猜测, 不是收敛磁矩";
- SOC 提示:重元素给出"建议评估"而不是"必须开启";
- 一键复制 POSCAR 元素行 / POTCAR 拼接命令 / INCAR 片段。
- 原子轨道动画(Canvas,点击元素即出现):由
- 体系构建:Shift+点击(或详情页「加入体系」)选多个元素并填原子数,自动生成
- POSCAR 第 6/7 行(元素顺序 + 原子数),
- POTCAR 拼接命令(按顺序,默认用推荐数据集),
- MAGMOM(
n*μB计数写法)、ENCUT、ISPIN 的 INCAR 片段。
- HUD 科幻皮肤(轻量版,优先流畅度):静态星空/网格/辉光背景、元素格错峰入场、
悬停光晕、光标跟随的 HUD 信息卡(实时显示 PBE 数据集/ZVAL/ENMAX/ENCUT/MAGMOM)、
选中单元格脉冲光环与发光元素符号;切换着色模式时表格扫光;渐变标题、发光卡片、
状态条滚动读数(数据规模/项目经验推荐/ENCUT 规则);ENCUT 详情带能量条(500 eV 项目经验下限刻度)。
性能约束:不使用大范围位置动画/扫描线/
backdrop-filter/入场模糊;悬停与指针跟随用requestAnimationFrame合帧、网格子树useMemo(hover 不重建 118 个格子)、 Canvas 30 fps 上限且滚出视口/切后台暂停。 文本颜色只用宿主主题 token(明暗两套可读),装饰性辉光属于 artwork;prefers-reduced-motion下关闭全部动画;顶栏还提供「动效:开 / 省电」一键切换 (省电模式关闭星空、入场、脉冲与读数轮播,保留原子轨道 Canvas 与全部功能)。 中英文案注册到 Client locale 服务;记住上次的着色模式/选中元素/体系/动效档(localStorage)。
安装 / 更新
这是一个 DeepSeek Harness bundle,仓库里已经包含构建好的 lib/client.js,安装时不需要先构建。
方式一:DSH 插件管理器
在 DSH 桌面端插件管理器里选择从本地目录安装,目录指向本仓库根目录(包含 package.json、index.js、cordis.patch.yml)。
方式二:命令行
git clone https://github.com/bowenphys/dsh-vasp-periodic-table.git
dsh plugin --profile <profile> add file:/绝对路径/dsh-vasp-periodic-table
激活后,左侧栏会出现「元素周期表」图标;打开即进入独立面板。
修改源码后
node scripts/check-elements.mjs
node scripts/build-client.mjs
node scripts/smoke-client.mjs
lib/client.js 是生成产物,更新后需要重启 DSH 宿主以加载新的模块代际。
DSH 插件发现
DSH 官方约定:插件仓库添加 GitHub topic:
dsh-plugin
这是 DSH 官方 README 指定的插件发现标签;本仓库同时使用 dsh、vasp、periodic-table 作为辅助 topic。
独立插件
本仓库是独立的纯客户端插件:
- 不依赖
@dsh-vasp/plugin、VASP 计算核心或服务器; - 不发起 RPC,不读写计算目录;
- 可以单独安装、单独删除;
- PAW 数据口径与项目经验
<POTCAR_ROOT>一致,但运行时没有耦合。
许可与数据来源
代码以 MIT License 发布。元素基础数据来自 pymatgen;PAW 数据集来自 VASP Wiki
Available PAW potentials 并与真实 POTCAR 头部核对;初始磁矩参考 Materials Project
MPRelaxSet 惯例。详细来源与口径见 docs/data-elements.md、docs/data-paw.md。
目录
| 路径 | 说明 |
|---|---|
src/data/elements.js |
118 元素数据(物理量 + 中文名 + MP 初始磁矩) |
src/data/paw.js |
PBE PAW 数据集注册表(343 条;ls 条目 346 含 3 个非数据集文件)+ 推荐 |
src/ui/i18n.js |
中英文案(zh/en key 必须一致) |
src/ui/theme.js |
主题 token / 分类色相 / 数值色阶 |
src/ui/helpers.js |
纯函数:布局、数据集选择、ENCUT/MAGMOM 派生、片段生成 |
src/ui/components.js |
周期表、详情、PAW 表、片段块、体系构建等组件 |
src/ui/app.js |
根组件:状态、持久化、宽窄布局、语言订阅 |
src/plugin.js |
main + sidebar.panellist 注册、locale 注册、__internals |
scripts/build-client.mjs |
把纯脚本片段拼装成 lib/client.js(唯一构建步骤,无依赖) |
scripts/smoke-client.mjs |
假 React / 假 slot 上下文的渲染冒烟测试 |
docs/data-elements.md |
元素数据来源与口径 |
docs/data-paw.md |
PAW 数据版本判定、核对结果、推荐推导 |
数据再生成
python3 scripts/extract-elements.py(本机 pymatgen)重新导出元素基础数据;python3 scripts/fetch-paw.py重新抓取 VASP Wiki 表并通过只读 SSH 核对 共享 POTCAR 库, 产出新的src/data/paw.js。脚本不写服务器,也不包含任何密钥。
验证与边界
node scripts/smoke-client.mjs(45 项):验证 bundle 格式、locale 字典一致性、slot 注册 (mainkeyvasp-periodic、sidebar.panellistid 与之一致)、完整渲染 118 元素格、 每格 grid 坐标唯一且正确、5 种着色 × 2 语言 × Fe/Bk 渲染矩阵(含 Canvas 与子壳层 chip 在场)、全屏舞台组件渲染(canvas/子壳层/档案行/关闭按钮)、 118 个电子排布解析且壳层电子数之和 = Z、342 个 POTCAR 构型电子数 = 各自 ZVAL(Ag/Au_sv_GW 的 wiki 笔误已按真实 POTCAR 修正)、Fe_pv/Fe_sv 的 3p/3s 半芯、Hund 自旋占据(3d⁶=5↑1↓ 等)、伪 2D 轨道与分屏绘制、无 DOM 时导出优雅返回、轨道模式 tab 数 = 2, mock canvas 的伪 2D 轨道/分屏绘制、ENCUT/搜索/片段派生逻辑。 它不能代替浏览器视觉验收(Canvas 动画的实际观感只能肉眼确认)。- 数据核对:
docs/data-paw.md记录逐条核对与 mismatch;docs/data-elements.md记录自检输出。 - 周期表使用显式 18 列 grid 坐标(
PT_GRID_CELLS),smoke 会断言 118 个元素格坐标唯一且 与周期表位置一致(H→(1,2)、Fe→(8,5)、La→(3,10)、Og→(18,8)),防止布局回归。 - 本插件是选势与参数参考,不替代收敛测试;ENCUT 公式是项目经验惯例,初始磁矩是起始猜测。
No comments yet. Be the first to write one.