24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1466  |  回复: 7

毛毛虫_

银虫 (小有名气)

[求助] 在MD中 flying ice cube 怎么理解?

各位虫友好,请问在MD中 flying ice cube 怎么理解?怎么避免呢?
回复此楼
努力爬行的小虫子·····
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖置顶 ( 共有1个 )

ChemiAndy

木虫 (正式写手)


★ ★
dbb627: 金币+2, 谢谢指导 2013-08-30 10:00:31
毛毛虫_: 回帖置顶 2013-08-30 10:05:45
当你用分子动力学模拟一个分子或cluster在气相中的运动的时候,如果你发现分子的振动越来越弱,而平动或转动越来越强的时候,这个就是flying ice cube现象了,因为分子的好像一个冻住了的僵硬的cube一样飞来飞去。这是怎么造成的呢?因为velocity scaling的热浴算法。

velocity scaling算法是这样的,你有一个设定的温度,根据你的粒子数N和能均分定理,你就有个目标动能K=3N*kT/2。在跑动力学时,特别是体系不平衡的时候,你的分子的势能会转化为动能,造成温度升高。怎么办呢?scale所有粒子的速度,即动能。比如,当前动能是目标动能的2倍,那么,你可以让所有的粒子速度乘以[latex]\sqrt{2}[\latex], 这样动能就scale到目标动能了。相当与按比例砍掉一半。但是这样砍有个问题,就是说其中的振动能占总动能的比例大(~90%),被砍掉的绝对量也大。而平动能和转动能砍掉的绝对量却小。你会说,这没什么啊,如果当前总动能小,你会把它scale大,按比例增大的话,振动能也补的多呀。问题是,一般的模拟通常是从一个没有relax过的构象开始的,这种构象一般都是势能高,因此会转化为动能造成温度升高。这样,动能被砍的机会多于被补的机会。关键是说,按这种砍法,振动能损失与平/转动能的损失不符合能量分配定理:振动能减小太多,分子被冻僵,但是平/转动能却没有显著减小。不仅没有减小,由于势能源源不断的补充,平/转动能反而可能不断增加。这种现象是Harvey SC等人在1998年首先在J Comp Chem 19(7): 726-40讨论的。

首先说,这个问题只在哈密顿不守恒的热浴算法中才会出现。所谓哈密顿不守恒算法,就是这种scale的算法,你把能量砍掉不要了,交给环境了,但是环境并不包括在你的哈密顿里。如果用扩展拉格朗日算法,则不会出现这种问题。因为扩展拉格朗日算法是要把环境作为一个虚拟的量加入到哈密顿中,这样整个体系相当于一个孤立体系。孤立体系有什么好?孤立体系是严格能量守恒的。所以其中的每一步在相空间中出现的概率相等。等概率假定是系综理论的基本原理,这样的采样才有坚实的物理基础。环境怎么包括到哈密顿中来呢?用一个虚拟的储热罐,这个储热罐按照一定的频率与体系进行热耦合:当体系温度过高时,把多余的能量都逐步交给储热罐;反之,从储热罐中向体系输送能量。

在热浴算法中,只有Nose-Hoover是扩展拉格朗日算法,配备了储热罐。而velocity scaling和berdersen等都是哈密顿不守恒的。那为什么还要用velocity scaling等算法呢?一般是因为预平衡阶段需要快速使体系达到目标温度,然后再在采样阶段使用Nose-Hoover。使用Nose-Hoover后,体系会自己通过能量传递,自然地达到振动能和平转动能分配合理的状态。但是,最好再scaling算法结束后或者进行当中,不断消除平动和转动。

» 本帖已获得的红花(最新10朵)

2楼2013-08-30 08:48:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

毛毛虫_

银虫 (小有名气)

送红花一朵
引用回帖:
2楼: Originally posted by ChemiAndy at 2013-08-30 08:48:27
当你用分子动力学模拟一个分子或cluster在气相中的运动的时候,如果你发现分子的振动越来越弱,而平动或转动越来越强的时候,这个就是flying ice cube现象了,因为分子的好像一个冻住了的僵硬的cube一样飞来飞去。这 ...

您好,非常感谢您热心的解答,我在用DFTB给一个体系加多个OH·的过程中,老出现Failure in diagonalisation routine dsygvd, non-positive definite overlap! Minor 103138 responsible.错误,我看了一下体系的温度,发现,温度并没用像预设的那样,而且相差很远,比如最初设定300K,跑6ps就能达到1000多k了,用的热浴是Nose-Hoover,于是,我更换了热浴,berdersen,温度是可以大致恒定,但是运行了加了24个OH(2.4ps)之后,还是出现上面错误停掉,不知道是怎么了?我也用Andersen热浴试过了,还是死了。输入文件见http://muchong.com/bbs/viewthread.php?tid=6287449贴。
努力爬行的小虫子·····
3楼2013-08-30 10:29:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ChemiAndy

