在这里总结下kMC中的数学原理,均为本人的理解和原创,如有错误欢迎指正。

在动力学蒙特卡洛kMC模拟中,因为组态变化的时间间隔很长,体系完成的连续两次演化是独立的,无记忆的,所以这个过程是一种典型的马尔可夫过程(Markov process)。
下面先定义下符号:


configuration: $u, v, ... $
event: $ \alpha, \beta , ... $
transition rate($v \rightarrow u$) : $ \omega_{u v} $

Master Equation

体系的时间演变通过Markov master equation来描述
$$ \bar{p}_{u}(t) = \sum_{v}^{}{\omega_{u v}p_{v}(t) - \omega_{v u}p_{u}(t)} $$
其中${p}_{u}(t)$是体系在时间$t$处在$u$的概率。

Transition Matrix

类似统计力学中的Probability Vector, kMC中也应该有一个向量来表示体系的概率状态,在这里我用一个向量$\pi(t)$表示
$$
\pi(t) = \left[\begin{matrix}
p_{u}(t)\\
p_{v}(t)\\
p_{o}(t)\\
.\\
.\\
.\\
\end{matrix} \right]
$$
其中向量中的entry中${p}_{u}(t)$表示体系在时间$t$处在$u$的概率
则整个kMC的体系的演化过程也就是这个状态向量的演变过程。有向量的演变,则必须有相应的转移矩阵的存在即所谓的markov矩阵,Transfer/Transition Matrix。
在这里transition matrix用$\omega$表示
$$
\omega =
\left[\begin{matrix}
k_{u \rightarrow u} & k_{v \rightarrow u} & k_{o \rightarrow u} & …\\
k_{u \rightarrow v} & k_{v \rightarrow v} & k_{o \rightarrow v} & …\\
k_{u \rightarrow o} & k_{v \rightarrow o} & k_{o \rightarrow o} & …\\
. & . & . & …\\
. & . & . & …\\
. & . & . & …\\
\end{matrix} \right]
$$
若模拟的网格的大小为$300 \times 300$,且每个位点可能的状态为$3$个(例如CO氧化反应),则方阵$\omega$的为$3^{n \times n}$阶方阵,总共有$3^{2n^{2}}$个元素,可见如果要模拟的体系很大的时候,这个矩阵式非常非常非常的大的(重要的事情重复三遍)!

矩阵中的每一列针对的是起始于同一种configuration,每一行针对的是同一种终态configuration。
例如transfer matrix中的第$u$列的列向量$V_{u}$就等于configuration为$u$时的事件的列表,
$$
V_{u} = \left[\begin{matrix}
\alpha_{u \rightarrow u}\\
\alpha_{u \rightarrow v}\\
\alpha_{u \rightarrow o}\\
.\\
.\\
.\\
\end{matrix} \right]
=
\left[\begin{matrix}
k_{u \rightarrow u}\\
k_{u \rightarrow v}\\
k_{u \rightarrow o}\\
.\\
.\\
.\\
\end{matrix} \right]
$$
其中不为0的entry为可发生事件的发生速率。

Ensemble Average

通过多个trajectory可以得到多个体系的演化过程,大量的系综平均可以得到近似的$p_{u}(t)$值.
$$
traj(i): \pi_{1}^{i} \rightarrow \pi_{2}^{i} \rightarrow \pi_{2}^{i} \rightarrow … \\
traj(j): \pi_{1}^{j} \rightarrow \pi_{2}^{j} \rightarrow \pi_{2}^{j} \rightarrow … \\
traj(s): \pi_{1}^{s} \rightarrow \pi_{2}^{s} \rightarrow \pi_{2}^{s} \rightarrow … \\
.\\
.\\
.
$$

总结

因此,通过状态向量和转移矩阵就可以构成kMC中的Markov链,当然这只是将kMC过程抽象出来的理论模型,由于转移矩阵过于庞大,只能用所谓的trajectory的方法来做系综平均的方法来进行kMC模拟。

Comments