解读命令系列【5】【fix setforce命令使用禁忌】

138 views
Skip to first unread message

mdbbs2...@gmail.com

unread,
Dec 5, 2008, 4:16:51 AM12/5/08
to LAMMPS2forum
fix setforce是把所有计算所得的力【注意是计算力以后】置为0,来实现其功能的

fix nve nve/noforce 含有nve的更新位置和速度的命令可以和fix setforce一起使用【如果用 fix
langevin要放在fix setforce 前,因为langevin也更新力,更新完后setforce 置为0,否则,那个粘滞力和随机力要
捣鬼的 】,另外,setforce 的group不能再进行速度的标度【即不能使用temp/rescale or berendsen命令】
【下面是fix nve更新速度的代码】
=========================
v[0] += dtfm * f[0];
v[1] += dtfm * f[1];
v[2] += dtfm * f[2];
=========================
fix npt /nvt包含的group不能用fix setforce来保持速度不变,因为虽然setforce可以把力置为0,但是这两个命令速
度的更新还有个标度因子,速度仍然在变化。
【下面是fix nvt/npt更新速度的代码】
==========================
v[0] = v[0]*factor + dtfm*f[0];
v[1] = v[1]*factor + dtfm*f[1];
v[2] = v[2]*factor + dtfm*f[2];
==========================
所有,如果你同时使用nvt/npt 和setforce来控制一个group的话,结果就错了。

如何能保证我们想要的那个group速度不变呢?如果是用微正则系统的话,fix nve fix setforce这个group就可以了.如果用
fix nvt/npt那就不能用fix setforce来出来这个group,而只能用fix nve/noforce和fix nvt/npt的
组合【nve/noforce 这个group,nvt/npt其他的group】

下面详细说明:【偶调试过的,哈哈,有说服力】
1.不需要nvt/npt的系统
fix nve 【包括nve/limit nve/sphere 】与控温控压命令的组合【press/berendsen temp/
berendsen temp/rescale 】 可以和fix setforce同时fix 一个group
fix 1 all nve
fix 2 mobile temp/berendsen 300.0 300.0 100.0 【不能使用fix 2 all temp/
berendsen 300.0 300.0 100.0 】
fix 3 wall setforce 0.0 0.0 0.0
2.必须有nvt/npt/nph的系统
fix nvt/npt/nph【包括npt/asphere npt/sphere nvt/asphere nvt/sphere 】于上面的
控温控压命令组合【大多不能或不需要组合,除了nph外】,就不能于fix setforce再fix同一个group了,要用nve或nve/
noforce辅助
fix 1 wall nve/noforce
fix 2 mobile nvt

fix 1 wall nve
fix 2 mobile nvt 【不能用fix 2 all nvt】
fix 3 wall setforce
两外所有组都需要至少用fix nve/nvt/npt中的一个,或多个 这种更新位置的命令进行fix 一下不然,肯定出错【不信你试试能得到想要的
结果不】
遇到这些命令组合时,提醒用一个小的简单程序大家先测试一下【fix print】看看程序是否按自己的想象执行,然后再进行计算

Reply all
Reply to author
Forward
0 new messages