立即注册找回密码

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

手机动态码快速登录

手机号快速注册登录

搜索

图文播报

查看: 474|回复: 5

[分享] 分子模拟和计算化学领域科研是否只是用用软件,没必要掌握编程技术?

[复制链接]
发表于 2024-9-18 16:52 | 显示全部楼层 |阅读模式
回复

使用道具 举报

发表于 2024-9-18 16:52 | 显示全部楼层
大多数人见到的听到的,或者自己体验到的用用软件是Gaussian 70之后的事情。
MS, DS, DMOL3, CASTEP, Gaussian, ORCA, QE, CP2K, CPMD, i-PI等等的本质只是计算器。没有人自己写过这种东西之后还不觉得它本质上就是个计算器。
不是Automatic simulator
不是从业手段
不是Publishing button
不是Game designed for idiot
写一个开源计算软件包甚至可以不给详尽的自然语言写法的手册,不提供教程,自己去看代码,或者爱用不用
计算器,爱用不用。所以模拟的时候技术层面出了问题的第一责任人永远是使用者本人,哪怕计算器有bug。
所以该会啥,啥不该会就很清楚了
回复 支持 反对

使用道具 举报

发表于 2024-9-18 16:52 | 显示全部楼层
我是从数据的前后处理开始写起的,最开始用的Linux shell,方便的进行数据批量处理和分析。重复工作都交给计算机,比如自动生成输入文件。对输出结果利用公式进行处理,gnuplot批量做图等。记忆里比较复杂的像用Python写的COHP结q果分析工具,以及绘制能带。
后来开始做机器学习。也就调调包,调调参,涉及到数据预处理,统计分析,自动调参之类的,能找包就找包,尝试自己造轮子的首先掂量掂量自己的几斤几两,重复发明轮子决不是什么值得表扬或称赞的事。因为你的东西往往比现有的实现性能差得多。很容易就好几个For嵌套起来,然后算法复杂度大幅提升。特别是Python, For xx in xx是会用上瘾的。然后你就在那等你的程序半天出不来结果。
再后来,从文献里找了些理论模型,用Python实现并计算结果。分析自己的案例。
临硕士毕业,自己实现了个kMC程序,Python好用,会上瘾。
至于重复发明DFT之类的轮子,没必要,浪费时间精力,性能一坨,这年头术业有专攻,做理论的人那么多。一个人啥都懂,相当于啥都不会。研究算法复杂度和性能优化的人那么多。难道商业计算软件公司里只有一个人吗?怕不是写界面一个团队,写算法一个团队,搞性能优化,并行化又是另外的团队,至于开源的程序和库,甚至可能会有来自intel或Nvidia的工程师在做性能的优化。如果自认为自己写的代码性能水平超越开源库,那还做啥计算化学,去牙膏厂或老黄家工作吧。
回复 支持 反对

使用道具 举报

