• 岡山大学の河村先生の分子動力学法プログラムをgfortranでMac OS X用にコンパイルする.2008/10/29作成、2012/08/26更新
  • 前書きは分子動力学法プログラムのコンパイルを参照。
  • ダウンロード
    • 河村研究室のページからFortranプログラムのソースをダウンロードします.xtaldata.datも必要.Freebasic版のデータ表示用のソフトも置いてあるが,Macでは今のところそのままは使えない.
    • ダウンロードしたソースとxtaldataの改行形式を全てUnix形式に直します.miエディターとかjeditなどでできる.nkfでももちろんできます。
    • mxdorto.forなどプログラムは1つのファイルに全てのサブルーチンが納められているため,makeを使う必要は特にない.
  • コンパイル
    • さてとりあえず>gfortran mxdinput.for -o mxdinputで初期構造データを作成するプログラムmxdinput.forをコンパイルしてみると,xtaldata.datのパス指定でエラーになる(FLNAME(18)の定義部分).ここを例えばmxdinput実行ファイルとxtaldata.datを同じdirectoryにするならFLNAME(18) = './xtaldata.dat'と変更すればよい.xtaldata.datの名前を変更しているなら、ファイル名を変更します.xtaldata.datを固定したdirectoryに置くならそこへのパスを指定する.これでmxdinputはコンパイルできる.>./mxdinputと実行してみる.問題なさそう.ところでmxdinputで温度入力は300.0のように小数点を付けないといけない.
    • mxdorto.forとmxdtricl.forは変更する部分は同じです.重要なのは時間取得部分でここは唯一システムに依存している部分なので,書き換える必要がありますが,多くのシステム用のサブルーチンは既に用意されてるので,実際にはサブルーチンを選ぶだけです.
    • まずFLNAME(3)を使用するシステムに応じて変更する.300行くらいでシステムを指定している。今回のシステムとしてLINUX - g77を使う。最初コメントアウトされているので先頭のCを外し、他のシステムをコメントアウトする。
    • 今日ダウンロードしたバージョンでは10464行以下のMs-fortranの場合の処理でCALL GETDAT, CALL GETTIM部分でエラーが出ました。これはもちろん使わないのでコメントアウトする(mxdtricl.forではコメントアウトされていた)。一番最後のG77のサブルーチン部分でstimeとCall ltimeの部分のコメントアウトを外します。これで一応エラー出ないでコンパイルできた。
      SUBROUTINE  G77  (IYEAR, IMONTH, IDAY,
     *                  IHOUR, IMINUT, ISECND, I100TH)
c     --- Linux g77 ---
      integer*4  IYEAR,IMONTH,IDAY, IHOUR,IMINUT,ISECND,I100TH
c
      integer     jtm(9)
      integer *4  stime
c
      stime = Time8()
      Call ltime (stime, jtm)
      isecnd = jtm(1)
      iminut = jtm(2)
      ihour  = jtm(3)
      iday   = jtm(4)
      IMONTH = jtm(5)+1
      iyear  = mod(jtm(6),100)
      RETURN
      End
  • warningはループ変数が整数ではないというのが出ます。ここでは無視してます。Windows用のg95ではこれがエラーとなります。その場合はオプションで-freal-loopsと付ければいいようです。ただgfortranではこのおまじないは効きませんでした。
  • FLNAME(3)をMac OS X -g95などとしてもいいが,それに応じてFLNAME(3)をif文で使っている2カ所も書き換える必要がある.
  • 2455行あたりにロゴを設定する部分があります。ここを適当に書き換えて、'Mac OSX Intel gfortran Version'などと出力させるといいかもしれません。これはfile06.datのMD,XDの大きなロゴの下に出てきます.
  • mxdorto.forの場合はこれで,>gfortran -O mxdorto.for -o mxdortoとコンパイルして実行ファイルmxdortoを作る.最初の-Oは最適化オプション.後の-oは実行ファイル名指定.mxdortoについてはこれで問題なし.mxdinputで作った初期構造データ(file05,07,10)を使って計算してみる.なお実行させるときに同じディレクトリーにいる場合は>mxdortoで実行させようとしてもファイルが見つからないと怒られる.>./mxdortoと./を付けないといけない,安全のためMac OS Xを含め多くのUnixマシンは明示的にパスを指定しないといけないようにデフォルトでそうなっている.
  • mxdtricl.forはもう少し手直しが必要です.これでコンパイルすると別のwarningが出る.本体やサブルーチン間で変数の定義が少し異なることが理由.このwarningは放っておいても計算自体は問題なくできる.
  • mxdtriclを実行すると Max(nsatom)= 244840と各ステップ毎に印刷されて,うっとおしい.これは前回g77でコンパイルした時と同じ状況.Max(nsatom) が印刷される件はmax_nsatomが初期化されていないため.mxdortho.fの同じところを見るとこちらでは前の方で max_nsatom = 0となっている.なので検索でこの行を探して、mxdtricl.fの対応するところに追加する(EWALDSサブルーチン内).これでMax(nsatom)は印刷されなくなった.
  • その他
    • Macbook(2.16GHz Core2Duo)でstishovite (SiO2),原子数9000個(10x10x15)でmxdortoを走らせると大体2sec/stepくらい.g77の時はPowerbook (G4, 1.33GHz)で9sec/stepくらいだった.クロック数以上に速度は上がっているようだ。そのPowerpc用のbinaryをMacbookで走らせてみると5s/step程度.ちなみにAtomを使っているAcer Aspire Oneで走らせると10s/stepくらい.
    • xtaldata.datの対称性部分を作成するプログラムをReal_Basicで用意してあり,別ページからダウンロードできます.
    • MD結果の時間変化をプロットするプログラムをReal_Basicで用意してあり,別ページからダウンロードできます.
    • VESTAという結晶構造を表示するプログラムがfile06/07.datを読み込んで表示することができる.VESTAはMac OS X版も用意されているので.入力した構造または計算後の構造を眺めることができる.

トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-01-15 (月) 10:56:05 (399d)