大家好,又见面了,我是你们的朋友全栈君。
当今分子模拟已经成为很多领域学术研究的主流方法。多年前,因为计算量的原因,很多情况下,MC方法是首选,特别是只关心平衡体系,关心相边界行为的时候。随着计算资源的增加、计算成本的降低、一些研究对象的平衡态的体系已经几乎被做烂了,科研工作者慢慢关心动力学行为,非平衡特征,致力于发现新的现象,新的物理规律(总要有事做,有饭吃吧),于是MD越来越普及,用的人也越来越多。
除了极端的方法学工作者,一般情况下,MD的结果更容易被实验研究这,审稿人接受。
当一个方法被大家普遍接受且研究所需要成本降低时,对应于这个方法的产品,也就是我们的模拟软件就会雨后春笋的出来了。因为,不同的人研究对象不同,所用的相互作用不同,数据处理的思路等等不同,会出现多种版本的软件:不同的团队开发,面向不同用户群的软件。
问题是,如果学一个软件呢?我的经验是把软件的核心部分,即MD的基本原理和实现算法搞明白,弄清楚。这些懂了,任何软件都容易上手,那么我们下面讲讲哪些是基础。
-
知道一个核心,MD就是解多粒子体系的牛顿方程(F=ma),多粒子下,我们不是直接面对F,而是粒子间相互势 U, 而二者有直接关系 F= – (倒三角) U。一般情况下,U是坐标的函数。
-
上面懂了后,我们想得到粒子的运动。U(或者说是势函数)要先定,这就是建模了,不同体系,U会不同;决定U的就是粒子间相互作用的参数了,这些参数完全知道了,在全原子的情况下就叫力场。
-
要让计算机明白你的上述信息,你要按照机器要求(格式)写文件,这就是输入数据,包含坐标、力场参数,复杂体系还要包含研究对象的分子内结构等。【这就是学软件必须遵守的,不要问他们为啥用这种格式,软件开发者喜欢罢了】
-
接下来一步就是要了解算法(如何解方程)了,常见的velocity-verlet, 蛙跳,控温空压方法(统计物理的一些基本概念)大致了解,不需要很懂,因为你接触不了这些算法,知道他们参数意义就行了。了解了之后你才会写控制文件(也就是你的研究对象遵循的运动规律,有了控温空压),才能判断自己写的对否。
-
对计算加速的处理方法也要了解,比如近邻列表、box类型、相互作用势的处理等等。
-
最后一步,就是数据如何处理了,不同学科肯定不同,这种数据处理的方法,和你的学科知识紧密相连,多读文献,多看专业的书才是王道。这个基础和模拟软件关系不大。
简单的说,软件的学习,会写正确的 data(坐标、分子拓扑链接)文件,会写正确的in(运动规律)文件就行了(正确有两个层次:一是能Run,二是算出来是符合物理规律的)。其他不是软件能帮大家解决的,特别是模拟的经验性的东西,需要不断的交流(www.isimuly.com)和探索。只是格式上学会了写Data,in文件(这是方法的核心部分),不一定会建模和数据处理(研究问题的核心部分)。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/141253.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...