本帖最后由 zxq 于 2025-5-20 18:34 编辑
大佬们 我用CP2K跑分子动力力学,一共2000步 (对应结果是2000.out),并且在1500步生成了一个.restar文件,
用eq.inp跑完2000步后,然后我在另一个文件夹(这个文件夹提交任务时只有.restart文件)里用.restar文件进行续算500步(对应结果500.out,也就是2000.out里的第1500-2000步),
为什么restar算的500步,和eq.inp最后的500步结果不一样。。一开始scf就跑到最大步数,在2000.out里,1500步左右scf基本都在20步左右收敛
在.restar里,我把:TIMESTEP 9.9999999999999989E-001 改成 TIMESTEP 1,,其他地方都没变
mpirun -np 24 cp2k.popt eq.inp |tee equil.out
mpirun -np 24 cp2k.popt equil-1.restart |tee equil.out
提交指令分别是上面这个两个
----------------------------------------------------------更新------------------------------------------------------------------------------------
结构是钴酸锂在钴位点掺杂过渡金属
这其实不是你的文件写错,而是分子动力学本身的“可重现性”问题: 热浴/恒温器状态没有一起重启 当你在 1500 步写出 *.restart 文件时,它只包含了原子坐标和速度(以及电子结构部分的波函数重启),但不会保存 CSVR 热浴(或其它恒温器)内部的链变量、随机数状态。在原始的 eq.inp 里,从 1 步到 2000 步,热浴在每一步都会依据上一步的温度偏差去调节速度、生成随机扰动。如果你在 1500 步 dump 出来,再去重启跑 500 步,新热浴一开始会重新生成随机数、重新初始化链变量,调节力度就和原来连续跑的第 1501–2000 步不一样。因此,最后 500 步的轨迹肯定会和 eq.inp 一口气跑完 2000 步时的那 1501–2000 步不一致。 积分器(Verlet/ASPC)不可逆且累积误差不同即便没有热浴,积分算法本身也不是严格可逆的,哪怕你把温度换成 NVE(能量守恒)系综:从 1 步直接跑到 2000 步,累计的四舍五入误差、力场截断/筛选误差,会和你跑 1–1500 步 然后再跑 1501–2000 步 稍微不同。这类数值误差微小,但长时间积累下来,轨迹就会有差别。
上面是gpt给我的回答
如果是这样的话,
(1)那我进行 预平衡(300K) -> 正式MD(800K) 应该怎么做,预平衡完了之后将pos.xyz文件最后一步的原子坐标复制到.inp文件里,然后改一些参数,比如TIMESTEP 、TIMECON、TEMPERATURE(300改到800) 然后再运行吗
(2)这个结构是经过vasp优化之后的结构,还需要进行预平衡吗,可不可以直接800k开始分子动力学 (3)我不明白,为什么重启之后的第一步scf就基本不收敛了(基本都跑到最大步数),难道是因为使用eq.inp跑到1500步之后,结构变得很差?
----------------------------------------------------------更新------------------------------------------------------------------------------------
好像懂了 是因为没读取wfn文件,但是eq.inp好像并没有生成wfn文件这是为什么
|