力場自動生成(自己学習ハイブリッドモンテカルロ法)の使用方法¶
使用の流れ¶
初期構造1つを、Advance/NanoLaboなどを利用してユーザーが作成します。
初期構造を元に、教師データの生成・力場の学習が自動的に進められます。
作成した力場ファイルを用いて、分子動力学計算を実施します。 計算には、当社にて Neural Network Potential の機能を追加したLAMMPSを使用します。
各手順の説明¶
手順1 初期構造の作成¶
教師データとして使用したいサンプルの原子構造を用意し、それを元に、Quantum ESPRESSOのSCF計算用の入力ファイルを作成します。 当社製品のAdvance/NanoLaboを使っていただくと、cif等の原子構造ファイルから簡単に入力ファイルを生成できます。
ファイル中の擬ポテンシャルのパスは、手順2で実際に計算を行うときのものを指定してください。例えば計算サーバーで実行する場合には、計算サーバー内にある擬ポテンシャルのディレクトリを指すようにします。
入力ファイルが用意できたら、必要な情報を出力させるために以下の設定を加えてください。
&CONTROL
tprnfor = .true.
tsannp = .true.
disk_io = 'none'
/
&SYSTEM
nosym = .true.
/
作成した入力ファイルはespresso.inというファイル名で保存してください。
一から作成せずに、 slhmc --template で出力されるespresso.inを編集して作成するという手順でも大丈夫です。
手順2 力場の自動生成¶
NanoLabo Tool同梱の計算エンジンを使用される場合は、ライブラリ検索パス等の設定が必要になります。以下を参照し、設定して下さい。
力場の自動生成は、実行ファイルslhmcからQuantum ESPRESSO、LAMMPS、NeuralMDを順次呼び出しながら進められます。そこで、まずはこれらが実行できるように設定を行います。
slhmc --template
を実行することで、必要な設定ファイルのテンプレートが出力されます。
slhmc.prop
自己学習ハイブリッドモンテカルロ法の設定ファイルです。以下を参照して編集してください。
espresso.sh, lammps.sh, sannp.sh(Windowsの場合は.bat)
Quantum ESPRESSO、LAMMPS、NeuralMD実行用のファイルです。
slhmcからこれらのファイルが実行されます。必要に応じ、実行に必要な環境変数の設定(パスPATH,LD_LIBRARY_PATH、ライセンスADVANCED_LICENSE_FILE)や、並列実行の設定(mpirunコマンド、OpenMP並列数OMP_NUM_THREADS)等を追記してください。ファイル内に書かれている入出力ファイル名は固定ですので、変更しないでください。espresso.shでMPI並列を行う場合の記述例¶OMP_NUM_THREADS=1 mpirun -n 4 pw.x -in espresso.in 1> espresso.out 2> espresso.err注釈
NeuralMD Windows版はMPI並列実行には非対応です。OpenMP並列は使用可能です。
sannp.prop
NeuralMDの設定ファイルです。必要に応じ、sannp.propの書式を参照して編集してください。
電荷の計算を行う場合は、
sannp.propでwithCharge 1を設定し、sannp.shでsannp --train-chargeの行のコメントアウトを外してください。Δ-NNP(LJ-like力場)を使う場合は、
sannp.propでwithLJlike 1を設定し、sannp.shでsannp --classicalの行のコメントアウトを外してください。Δ-NNP(ReaxFF)を使う場合は、
sannp.propでwithReaxFF 1を設定し、同じフォルダにパラメータ定義ファイルffield.reaxを配置してください。
準備が終わったら、手順1で作成したespresso.inも同じフォルダに配置し、
slhmc --calc
を実行することで、力場の作成が始まります。
注釈
slhmc自体の並列実行はできません。Quantum ESPRESSO、LAMMPS、NeuralMD実行用の各sh(bat)ファイル内で並列実行を行うように設定を行ってください。
ジョブ管理システムをお使いの場合は、 slhmc --calc を実行するようなジョブスクリプトを作成し、ジョブ投入してください。この場合も、slhmc自体は並列実行せずに、各shファイル内で並列実行するように設定を行ってください。
ヒント
デフォルトでは最初に第一原理計算分子動力学計算を行ってそれを元に初期ニューラルネットワーク力場を作りますが、代わりに既に作成済みの力場を初期力場として使うこともできます。 slhmc.prop で initialTrain 0 を設定し、力場ファイル ffield.sannp を同じフォルダに配置してから、slhmcを実行します。
ヒント
GPUを使って計算を実行するには、sannp.shでsannpをsannp_gpuに、lammps.shでlammpsをlammps_gpuにそれぞれ書き換えます。また、GPU用設定ファイルsannp.mpi2gpu、gpu.confを同じフォルダに配置すると、それぞれ実行時に設定内容が適用されます。
slhmc --stop を実行すると、力場の作成を中断します。slhmc.propで restart 1 と設定し、 slhmc --calc を再度実行することで、中断したところから力場の作成を再開します。
実行中には、力場更新のタイミングで力場ファイルffield.sannpが随時出力されます。また、構造の履歴がslhmc.xyzとして出力されます。
各計算エンジンの入出力ファイルは、サブフォルダslhmc_datに保存されます。
もしエラー等で計算が進まない場合は、slhmc.CRASHに当該の計算エンジンの入出力ファイルの内容が保存されますので、確認してください。
手順3 LAMMPSによる分子動力学計算¶
出力された力場ファイルffield.sannpを使って、LAMMPSによる分子動力学計算を実行します。基本の使用方法のページにある手順5 LAMMPSによる分子動力学計算を参照してください。
ヒント
複数の異なる初期構造を使って自己学習ハイブリッドモンテカルロ法で力場を作りたい場合、まずはそれぞれの初期構造に対して手順2までを実行します。その後、得られた教師データsannp.trainを結合し、これを使って改めてニューラルネットワークの学習(基本の使用方法のページにある手順4 ニューラルネットワークの学習(最適化))を実行します。