24小时热门版块排行榜    

查看: 8527  |  回复: 20

neweroica

木虫 (著名写手)

[交流] 【求助】如何固定某几个原子不动?已有3人参与

刚接触LAMMPS,有一个问题想请教大家:

我想在整个MD模拟过程中,固定某几个原子始终不动,请问该如何实现? 具体用什么命令和关键词?  谢谢!!!
回复此楼

» 收录本帖的淘帖专辑推荐

分子模拟

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

Simpler, stronger, more tolerant
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

老虎大王

木虫 (著名写手)

★ ★ ★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
lei0736(金币+5,VIP+0):谢谢 12-15 09:19
这个有多种方法可以实现。
首先你把这几个原子放在一个group里面(比如group1),把其它原子放在另外的group(比如group2)里面。然后,你至少可以选择如下几种方法:
1. 运动方程不对这几个原子积分, 只对group2积分(但我不能确定这个时候group1里面的原子对其它原子的力的作用是否还存在(你可以作一个测试,对于一个构型手工计算一下这几个原子旁边的某一原子的势能,和程序输出的该原子的势能比较一下——用computer pe/atom命令)
2. 运动方程对所有原子积分,但是对group1里面的原子,每一步都标定它的速度,让它们的速度(或温度)为零。
3. 运动方程对所有原子积分,令group1里面的原子的初速度为零,然后用 fix setforce命令,把它们的受力搞成零。

[ Last edited by 老虎大王 on 2009-12-15 at 09:03 ]
2楼2009-12-15 09:01:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

老虎大王

木虫 (著名写手)

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
lei0736(金币+2,VIP+0):谢谢 12-15 09:19
当然,如果这些都不大好使或者太麻烦的话,我推荐你用XMD。XMD里专门有一个命令叫Fix,确保这些原子的位置不被更新,但它们与其它原子的相互作用是存在的。
3楼2009-12-15 09:12:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

neweroica

木虫 (著名写手)

引用回帖:
Originally posted by 老虎大王 at 2009-12-15 09:01:
这个有多种方法可以实现。
首先你把这几个原子放在一个group里面(比如group1),把其它原子放在另外的group(比如group2)里面。然后,你至少可以选择如下几种方法:
1. 运动方程不对这几个原子积分, 只对group ...

非常感谢老虎大王!!!

1. setforce好像不管用。在run之后,原子位置还是随着timestep发生变化。

2. run            100000 every 1 set group s vx 0 vy 0 vz 0管用。 但我还有个问题:

因为我将每个分子都是为一个刚体,但同时又想对系统施加NVT,所以我用了两个fix来实现:
fix 1 all nvt 300.0 300.0 100.0
fix 2 all rigid group 2 mol1 mol2

但是运行后却出现警告:
WARNING: One or more atoms are time integrated more than once

请问这个问题该怎么解决?
Simpler, stronger, more tolerant
4楼2009-12-15 19:31:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

neweroica

木虫 (著名写手)

★ ★
lei0736(金币+2,VIP+0):DLPOLY应该有 另外开源软件支持修改代码 BH势还是比较简单的 12-16 12:39
引用回帖:
Originally posted by 老虎大王 at 2009-12-15 09:12:
当然,如果这些都不大好使或者太麻烦的话,我推荐你用XMD。XMD里专门有一个命令叫Fix,确保这些原子的位置不被更新,但它们与其它原子的相互作用是存在的。

但我想用Buckingham + Coulomb势,貌似XMD没有吧?
Simpler, stronger, more tolerant
5楼2009-12-15 19:32:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

老虎大王

木虫 (著名写手)

★ ★ ★ ★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
lei0736(金币+6,VIP+0):谢谢 12-16 14:48
我没有研究过分子系统,只研究熔盐一类的离子体系和金属一类的原子系统,呵呵。现在我看你的问题是两个:
A,所有的分子都是rigid body。我其实不大明白你为什么要把分子都搞成刚体,其实分子内可以有相互作用的啊。这在Lammps中也可以实现。
B,有一些分子始终不动。

呵呵。这两个结合起来,有一点点麻烦。但在Lammps中应该也可以实现。

1. 用setforce, 一定要把初始速度先搞成零。这个命令我也没有用过,我现在不能确定它是只管当前步,还是管整个Run, 你测试一下看。刚才我又看了一下手册,手册上说这个命令可以用来固定原子。

2, Fix rigid 这个命令隐含了对所涉及的刚体中原子进行运动方程的恒能积分,不能再对它用其它的积分命令了,你仔细看说明书就知道了。这个命令的下面有两个“Important note", 你一读就知道。

3, 你如果所有的原子都是rigid  body,如上所说,你设置fix rigid命令的时候已经同时积分了方程,但你又想用Nvt,那么这个时候你就只能舍弃HOOVER热浴,而改用Berendsen方法(加个 fix temp/berendsen命令,这个命令只标定速度,不积分方程),或者加 fix temp/rescale命令。 这两个命令不但可以控温,而且可以像我前面所说的一样,把你不想让它动的那些原子的温度(速度)设成零。


4,题外话: 你要用XMD,也有很多办法,比如你把你的双体势做成EAM势函数表,但只有双体势部分有数值,而把Dens和Embed部分都搞成零不就行了,主要是Embed搞成零。这样做,只是没有用Ewald求和,但你是列表形式,算起来也很快的,而且只要你把表中数据点搞得密一些,计算的精度也可以保证。你可以这样搞一下,作个常规计算,与Lammps比较一下。比如用同样的构型,只计算一步,看看能量和力是否相同(主要是能量要相同,力的计算可能由于MD算法不同而略有不同)。

[ Last edited by 老虎大王 on 2009-12-16 at 13:53 ]
6楼2009-12-16 13:50:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

老虎大王

木虫 (著名写手)

★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
lei0736(金币+3,VIP+0):谢谢 12-16 18:10
至于DLPOLY,那是无法选定一些原子让它不动。
但是DOPOLY对于分子和Rigid body可以有很好的定义。你用DLPOLY也是不错的选择,至于让一些原子不动,这个很容易通过修改源程序来搞定。DLPOLY是Fortran程序,改动起来也容易。
7楼2009-12-16 17:55:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

neweroica

木虫 (著名写手)

引用回帖:
Originally posted by 老虎大王 at 2009-12-16 17:55:
至于DLPOLY,那是无法选定一些原子让它不动。
但是DOPOLY对于分子和Rigid body可以有很好的定义。你用DLPOLY也是不错的选择,至于让一些原子不动,这个很容易通过修改源程序来搞定。DLPOLY是Fortran程序,改动起 ...

但我在手册上见到:
DL POLY 3 also allows atoms to be completely immobilized (i.e. “frozen” at a fixed point in the MD cell).

貌似DL_POLY能够选定一些原子让它不动
Simpler, stronger, more tolerant
8楼2009-12-18 03:29:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

老虎大王

木虫 (著名写手)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
lei0736(金币+1,VIP+0):谢谢 12-19 15:06
Oh, Yes. Dlploy可以固定原子。我老早做的笔记上就有。呵呵。我忘记了。不好意思。
9楼2009-12-18 15:48:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

neweroica

木虫 (著名写手)

引用回帖:
Originally posted by 老虎大王 at 2009-12-18 15:48:
Oh, Yes. Dlploy可以固定原子。我老早做的笔记上就有。呵呵。我忘记了。不好意思。

FYI,DL POLY 3反而不支持rigid body了:“Note that DL POLY 3 does not handle molecules containing rigid bodies.” DL POLY 2可以。  这个我就不理解了,为什么版本越高功能反而越少了?
Simpler, stronger, more tolerant
10楼2009-12-18 19:35:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 neweroica 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见