MD計算での密度の計算方法(ASEスクリプト付き)

計算化学

g/cm3のただの密度なんて簡単に計算できるだろと思われる方が大半だと思いますが、原子・分子単位でかつ立方オングストロームという非常に小さい単位で書かれると混乱しますよね。質量を体積で割るだけなのに間違えたら恥ずかしい。というわけで計算方法の確認用の記事です。

スポンサーリンク

計算方法

密度ρ [g/cm3]を、質量[g] / 体積[cm3] の形で計算します。

$$
\rho = \frac{ \frac{\sum_i N_i \cdot M_i}{6.022 \times 10^{23}}}{V \cdot 10^{-24}}
$$

Ni:元素iの原子数、Mi:元素iの原子量、V:体積[Å3]

解説

原子1個の質量[g] = 原子量÷アボガドロ数
(原子量はその元素がアボガドロ数の個数あるときの質量である。なのでそれを割ればいい。)

あとは単位に気を付ける。

スポンサーリンク

Pythonで計算する場合

Si 100個、O 200個の場合のPythonの書き方です。

M = (28.0855 * 100 + 15.9994 * 200) / 6.022e23
V = 4338.0283 * 1e-24
density = M / V
#densityは2.300[g/cm3]
スポンサーリンク

ASEで計算する場合

ASEには質量と体積を取得する関数があるので、それを使って密度を出せます。

M = sum(atoms.get_masses()) / 6.022e23
V = atoms.get_volume() * 1e-24
density = M / V

コメント

タイトルとURLをコピーしました