Skip to content

fix(pme): correct virial prefactor sign after box updates - #77

Merged
xiaoxuan-yu merged 1 commit into
SPONGEMM:lab/sidereus-aifrom
xiaoxuan-yu:fix/pme-barostat-virial-sign
Oct 8, 2026
Merged

xiaoxuan-yu merged 1 commit into
SPONGEMM:lab/sidereus-aifrom
xiaoxuan-yu:fix/pme-barostat-virial-sign

Conversation

@xiaoxuan-yu

Copy link
Copy Markdown
Contributor

问题

PME 初始化使用正的 mprefactor = π²/β²,但控压更新盒子时使用负值,却仍沿用维里系数中的 1 + mprefactor * m²,导致该项从正确的 1 + π²m²/β² 变为 1 - π²m²/β²。

因此,NPT 运行在控压更新后会计算出错误的 PME 维里,影响后续压力计算。

修复

将盒子更新路径的 mprefactor 统一为正值,并将指数改为 exp(-mprefactor * m²)。

两处修改保持倒易空间能量系数不变,同时使六个维里分量与初始化公式一致。

验证

  • CPU 版 SPONGE 编译通过。
  • 对源码公式进行能量有限差分检查,覆盖正交/倾斜盒子、多种盒子尺寸、β 和倒易模式:修复后 432 项全部通过,修复前 234 项失败。
  • 确认修复前后能量系数保持不变。
  • 尚未运行完整 NPT 轨迹验证。

@xiaoxuan-yu
xiaoxuan-yu merged commit 9a648da into SPONGEMM:lab/sidereus-ai Oct 8, 2026
36 of 37 checks passed
@xiaoxuan-yu
xiaoxuan-yu deleted the fix/pme-barostat-virial-sign branch October 8, 2026 12:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant