はじめに

ソースプログラム,コンパイル済みの実行ファイル等のダウンロードはこのページから。

使用法の概略

作業用ディレクトリを作成し,端末でそこに移動,計算プログラムの実行ファイル「calcrl.exe」を必要な引数(詳細を参照)をつけて起動する。
GUIを使用する場合は,Starpackの「ViewRL.exe」またはTclスクリプトの「ViewRL.tcl」を「calcrl.exe」と共に作業用ディレクトリに置く。端末で作業用ディレクトリに移動し,そこで「ViewRL.exe」を起動する,またはTkのシェルであるwishから「ViewRL.tcl」を呼び出す。

座標計算ソースプログラム

GUIフロントエンドのソースプログラム

Mac

座標計算プログラムの実行ファイル

GUIフロントエンドのStarpack

「Tcl/Tkの実行環境+GUIフロントエンドとなるTcl/Tkスクリプト」を一纏めにしたものである。Tcl/Tkのバージョンは8.5である。

Windows

座標計算プログラムの実行ファイル

GUIフロントエンドのStarpack(これを使用する場合,Tcl/Tkをインストールする必要は無い)

「Tcl/Tkの実行環境+GUIフロントエンドとなるTcl/Tkスクリプト」を一纏めにしたものである。Tcl/Tkのバージョンは8.5である。

Linux

ソース(CalcRL.c)をコンパイルして実行ファイルを作る。実行ファイルの名前を「calcrl.exe」にしておけばGUIフロントエンドで利用できる。

使用法(詳細)

作業用のディレクトリを準備し,そこに計算プログラムの実行ファイル「calcrl.exe」を置く。GUIを使用する場合は,Starpackの「ViewRL.exe」またはTclスクリプトの「ViewRL.tcl」も同じ階層に置く。端末で作業ディレクトリに移動し,そこでコマンドラインからプログラムを実行する。

下拵え Cのソースファイルから自分でバイナリを作成する場合

プログラムのソースファイルは「CalcRL.c」である。一般的なC言語で記述してあるので適当なCコンパイラでコンパイルして実行ファイルを作成する。 GNUのGCCでコンパイルする場合は

    gcc -O3 -o calcrl.exe CalcRL.c -lm

で実行ファイル「calcrl.exe」ができる。
GUIフロントエンドとなる「ViewRL.tcl」は内部で「calcrl.exe」を呼び出すようになっているので,実行ファイルの名前は「calcrl.exe」にするか,「ViewRL.tcl」内で「calcrl.exe」を呼び出している部分を修正して実行ファイルの名前に合わせる。また,実行ファイルと同じ階層に置き,ここを作業ディレクトリとして操作するのが基本となる。

GUIフロントエンドを使用する場合

自分でコンパイルする場合  CのコンパイラはWindowsの場合は選択肢が多いので好みのものを,Macの場合はXcode(とCommand Line Tools)をインストールすればよいであろう。Linuxでは好みのものを使用する。
Tcl/Tk or tclkit  WindowsでStarpackが動かなかった場合,またはMacとLinuxで既に入っているものより新しいバージョンを使用したい場合
Tcl/TkはTcl Developer Xchangeの各バージョンのTcl/TkかActiveStateが配布しているActiveTclをインストールすればよい。Tcl/Tkを使用したいがインストールしたくない場合はtclkitを利用する。

入力パラメータ

   a             double:格子定数/Å
   b             double:格子定数/Å
   c             double:格子定数/Å
   alpha         double:格子定数/°
   beta          double:格子定数/°
   gamma         double:格子定数/°
   phi           double:結晶の方位を示す回転角/°
   chi           double:結晶の方位を示す回転角/°
   psi           double:結晶の方位を示す回転角/°
   lambda        double:X線の波長/Å
   flag_reso     int:逆格子の範囲の種類
   resolim       double:逆格子の範囲/°(flag=0),逆格子の範囲/(1/lambda) (flag=1)
   flag_mosaic   int:mosaicityの入力flag
   mosaic        double:mosaicity/°

