# Qn ネットワーク解析 ## 目的 RMC_POT の FNC や Topology を作成するためには、 「どの原子同士が局所構造を構成しているか」 を決定する必要がある。 本ライブラリでは、この局所構造を ``` Central │ Bridge │ Second ``` という三層構造として定義する。 SiO₂ の場合は ``` Si │ O │ Si ``` となる。 この構造をネットワークとして解析し、 Qn 値や Bond 情報を生成する。 --- # ネットワークモデル 本ライブラリでは ネットワークを ``` Central ----- Bridge ----- Second ``` という一般形で表現する。 各原子種は JSON から指定される。 例えば SiO₂ では ``` Central : Si Bridge : O Second : Si ``` である。 この設計により、 解析アルゴリズム自体は SiO₂ 固有ではない。 --- # Qn の定義 Qn は 「Central に結合している Bridge のうち、 別の Central とも結合している Bridge の本数」 として定義される。 例えば ``` Si │ O─────┼─────O │ │ Si Si ``` では ``` Q2 ``` となる。 Bridge が他の Central に接続していない場合は Non-bridging Oxygen (NBO) とみなされる。 --- # 解析手順 解析は概ね次の順で行われる。 ``` POSCAR ↓ 原子種抽出 ↓ Central 抽出 ↓ Bridge 抽出 ↓ Second 抽出 ↓ Central-Bridge 探索 ↓ Bridge-Second 探索 ↓ Bridge 判定 ↓ Qn 判定 ↓ Bond 情報生成 ↓ Angle 情報生成 ↓ FNC Pair 生成 ``` --- # 1. 原子種抽出 POSCAR に含まれる原子種を読み込み、 JSON に定義された - central_types - bridge_types - second_types へ分類する。 この段階では距離判定は行わない。 --- # 2. Central–Bridge 探索 Central と Bridge の近傍探索を行う。 探索方法は ``` cutoff ``` または ``` nearest ``` の二種類である。 ### cutoff 距離範囲内のすべてを採用する。 ``` first_min ~ first_max ``` の範囲で判定する。 ### nearest 距離条件を満たした候補から ``` N 個 ``` だけ採用する。 SiO₂ では ``` nearest = 4 ``` を利用することが多い。 これにより ``` SiO4 ``` 四面体が安定して得られる。 --- # 3. Bridge–Second 探索 Bridge から見た Second 原子を探索する。 方法は二種類ある。 ## second_use_first_network = false Bridge を中心に 改めて距離探索を行う。 ``` O ↓ Si ``` を距離だけで探索する。 最も単純な方法である。 --- ## second_use_first_network = true Bridge–Second を 新たに探索しない。 すでに求めた ``` Central ↓ Bridge ``` のネットワークを反転し、 ``` Bridge ↓ Second ``` を構成する。 こちらの方が Central–Bridge と Bridge–Second の整合性が保たれるため、 SiO₂ ではこちらを推奨する。 --- # 4. Bridge 判定 Bridge ごとに ``` Bridge ↓ Second ``` が何個存在するか調べる。 Central 自身は除外し、 ``` 別の Central ``` へ接続しているものだけを ``` Bridge ``` とみなす。 --- # 5. Qn 判定 Central ごとに ``` Bridge ↓ 別 Central ``` となっている Bridge を数える。 例えば ``` 4 本 ↓ Q4 ``` ``` 3 本 ↓ Q3 ``` ``` 2 本 ↓ Q2 ``` となる。 Qn は Bridge の本数ではなく、 Bridge のうち 「他の Central と共有されているもの」 だけを数える。 --- # 解析結果 解析後には 次の情報が生成される。 ``` Central ごとの Qn Bridge 情報 Bond 情報 Angle 情報 FNC Pair ``` これらは RMC の書式とは独立した 抽象ネットワーク情報である。 以降の Writer は この情報だけを利用して RMC_POT の - FNC - Topology を書き出す。 つまり ``` 解析 ↓ 抽象ネットワーク ↓ RMC ファイル ``` という三段階構成になっている。 これにより、 解析アルゴリズム と 出力フォーマット を完全に独立させている。