借りものゝ命がひとつ
厚かましく使ひ込むで返せ

利用.fch文件计算电子密度的代码

最近在看密度泛函的书,于是就想自己写一个能计算电子密度的程序,这样就可以具体地了解一些体系。而且由于更早一些时候才正经学了基组的知识,想弄清楚怎么把市面上的基组放在程序中使用(之前写HF程序用的是STO-3G,不涉及到分裂价层,而且没有涉及更多的壳层)。所以写这么一个程序还是可以帮我学到很多东西的。

代码上传到GitHub:https://github.com/St-Maxwell/ElectronDensity

参考了Sobereva的文章:高斯fch文件与wfn波函数文件的介绍及转换方法利用wfn文件计算电子密度的代码的编写方法

电子密度

在空间 \(\mathbf{r}\)处找到任意一个电子的概率。

$$ \rho(\mathbf{r}) = N \int |\Psi(\mathbf{x}_1, \mathbf{x}_2,\ldots,\mathbf{x}_N)|^2\, d\omega_1 d\mathbf{x}_2\ldots d\mathbf{x}_N $$

将上式展开为空间轨道(分子轨道)\(\{\psi_a\}\),为

$$ \rho(\mathbf{r}) = 2 \sum\limits_a^{N/2} |\psi_a(\mathbf{r})|^2 $$

若是自然轨道,则为

$$ \rho(\mathbf{r}) = \sum\limits_a^{N/2} \lambda_a |\eta_a(\mathbf{r})|^2 $$

其中 \(\eta_a\)是自然轨道,\(\lambda\)是自然轨道占据数。
继续阅读利用.fch文件计算电子密度的代码

matplotlib绘图实例

感觉matplotlib还是比gnuplot等要好用一些。虽然以后并非一定不用gnuplot画图,但目前还是优先把matplotlib搞熟练。不过说实话,画图这事情其实不难。麻烦的是画出想要的各种样式的细节。所以我是一方面熟练用matplotlib画出图,另一方面也是想整理出一些习惯的样式。因为我有点想重复造个轮子(不是),写一个Fortran调用Python绘图的库。方便我的程序计算完成后直接绘出图,并且可以相对自动化地调整所需的样式。所以在这里整理一些常用的解决方案。

函数图像

import numpy as np
import matplotlib.pyplot as plt

def func(x):
  return np.exp(-np.sqrt(x))

x = np.linspace(1, 5, 81)
# x = np.arange(1, 5.05, 0.05)

fig, ax = plt.subplots()
ax.plot(x, func(x), '-', label='exp(-sqrt(x))')
plt.legend()
plt.show()

继续阅读matplotlib绘图实例

Python的量化编程练习

感觉只会Fortran可能不太好,所以想多掌握一些语言。但是之前看了看C++,觉得挺难的,所以一瞬放弃了。结果还是「人生苦短,我用Python」。利用NumPy,Python能够与Fortran混编。而且SciPy自带数值计算库,我估计很多时候都没必要自己用Fortran去实现。

由于单纯学语法没啥意思,所以想找一下具体的课题来练习。显然量化编程最合适了。量化编程的练习都是来自Crawdad的网站。网站里是用C++来实现的,我则是用Python写。按照惯例,在GitHub上开了个坑:py-qc

说起来我感觉Psi4应该是个不错的平台(可以看10.1021/acs.jctc.8b00286这篇文章),等更加熟练了Python和Numpy之后想尝试一下。

matplotlib绘制等高线图的几个细节

由于毕业课题涉及到绘制复合物相互作用能的势能面,所以我为了绘制得到较美观的势能面等高线图而仔细看了matplotlibcontourf函数的手册。

实际上一开始是想用gnuplot画图的,但我需要绘制的势能面有一个挺麻烦的特征:其数值的范围非常大。也就是在两个分子靠得比较近的较小的区域里,相互作用能的数值大约为几万(正值,是一种互相排斥的状态);而在两个分子远离的较大区域内,此时作用很弱,因此数值接近零。这种情况下,gnuplot在没有其他设置(我不太清楚是否真的有相关的选项)的情况下绘制出的图效果很不好。
继续阅读matplotlib绘制等高线图的几个细节

色彩通用设计——插图色彩的选择

本文翻译自Masataka Okabed的文章Color Universal Design (CUD)

实际上我没有全部翻译,主要是选择了与科研绘图相关的部分。这篇文章主要立足于使颜色的使用对色盲人群更为友好。但其实由于科研论文在很多时候也会被黑白打印,所以这种情况下确保插图的可读性也是很重要的。


继续阅读色彩通用设计——插图色彩的选择