Kynetix现在终于可以直接拿相对能量做计算了,来者起码不会很快就拒啦~

这算是Kynetix能量读取部分的第三次比较大的更新了,之前有提到过,模型已经兼容相对能量的输入文件( 详情)。
虽然读取的是相对能量,但是程序内部我还是使用矩阵进行了线性方程组的求解来将求出每个物种相对于参考态的能量来作为generalized formation energy。
可是这就遇到了一个问题,

有很多情况,程序根据用户自定义的参考态物种获取的参数矩阵很多情况是奇异矩阵,一旦矩阵奇异,就无法求出解,也就无法将模型的求解进行下去。

这个问题一直困扰我很久了,但是我一直没有花时间去解决。
现在想想其实我通过矩阵获取generalized formation energy的目的是什么?
其实作用也不过是在进行初始猜测的时候按照formation energy来进行Boltzmann分布而已。为了这个而无法将整个求解过程继续下去真的是得不偿失啊。

于是我就将parser进行了修改,是整个模型能够直接读取相对能量来进行计算,当然如果想进行formation energy的求解也是可以的。
具体的修改细节请参考这个commit: could use relative energy to solve model · PytLab/Kynetix@4ab1de8

运行脚本也进行了相应的修改:

1
2
3
4
relative = True if '--relative' in sys.argv else False
solve_ode = True if '--ode' in sys.argv else False
m.run_mkm(init_cvgs=init_cvgs, relative=relative,
correct_energy=correct_energy, solve_ode=solve_ode)

solverrun_mkm()函数通过relative参数,run_relative.py脚本通过--relative来控制是否使用相对能量进行计算。

Comments