AENET ソルバー
概要
AenetSolver は、ODAT-SE の odatse.solver.SolverBase を継承したソルバークラスです。
AENET の predict.x をサブプロセスとして実行し、構造テンプレートにパラメータを代入して
原子間エネルギーを計算します。
ソルバーの仕組み
evaluate メソッドが呼ばれると、以下の処理が行われます:
作業ディレクトリ
Log{step}_{iset}/を作成predict.inと ANN ポテンシャルファイルをコピーテンプレートファイル内のプレースホルダー(例:
value_01)をパラメータ値で置換し、入力構造ファイルを生成predict.xを実行predict.outから全エネルギーと原子数を抽出エネルギー/原子数(eV/atom)を R-factor として返却
ソースコード構造
src/AenetSolver/
__init__.py # Solver クラスのエクスポート
_main.py # CLI エントリポイント (odatse.initialize + algorithm dispatch)
aenet.py # Solver クラス本体
入力ファイル
input.toml
ODAT-SE 標準の TOML 設定ファイルです。
[base]
dimension = 1
output_dir = "output"
[solver]
name = "aenet"
[solver.config]
aenet_exec_file = "predict.x" # predict.x のパス
aenet_ann_potential = "N.5t-5t.ann" # ANN ポテンシャルファイル
aenet_template_file = "template.xsf" # テンプレート構造ファイル (デフォルト)
aenet_input_file = "structure_data.xsf" # 生成される入力ファイル名 (デフォルト)
bulk_output_file = "predict.in" # AENET 設定ファイル (デフォルト)
[solver.param]
string_list = ["value_01"] # テンプレート内のプレースホルダー
[solver.post]
remove_work_dir = false # 計算後に作業ディレクトリを削除するか
[algorithm]
name = "mapper" # 使用するアルゴリズム
label_list = ["z"]
[algorithm.param]
min_list = [0.8]
max_list = [1.4]
num_list = [101]
solver.config セクション
パラメータ |
デフォルト値 |
説明 |
|---|---|---|
|
|
AENET predict.x 実行ファイルのパス |
|
|
学習済み ANN ポテンシャルファイル |
|
|
構造テンプレートファイル |
|
|
生成される構造入力ファイル名 |
|
|
AENET 設定ファイル |
solver.param セクション
パラメータ |
デフォルト値 |
説明 |
|---|---|---|
|
|
テンプレート内で置換するプレースホルダーのリスト |
テンプレートファイル
テンプレートファイル (template.xsf) は XSF 形式の構造ファイルで、
最適化パラメータの位置にプレースホルダーを記述します。
ATOMS
N 0.0000000000 0.0000000000 0.0000000000
N 0.0000000000 0.0000000000 value_01
この例では value_01 が N-N 結合距離に対応し、アルゴリズムによって最適化されます。
predict.in
AENET 予測計算の設定ファイルです。
TYPES
1
N
NETWORKS
N N.5t-5t.ann
FORCES
FILES
1
structure_data.xsf
実行方法
CLI 実行:
odatse-aenet input.toml
MPI 並列実行:
mpiexec -np 4 odatse-aenet input.toml
スクリプトから直接実行:
python3 src/main.py input.toml