Last Update: 11.March.2006

RHEED 強度計算プログラム 使用手引書


1. 概要
1.1 目的
1.2 使用言語
1.2.1 Fortan90自由形式版ソースコード
1.3 プログラムの構成
2. 配布ファイル及びコンパイル
2.1 配布ファイル
2.2 コンパイル
3. 入出力データ
3.1 バルク入力データ(RHDbulk.dat)
3.2 表面入力データ(RHDsurf.dat)
4. プログラム詳細
4.1 入出力ファイル
4.2 サブルーチンツリー構造

このプログラムは RHEED 強度を多重散乱理論に基づいて、マルチスライス方によって計算するものである。理論の詳細については、

を参照のこと。

1. 概要

1.1 目的

このプログラムは反射高速電子回折 (RHEED; Reflection High-Energy Electron Diffraction) の反射強度を Ichimiya の Transfer Matrix の直交化を用いたマルチスライス法に基づき計算するものである。対象とする結晶表面は二次元周期性を持つものとする。

まず、バルクの Transfer Matrix を求め、次に表面層の Transfer Matrix を求め反射強度を計算する。

1.2 使用言語

使用する言語は Fortan である。Ichimiya によるソースコードは Fortan77 により書かれており、こちらで配布されている。

1.2.1 Fortan90自由形式版ソースコード

IchimiyaによるこのプログラムソースはFortran77固定形式で記述されていること、FujitsuSSLIIライブラリの関数を一部で用いているためにコンパイラ依存性があることの二点が可読性及び保守性を阻害していた。そこで、Oya がソースをFortran90自由形式に書き改めること、SSLIIライブラリ関数をソースコードの開示されている関数に置き換えることの大きく二点の改良を行った。