发表于 2024-9-18 16:53 | 显示全部楼层
谢邀。
类似的问题在知乎很多,但我之前几乎从来回答过这种问题,因为知乎上这种问题看多了,我都怀疑知乎众心目中的“计算化学”和我一直以来理解的计算化学根本就是两个不同的东西。似乎绝大多数知乎众的回答都认为“大多数计算化学研究只需要掌握软件即可”、“编程是做方法的少部分人或者‘高端的深入研究’才用的到的”。然而自打我上研究生以来对于理论与计算化学的理解就一直是“不会推公式就不配称为理论化学,不会编程就不配称为计算化学”。
首先需要明确一下概念,那就是什么是“计算化学”。首先理论化学/计算化学都是属于物理化学的一个分支,而物理化学的定义我想大部分人都很清楚,那就是使用物理学的方法研究化学过程背后的原理。理论与计算化学也不例外,理论化学同物理化学的其他学科相比,其他学科主要是用实验手段来进行研究,而理论化学则是主要用理论手段来进行研究。而严格来讲计算化学应该属于理论化学的一个分支,是利用计算机将理论化学中的理论实现成可以使用的工具以进行研究,然而在计算化学已经渗透到理论化学方方面面的今天,“理论化学”和“计算化学”其实是很难分开的,所以人们更倾向于用“理论与计算化学”这个词来形容这个学科。然而不应该忘记的是,“理论化学”永远是“计算化学”的基础,理论可以没有计算(当然现在这种情况极少,大部分理论化学方法提出的同时几乎都会给出计算的实例),然而计算不能没有理论
拿题目中提到的“分子模拟”为例, @张嘉兴 说“分子模拟应该是属于计算化学的”,然而在我看来其实“分子模拟”不应该同“计算化学”相提并论,因为“计算化学”是一门学科,而“分子模拟”只不过是这门学科当中的一个“工具”而已。目前的科研界学科交叉非常普遍,一个学科借助其他学科的工具是非常正常的事情,然而如果仅仅只是使用其他学科的工具并不代表同时也进行那个学科的研究。所以说使用“分子模拟”进行的研究,并不一定就是“计算化学”本身的研究,就像现在人人都在用电脑,但并不是人人都在研究计算机一样。“计算化学”本身是一门“科学”,而仅仅会使用“分子模拟”这个工具只能说是掌握了一门“技术”,离真正的“科学”还有一段距离,所以我一直主张“做模拟”和“做计算”应该属于两个不同的概念
现在回到题目中来,“分子模拟和计算化学领是否需要编程”。根据我上面的分析,很显然就能得出这个结论:光是使用分子模拟这门“工具”不一定需要编程,然而想要进行计算化学这门“学科”的研究就必须学会编程。因为计算化学的定义就是利用计算机实现理论化学的理论,而如果不会编程,如何才能实现这些理论?当然,在诸多前辈高人的努力之下,我们有了分子动力学模拟、蒙特卡洛模拟、量化计算、量子动力学计算等等强大的工具,然而目前理论化学仍然在持续发展中,而对应计算化学已经实用化的工具其实还非常少,绝大部分的理论仍然需要计算化学的研究人员利用编程去实现。
就拿分子模拟本身来说,它能够做的仅仅是模拟实验过程,然而对于计算化学的研究来说这还远远不够,更重要的是模拟之后对于模拟体系的分析。在这种情况下,通用的分子模拟分析工具能分析的性质非常少,通常都是些非常简单且基础的性质。然而真实体系中需要分析的性质往往非常复杂且通用性非常低,真的想要深入地分析体系的性质,编程是必不可少的。假如真的靠软件自带的分析功能就能满足所有要求,那么实验课题组干嘛还需要跟专门的计算课题组合作,自己学学软件跑跑模拟就是了。
举个例子,我曾经跟一个实验课题组合作,他们的实验研究的是离子液体和硝酸水溶液的互溶,得到了一个比较奇怪的相图,他们想让我们模拟一下这个体系,解释一下背后的机理。其实对于这个体系的模拟是非常简单的,从相图上互溶和不互溶的比例当中各选一个进行建模然后模拟就是了。那么问题来了,请问如何表征模拟过程中的不同成分是否是“互溶”的?光用眼睛看结构是很难正确判断的,再说了你也不能在文章中放太多图片。当时我查了一下文献,发现在之前一篇研究离子液体和水互溶的文中使用了一个叫做“Demixing Index”的系数(Muzet, N. et al, JPC B 1998, 52, 10772),定义也非常简单:首先将体系分割成相同大小的格子,然后计算每个格子中各个物种的密度倒数的加和( 用 表示: 表示格子, 代表物种, 是物种的数量, 是第 个物种在第 个格子中的密度),然后求 的平均就得到“Demixing Index” ( 是格子的个数)。“Demixing Index”越大就代表互溶的越好,所以用这个系数就能很容易的判断溶液互溶的情况,我写了一个很简单的程序计算了一下两个模拟体系的“Demixing Index”,果然可以很清楚的区分出不同成分溶液的互溶情况。针对这个体系的模拟可以算是我研究生生涯当中进行过的最简单的一个课题,但即便如此还是需要编写一个小程序,因为没有任何一个现成的程序可以帮我直接计算这个“Demixing Index”。(Fu, J. et al, JPC B 2016, 120, 5194)
综上所述,编程是进行计算化学研究的基础,不会编程很难进行真正的计算化学研究。当然如果仅仅是使用分子模拟这一工具,那么编程当然不一定是必须的,然而必须要明确的是,仅仅是使用分子模拟这一种工具进行的研究是不能称为真正的”计算化学“研究的。
回复 支持 反对

使用道具 举报

发表于 2024-9-18 16:53 | 显示全部楼层
泻药。具体掌握多少编程技术掌握多深入就要看自己的喜好和追求是什么了。即使是用软件做模拟水文章的话,学会写写脚本处理数据自动化些任务还是必要的。

参考我之前写过的类似答案:
做计算化学和分子模拟领域科研,会用到多少编程技术,如 C、python、fortran 等?
回复 支持 反对

使用道具 举报

发表于 2024-9-18 16:54 | 显示全部楼层
看你要做到哪步。
只能说就会用用软件你也能发文章,也能毕业也能评职称。但是回过头去看你自己在这行顶级圈子里说的上话,em。
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册 微信登录 手机动态码快速登录

本版积分规则

关闭

官方推荐 上一条 /3 下一条

快速回复 返回列表 客服中心 搜索 官方QQ群 洽谈合作
快速回复返回顶部 返回列表