の14個あるが,条件によっては減らすことができる。

case 1: 単位胞が直交格子で逆格子の範囲として散乱角2θが45°までのとき

    ./calcrl.exe (a) (b) (c) (φ) (χ) (ψ) (λ)

引数が7個の場合は,直交格子で逆格子の範囲として散乱角2θが45°までであると判断する。

case 2: 単位胞が直交格子ではなく,逆格子の範囲として散乱角2θが45°までのとき

    ./calcrl.exe (a) (b) (c) (α) (β) (γ) (φ) (χ) (ψ) (λ)

引数が10個の場合は,逆格子の範囲として散乱角2θが45°までであると判断する。

case 3: 逆格子の範囲として散乱角2θが45°以外のとき

    ./calcrl.exe (a) (b) (c) (α) (β) (γ) (φ) (χ) (ψ) (λ) (flag) (resolim)

逆格子点の範囲は,flag=0の場合はresolimは2θ(°)で与える。その値の範囲は0.0から180.0となり,入力が範囲を越えている場合は180.0に置き換えられる。flag=1の場合,resolimは(1/波長)を単位とした逆格子空間の球の半径で与え,その入力範囲は0.0から2.5としている。入力が範囲を越えている場合は2.0(限界球に当たる)に置き換えられる。

例えば格子定数a=4.5, b=7.0, c=12.0, α=β=γ=90.0,結晶の方位が0.0,10.0,20.0,波長0.71,逆格子は限界球(半径=2.0/λ)の内部すべての様子を見たい場合,

    ./calcrl.exe 4.5 7.0 12.0 90.0 90.0 90.0 0.0 10.0 20.0 0.71 1 2.0

という入力になる。これは

    ./calcrl.exe 4.5 7.0 12.0 90.0 90.0 90.0 0.0 10.0 20.0 0.71 0 180.0

すなわち2θ=180.0°と同等である。

case 4: Mosaicityを変えたいとき (DefaultでFull widthが1.0°に設定)

Mosaicityは逆格子点の広がりをFull Width(°)で与える。実際の振動写真を考えると,結晶のMosaicityと振動角を足したものをここで与える値にするのが妥当であろう。 Mosaicity指定の1つめの引数に1を置くことでMosaicityの入力がされると判断される。2つめはFull Width(°)で,その入力範囲は0.0から10.0となり,入力が範囲を越えている場合は1.0に置き換えられる。1つめの引数が1以外の場合もMosaicityは1.0に置き換えられる。

$ ./calcrl.exe (a) (b) (c) (α) (β) (γ) (φ) (χ) (ψ) (λ) (flag) (resolim) 1 (mosaic)

という入力になる。
例えば格子定数a=4.5, b=7.0, c=12.0, α=β=γ=90.0で結晶の方位が0.0,10.0,20.0,波長0.71,散乱角2θが60.0まで,Mosaicityが3.0の場合,

    ./calcrl.exe 4.5 7.0 12.0 90.0 90.0 90.0 0.0 10.0 20.0 0.71 0 60.0 1 3.0

とする。

出力ファイルの書式

「diffractionRLP.dat」はテキストファイルで,中には

    (h) (k) (l) (x) (y) (z) (scale) (px) (py) (flagD) (flagP) (phi) (chi) (psi)

が並ぶ。ここで(x, y, z)はミラー指数h, k, l の逆格子点の座標である。scaleは1/lambdaである。(px, py)はカメラ平面上の座標である。この座標の計算はtan(2θ)を使っており,原点から距離が1.0の円は散乱角2θが45°,距離がsqrt(3)の円は2θが60°となる所を示す。flagDは回折を起こすかどうかのflagでflagD=1で回折を起こす点,0で起こさない点であることを示す。flagPは回折イメージに入るかどうかのflagで,厳密には0°=<散乱角2θ<90°のときに1,それ以外のときに0となる。phi,chi,psiは結晶の方位として入力された値である。