SSLIIライブラリで用いていたのは複素数マトリックスの固有値固有ベクトルを求める関数である。これをSoftware from Alan J. Miller ( http://users.bigpond.net.au/amiller/ )の Code converted from the Naval Surface Warfare Center Math. Library の同等な関数(dceigv.f90)に置き換えた。

なお、入力データは Ichimiya による Fortran77 プログラムと原則的に互換している。また、このFortran90版のソースは、

にてコンパイル及び動作確認を行っている。

1.3 プログラムの構成

プログラムはバルク部分と表面層の部分に分かれており、あらかじめバルク部分を計算してバイナリデータとして保存しておく(BLKDT.DATA)。このデータに表面層部分を継ぎ足すことで、全体としての反射強度を計算する。

計算できる結晶は、Doyle-Turner の表( P.A.Doyle and P.S.Turner: Acta Cryst. A24, 390 (1968) )に記載されている元素および水素で構成された単純立方、面心立方、体心立方および六方晶系であり、立方格子 (NaCl/ZnS/Diamond/GaAlAs 型を含む) の (100), (110),(111) 表面、ダイヤモンド構造の (113) 表面、六方格子の (001),(100) 表面である。

吸着原子位置の原点は第一層の原子位置である。入力データはバルクと表面層に分かれており、その各々に対して行う。

2. 配布ファイル及びコンパイル

2.1 配布ファイル

プログラムソースは、こちらからまとめてダウンロードできる。これには下記のものが含まれている。なお、ソースファイルはタブ文字でインテンドされているので、見難い場合はタブ文字幅を調整できるエディタを使うかスペースに置換すること。また、DOS(Windows)改行文字となっているので、他のOSで使用の場合は改行文字の置換等が必要な場合がある(特にRHDbulk.dat,RHDsurf.dat)。

2.2 コンパイル

前述したように、Fortran90形式への変更にともない複素数マトリックスの固有値固有ベクトル計算を行っている従来の富士通SSLIIライブラリの dceig2 関数を、ソースコードの開示されている別の関数 dceigv に置き換えている。そのため、コンパイルには別途、Software from Alan J. Miller ( http://users.bigpond.net.au/amiller/ )の Code converted from the Naval Surface Warfare Center Math. Libraryより、 dceigv.f90 とそれに必要なモジュールである constant.f90 をダウンロードする必要がある。

バルク計算プログラムは以下の3ファイルをコンパイルする。

表面計算プログラムは以下の3ファイルをコンパイルする。

テキスト出力プログラムは以下の1ファイルをコンパイルする。

バルク計算プログラム ⇒ 表面計算プログラム ⇒ テキスト出力プログラム と実行することで、ascii.txt に計算結果が出力される。

テストファイルでの参考計算時間を以下に示す。(計算時間はSysOut.txtの最終行に出力。)

テスト環境: Intel Pentium4 HT 2.60GHz/WindowsXP(SP2)/Intel FortranCompiler9.0

3. 入出力データ

3.1 バルク入力データ(RHDbulk.dat)

サンプル入力ファイル RHDbulk.dat をテンプレートとして用いると入力ファイル作成が容易である。F(*)はreadのフォーマットである。また、行番号は読み込み順序によるものであり、設定やパラメータ数によっては実際の行番号と異なることがある。

3.2 表面入力データ(RHDsurf.dat)

サンプル入力ファイル RHDsurf.dat をテンプレートとして用いると入力ファイル作成が容易である。F(*)はreadのフォーマットである。また、行番号は読み込み順序によるものであり、設定やパラメータ数によっては実際の行番号と異なることがある。

4. プログラム詳細

4.1 入出力ファイル

プログラム入出力ファイルの流れ図を以下に示す。

テキストファイルはItalicで、バイナリファイルはRomanで示してある。入力ファイルは RHDbulk.dat と RHDsurf.dat の二つであり、最終的に ascii.txt に各ロッドのロッキング曲線が出力される。

バルク計算では RHDbulk.dat を読み込み、RH1DT.DATA、BLKDT.DATA の二つのバイナリと SysOut.txt というテキストファイルを出力する。RH1DT.DATA にはバルクにおける反射強度が出力されるが、バルク計算の結果確認等を除けば、特に必要ない。SysOut.txt には標準出力(6)が出力され、これは通常コンソールに出力されるものをテキストファイルとして出力しているものである。重要なものは BLKDT.DATA であり、ここにバルク部分の計算結果が出力されており、これを用いて表面計算を行う。

表面計算では、RHDsurf.dat と BLKDT.DATA を読み込み、RH1DT.DATA、SURXDT.DATA の二つのバイナリとSysOut.txt というテキストファイルを出力する。SysOut.txt についてはバルクと同様にコンソール出力のログである。反射強度は RH1DT.DATA に出力され、これをテキスト変換プログラム BIN2TXT.exe により ascii.txt としてテキスト形式で出力する。

このようにバルク計算と表面計算を別個に行うため、表面構造を変えながら計算をする場合はバルクは一度計算すれば、あとは表面計算のみで良い。

尚、これらのファイル名はソースファイルを書き換えることで任意のものに変更できる。

4.2 サブルーチンツリー構造

サブルーチンのツリー構造を示す。

  • RHEEDBC
    • main
      • rhd
        • crystl
        • incdnt
        • fgm
          • dt
          • vgl
          • fe
          • fabs
        • rfxpt
        • dceigv*
        • gauelb
        • trmt
        • prtrmt
          • mnormc
          • gauelb
  • RHEEDSC
    • main
      • rhd
        • (crystl)
        • zregn
        • incdnt
        • fgmx
          • dt
          • vglx
          • fex
          • fabsx
        • rfxpt
        • dceigv*
        • gauelb
        • trmtx
          • mnormc
          • gauelb
  • BIN2TXT
    • main
*: subroutine from Math. Library.(see 1.2.1 and 2.2)

同じ名前のサブルーチンは同じものである( rhd を除く)。同様の機能であるが細部が異なるものは表面計算においてサブルーチン名の最後に"x"がついている。以下に各サブルーチンの概要を示す。


written by T.Oya (2006).
based on Ichimiya's RHEED Program Manual.