木虫 (正式写手)


【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
毛毛虫_: 金币+10, ★★★★★最佳答案, 十分感谢 2013-10-04 18:47:48
csgt0: 金币+2, 谢谢 2013-10-08 16:31:02
刚看到你这个回复,不知道你的问题解决了没有。

“Failure in diagonalisation routine dsygvd” 错误最主要的原因是原子几何构型太离谱,比如,两个原子太接近。
我看了一下你的输入文件,有几个疑问,可能是导致病态几何结构的因素。

首先
  Thermostat = NoseHoover {
    Temperature [Kelvin] = 673.150000
    CouplingStrength [cm^-1] = 400
  }

1. 你设定的温度是673K,而不是300K,不知道是不是typo。

2. 其次,你的nose热浴耦合频率设定了400 cm-1,对应的耦合间隔时间大概是80fs。这个频率太低了。在耦合之前,体系的温度已经波动到了灾难性的地步。建议改成至少4000 cm-1试试。如果体系的温度波动还是太大,继续调高这个频率至5000。一般来说,这个值应该等于体系内最高频的振动频率,也就是你的O-H键振动频率,其值在3500-4000cm-1. 百原子体系的温度波动在50K-80K左右是允许的。

3. 是你的体系怎么会有多达26个 unpaired electons 呢?你的体系是典型的CHO体系,在正常情况下应该都是成对的呀。此外,Filling = Fermi {Temperature [Kelvin] =1673.150000} 一般是针对半导体或金属体系,为了让电子在Fermi面的连续分布才会要那么高的温度。一般CHO体系建议设为50K试试。

» 本帖已获得的红花(最新10朵)

4楼2013-09-28 03:41:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

毛毛虫_

银虫 (小有名气)

送红花一朵
引用回帖:
4楼: Originally posted by ChemiAndy at 2013-09-28 03:41:28
刚看到你这个回复,不知道你的问题解决了没有。

“Failure in diagonalisation routine dsygvd” 错误最主要的原因是原子几何构型太离谱,比如,两个原子太接近。
我看了一下你的输入文件,有几个疑问,可能是导 ...

感谢您热心的解答,关于您的疑问,
1,我的温度是673K,是我写错了
2,我的耦合频率确实太低,按照您的建议修改
3,未成对电子数是26,这可能是我的脚本写错了,我对C60一直加OH自由基,未成对电子数应该是1或者0,关于费米温度,我是想让体系更容易收敛,才那么做的。
努力爬行的小虫子·····
5楼2013-10-04 19:00:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ChemiAndy

木虫 (正式写手)


关于Filling = Fermi {Temperature [Kelvin] =1673.150000}你是对的,这个温度下收敛确实比50K下快很多。
6楼2013-10-05 06:09:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

糖醋排骨945

禁虫 (初入文坛)

本帖内容被屏蔽

7楼2015-06-24 19:53:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zc118

铁虫 (小有名气)

引用回帖:
4楼: Originally posted by ChemiAndy at 2013-09-28 03:41:28
刚看到你这个回复,不知道你的问题解决了没有。

“Failure in diagonalisation routine dsygvd” 错误最主要的原因是原子几何构型太离谱,比如,两个原子太接近。
我看了一下你的输入文件,有几个疑问,可能是导 ...

您好!刚看了您的回帖,我现在也遇到如下NoseHoover热浴问题,请您帮指导一下,非常感激!
1、CouplingStrength是不是越大越好?太大会出现什么问题?
2、我是用dftb方法计算碳纳米管的,
Thermostat = NoseHoover {
Temperature [Kelvin] = TemperatureProfile {
    constant 1    5555   #开始温度T=5555K
    exponential  7000  300   #拟在7000步内降到300K
    constant 1000 300  #达到300K后弛豫1000步
    }
  CouplingStrength [cm^-1] = 1680
}
3、我的初始构型不稳定,平动,振动动能都很高,温度近5555K,我的目标是想使得我的初始构型体系尽快冷却下来,相当于淬火,最终构型和初始构型一样那是最好的结果。

请问想得到这样的结果是不是步数越少越好了?比如上述的改为以下脚本:
Thermostat = NoseHoover {
Temperature [Kelvin] = TemperatureProfile {
    constant 1    5555   #开始温度T=5555K
    exponential  100  300   #拟在100步内降到300K
    constant 2000 300  #达到300K后弛豫2000步
    }
  CouplingStrength [cm^-1] = 1680
}
CouplingStrength需要改变吗?
非常感谢您的指导与帮助!
8楼2015-07-26 15:55:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 毛毛虫_ 的主题更新
信息提示
请填处理意见