|
|
★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ 小木虫(金币+0.5):给个红包,谢谢回帖交流 ghcacj(金币+10, 模拟EPI+1): 谢谢 2011-02-24 13:33:37
你好。昨晚我用你的输入文件作了测试,好像确实有问题。我另换了Johnson势函数,也改过几次控温参数,均发现有问题,有时候是温度,有时候是压力。但这样的问题对于晶体的模拟是不该出现的,我一时也看不出是程序有Bug还是输入有问题。
你用的Sutton-Chen势太长了,运行很慢,我没有时间继续测试下去,我建议在找到问题症结之前,你先把Gulp程序中的mxmdtemp参数增大,在initial.f90中找到
rmdmaxtemp = 100.0_dp,
把100改为1000,这样容错性就好一些。注意改后要重新编译生成新的可执行文件。
但如果这样还是有问题,那就真的是不好办了。另外,请你打开mdprop.f90这个文件,找到大约127行处,有如下代码:
if (tempratio.gt.rmdmaxtemp) then
call outerror('temperature has exceeded maximum allowed set by mdmaxtemp',0_i4)
call gulpfinish
endif
你还可以在call gulpfinish 这一句之前(即call outerror这一句之后),添加如下代码:
write(ioout,'('' ** Time : '',f18.5,'' ps :'')') nsteps*tstep(ncf)
write(ioout,*) 'temperature, targettemperature, tempratio:'
write(ioout,*) temperature, targettemperature, tempratio
改后要重新编译。这个是在出错的时候输出错在什么地方。这一句对改错是没什么用的,只是弄明白错的程度有多大,如果输出的tempratio不是特别大(比如你前面设的rmdmaxtemp是1000,这里 输出的tempratio是1020)你就可以再加大rmdmaxtemp,比如设成1200之类,如果tempratio大得很,比如2000,3000之类,你就没有必要再搞了,肯定问题很大。
再一个你的输入文件太麻烦了。对FCC金属,可以这样写:
nosy cart md conp
cell
4.09 4.09 4.09 90.000000 90.000000 90.000000
frac
Ag 0.0 0.0 0.0
Ag 0.5 0.0 0.5
Ag 0.5 0.5 0.0
Ag 0.0 0.5 0.5
supercell 7 7 7
libr suttonchen
下面就是pressure=0这些,是你的MD控制参数。
这样你换其它FCC体系也容易,只要改晶格参数、元素名就可以了。suttonchen势是在Gulp的势函数库当中的。用的时候把Libraries中的suttonchen.lib拷到当前运行目录下。用7*7*7的晶格也太大了,大概256或500个,对于晶格优化也就差不多了,864也可以。时间步数大概0.001ps就够了。你对金属Ag,应该在熔点以下运行,温度不要太高。
当然输入文件的写入是小事,关键还是温度控不住的情况比较烦人。而且一般是突然发生的错误。实在不行你可以给程序作者发Email,说说这个问题,这个作者Julian Gale是个很好、很有耐心的人。要不就换DLPOLY做MD吧,DLPOLY计算MD专业一点。呵呵呵。 |
|