構造緩和 (Relaxation)
Relaxation
Section titled “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)仕様と留意事項
Section titled “仕様と留意事項”- 計算セルの固定: 緩和中にセルのサイズや形状は変化しません。
- 周期境界条件 (PBC): 常に PBC が有効な状態で最適化が行われます。
- Unwrapping: 終了後、分子がセルをまたいでバラバラにならないよう、自動的に
unwrap処理が行われます。
分子の整形 (Molecule Beautify)
Section titled “分子の整形 (Molecule Beautify)”外部ファイルから読み込んだ分子テンプレートなど、幾何構造が不自然な場合に単体で最適化を行います。
# ファイルから読み込み(座標が未最適化の可能性がある)mol = fbtk.Molecule.from_file("raw_structure.mol")
# システムに追加する前に、分子単体で構造を整えるmol.relax(steps=500)
# 整形済みの分子をビルダーに追加builder.add_molecule(mol, count=100)relax() の共通引数
Section titled “relax() の共通引数”System.relax() と Molecule.relax() は共通の引数を持ちます。
| 引数 | 型 | 説明 |
|---|---|---|
steps | int | 最大ステップ数 (デフォルト: 1000)。 |
threshold | float | 収束判定しきい値 [kcal/mol/Å] (デフォルト: 1.0)。 |
verbose | bool | True で緩和ログを表示 (デフォルト: True)。 |
num_threads | int | 使用スレッド数 (0: 自動設定)。 |
cutoff | float | 非結合相互作用のカットオフ半径 [Å] (デフォルト: 6.0)。 |
history_size | int | 収束判定に使用する履歴のステップ数 (デフォルト: 10)。 |
verbose=True 時の出力例
Section titled “verbose=True 時の出力例”=============================== uff-relax v1.0.0 ===============================Atoms: 900 | Bonds: 800Cutoff: 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-ConvTotal Time: 1.451s (Avg: 7.720ms / step)Final Energy: -234.8426 kcal/molFinal Fmax: 1.9478 kcal/mol/ÅFinal FRMS: 0.2722 kcal/mol/Å (c) 2026 Forblaze Project--------------------------------------------------------------------------------