ソースプログラム,コンパイル済みの実行ファイル等のダウンロードはこのページから。
作業用ディレクトリを作成し,端末でそこに移動,計算プログラムの実行ファイル「calcrl.exe」を必要な引数(詳細を参照)をつけて起動する。
GUIを使用する場合は,Starpackの「ViewRL.exe」またはTclスクリプトの「ViewRL.tcl」を「calcrl.exe」と共に作業用ディレクトリに置く。端末で作業用ディレクトリに移動し,そこで「ViewRL.exe」を起動する,またはTkのシェルであるwishから「ViewRL.tcl」を呼び出す。
「Tcl/Tkの実行環境+GUIフロントエンドとなるTcl/Tkスクリプト」を一纏めにしたものである。Tcl/Tkのバージョンは8.5である。
「Tcl/Tkの実行環境+GUIフロントエンドとなるTcl/Tkスクリプト」を一纏めにしたものである。Tcl/Tkのバージョンは8.5である。
ソース(CalcRL.c)をコンパイルして実行ファイルを作る。実行ファイルの名前を「calcrl.exe」にしておけばGUIフロントエンドで利用できる。
作業用のディレクトリを準備し,そこに計算プログラムの実行ファイル「calcrl.exe」を置く。GUIを使用する場合は,Starpackの「ViewRL.exe」またはTclスクリプトの「ViewRL.tcl」も同じ階層に置く。端末で作業ディレクトリに移動し,そこでコマンドラインからプログラムを実行する。
プログラムのソースファイルは「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」を呼び出している部分を修正して実行ファイルの名前に合わせる。また,実行ファイルと同じ階層に置き,ここを作業ディレクトリとして操作するのが基本となる。
自分でコンパイルする場合 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個あるが,条件によっては減らすことができる。
./calcrl.exe (a) (b) (c) (φ) (χ) (ψ) (λ)
引数が7個の場合は,直交格子で逆格子の範囲として散乱角2θが45°までであると判断する。
./calcrl.exe (a) (b) (c) (α) (β) (γ) (φ) (χ) (ψ) (λ)
引数が10個の場合は,逆格子の範囲として散乱角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°と同等である。
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は結晶の方位として入力された値である。