Bond order parameter
結晶やガラスの局所的な環境を測る秩序変数のひとつにBond order parameterがある。
原子の配位数をとして、隣接する原子との距離ベクトルをとする。
このとき次の量を考える。
ここでは球面調和関数。
この量自体はSO(3)の作用に関して不変でないが、次のように組み合わせると不変になる。
このはBond(-orientational) order parameter(BOP)と呼ばれていて、例えばpymatgen.analysis.local_env
に実装されている。
しかし、BOPを組み合わせて得られる次の不変量(論文ではthird-order invariant と呼ばれていた)の手頃な実装はなさそうだった。
$$ W_{l} = \sum_{ m_{1} + m_{2} + m_{3} } \begin{pmatrix} l & l & l \\ m_{1} & m_{2} & m_{3} \end{pmatrix} \overline{Q}_{ lm_{1} } \overline{Q}_{ lm_{2} } \overline{Q}_{ lm_{3} } $$
ということで以下のとおり実装した。
折角書いたのでpymatgenにプルリクを投げようと思ったが、該当する秩序変数を求めるクラスが魔境と化していて何もわからないので止めておいた。