| 查看: 984 | 回复: 0 | |||
[交流]
分子动力学模拟心得
|
|
适合新手1.看完《分子模拟从算法到应用》那本书的第四章,不用全看完,但是至少要对分子动力学模拟过程有一个了解。2.试着按照书的过程做个Ar的NVE,其实Ar和离子晶体以及其它的任何材料的差别仅仅是势函数的问题,虽然由势函数带来了一些问题,但是这些都不是本质问题。3.从初始化的原子数,原子位置,初始速度,时间步长,初始温度等等这些初始化结束了以后,选择一个简单的积分算法,如6阶的Gear预测校正,不要控温控压,就是一个简单的NVE,不要考虑任何的提高效率的邻位算法,因为这个时候我们可以选择5×5×5的超原胞,总共的原子数也就500个,不需要考虑邻位算法。4.开始循环计算:预测----计算原子的力和能量—校正5.输出能量这样最简单的NVE就编成了,总共也就1000多行,是个很小的程序。自己先试着感受一下。其实当这样的小程序完成以后,你会觉得分子动力学编程也很简单,那么接下来的复杂的分子动力学也不会是什么问题。做完了这一些,你需要知道的是那些是和材料无关的东西,那么就尽量的分离,开始使用一个个的函数。例如,原子的位置是和具体的材料相关,但是初始速度却和材料一点关系都没有,同样的数值积分中的预测和校正也是和材料无关的,以后的控温和控压算法也是和材料无关的。当规模大了以后,邻位算法也是和材料无关的,像这些和材料无关的部分最好自己做成小函数,选择调用。以后换材料的时候程序也不会有太大的改动。编程的一些小技巧:1.选择用intel编译器,个人喜欢用10.1或者9.1的版本,打开优化选择,类似的/QaxS /QxS /Qipo /Qprec-div-等等,以后可以使用Openmp的并行计算(具体的可以参考intel编译器的帮助手册)2.尽量的简化计算,例如2×a就要写成a+a,在计算机中,加减是一个数量的计算,乘是一个,除是一个。计算量逐渐增加,所以选择a+a来替代2×a 会减少一些计算量3.选择数据来替代结构体,结构体看的比较方便,但是计算效率要低,尤其是在编译过程中的矢量化的时候,而数组则可以很好的矢量化,也更适合并行。结构体的计算是先找到结构体指针,然后再找里面的参数,当并行的时候,多线程同时找结构体指针,会很大的减低速度。4.除法尽量用乘法来替代,有了程序以后,自己可以仔细的分析里面的计算消耗,这样可以更好的优化计算,当然最主要的消耗是在力和能量的计算 版权声明:本文为CSDN博主「hdpai2018」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/hdpai2018/article/details/84250685 发自小木虫Android客户端 |
» 猜你喜欢
反铁磁体中的磁性切换:两种不同的机制已成功可视化
已经有0人回复
求标准粉末衍射卡号 ICDD 01-076-1802
已经有0人回复
物理学I论文润色/翻译怎么收费?
已经有209人回复
新西兰Robinson研究所招收全奖PhD
已经有0人回复
石墨烯转移--二氧化硅衬底石墨烯
已经有0人回复
笼目材料中量子自旋液体基态的证据
已经有0人回复
数学教学论硕士可以读数学物理博士吗?
已经有0人回复
德国亥姆霍兹Hereon中心汉堡分部招镁合金腐蚀裂变SCC课题方向2026公派博士生
已经有4人回复
澳门大学 应用物理及材料工程研究院 潘晖教授课题组诚招博士后
已经有11人回复












回复此楼
