亲,双击屏幕即可自动滚动
正文 第244章 毋庸置疑,诺贝尔化学奖,是我们的了
    肖宿没察觉许铭的崩溃,他把笔记本电脑转过来,打开了一个新的代码窗口。

    

    手指快速在键盘上飞舞。

    

    许铭站在旁边目瞪口呆的看着。

    

    他不是第一次看肖宿写代码,但之前他是旁观者,而这次,他手里攥着的是自已三个多月的心血。

    

    看着肖宿一行一行地把它重构掉,这种感觉复杂极了。

    

    有被碾压的挫败,也有一种奇怪的安心。

    

    就像一个在森林里迷路了很久的人,忽然听见头顶传来了直升机的声音。

    

    肖宿的动作很快,几乎没有停顿。

    

    他先重写了电子密度分布的初始化函数,原来的代码是读取原子坐标后直接构造距离矩阵,他改成先调用一个基组库,用最小基组做一个近似的初始电子密度估计。

    

    然后他开始写辛流形构造的部分,这是整个几何映射的核心。

    

    许铭看到肖宿定义了一个叫Ele Density Manifold的类,里面有十几个成员函数,其中最关键的是一个叫fd Saddle Pots的函数,输入的是电子密度分布,输出的是一组鞍点的位置和类型。

    

    “电子密度的鞍点连起来,就是拉格朗日子流形的骨架。”

    

    肖宿说这句话的时候手没停,“你们原来用原子核坐标直接构造流形,相当于跳过了找鞍点这一步。”

    

    这就像你要画一条山脉的轮廓,可是你不画山峰和山谷,直接就画了一个圈,两者根本不一样。

    

    许铭盯着屏幕上那行fd Saddle Pots的实现。

    

    算法逻辑比他预想的简洁,核心是一个基于梯度下降的鞍点搜索,加上一个去重和分类的后处理,大约只有六十行代码。

    

    他们之前花了两周时间写的辛流形构造代码,就这样,被这六十行替掉了。

    

    接着是群表示分解模块,肖宿没有大改原来的代码结构,而是在入口处加了一个适配器函数,函数名是select Sytry Grou,输入分子类型,输出对应的点群。

    

    “水分子,C2v氨,C3v甲烷,Td苯,D6h,”他一边写一边说,“常用分子的点群是已知的,可以直接查表,遇到新分子后,根据原子坐标自动判断点群的算法也不复杂,后面可以再加。”

    

    适配器函数的最后一行,是根据点群选择对应的不可约表示分解算法。

    

    原来的SU(2)分解代码被保留了下来,但放到了一个分支里。

    

    肖宿打完最后一行,把笔记本电脑转回给许铭。

    

    “可以了。”

    

    许铭呆呆的接过电脑,整个人都还没缓过劲来。

    

    屏幕上那些简洁到近乎优雅的代码安安静静地躺着,每一行的功能都清晰可辨。

    

    就这么解决了!?

    

    他们绞尽脑计都毫无办法的难题,就这么轻松的解决了?

    

    在这一刻,他甚至有点怀疑自已的智商。

    

    那他们实验室,努力的三个月算什么!?

    

    他直愣愣的站了许久,直到肖宿用奇怪的眼神看了看他,他才长叹了口气,振作了起来。

    

    “我现在就回去跑。”

    

    许铭把笔记本合上,站起来,很认真的看着肖宿道:“肖宿。”

    

    “嗯?”

    

    “谢谢你。”

    

    肖宿看了他一眼,轻描淡写的点了点头,又回到了自已电脑屏幕上。

    

    十几分钟而已,肖宿对熟悉的人总还是比较慷慨的。

    

    ……

    

    许铭回到实验室的时候,万汇杨和方清还在等他。

    

    看到许铭进来,两人几乎是弹起来的。

    

    “拿到了?”

    

    许铭把笔记本电脑打开,调出了肖宿写的代码。

    

    两个人凑近,一左一右站在许铭身后。

    

    屏幕上,肖宿写了四行注释安安静静地立在文件头部。

    

    方清的目光从第一行扫到第四行,然后停住了。

    

    “电子密度分布。”

    

    他念出这几个字,声音有点干涩,“我们第一步算的是原子核坐标。”

    

    许铭点头。

    

    “三个多月,我们从第一步就错了。”

    

    万汇杨把肖宿的代码从头到尾看了一遍,看到辛流形构造部分的时候,手指在屏幕前虚虚地点了一下。

    

    “fd Saddle Pots。”

    

    他念出这个函数名,然后转过头看着许铭和方清,“肖宿在论文里写过:电子密度的鞍点构成了拉格朗日子流形的骨架。

    

    但我怎么也没意识到这句话是实现的钥匙。”

    

    “把VASP的测试数据准备好,用同一组分子体系,同样的计算精度要求,跑一遍对比测试。”

    

    “好。”

    

    方清很快把测试环境搭好了。

    

    三台工作站并排运行,左边跑VASP,右边跑他们之前的旧框架,中间准备用来跑肖宿的新算法。

    

    测试体系选的是十种常见分子:水、甲烷、苯、氨、甲醛、乙烯、乙炔、二氧化碳、甲醇、乙醇。

    

    计算目标统一设定为基态电子结构,精度要求取化学精度。

    

    “开始吧。”

    

    许铭把肖宿的代码导入中间那台工作站,点击运行。

    

    屏幕上的进度条开始快速移动起来。

    

    第一个水分子实验,VASP用时四十七秒,旧框架用时三十二秒但结果偏差较大,而肖宿的新算法用时九秒,结果和实验值偏差低于零点零三电子伏特。

    

    三个人互相看看,都能从对方的眼中看到震惊。

    

    接下来是甲烷,VASP用时一分零三秒,肖宿的新算法用时十四秒,偏差低于零点零二电子伏特。

    

    再接着是苯,这是最有挑战性的一个。

    

    苯环的共轭π电子体系是DFT的传统软肋,VASP跑苯的基态电子结构需要两分四十秒,而且结果和实验值有大约零点二电子伏特的系统偏差。

    

    而用肖宿的新算法跑苯,只用了三十一秒,结果和实验值的偏差还低于零点零一五电子伏特。

    

    方清的手都有些颤抖了。

    

    剩下的七个分子一个接一个跑完,每跑完一个,方清就在旁边的白板上记录下用时、偏差、和VASP的对比。

    

    写完最后一个乙醇分子,尽管三人都有心理准备,可还是被惊到了。

    

    十种分子,肖宿新算法的平均用时是VASP的四分之一不到,平均精度偏差是VASP的五分之一以下,算力消耗平均不到VASP的三分之一。

    

    而且这还不是终点。

    

    肖宿在代码里留了大量可以进一步优化的空间。

    

    他给的是一个框架,一个方向,沿着这个方向往下走,性能还能再提升。

    

    “这已经不是比VASP强了。”

    

    万汇杨的声音有些沙哑,“这是重新定义了计算化学的底层逻辑啊。”

    

    三个人站在白板前,看着上面那组数据,很久都没有说话。

    

    谁都没法想象,这个实验数据公布之后,化学界将会迎来多么可怕的震动。

    

    “我想,”万汇杨转过身,看着许铭和方清,脸上的疲惫一扫而空,“毋庸置疑,诺贝尔化学奖,是我们的了。”
为您推荐