关灯
护眼
字体:大 中 小
上一章
目录
下一页
肖宿没察觉许铭的崩溃,他把笔记本计算机转过来,打开了一个新的代码窗口。
手指快速在键盘上飞舞。
许铭站在旁边目定口呆的看着。
他不是第一次看肖宿写代码,但之前他是旁观者,而这次,他手里攥着的是自己三个多月的心血。
看着肖宿一行一行地把它重构掉,这种感觉复杂极了。
有被碾压的挫败,也有一种奇怪的安心。
就象一个在森林里迷路了很久的人,忽然听见头顶传来了直升机的声音。
肖宿的动作很快,几乎没有停顿。
他先重写了电子密度分布的初始化函数,原来的代码是读取原子坐标后直接构造距离矩阵,他改成先调用一个基组库,用最小基组做一个近似的初始电子密度估计。
然后他开始写辛流形构造的部分,这是整个几何映射的内核。
许铭看到肖宿定义了一个叫Electron Density Manifold的类,里面有十几个成员函数,其中最关键的是一个叫find Saddle Points的函数,输入的是电子密度分布,输出的是一组鞍点的位置和类型。
“电子密度的鞍点连起来,就是拉格朗日子流形的骨架。”
肖宿说这句话的时候手没停,“你们原来用原子核坐标直接构造流形,相当于跳过了找鞍点这一步。”
这就象你要画一条山脉的轮廓,可是你不画山峰和山谷,直接就画了一个圈,两者根本不一样。
许铭盯着屏幕上那行find Saddle Points的实现。
算法逻辑比他预想的简洁,内核是一个基于梯度下降的鞍点搜索,加之一个去重和分类的后处理,大约只有六十行代码。
他们之前花了两周时间写的辛流形构造代码,就这样,被这六十行替掉了。
接着是群表示分解模块,肖宿没有大改原来的代码结构,而是在入口处加了一个适配器函数,函数名是select Syetry Group,输入分子类型,输出映射的点群。
“水分子,C2v氨,C3v甲烷,Td苯,D6h,”他一边写一边说,“常用分子的点群是已知的,可以直接查表,遇到新分子后,根据原子坐标自动判断点群的算法也不复杂,后面可以再加。”
适配器函数的最后一行,是根据点群选择映射的不可约表示分解算法。
原来的SU(2)分解代码被保留了下来,但放到了一个分支里。
肖宿打完最后一行,把笔记本计算机转回给许铭。
“可以了。”
许铭呆呆的接过计算机,整个人都还没缓过劲来。
屏幕上那些简洁到近乎优雅的代码安安静静地躺着,每一行的功能都清淅可辨。
就这么解决了!?
他们绞尽脑计都毫无办法的难题,就这么轻松的解决了?
在这一刻,他甚至有点怀疑自己的智商。
那他们实验室,努力的三个月算什么!?
他直愣愣的站了许久,直到肖宿用奇怪的眼神看了看他,他才长叹了口气,振作了起来。
“我现在就回去跑。”
许铭把笔记本合上,站起来,很认真的看着肖宿道:“肖宿。”
“恩?”
“谢谢你。”
肖宿看了他一眼,轻描淡写的点了点头,又回到了自己计算机屏幕上。
十几分钟而已,肖宿对熟悉的人总还是比较慷慨的。
……
许铭回到实验室的时候,万汇杨和方清还在等他。
看到许铭进来,两人几乎是弹起来的。
“拿到了?”
许铭把笔记本计算机打开,调出了肖宿写的代码。
两个人凑近,一左一右站在许铭身后。
屏幕上,肖宿写了四行注释安安静静地立在文档头部。
方清的目光从第一行扫到第四行,然后停住了。
“电子密度分布。”
他念出这几个字,声音有点干涩,“我们第一步算的是原子核坐标。”
许铭点头。
“三个多月,我们从第一步就错了。”
万汇杨把肖宿的代码从头到尾看了一遍,看到辛流形构造部分的时候,手指在屏幕前虚虚地点了一下。
“find Saddle Points。”
他念出这个函数名,然后转过头看着许铭和方清,“肖宿在论文里写过:电子密度的鞍点构成了拉格朗日子流形的骨架。
但我怎么也没意识到这句话是实现的钥匙。”
“把VASP的测
本章未完,请点击下一页继续阅读>>『加入书签,方便阅读』
上一章
目录
下一页