コンテンツにスキップ

構造緩和 (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.0 ===============================
Atoms: 900 | Bonds: 800
Cutoff: 6.0 | Threshold: 1.0000 kcal/mol/Å
Max Iter: 200 | Threads: Auto
--------------------------------------------------------------------------------
| 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 |
...
180 | 2.6285 | 0.3009 | -227.7023 |
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/Å
(c) 2026 Forblaze Project
--------------------------------------------------------------------------------