如何学分子模拟的软件

如何学分子模拟的软件当今分子模拟已经成为很多领域学术研究的主流方法。多年前,因为计算量的原因,很多情况下,MC方法是首选,特别是只关心平衡体系,关心相边界行为的时候。随着计算资源的增加、计算成本的降低、一些研究对象的平衡态的体系已经几乎被做烂了,科研工作者慢慢关心动力学行为,非平衡特征,致力于发现新的现象,新的物理规律(总要有事做,有饭吃吧),于是MD越来越普及,用的人也越来越多。除了极端的方法学工作者,一般情况下…

大家好,又见面了,我是你们的朋友全栈君。

当今分子模拟已经成为很多领域学术研究的主流方法。多年前,因为计算量的原因,很多情况下,MC方法是首选,特别是只关心平衡体系,关心相边界行为的时候。随着计算资源的增加、计算成本的降低、一些研究对象的平衡态的体系已经几乎被做烂了,科研工作者慢慢关心动力学行为,非平衡特征,致力于发现新的现象,新的物理规律(总要有事做,有饭吃吧),于是MD越来越普及,用的人也越来越多。

除了极端的方法学工作者,一般情况下,MD的结果更容易被实验研究这,审稿人接受。

当一个方法被大家普遍接受且研究所需要成本降低时,对应于这个方法的产品,也就是我们的模拟软件就会雨后春笋的出来了。因为,不同的人研究对象不同,所用的相互作用不同,数据处理的思路等等不同,会出现多种版本的软件:不同的团队开发,面向不同用户群的软件。

问题是,如果学一个软件呢?我的经验是把软件的核心部分,即MD的基本原理和实现算法搞明白,弄清楚。这些懂了,任何软件都容易上手,那么我们下面讲讲哪些是基础。

  1. 知道一个核心,MD就是解多粒子体系的牛顿方程(F=ma),多粒子下,我们不是直接面对F,而是粒子间相互势 U, 而二者有直接关系 F= – (倒三角) U。一般情况下,U是坐标的函数。

  2. 上面懂了后,我们想得到粒子的运动。U(或者说是势函数)要先定,这就是建模了,不同体系,U会不同;决定U的就是粒子间相互作用的参数了,这些参数完全知道了,在全原子的情况下就叫力场。

  3. 要让计算机明白你的上述信息,你要按照机器要求(格式)写文件,这就是输入数据,包含坐标、力场参数,复杂体系还要包含研究对象的分子内结构等。【这就是学软件必须遵守的,不要问他们为啥用这种格式,软件开发者喜欢罢了】

  4. 接下来一步就是要了解算法(如何解方程)了,常见的velocity-verlet, 蛙跳,控温空压方法(统计物理的一些基本概念)大致了解,不需要很懂,因为你接触不了这些算法,知道他们参数意义就行了。了解了之后你才会写控制文件(也就是你的研究对象遵循的运动规律,有了控温空压),才能判断自己写的对否。

  5. 对计算加速的处理方法也要了解,比如近邻列表、box类型、相互作用势的处理等等。

  6. 最后一步,就是数据如何处理了,不同学科肯定不同,这种数据处理的方法,和你的学科知识紧密相连,多读文献,多看专业的书才是王道。这个基础和模拟软件关系不大。

简单的说,软件的学习,会写正确的 data(坐标、分子拓扑链接)文件,会写正确的in(运动规律)文件就行了(正确有两个层次:一是能Run,二是算出来是符合物理规律的)。其他不是软件能帮大家解决的,特别是模拟的经验性的东西,需要不断的交流(www.isimuly.com)和探索。只是格式上学会了写Data,in文件(这是方法的核心部分),不一定会建模和数据处理(研究问题的核心部分)。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/141253.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java caller_callee和caller属性的区别[通俗易懂]

    java caller_callee和caller属性的区别[通俗易懂]在函数内部,有两个特殊的对象:arguments和this。arguments是一个类数组对象,用于存放传入函数中的所有参数。callee是arguments对象的属性,caller是所有函数对象的属性。calleecallee是一个指针,指向拥有当前arguments对象的函数,即返回正在执行的函数本身的引用。使用callee时要注意:1这个属性只有在函数执行时才有效2它有一个length…

    2025年7月2日
    3
  • href="javascript:void(0);"与#差异

    href="javascript:void(0);"与#差异

    2022年1月9日
    60
  • 前端常见算法(js)「建议收藏」

    前端常见算法(js)「建议收藏」不管是在实际项目中还是在面试的时候我们大都会碰到算法问题,比如排序啊,比较大小啊之类的这些最基本的算法。我总结了一些,以后在碰到在慢慢补充。1.排序问题1.1冒泡排序冒泡排序算法就是依次比较大小,小的的大的进行位置上的交换。functionbubbleSort(arr){for(leti=0,l=arr.length;i<l-1;i++){…

    2022年6月26日
    31
  • HDU-1387-Team Queue

    HDU-1387-Team Queue

    2022年1月5日
    47
  • Helm从入门到实践

    Helm从入门到实践

    2021年6月1日
    94
  • java常量有哪些_Java中的常量有哪些?

    java常量有哪些_Java中的常量有哪些?JAVA常量就是在程序中固定不变的值,是不能改变的数据。例如数字1、字符“a”、浮点数3.2等。那么java的常量有哪些呢?在Java中,常量包括整型常量、浮点数常量、布尔常量、字符常量等。下面我们就一起来看看java中的这些常量。1.整型常量整型常量是整数类型的数据,有二进制、八进制、十进制和十六进制4种表示形式具体表示形式如下。二进制:由数字0和1组成的数字序列。在JDK7.0中允许使用字面值…

    2022年7月7日
    20

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号