コンテンツにスキップ

構造緩和 (Relaxation)

FBTK には、Rust で実装された UFF (Universal Force Field) ベースの構造緩和エンジンが組み込まれています。

ランダム配置直後の原子の「重なり(Clash)」は MD 計算における最大の敵です。構造緩和は、ポテンシャルエネルギーを最小化することで、MD が安定して開始できる構造を提供します。内部では FIRE (Fast Inertial Relaxation Engine) アルゴリズムを採用しており、急峻な勾配に対しても高速に収束します。

FBTK では、ユニットセル全体 (System) と 分子単体 (Molecule) の両方に対して relax() メソッドを呼び出すことができます。


ユニットセルの緩和 (System Relaxation)

Section titled “ユニットセルの緩和 (System Relaxation)”

builder.build() で作成したユニットセル全体の重なりを解消します。これが最も一般的な使い方です。

# ユニットセルの構築
system = builder.build()
# 構築後の全体緩和 (verbose=True がデフォルト)
system.relax(steps=1000)
  • 計算セルの固定: 緩和中にセルのサイズや形状は変化しません。
  • 周期境界条件 (PBC): 常に PBC が有効な状態で最適化が行われます。
  • Unwrapping: 終了後、分子がセルをまたいでバラバラにならないよう、自動的に unwrap 処理が行われます。

外部ファイルから読み込んだ分子テンプレートなど、幾何構造が不自然な場合に単体で最適化を行います。

# ファイルから読み込み(座標が未最適化の可能性がある)
mol = fbtk.Molecule.from_file("raw_structure.mol")
# システムに追加する前に、分子単体で構造を整える
mol.relax(steps=500)
# 整形済みの分子をビルダーに追加
builder.add_molecule(mol, count=100)

System.relax() と Molecule.relax() は共通の引数を持ちます。

引数型説明
stepsint最大ステップ数 (デフォルト: 1000)。
thresholdfloat収束判定しきい値 [kcal/mol/Å] (デフォルト: 1.0)。
verboseboolTrue で緩和ログを表示 (デフォルト: True)。
num_threadsint使用スレッド数 (0: 自動設定)。
cutofffloat非結合相互作用のカットオフ半径 [Å] (デフォルト: 6.0)。
history_sizeint収束判定に使用する履歴のステップ数 (デフォルト: 10)。
=============================== uff-relax v1.0.6 ===============================
Atoms: 900 | Bonds: 800
Cutoff: 6.0 | Threshold: 1.0000 kcal/mol/Å
Threads: Auto | Charges: Active (Wolf)
Max Iter: 200 |
--------------------------------------------------------------------------------
| Fmax | FRMS | Total E |
Iter | (kcal/mol/Å) | (kcal/mol/Å) | (kcal/mol) | Status
--------------------------------------------------------------------------------
0 | 1559.6175 | 283.7289 | 305566.6245 |
10 | 556.1727 | 42.1182 | 8398.9682 |
...
187 | 1.9478 | 0.2722 | -234.8426 | FRMS-Conv
--------------------------------------------------------------------------------
=== Optimization Finished ===
Reason: FRMS-Conv
Total Time: 1.451s (Avg: 7.720ms / step)
Final Energy: -234.8426 kcal/mol
Final Fmax: 1.9478 kcal/mol/Å
Final FRMS: 0.2722 kcal/mol/Å
Min Distance: 1.0326 Å (Atoms 29 and 35)
(c) 2026 Forblaze Project
--------------------------------------------------------------------------------