谈谈初识计算化学研究以来的感受

决定以后就在这里写这种像是日记一样的东西吧,以前在自己的小破公众号想发的什么鬼扯小说、随笔之类的还是在这写吧。

其实选择计算化学作为以后的研究方向并不是一时兴起或是想混个文凭,真的也就纠结了很久的……

声明:作者声明本文存在艺术加工,同时文章内容不存在针对特定个人或群体的任何隐喻

高考填志愿的时候鬼使神差地倒着分数线从最低的化学填了上去,入学半年多才慢慢发现同班的同学有不少是调剂来的。想一想还真是凄惨,后来还听说他们想转专业找到校领导去了,现在据我所知似乎也只有两三个人考研学了心理学或者金融吧,其他人或者去新东方之类的找了工作,或者二战还没出结果。

不是上来就要劝退

绝对没有任何“学一行爱一行”的意思(笑)。毕竟现代社会,特别是工业化社会为我们带来的最好的成果就是非常低的运行成本和广泛的分工合作。理想情况下,发达的社会允许任何人从事任何工作,并能提供最快的上手培训。显然现在还不是。仍旧会想起遇到过不止一名上课连教材带的PPT都念不顺的老师,也会一直钦佩直到现在还能手写板书、带着热情上课的老师——(尽管)他并不从事什么“科研”。同学们也一样,一样遇到过严格滴定要求,即使老师没教也会严格检查、谨慎半滴、静置30s的同学;以及极度喜欢小组实验,却不来几次的同学。

当然了,不是所有人都是想学这个专业才来到这里的,即使到了研究生也一样。

但我还是要劝退

可以说众所周知,内卷不可避。对于一些有幸能认识到自己所处环境的同学,或许能做两手准备,能在自己能承受的风险范围内去尝试一些新的东西。他们中的不少人有了或作家、或新媒体、或科普工作者的新身份,至少跳出了这个圈子。更多的则是熬过两年,在第三年下半年努力自学另一个专业得到了新的发展——尽管已经晚了几年。

可到了研究生,却发现仍有这样的事,明明已经称呼老师为“老板”,却依然为了毕业还是要忍住每天汇报文献、隔天做工作汇报。仿佛那些同学的“老板”那里,学生是这样的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
class 硕士生(学生):
def __init__(self, 姓名, 年龄, 知识背景, 毕业年限 = 4, 研究方向 = []):
# self.name = 姓名 # 这个好像不重要
# self.年龄 = # 这个好像也不重要
self.知识背景 = 知识背景.union(想做的项目.文献.after(year=1900))
self.毕业年限 = 4
self.研究方向 = 研究方向

def 毕业(self):
print("想啥呢?好好学习,学无止境!")

def 休学(self):
print("早晚要回来学习的,别磨蹭")

def 延毕(self):
if self.毕业年限 < 在校年限:
self.毕业年限+=1
print("要深入研究,多做一做")
else:
print("转博考虑一下?")
self.建议转博()

def 看文献(self):
...
return {'内容':...,
'优势':...,
'能做什么':...,
'预实验结果':...,
'文章什么时候发':...,
'方案什么时候交到工厂':...}

def 做实验(self):
...
return {'还能做什么':...,
'实验结果':...,
'文章投稿进度':...,
'工厂什么时候中试':...}}

...

