MXDORTOのインストール方法

計算化学

河村雄行先生が開発した国産MDプログラム MXDORTO(エムエックスディー・オルト で合ってるかな…)は鉱物や酸化物のMD計算で使われます。なかなか情報が少ないので、今回は使い始める際に必要な情報、ダウンロード・コンパイル・動作確認について解説していきます。

スポンサーリンク

ダウンロード

ダウンロードは河村先生のホームページから行います。

最低限必要なものは MXDORTO.formxdinput.forxtaldata.dat の3つです。

MXDORTOはMDの計算プログラム本体です。1ファイルのコンパイルで計算が実行できるようになります。ビルドに数十分かかるようなMDプログラムもある中、MXDORTOは10秒くらいでコンパイルが終わります。

MXDINPUT入力ファイル作成ツールです。xtaldata.datもセットで使用します。結晶構造の情報や原子数、ユニットセルサイズを指定すると、それを計算するための入力ファイルを作成してくれます。コマンドラインで対話形式で動かします。Fortran特有のスペース埋め入力は、このプログラム以外では使用したことがありません。

その他、平均二乗変位計算プログラムのmdmsd.forもここで入手可能です。それ以外の.basファイルはFreeBASICコンパイラが必要なプログラムです。

スポンサーリンク

コンパイル

ソースコードをダウンロードして即コンパイル、と行きたいところですが、コンパイルが上手くいかない場合がありますので、それぞれ以下の点を確認してください。

MXDORTO本体のコンパイル

MXDORTO.forの322行目から337行目の間でコンパイル環境を設定する必要があります。FLNAME(3)にその環境名を入れるのですが、今となっては馴染みない名前が並んでいますので一番下のDummyを有効にします。文頭の”C”がコメントアウトなので、Dummyの行の頭のCを消し、他の行でCが消えているところに全てCを付けます。

Intel OneAPIのifxでは普通にコンパイルできました。

module load compiler/latest
ifx -o mxdort mxdorto.for

gfortranでは多数のWARNINGが出た後にエラーが出ましたが、11258行目 CALL GETDAT11259行目 CALL GETTIMの2つの行をコメントアウトしたらコンパイルが通りました。

gfortran -o mxdorto mxdorto.for

MXDINPUTのコンパイル

mxdinput.forでコンパイルを実行する前に、ソースコードの61行目あたりのWinPCUNIXを選択し、73行目あたりのFLNAME(18)を確認します。これはmxdinputの動作に必要なxtaldata.datファイルを置く場所のパスです。任意の場所に置いてソースコードを書き換えてもいいですが、注意点としてはFLNAMEの配列が24文字までしか入らないので、長いパスは入れられません。

ソースコードを確認・書き換えしたらコンパイルします。

module load compiler/latest
ifx -o mxdinput mxdinput.for

パスを通す

コンパイルしたmxdortomxdinputがあるディレクトリにパスを通します。

HOMEの下にMXDという名前のディレクトリを作り、そこにforファイル、xtaldata.dat、実行ファイルがあるとします。mxdinput.forでWinPCならFLNAME(18)、LINUXならFLNAME(19)が以下のようになります。

FLNAME(19) = '~/MXD/xtaldata.dat      '

必要なファイルが$HOME/MXDにある場合、.bashrcの末尾に以下のものを書きます。

export PATH=~/MXD:$PATH

cdでHOMEに戻り、source .bashrcをしたら準備完了です。

スポンサーリンク

入力ファイル生成

MXDORTOは1回の計算につき1つのフォルダ(ディレクトリ)を使用します。なのでまずテスト計算用のフォルダを作ります。

$ mkdir test
$ cd test

次に、ここでmxdinputを実行します。今回はアルゴンのMD計算データを作ってみます。赤字で示した部分がキーボード入力が必要な部分です。

