| 查看: 1028 | 回复: 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人回复
【原创讨论】从电子约束到物质编辑:一套可迭代的环形磁场科技树
已经有0人回复
物理学I论文润色/翻译怎么收费?
已经有287人回复
【方案分享】单环磁场+轴心控制+偏转导出电子束约束系统(可行性实验)
已经有6人回复
【修正版】单环用磁约束低速电子实验方案(简化版)
已经有0人回复
桂林理工大学物理学专业招收调剂,还有三个名额!!!
已经有22人回复
考博自荐
已经有4人回复
山东大学第二批博士研究生招生
已经有0人回复
中国科学院东莞材料科学与技术研究所-2026年博士招生-吴昊研究员-磁学与自旋电子学
已经有0人回复
《电磁学》教材推荐
已经有1人回复
【急招】合肥工大核聚变材料计算方向2026级工程博士生
已经有4人回复












回复此楼
