OpenMXチュートリアル
ここではOpenMXを使って分子の計算を行う。
分子構造ファイルを入手する
分子構造ファイルの形式変換
OpenMX-viewer
OpenMX入力ファイル
リモートとのファイルのやり取り
ジョブ投入
OpenMX出力ファイルと可視化
分子構造ファイルを入手する
ここでは題材としてメタン分子を扱う。
Googleで「Methane Mol-File Mol-Instincts」で検索をする。
このように、「www.molinstincts.com」以下のサイトが見つかるので、そこに行く。
このページの中で、以下のように「構造データファイルをダウンロードする(SDF/MOL形式)」という部分があるので、
そこをクリックするとダウンロードが始まるのだが、今はそのリンクのURLをコピーしておく。
次にに以下のようにWSLで作業用のディレクトリを作っておき、そこに入る。
mkdir -p ~/win/work/methane/
cd ~/win/work/methane/
これはWindows側からも見ることができるフォルダになる。
ここに、先ほどのSDFファイルをダウンロードする。
wget 上記でコピーしたリンクのURL
lsコマンドでディレクトリの中身を見ると、名前が.sdfで終わるファイルがあることが分かる。
分子構造ファイルの形式変換
得られたSDF形式のファイルをOpenBabelというソフトウェアを使いXYZ形式に変換する。
sudo apt install openbabel
macOSの場合はHomeBrew等を用いてインストールする。
brew install open-babel
babel SDFファイル名 methane.xyz
こうして新しくmethane.xyzというファイルが作られる。
それでは「cat methane.xyz」という風にcatコマンドを実行して、このファイルの中身を見てみよう。
5
CT1001789336
H 0.00210 -0.00410 0.00200
C -0.01270 1.08580 0.00800
H 1.00990 1.46310 0.00030
H -0.53990 1.44690 -0.87510
H -0.52290 1.43730 0.90480
1行目はこの構造の原子数(今の場合は5個)を表す。
2行目は「コメント」であり、機械側では意味を持たない覚書のようなものである。
そのあとは各原子について元素記号とデカルト座標(単位Å)が並んでいる。
OpenMX-viewer
OpenMX Viewerは上で説明したXYZ形式のような構造データから
構造の図示を行ったり、OpenMXの入力ファイルの生成を行うことができる。
Windows側で、ブラウザで上記のページを開き、XYZファイルをドラッグアンドドロップして開く。
ここでいろいろと操作を試してみたのち、以下のようにして「Save」メニューから「OMX(xyz)」を選んでOpenMXの入力ファイルを出力する。
これを作業用ディレクトリの中に保存する。
保存したファイルは「abc.dat」という名前になっていると思うが、これをcatやless等のコマンドで表示してみる。
#
# 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
H H6.0-s2p1 H_PBE19
C C6.0-s2p2d1 C_PBE19
Definition.of.Atomic.Species>
Atoms.Number 5
Atoms.SpeciesAndCoordinates.Unit Ang
<Atoms.SpeciesAndCoordinates
1 H 0.0021000 -0.0041000 0.0020000 0.5 0.5
2 C -0.0127000 1.0858000 0.0080000 2.0 2.0
3 H 1.0099000 1.4631000 0.0003000 0.5 0.5
4 H -0.5399000 1.4469000 -0.8751000 0.5 0.5
5 H -0.5229000 1.4373000 0.9048000 0.5 0.5
Atoms.SpeciesAndCoordinates>
Atoms.UnitVectors.Unit Ang
<Atoms.UnitVectors
18.0000000 0.0000000 0.0000000
0.0000000 18.0000000 0.0000000
0.0000000 0.0000000 18.0000000
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 1 1 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
このファイルをエディターで開いて以下の行を追記しておく(gaussの場合)。場所はどこでもよい。
data.path /home/public/program/openmx/DFT_DATA19/
macloudでopenmxを実行する場合には次のようにする。
data.path /home2/public/program/openmx/DFT_DATA19/
入力ファイルのキーワードについては
こちらのマニュアルのページ
を参照。
リモートとのファイルのやり取り
このabc.datファイルをgaussに送る。
scp abc.dat ユーザー名@gauss.issp.u-tokyo.ac.jp:~/
macloudに送る場合は
scp abc.dat ユーザー名@macloud.issp.u-tokyo.ac.jp:~/
次にsshでgauss(macloud)にログインしてlsを実行してみると、このabc.datが送られていることが確認できる。
gauss(macloud)内に作業用ディレクトリを作ってabc.datをそこに移動し、自分もそのディレクトリに行く。
mkdir -p ~/work/methane/
mv abc.dat ~/work/methane/
cd ~/work/methane/
ジョブ投入
ここで、前に説明したキューイングシステムを使って、計算ノードにメタン分子の数値計算のジョブを投入する。
エディターを使い「dft.sh」という名前で次のようにジョブスクリプトを作成する。
#!/bin/sh
#PBS -l nodes=1:ppn=5
#PBS -n
source ~/.bashrc
export OMP_NUM_THREADS=1
cd $PBS_O_WORKDIR
mpiexec -hostfile $PBS_NODEFILE /home/public/bin/openmx abc.dat -nt $OMP_NUM_THREADS > ${PBS_JOBID}.out 2>&1
これを「qsub dft.sh」で投入する。
macloudの場合
#!/bin/sh
#SBATCH -N 1
#SBATCH -n 5
source ~/.bashrc
export OMP_NUM_THREADS=1
mpiexec /home2/public/bin/openmx abc.dat -nt $OMP_NUM_THREADS > ${SLURM_JOB_ID}.out 2>&1
これを「sbatch dft.sh」で投入する。
OpenMX出力ファイルと可視化
ジョブが終わった状態でディレクトリの中身を見てみる。
[kawamura@gauss met]$ ls
15761.gauss.out abc.dat abc.dden.cube abc.md abc.out abc.v0.cube abc.xyz dft.sh dft.sh.o15761
abc.cif abc.dat# abc.ene abc.md2 abc.tden.cube abc.vhart.cube abc_rst dft.sh.e15761
「15761.gauss.out」や「abc.out」をlessコマンド表示させて、それぞれの項目の意味するところを考える。
PCのほうに戻って、計算結果のcubeファイルをscpでgaussから回収する。
scp ユーザー名@gauss.issp.u-tokyo.ac.jp:~/work/methane/*.cube .
これは.cubeで終わるファイルをまとめて持ってくるコマンド。