分子動力学法(MD)を学び始めると、かなり早い段階で「力場」という言葉が出てきます。 ただ、この言葉は最初やや分かりにくいです。
- 力場とは何を指しているのか
- ポテンシャルとは何が違うのか
- それがMD計算のどこに関係しているのか
この記事では、このあたりを整理します。 結論を先に言うと、力場は「原子をどう相互作用させ、どう動かすか」を決めるルールの集まりです。
前回の記事はこちらです。

力場とは何か
MD計算では、原子を適当に動かしているわけではありません。 ある原子配置が与えられたときに、その配置に対してどんなエネルギーを持つか、どんな力が働くかを決める必要があります。
そのためのモデルが、力場です。
力場は一言でいえば、原子間相互作用を計算するためのモデル一式です。 どの原子同士がどのように引き合うか、反発するか、結合の長さや角度がどのようなエネルギーを持つか、といったルールがまとめて入っています。
通常のMDでよく使われるのは、古典力場です。 これは、電子状態をその都度量子力学的に計算するのではなく、原子核の運動を古典力学で扱い、その相互作用を経験的な式やパラメータで表したものです。
そのため、文脈によってはMDのことを古典MDと呼ぶこともあります。
ポテンシャルは配置で決まる位置エネルギーと考える
ポテンシャルという言葉は、まずは原子の配置で決まる位置エネルギーと考えると分かりやすいです。
高校物理では、位置エネルギーは「位置によって決まるエネルギー」として出てきます。 MDではそれを少し拡張して、1個の粒子の位置ではなく、系全体の原子配置によって決まるエネルギーとして考えると理解しやすいです。
つまりMDでいうポテンシャルエネルギーは、
- 原子AとBの距離
- 結合している原子の並び
- 角度や二面角
- 荷電粒子どうしの位置関係
などをまとめた配置全体に応じて決まります。
この意味で、「位置エネルギー」よりも、MDでは配置エネルギーに近い感覚で理解するとしっくりきます。 まずは馴染みのある「位置エネルギー」という言葉から入り、そこから「配置全体で決まる量」へイメージを広げると理解しやすくなります。
力場では全体のポテンシャルエネルギーを組み立てる
多くの力場では、系全体のポテンシャルエネルギー U を、いくつかの相互作用項の和として表します。
$$
U = U_{bond} + U_{angle} + U_{dihedral} + U_{LJ} + U_{coulomb}
$$
U_bond: 結合長に関する項U_angle: 結合角に関する項U_dihedral: 二面角に関する項U_LJ: ファンデルワールス相互作用などを表す項U_coulomb: 静電相互作用に関する項
もちろん、実際の力場によって項の形や数は異なります。 ただ、全体のポテンシャルエネルギーを複数の相互作用の和として表すという見方は、多くの古典力場に共通しています。
力はポテンシャルエネルギーの傾きから決まる
MDでは、ある配置に対してポテンシャルエネルギーが決まるだけでは不十分です。 その配置から、各原子にどちら向きの力がどれだけ働くかも必要です。
そこで出てくるのが、次の関係です。
$$
F = -\nabla U
$$
U: ポテンシャルエネルギーF: 原子に働く力
直感的には、エネルギー地形の傾きに沿って原子が動くということです。 坂の上にあるボールが低いほうへ転がるイメージに近いです。
ポテンシャルと力場はどう違うのか
この2つは似た文脈で使われますが、同じ意味ではありません。
最も簡単に言うと、
- ポテンシャル: 原子配置に対してエネルギーを与える関数
- 力場: そのポテンシャルを含めた、相互作用モデル全体
です。
ポテンシャルは「エネルギーの式」
ポテンシャルは、原子がどう配置されているときにエネルギーが高いか低いかを決めるものです。 たとえば、原子が近づきすぎると強く反発し、少し離れた位置で安定になる、という関係を式で表します。
ポテンシャルは、エネルギーの地形そのものと捉えると分かりやすいです。 古典力場では、その地形を結合項、角度項、二面角項、非結合項などの組み合わせとして表します。
力場は「計算に使うルール一式」
一方の力場は、単一の式だけを指すとは限りません。 実際には、
- 結合の伸び縮み
- 結合角の変化
- 二面角の回転
- ファンデルワールス相互作用
- 静電相互作用
など、複数の相互作用をまとめて扱います。
さらに、それぞれに必要なパラメータも含めて、実際にMD計算を回すための形になっているものを力場と呼びます。
そのため、 ポテンシャルはエネルギーの考え方、力場はそれを実際の計算で使える形にまとめたもの と説明すると分かりやすいです。
力場の中では何が計算されているのか
力場の中では、原子配置に応じていくつかのエネルギー項が計算されます。 細かい式の詳細は別記事に回すとして、ここでは全体像だけ押さえれば十分です。
代表的な相互作用
多くの力場では、たとえば次のような項を足し合わせて全体のエネルギーを作ります。
- 結合長に関する項
- 結合角に関する項
- 二面角に関する項
- 非結合相互作用に関する項
これらを合計して、その瞬間の原子配置に対するポテンシャルエネルギーが決まります。
ポテンシャルエネルギーは相対的に見る
同じ系・同じ力場の中では、一般にポテンシャルエネルギーが低い配置ほど安定な候補とみなされます。 逆に、高いエネルギーを持つ配置は不安定で、力によって別の配置へ動こうとします。
ただし、ここで見るべきなのは絶対値そのものよりも相対的な高低です。 原子数や組成、使っている力場、相互作用の扱いが異なる計算どうしでは、PotEng の値をそのまま比較しても意味を持たないことが多いです。
比較しやすいのは、たとえば次のように条件をそろえた場合です。
- 同じ系・同じ力場で、構造Aと構造Bを比べる
- 同じシミュレーションの中で、時間変化としてエネルギーを見る
- 同じ定義のもとで、ある変化の前後のエネルギー差を見る
実際のMD計算ではどこに出てくるのか
力場は概念として出てくるだけでなく、実際の計算設定そのものに直結しています。
入力ファイルでは力場の指定が必要になる
LAMMPSなどのMDソフトでは、どの力場を使うか、どの相互作用を有効にするか、どのパラメータを読むかを設定します。
つまり、力場を決めることは、原子がどう動くかのルールを決めることです。 ここが変われば、得られる構造や温度、圧力、拡散の傾向まで変わり得ます。
LAMMPSのThermo出力ではエネルギー項として現れる
LAMMPSでは、計算中の状態が thermo 出力に並びます。 ここで力場との関係を見るうえで重要なのが、PotEng と TotEng です。
PotEng: その時点の原子配置に対するポテンシャルエネルギーKinEng: 原子の運動に対応する運動エネルギーTotEng: それらを合わせた全エネルギー
PotEng は、まさにその瞬間の原子配置に対して、力場が与えているエネルギーです。 原子配置が変われば PotEng も変わり、その傾きから各原子に働く力が決まります。
実際の thermo 出力を見ると、たとえば次のようになります。
Per MPI rank memory allocation (min/avg/max) = 20.28 | 20.28 | 20.28 Mbytes
Step Temp Press TotEng Density PotEng KinEng
0 295.56492 -324.92516 -4711.3596 0.98704079 -5591.5014 880.14188
1000 296.8419 -476.0955 -4662.4152 0.99264869 -5546.3597 883.94448
2000 296.83123 -1270.3522 -4618.5459 0.96376112 -5502.4586 883.91272
3000 294.47596 -1045.2607 -4714.4476 0.97894187 -5591.3467 876.89912
4000 300.59416 293.70299 -4650.5977 0.98493058 -5545.7158 895.11809
5000 302.5457 203.01629 -4725.1968 1.0014175 -5626.1263 900.92944
6000 301.48258 -233.8252 -4696.8448 0.97085571 -5594.6084 897.76364
7000 287.74655 -380.12134 -4697.6618 0.99345752 -5554.5219 856.86008
8000 307.41495 -469.59686 -4632.4132 0.97811379 -5547.8424 915.42924
9000 302.74753 186.57795 -4627.305 0.98492432 -5528.8354 901.53045
10000 300.73838 729.52328 -4708.8329 0.99270709 -5604.3805 895.54754
Loop time of 83.5752 on 1 procs for 10000 steps with 1500 atoms
この表では、各ステップごとに温度、圧力、全エネルギー、密度、ポテンシャルエネルギー、運動エネルギーが出ています。 ここで見るべきなのは、PotEng が力場と直接つながっている量だという点です。
もちろん、ログを見ただけで力場の中身が分かるわけではありません。 ただ、MD計算では「力場が原子配置に応じてポテンシャルエネルギーを与え、その結果が PotEng として現れる」と考えると、入力設定と出力結果のつながりが見えやすくなります。
また、PotEng を見るときは、値そのものだけでなく、時間とともに大きく下がり続けたり上がり続けたりしていないかも重要です。 平衡化が進むと、PotEng はある範囲で揺らぎながら落ち着くことが多く、これは平衡状態に近づいているかを見るための手がかりの一つになります。
よくある誤解
力場は「力」そのものを直接書いたものではない
力場という名前から、力を直接指定しているように見えるかもしれません。 しかし実際には、多くの場合はまず原子配置に対するポテンシャルエネルギーの形を決め、そこから力を計算しています。
力場があれば何でも正しく計算できるわけではない
力場は、現実の原子の動きをそのまま完全に再現するものではありません。 どの系に向いているか、どのような現象をどこまで再現できるかには限界があります。
また、力場にはいくつか種類があり、対象とする系や見たい現象に合ったものを選ぶ必要があります。
そのため、MDの結果を見るときは 「この力場で、どんな前提のもとに計算しているか」 を意識する必要があります。
ポテンシャルは1個の原子の位置だけで決まるわけではない
MDでいうポテンシャルエネルギーは、1個の粒子の高さのような単純な話ではなく、系全体の原子配置で決まる量です。
この点を押さえると、「ポテンシャルエネルギー」という言葉の意味もつかみやすくなります。
まとめ
力場とは、MD計算で原子どうしの相互作用を計算するためのモデル一式です。
理解のポイントをまとめると、次のようになります。
- ポテンシャルは、原子の配置で決まる位置エネルギーと考えると分かりやすい
- MDでは、そのポテンシャルエネルギーの傾きから力を計算する
- 力場は、ポテンシャルを含む相互作用ルールとパラメータの集まりである
- どの力場を使うかで、シミュレーション結果は変わりうる
最初の理解としては、 ポテンシャルは原子配置に対するエネルギー、力場はそのエネルギーを使って原子を動かすための実用的なルール一式 と捉えておけば十分です。
コメント