$ mxdinput
Structure type (A12)?  (see XTALDATA.DAT, or type "LIST")
............            "CHAOS" for liquid or glass
CHAOS
KEY IN AN INTEGER FOR RANDOMIZE
1
I----------------------------------------------------------I   TITLE ?
test
ION1 ION2 ION3 ION4 ION5 ION6 ION7 ION8 ION9 ION0  : ATOM SPECIES ?
Ar
....1....2....3....4....5....6....7....8....9....0  NO. OF IONS ?
  500
           1 Ar           500           1         500
           2                0         501         500
           3                0         501         500
           4                0         501         500
           5                0         501         500
           6                0         501         500
           7                0         501         500
           8                0         501         500
           9                0         501         500
          10                0         501         500
I---------I---------I---------I  BOX EDGE LENGTHS (1-3) ?
 50.0      50.0      50.0
   -----> The density is  0.2654g/cm3.  OK ?  (Y/N)
y
Molecule:  1:monoatomic,  2:diatomic,  or 3:H2O/CO2  (1/2/3) ?
1
Structure:  1:bulk,   2:sheet,   3:sq.rod,   4:cube,   5:sphere  ?
1
 Atoms: Ar
   100   200   300   400   500

 Random structure Ar
I--------I   Temperature(K) ?
298.15
  *** NO. of ions :  Ar:  500     :    0     :    0     :    0     :    0
                       :    0     :    0     :    0     :    0     :    0
  *** A= 50.0000 B= 50.0000 C= 50.0000 CA= 0.0000 CB= 0.0000 CC= 0.0000
  *** Density is   0.2654 g/cm3
 Do you want a new file05.dat (y/n/r) ?
y

RANDOMIZEに入れる数字は乱数種です。適当な数字を入れましょう。

また入力する際は文字列の幅を意識する必要があり、幅に合わせてスペース埋めをします。

I---------I
このIとIの間に数字や文字を入力する。

ION1 ION2 ION3
ここもIONのIの位置に合わせて元素名を入力する。

....1....2....3
ここも同様に各元素の数を、位置を合わせて入力する。

このようにして、50Å×50Å×50Åのボックスの中にArが500個入り、298.15Kの温度条件で計算をするファイルを作成しました。testフォルダ内にfile05.datとfile07.datが作成されます。入力ファイルはこの2つです。

file05.dat計算条件とポテンシャル設定
file07.datユニットセルサイズと原子座標

mxdinputによってこの2つのファイルが作られます。この2つはテキストファイルなので、これらのファイルを書き換えることで計算設定や構造を変えることができます。

file05.dat

file05.datの内容はこのようになっています。

MD.......I....:....I....:....I....:....I....:....I....:....I....:....I:
START     test                                                        :
ECONOMY      01000.     1000.      100.      50.        5.            :
NOACCUM      2.00        1.0       0.0                                :
T SCALING    298.15     -0.1        1.                                :
P NO-CNTL    0.0001    0.0001    0.0001                               :
V CONST.                                                              :
BUSING       4.        0.0                                            :
1 Ar  500.   0.000     39.95     1.860     0.145    38.540            :
                                                                      :
                                                                      :
MD.......I....:....I....:....I....:....I....:....I....:....I....:....I:
STOP

とりあえずこのまま動かしましょう。入力ファイルの書式はそのうち別記事で解説します。

file07.dat

file07.datはこのような内容です。こちらの書き方も別記事で解説します。

test                                                            0    0
    500  1         0         0         0         0         0         0         0         0         0
  Ar
   500     0     0     0     0     0     0     0     0     0
     1   501   501   501   501   501   501   501   501   501
   500   500   500   500   500   500   500   500   500   500
    298.15   -1.0000    298.15   0.00010   0.00010   0.00010
  0.20E-14           50.000000 50.000000 50.000000  0.000000  0.000000  0.000000
  0.265354            0.000000  0.000000  0.000000  0.000000  0.000000  0.000000
0.818959960.393459970.77533997 4.97951175.01372394.9836850  0.8189600 0.3934600 0.7753400  1      0
0.068320000.594020000.27239000 4.99428274.97679955.0241919  0.0683200 0.5940200 0.2723900  1      0
スポンサーリンク

計算実行

