计算化学公社

标题: CSVR热浴的放缩因子疑似有小概率不是实数 [打印本页]

作者
Author:
fft    时间: 2025-2-20 19:28
标题: CSVR热浴的放缩因子疑似有小概率不是实数
以下是个人理解,可能有误,望大家指正。


注意到CSVR的放缩因子为:
(, 下载次数 Times of downloads: 10)
而K_t的更新方法为:
(, 下载次数 Times of downloads: 10)
其中K是动能,K_bar是目标温度时体系动能,W是Wiener过程, dt是时间步长,\tau是设置的时间常数;
由于dW~N(0, dt),dK有可能连续数步均为负数(即使第一项K_bar - K >= 0),当体系动能本身很小时,K_t很可能存在某一步被减成负数的情况。如此一来,放缩因子\alpha就不是实数了。
随后简单地编程测试了一下,势能为随手搓的二次函数(谐振子势能),发现10~20个原子在298 K的情况下,5000步以内就常常出现负数K_t而导致程序崩坏;但50个原子以上时,dK和K_t相差1~2个数量级,就几乎不会发生负数的K_t了。实测50~60个原子的体系50000步也未发生负数K_t的情形。
但从概率的角度上说,似乎总有K_t连续减少足够多的步数而变成负数的可能性(虽然是微乎其微的概率)。这一点是否成立?如何解决较好?


作者
Author:
sobereva    时间: 2025-2-21 07:33
可以看看gromacs的相关代码,可能对这种特例有一些特殊处理




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3