干嘛不学个CS、金融呢,CS大部分还有比较完善的工程规范和责任界限,金融经济纵使有人行为不齿至少表面风光(((何况如果想做一番事业,二者没有严重的固化。

谈谈我认识计算化学的经历

比不上很多高中乃至初中就完整学习大学化学课程的同辈,我是直到高二才学了化学竞赛那一点点奇技淫巧。在大一之前甚至对计算化学的存在一无所知,仅仅是隐约从玩过的Foldit中感觉我们可能能够模拟相当一部分分子。

还是要感谢我现在的导师,上课的时候介绍了一些教材之外的内容(,尽管老师有时候不太能控制得住课堂,容易沉迷于自己的世界中,说着量子化学中有趣的但同学们不一定听得懂的东西(划掉划掉))。在做了一段时间的水凝胶实验之后,我还是趁着科研训练的机会挤到了导师的课题组(甚至还发生了一些不愉快的事情,我想得起导师最开始听说我做过实验的表情(逃))。

于是按照高效的原则,还是先向课题组的师姐学习基本的理论和操作,主要是Linux环境和课题组提交计算任务的trick。好在我前两年摸鱼学了Python和Linux,比起不愉快中的另一位【不愉快】到毕业都不知道DFT是什么,我斗胆认为自己些许好一些。

不过我还是很快意识到了问题,导师的组里几乎很少有会写代码的师兄师姐,处理数据竟然还有一杯茶、一个鼠标做一天重复点的操作——在师姐问我要批量下载的脚本前,我一直觉得只是组里的主要研究方向不需要太多的程序设计和计算方法的知识。

觉得不对,我看着自己算出来的那些数据,总觉得我能做点什么新的……

导师以前也做过偏重理论和一些算法开发的内容,只是慢慢不再是研究前沿,断了传承,现在组里都在用祖传的Fortran90代码,却总有些别扭;服务器上也挂着一个数据库,也是十年前的大师兄做的了,倒也还能看到他以前做过的节点负载监控。

认识计算化学也就是这个经历吧,仿佛也是挑了个大坑的样子。

对比一下理想和现实

我以为的计算化学 实际上
精通双电子积分的C++实现 “啥是双电子积分?”
Python批量控制计算任务 放假了,35个节点是我的了
熟练掌握Gaussian的Python接口 “那是啥?”
使用LaTeX写作论文,感谢ACS提供的模板 “我们基本不用公式”
服务器坏了随手一修 “师弟,XXX节点怎么又上不去了?”

不过课题组确实分工明确,最好的几位师兄师姐都能很好地用成熟的软件做出不错的理论阐释。好一些的师兄也已经拿到稳定的教职,会写代码或者熟悉数学物理的师兄也都做的越来越好了。

反思

可这终究不是长久之计,其他实验课题组也慢慢学会了计算软件的使用,甚至像学python一样学Gaussian,VASP的广告也铺天盖地了起来。

我想做更有理论基础的差异化工作。

实验课题组也慢慢学会了计算软件的使用是好事,毕竟有些人还放出计算组乃至理论组不是化学研究,要求减少经费的厥词。生产力不发展,化学这行迟早也要像中医一样,明明已经通过文化融入现代医学,甚至影响了我国的医学研究,总还有不少人要单列出来只为求取经费。实验组单做实验,像多年前的**一样继续堆数据就叫科研,别的都多余,这也许才应为人不齿。

要不要重复造轮子

有人说学习理论计算,并不做方法学开发,不需要了解什么双电子积分,勒让德多项式,矩阵对角化方法的数值稳定性。我一定程度上赞成这样的观点,毕竟一些经过大量检验的方法的应用,一样有难度,有思考的价值,一样有新的东西。

但那终究会有人更专业,然后用新的方法或更高效的手段来取代原有的东西。

就像实验也会追求测试条件的稳定性,追求更精确的控制变量一样,理论计算要想做得更好,免不了要基本了解原理——至少是了解特点和个别细节。

如果没有了解细节,我可能都不知道计算中关键的变量有哪些,GTO的重叠积分为什么那么有用,其他积分和S又存在什么联系;那么也就更没办法分析大量明显存在趋势和周期性的研究结果要怎么简化,如何定义模型参数的化学意义。

所以我决定自己从头实现我们用的计算软件,毕竟方法和数据都很成熟,我只要顺一遍就好。不过也很少看到中文的介绍,于是也决定整理一个小册子,以后想必用的上。

也希望我重复造轮子踩了的坑,师弟师妹们不会踩,更能更快地了解我们在用什么。深层的原因和可能性永远有,只是什么时候去发现。

PS:曾经和人争论过工业的经验公式和理论研究的冲突,我仍然坚持认为,“经验公式”适用于一时,因为他有成本优势,但当需要更精细化控制的时候,这精细化带来的收益,绝对会慢慢大于研究理论和使用理论的成本,最终取代“经验公式”;何况,“理论”和“理论”之间,谁又说谁不是“经验公式”呢?一味鼓吹“经验公式”,恐怕和“实验原教旨”主义没有区别。

但不要和他们争论,因为你会获得“理科思维”的标签。