JSON 設定ファイル
概要
本ライブラリでは、 解析アルゴリズムのほとんどを JSON ファイルから設定できるようになっている。
これにより、
解析対象元素
Neighbor 判定
Bond Parameter
Angle Parameter
FNC Type
などをプログラムを変更せずに切り替えられる。
現在は SiO₂ 用設定ファイルを利用しているが、 JSON を変更することで他材料へ適用できるよう設計されている。
設定の流れ
処理全体では
POSCAR
↓
JSON
↓
QnNetworkBuilder
↓
QnNetworkAnalysis
↓
RmcConstraintWriter
という流れになる。
Builder は JSON を各クラスへ渡すだけであり、
解析内容そのものは JSON に依存する。
network
network は
Central
↓
Bridge
↓
Second
ネットワークを定義する。
代表的な設定は
central_types
bridge_types
second_types
である。
SiO₂ では
Central = Si
Bridge = O
Second = Si
となる。
この三種類の原子が ネットワーク解析の対象となる。
Neighbor 探索
Neighbor 探索では
first
と
second
を別々に定義する。
First
Central
↓
Bridge
探索である。
ここでは
探索方法
最小距離
最大距離
最近接数
などを設定できる。
Second
Bridge
↓
Second
探索である。
こちらも
最小距離
最大距離
を設定できる。
second_use_first_network
この設定は 本ライブラリの重要な項目である。
false
では
Bridge
↓
Second
を改めて距離探索する。
true
では
Central
↓
Bridge
ネットワークを反転して Second を構成する。
SiO₂ では
true
の方が ネットワーク整合性が保たれる。
Bond Parameter
Topology の
Bond
情報を定義する。
一般には
Atom Type
平衡距離
力定数
を指定する。
Writer は この情報を
[ bonds ]
へ書き出す。
Angle Parameter
Topology の
Angle
を定義する。
一般には
Angle Type
平衡角
力定数
を指定する。
Writer は
[ angles ]
へ変換する。
Atom 情報
Topology の
[ atoms ]
には
Atom Type
Mass
Charge
などが必要となる。
これらも JSON に定義されている。
現在の実装では
Si
O
用の設定を利用する。
FNC Type
FNC は
Type
↓
距離範囲
で管理される。
JSON では
Type 1
↓
1.55〜1.75 Å
などを定義する。
Writer は これを
type_id
↓
(rmin,rmax)
へ変換し、
FNC Header を生成する。
JSON の役割
JSON は
解析
と
Writer
の両方で利用される。
ただし、 利用内容は異なる。
解析では
Neighbor
Qn 判定
元素
を利用する。
Writer では
Bond
Angle
Mass
Charge
FNC Range
を利用する。
SiO₂ に依存する設定
現在の JSON は SiO₂ を対象としている。
具体的には
Central = Si
Bridge = O
Second = Si
という前提である。
さらに
nearest = 4
で
SiO₄
四面体を構成する。
また
O-Si-O
角度も 四面体を想定している。
このため、
JSON は変更可能であっても、 その値自体は SiO₂ 固有である。
他材料への適用
解析アルゴリズム自体は
Central
↓
Bridge
↓
Second
という一般モデルで設計されている。
したがって、
例えば
P-O-P
B-O-B
Ge-O-Ge
Al-O-Si
のような 架橋酸素ネットワークには 比較的容易に適用できる。
変更が必要なのは
原子種
Neighbor 距離
Bond Parameter
Angle Parameter
FNC Range
程度である。
適用が難しい材料
一方で
Fe
Ni
Cu
などの 金属ガラスや
液体
単純結晶
では、
Central
↓
Bridge
↓
Second
という構造そのものが 意味を持たない場合が多い。
このような系では JSON を変更するだけでは対応できず、 QnNetworkAnalysis の 解析アルゴリズム自体を拡張する必要がある。
設計思想
本ライブラリでは
アルゴリズム
↓
JSON
ではなく
アルゴリズム
+
JSON
という設計になっている。
つまり、
JSON によって
元素
距離
Parameter
は変更できるが、
Central-Bridge-Second
というネットワークモデル自体は プログラム側が持っている。
このため、
SiO₂ 系や 類似したネットワーク材料では 高い再利用性を持つ一方、
ネットワーク構造の概念が異なる材料では 解析アルゴリズムの拡張が必要となる。
次章では、 現在の SiO₂ 実装を基に、 どこまで他材料へ展開できるか、 また今後の拡張方針について考察する。