OpenMXのohtaka(物性研スパコン)での使用例
Last Update:2021/12/09
概要
OpenMXはフリーで使える第一原理電子状態計算コードです。日本語ドキュメントが充実しており、物性研スパコン(ohtaka)にもプリインストールされています。局在基底を用いており、O(N)法を用いた大規模計算や表面構造の計算に適しています。
本レビューでは、計算対象の構造が書かれたcifファイルからOpenMX(ver. 3.9)のインプットファイルを作成し、物性研スパコン(ohtaka)上でOpenMXを実行する方法を紹介します。
構造ファイル(cifファイル)からOpenMXのinputファイルの作成
今回はまず、「Quantum ESPRESSOと物質データベースを利用した電子状態計算」のレビュー記事と同様にして「Materias Project」からWSe2の構造ファイルWSe2_mp-1023936_primitive.cifをダウンロードしてきます。
次に、OpenMX ViewerのwebsiteにWSe2_mp-1023936_primitive.cifをドラッグ&ドロップすると構造を確認することができます。
「save」から「OMX(xyz)」を選択し、xyz座標で書かれたOpenMXのinputファイルの形式で保存することができます。(「OMX(frac)」はfractional coordinateで書かれたinputファイルを保存することができます。)保存されたinputファイルの名前はabc.datとなっているため、適宜名前を変更してください。今回はwse2.datと変更しておきます。保存されたinputファイルには、基底関数・擬ポテンシャル・k点の数・エネルギーカットオフの選択が自動的に行われ、記載されています。
例えば、基底関数の選択はOpenMXのwebsiteの記述に従い、最適に選ばれています。
wse2.dat
# # This was generated by OpenMX Viewer System.CurrrentDirectory ./ System.Name abc level.of.stdout 1 level.of.fileout 1 Species.Number 2 <Definition.of.Atomic.Species Se Se7.0-s3p2d2 Se_PBE19 W W7.0-s3p2d2f1 W_PBE19 Definition.of.Atomic.Species> Atoms.Number 3 Atoms.SpeciesAndCoordinates.Unit Ang <Atoms.SpeciesAndCoordinates 1 W 0.0000000 0.0000000 0.0000000 6.0 6.0 2 Se -0.0000000 1.9200433 1.6804268 3.0 3.0 3 Se -0.0000000 1.9200433 15.8466582 3.0 3.0 Atoms.SpeciesAndCoordinates> Atoms.UnitVectors.Unit Ang <Atoms.UnitVectors 3.3256124 0.0000000 0.0000000 -1.6628062 2.8800649 0.0000000 0.0000000 0.0000000 17.5270850 Atoms.UnitVectors> scf.XcType GGA-PBE scf.SpinPolarization off scf.ElectronicTemperature 300.0 scf.energycutoff 220.0 scf.maxIter 100 scf.EigenvalueSolver band scf.Kgrid 6 6 1 scf.Mixing.Type rmm-diisk scf.Init.Mixing.Weight 0.05 scf.Min.Mixing.Weight 0.01 scf.Max.Mixing.Weight 0.30 scf.Mixing.History 25 scf.Mixing.StartPulay 15 scf.criterion 1.0e-7 MD.Type nomd MD.maxIter 1 MD.TimeStep 1.0 MD.Opt.criterion 0.0003
必要であれば適宜パラメータを調節してください。また、上記のinputファイルには、擬ポテンシャルと基底関数が保存されているディレクトリの指定がされていないため、下記を追加します。
物性研スパコンohtakaの場合の擬ポテンシャルと基底のpathを指定する場合:
data.path /home/issp/materiapps/intel/openmx/openmx-3.9.2-1/DFT_DATA19/
出力ファイルの名前もabcからwse2に変更しておきます。
System.Name wse2
これでインプットファイルwse2.datの準備ができました。
物性研スパコン(ohtaka)上でOpenMXを実行
次に物性研スパコン(ohtaka)でOpenMXを実行するためのジョブスクリプトを作成します。今回の例では1node, 32mpi並列, 4スレッド並列(openmp)のハイブリッド並列計算を行います。
openmx.sh
#!/bin/sh #SBATCH -p i8cpu #SBATCH -N 1 #SBATCH -n 32 #SBATCH -c 4 #SBATCH -t 00:10:00 set -e source /home/issp/materiapps/intel/openmx/openmxvars.sh module list export OMP_NUM_THREADS=4 srun openmx wse2.dat -nt ${OMP_NUM_THREADS} > wse2.std
OpenMXは、thread並列を4~8にして、残りをMPIで並列計算すると多くの系で最も効率のよい計算を行うことができます。
openmx.shとwse2.datを同じディレクトリに置き、次のコマンドでジョブを投入することで計算が実行されます。
$ sbatch openmx.sh
正常に計算が終了するとwse.outというファイルが生成され、計算結果を確認することができます。