README0
RMC Topology / FNC Generator
概要
本モジュールは、VASP/POSCAR 構造から局所ネットワーク構造を解析し、
RMC_POT の構造拘束入力である FNC (*.fnc) および
Topology (*.top) を自動生成するためのライブラリである。
もともとは qn_network.py という単一スクリプトとして実装されていたが、
RMC-DFT ワークフローへ組み込むためにライブラリ化され、
役割ごとにクラスへ分割された。
本ライブラリの目的は、
VASP 構造から局所ネットワークを抽出する
Qn 構造を解析する
RMC_POT が理解できる拘束形式へ変換する
RMC-DFT ワークフロー中で自動生成できるようにする
ことである。
本ライブラリは 一般的な構造解析ライブラリではない。 RMC_POT の入力生成を目的とした専用ライブラリであり、 RMC_POT の FNC および Topology の考え方に沿って設計されている。
設計方針
本ライブラリでは、一つの巨大なクラスへ全処理を書くことを避け、 責務ごとにクラスを分離している。
各クラスは次のような責務のみを持つ。
POSCAR
│
▼
VaspStructure
│
▼
QnNetworkAnalysis
│
▼
RmcConstraintWriter
│
▼
*.fnc / *.top
全体をまとめる入口として
QnNetworkBuilder
のみを利用する。
利用者は Builder を呼び出すだけでよく、 解析の詳細を意識する必要はない。
クラス構成
VaspStructure
構造情報のみを管理するクラスである。
責務
POSCAR 読み込み
格子情報保持
原子情報保持
PBC 距離計算
PBC ベクトル計算
角度計算
このクラスは
Qn
Topology
FNC
については一切知らない。
純粋な構造情報クラスとして実装されている。
QnNetworkAnalysis
ネットワーク解析を担当するクラスである。
本ライブラリの中心となるクラスである。
責務
原子種抽出
Neighbor 探索
Qn 判定
Bond 情報生成
Angle 情報生成
FNC 用 Pair 生成
解析結果は
Qn 分布
Bond 情報
Bridge 情報
FNC Pair
として保持される。
解析結果そのものは RMC の書式とは無関係である。
つまり、
構造
↓
解析
↓
抽象ネットワーク情報
までがこのクラスの責務である。
RmcConstraintWriter
解析結果を RMC_POT の入力形式へ変換するクラスである。
責務
FNC 出力
Topology 出力
解析処理は一切行わない。
入力は
QnNetworkAnalysis
のみである。
QnNetworkBuilder
ライブラリ利用者が利用する入口である。
Builder は
POSCAR
↓
Structure
↓
Analysis
↓
Writer
を順番に実行する。
利用者は
builder = QnNetworkBuilder.from_poscar(...)
builder.write_all(...)
のみを呼び出せばよい。
Builder 自身は解析ロジックを持たない。
本ライブラリの特徴
本ライブラリでは
「構造解析」
と
「RMC 入力生成」
を明確に分離している。
そのため
解析アルゴリズム
を変更しても
Writer
を変更する必要はない。
逆に
RMC_POT の書式変更
があっても
解析アルゴリズム
へ影響しない。
この責務分離は、 今後 RMC_POT 以外の拘束形式へ対応する場合にも有効である。
RMC_POT における FNC と Topology
RMC_POT では 局所構造を維持する方法として 大きく二種類の方法が存在する。
FNC (Fixed Neighbour Constraint)
Topology (Bonded Potential)
本ライブラリは 両方の入力ファイルを生成できる。
両者は目的は似ているが、 拘束方法は全く異なる。
以降の章では、
Qn ネットワーク解析
FNC
Topology
について順に解説する。