では計算を実行します。1つの計算につき1つのフォルダが対応します。フォルダ内にfile05.datとfile07.datがある状態で計算を実行します。

$ ls
file05.dat file07.dat

$ mxdorto
Welcome to MOLECULAR DYNAMICS SIMULATION WORLD: MD-XD-ORTHO Version 2010-Nov-11
      ============== Titles in FILE07.DAT and FILE05.DAT are ==============
=====[F7]: test                                                         =====
=====[F5]: test                                                         =====
Option[ 1:MD......  2:START     3:ECONOMY   4:NOACCUM   5:T SCALIN  6:P NO-CNT]
      [ 7:V CONST.  8:BUSING    9:         10:         11:         12:        ]
      [13:         14:         15:         16:         17:AMORPHOU 18:        ]
      [19:         20:         21:         22:         23:         24:        ]
      [25:         26:         27:         28:         29:         30:        ]
Started at  0: 0: 0 on  0/ 0/ 0   from       1-st step, until    1000-th step
== test                                                        (End=   1000) ==
+  00K steps ----------------------------------------------------------- Hour= 0
 STEP Temp  Prss.(  Px   Py   Pz ) U(Coul.) U(srt)  U(3p) E(total) Density mn:sc
    1   25 0.0659( 0.06 0.07 0.06)    0.000   1.565 0.000    1.886 0.26535  0' 0
    2  147 0.0723( 0.07 0.08 0.07)    0.000   1.546 0.000    3.383 0.26535  0' 0
    3  204 0.0742( 0.07 0.08 0.07)    0.000   1.484 0.000    4.038 0.26535  0' 0
    4  253 0.0751( 0.07 0.08 0.07)    0.000   1.392 0.000    4.549 0.26535  0' 0
    5  281 0.0743( 0.07 0.08 0.07)    0.000   1.277 0.000    4.788 0.26535  0' 0
      Msd:   0.001(A)   0.000( )   0.000( )   0.000( )   0.000( )

:
:

  999  298 0.0133( 0.01 0.01 0.01)    0.000  -1.062 0.000    2.659 0.26535  0' 0
 1000  298 0.0133( 0.01 0.01 0.01)    0.000  -1.063 0.000    2.658 0.26535  0' 0
      Msd:  52.622(A)   0.000( )   0.000( )   0.000( )   0.000( )
--------------------------------------------------------------------------------
 Avr   298 0.0143( 0.01 0.01 0.01)     0.00   -1.04  0.00     2.68 0.26535
 Std     0 0.0007( 0.00 0.00 0.00)     0.00    0.02  0.00     0.02 0.00000
--------------------------------------------------------------------------------
 Temperatures: Ar: 298
--------------------------------------------------------------------------------
===============  Files were updated  ============  End=   1000  ===============
<<<=====  test                                                          ====>>>

   =========================================================================
    ===== Started at  0: 0: 0 on  0/ 0, finished at  0: 0: 0 on  0/ 0 =====
   =========================================================================

時刻が表示されていませんが、計算は正常に終了しました。計算中の出力には温度圧力などが表示されます。計算後にはfile06.datなどが増えます。また構造データであるfile07.datは最終スナップショットの構造で上書きされます。

$ ls
file05.dat  file06.dat  file07.dat  file08.dat  file081.dat  file09p.dat  file09v.dat

各ファイルは以下のような内容です。

入力file05.dat計算条件とポテンシャル設定
出力file06.dat計算結果まとめ
入力&出力file07.datユニットセルサイズと原子座標
出力file08.dat二体相関関数
出力file081.dat温度やエネルギー等の結果
出力file09p.dat原子座標(トラジェクトリ)
出力file09v.dat原子速度

出力ファイルの中にはリスタート計算時には入力ファイルになるものもあります。

計算結果の読みやすいものはfile06.datに記録されます。中には温度やエネルギー等の時間変化や二体相関関数が書かれています。今回は動作確認ということで意味のある計算はしていませんので、結果の解説はしません。

ダウンロード・コンパイル・動作確認が完了したということで今回はここまで。

コメント

タイトルとURLをコピーしました