レナード・ジョーンズポテンシャル

レナード・ジョーンズポテンシャル

レナード・ジョーンズポテンシャルは、原子間の相互作用をモデル化するために使用されるポテンシャル関数です。

一般的な形式は次のようになります:

$$
V(r) = 4 \epsilon \left[ \left( \frac{\sigma}{r} \right)^{12} - \left( \frac{\sigma}{r} \right)^6 \right]
$$

ここで、$ ( V(r) ) $はポテンシャルエネルギー、$ ( r ) $は原子間の距離、$ ( \epsilon ) $はポテンシャルの深さを表すパラメータ、$ ( \sigma ) $は原子間の最小距離(ポテンシャルがゼロとなる距離)を表すパラメータです。

Pythonでこのポテンシャルをグラフ化するために、適切なパラメータを選び、原子間距離の範囲でポテンシャルエネルギーを計算し、プロットします。

以下にサンプルコードを示します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import numpy as np
import matplotlib.pyplot as plt

# レナード・ジョーンズポテンシャルの定義
def lennard_jones_potential(r, epsilon, sigma):
return 4 * epsilon * ((sigma / r)**12 - (sigma / r)**6)

# パラメータの設定
epsilon = 1.0 # ポテンシャルの深さ
sigma = 1.0 # 最小距離

# 距離の範囲
r_values = np.linspace(0.9 * sigma, 3 * sigma, 1000)

# ポテンシャルの計算
potential_values = lennard_jones_potential(r_values, epsilon, sigma)

# グラフ化
plt.plot(r_values, potential_values)
plt.xlabel('Distance (σ)')
plt.ylabel('Potential Energy (ε)')
plt.title('Lennard-Jones Potential')
plt.grid(True)
plt.show()

このコードは、レナード・ジョーンズポテンシャルを計算し、原子間距離の範囲でポテンシャルエネルギーをプロットします。
パラメータ$ ( \epsilon ) $と$ ( \sigma ) $を変更することでポテンシャルの形状を調整することができます。

[実行結果]

ソースコード解説

ソースコードの構成と各部分の説明を示します。

1. ライブラリのインポート:

1
2
import numpy as np
import matplotlib.pyplot as plt
  • NumPy: 数値計算を行うためのライブラリ。
    数値的な操作や配列演算を効率的に行うために使用されます。
  • Matplotlib: グラフやプロットを作成するためのライブラリ。
    様々な種類の図やグラフを描画する機能を提供します。

2. レナード・ジョーンズポテンシャルの関数定義:

1
2
def lennard_jones_potential(r, epsilon, sigma):
return 4 * epsilon * ((sigma / r)**12 - (sigma / r)**6)
  • lennard_jones_potential: レナード・ジョーンズポテンシャルを計算する関数。
    r原子間距離epsilonポテンシャルの深さを表すパラメータ、sigma最小距離を表すパラメータです。

3. パラメータの設定:

1
2
epsilon = 1.0  # ポテンシャルの深さ
sigma = 1.0 # 最小距離
  • epsilon: ポテンシャルの深さを示すパラメータ。
    ポテンシャルの最小値となるポテンシャルエネルギーを表します。
  • sigma: 原子間の最小距離を示すパラメータ。
    ポテンシャルがゼロとなる距離を表します。

4. 距離の範囲の設定:

1
r_values = np.linspace(0.9 * sigma, 3 * sigma, 1000)
  • np.linspace: 指定した範囲内で等間隔の数値を生成するNumPyの関数。
    ここでは、0.9 * sigmaから3 * sigmaの範囲で$1000$個の点を生成しています。

5. ポテンシャルの計算:

1
potential_values = lennard_jones_potential(r_values, epsilon, sigma)
  • lennard_jones_potential関数を使用して、距離の範囲に対するレナード・ジョーンズポテンシャルの値を計算します。

6. グラフの作成:

1
2
3
4
5
6
plt.plot(r_values, potential_values)
plt.xlabel('Distance (σ)')
plt.ylabel('Potential Energy (ε)')
plt.title('Lennard-Jones Potential')
plt.grid(True)
plt.show()
  • plt.plot: 指定された$x座標$と$y座標$のデータから折れ線グラフを作成します。
  • plt.xlabel: $x軸$のラベルを設定します。
  • plt.ylabel: $y軸$のラベルを設定します。
  • plt.title: グラフのタイトルを設定します。
  • plt.grid: グリッド線を表示するかどうかを設定します。
  • plt.show(): グラフを表示します。

これにより、レナード・ジョーンズポテンシャルの距離に対するポテンシャルエネルギーの関係を示すグラフが生成されます。

グラフ解説

[実行結果]

このグラフは、レナード・ジョーンズポテンシャルを可視化したものです。
ポテンシャルエネルギー $(( V ))$は、原子間の距離 $(( r ))$の関数として表されます。
以下に、グラフに表示される内容を詳しく説明します。

x軸(Distance (σ)):

原子間の距離 $(( r ))$を表します。
単位はレナード・ジョーンズポテンシャルのパラメータ$ ( \sigma ) $と同じです。
これは最小距離を$1$としたときの相対的な距離を表します。

y軸(Potential Energy (ε)):

ポテンシャルエネルギー$(( V ))$を表します。
単位はレナード・ジョーンズポテンシャルのパラメータ$ ( \epsilon ) $と同じです。
これは相互作用する原子間で生じるポテンシャルエネルギーの深さを示します。

レナード・ジョーンズポテンシャルの形状:

グラフは、原子間距離に対するポテンシャルエネルギーの関係を表しています。
この関数は、原子間距離が大きくなるにつれて急速に減少し、原子間距離が最小距離に近づくにつれてポテンシャルエネルギーが極小値を持ちます。

その後、原子間距離が大きくなるにつれてポテンシャルエネルギーがゆっくりと増加します。
これは、原子が非常に近いときと非常に遠いときには引力が働き、一定の距離で反発力が働くというレナード・ジョーンズポテンシャルの特徴を示しています。

このグラフを用いることで、レナード・ジョーンズポテンシャルによって定義される原子間の相互作用のエネルギーを直感的に理解することができます。