openmx源码分析:openmx主文件

在openmx/source里的最重要的文件openmx.c。

下面简要罗列源码的思路:

1.定义CPU计算核数、MD计算迭代次数、统计时间用的一些临时变量。接下来进行MPI初始化,为并行计算做准备,openmx3.8版本只有并行版本。接着统计时间准备,便于监视计算耗时。最后检查输入变量。

2.确定openmx并行化使用的线程数,使用MPI_Bcast函数将来源于序列号为Host_ID的进程的消息广播发送到组内所有进程。

设置完MPI后,进入判断全局参数的过程比如:

判断是否进行NEB计算

分配计算时间,并显示问候信息。

接着读入输入文件

在函数init_alloc_first()中定义了一个数组alloc_first[],每一个位对应一些选项,例如

跟着文件读入的内容赋值:

初始化内存路径:

进行全局初始化:

开始DFT计算,

检查-mltest2模式,检查-forcetest2模式,检查强制一致性,代码见附录。

原胞和内部坐标优化:

进入核心计算部分自洽场-密度泛函(SCF-DFT)计算。在分子动力学仿真MD和几何优化(Geometry Optimization)中,前一步产生的重启文件(restart files)在后一步中可以加速借助于外插机制的收敛过程。被使用的之前产生的分子动力学或者几何优化的数目可以用关键字scf.ExtCharg.History来控制。

上面的过程包含了常规的密度泛函计算,后面的代码包括一些后处理和非平衡格林函数的计算。

附录:

全代码openmx.c

留下评论