EXPOでRietveld の履歴(No.1)


EXPOでRietveld解析のみ行う


EXPOについて

 EXPOは粉末回折X線データから未知結晶構造を解く直接法のプログラムだが、解いた構造のRietveld法による構造精密化もできる。EXPOの使い方については[EXPO2013使用方法]もご覧ください。学生実習で使う予定もあって、2020年末年始に(沢山降った雪と格闘する合間に)EXPOとGSAS-IIで色々と遊んでみた。EXPOは結晶構造を解くために使ったことはあるが、Rietveld法には普段RIETAN-FPを使うので、これまで実際にEXPOのRietveld法部分を使ったことはなかったが、今回初めて使ってみた。

 最初は直接法で構造を求めて、そこからRietveld法で構造をrefineしていた。これが普通の解析のフロー。しかし、遊んでいるうちに、cifファイルを最初に読んでおけば、構造を求めるプロセス(Le Bail, indexing, extract, phase ...)は全てパスして、直ちにRietveld法を使うことができることが分かった。これはEXPOとしては多少変則的な使い方ではあるが、非常に簡単にRietveld法を試すことができて、Rietveld法のquickなデモに使える。さらに最近、多相も扱えるようになったので、本格的なRietveld法としても実用的であると感じた。ただ、粉末X線は基本的にはBragg-Brentano型回折計しかサポートしてないと思う。異方性温度因子にも対応していないが、普通粉末X線データで異方性温度因子まで精密化するのは簡単ではない。角度分散の中性子回折には対応している。GSAS-IIと比較したくなるが、私の個人的な感想ではEXPOの方が直感的に使えるところが良いと思った。多相の扱いはまだGUI化されていないが、それでもGSAS-IIよりは遥に使い方が簡単である。ただ、多様な回折データには対応してないなど万能ではない。GSAS-IIについては[GSAS-IIの使用方法]に書いた。なお、以下はGUIを使った方法であるが、コマンドラインで使うこともできたはずである。

EXPO_splash.png

EXPOでRietveld法のみ実施する際の手順(単相の場合)

  1. EXPO起動。Newで、粉末回折データを読み込む。実例としてforsterite(Mg2SiO4)の測定データがダウンロードできる。組成を要求されるが、これは適当で良い(直接法の時は正しい情報が必要)。波長の選択など。このforsteriteの場合はCu菅球使用。必要なら解析で使用する角度範囲を変える。Ka2が出ている場合はKa2をチェック(このforsteriteの例ではチェックしない)。ダイアログでGoをクリック。データを読み込み、回折パターンが表示される。未知構造解析の場合は、ここからバックグラウンド推定、ピークサーチ、個別ピークフィッティング、指数付けに進むが、今回は何もしない。
  2. RefineメニューからRietveldを選択。Missing Informationのダイアログが出るが、OKを押す。そこでファイル選択ダイアログが出るので、回折データに対応する結晶構造のcifファイルを選ぶ。構造が別ウィンドウに表示される。実例としてMg2SiO4のcifがダウンロードできる。cifファイルは結晶構造等を記載したファイルで、オープン結晶構造データベース(COD)などから入手できる。もちろん文献のデータをVESTAに入力して、cifを出力させてもよい。
  3. RefineメニューからRietveldを選択。出てきたウインドウでAutomatic Proceduresの2つをチェック。Le Bail法もここからできる(正確に言うとLe Bail法を使ってプロファイルを決める)。Refineボタンを押すと構造精密化(プロファイル等の精密化も)が始まる。自動で止まる。Rwpが十分下がったらおしまい。結晶構造の個々のパラメータやプロファイル関数をrefineするかどうかはチェックボックスで選択できる。パラメータ間の制約も簡単につけられる(GSAS-IIの制約の付け方よりは遥に簡単)。
    EXPO-Rietveld.png
  4. 詳しい結果が欲しい場合はPrint Optionsを使う。格子定数の誤差が出力に見つけられなかったが、出力されたcifには入っている。もちろんrefineしてない場合は誤差はついてない。
  5. そうやって得られた回折パターン等を右に示す。図の右下はRwpの改善の様子。この例(forsterite)だとプログラムの起動からたった1分で解析が終わった…

    Rpで比べると(Rwpはweightの取り方に依存すると思うので)、同じデータでRIETAN-FPを使うとEXPOの結果よりもう少しRpが下がった。GSAS-IIはRpが何故か表示されないので比較しづらいが、Rwpや残差パターンから見て明らかにEXPOより悪い。GSAS-IIはまだ初心者なので、十分使いこなせてないためかもしれないが…GSAS-IIは使えるピーク関数は1つのみで、Thompsonら(1987)のpsudo-Voigtに、Finger et al.(1994)の軸分散ブロード化を使っている。非対称性はFinger et al.(1994)の方法を単純化して使っているようだ。ちなみにFinger et al.(1994)の第3著者のJephcoatさんは数年前にこちらの研究所の教授だった。

多相のRietveld

 最近のバージョンでは多相も解析できるようになっているが、マニュアルには方法が書かれていないようである(2022/03/20時点)。また、GUIに対応してないようである。なので、上記と同じように1相でまずexpファイルを作っておく。そしてそのexpファイルをEdit機能か、エディターで直接修正することで多相に対応させることができる。%crystal directiveで相を追加できるようである。ただ%crystalはマニュアルには記載がない…最近出たEXPOの論文に少しそれについて書かれていたので、それを参考に試してみて、計算できるようになった。実例のexpファイルを以下に示す。

%structure sandstone
%job structure sandstone
%init
%data
pattern /Users/masami/sandstone.xy
wave 1.540560

%crystal
name quartz
file quartz.cif

%crystal
name coesite
file coesite.cif

%crystal
name stishovite
file stishovite.cif

%rietveld

%continue
EXPO-multiphase.png

 これはアリゾナの隕石孔の砂岩試料の粉末X線回折パターンで、quartz > coesite >> stishoviteの3相含む例であり、sandstone.xyが回折データファイル。波長はCu Ka1。%crystalで相を定義しており、そのcifファイル名を与えている。%crystalを繰り返せば、多相のRietveldが可能となる。3相のcifファイルは、quartzcoesitestishovite。試しに実施した結果のパターンを示す。特に何もしなくても順調に収束した。こちらも出力ファイルに細かい結果があるので、そちらに例えば定量分析結果などが出ている。この例の場合はRIETAN-FPでの計算も行っているが(Plot2のマクロ利用)、ほぼ同じ定量分析結果が得られた。なお、この試料は隕石が落ちてきた衝撃で元々あった砂岩(石英が主)が高圧高温条件に晒されて石英の高圧相のcoesite, stishoviteが一部生じている。
 なお、このページではRietveld法だけについて触れているが、現在結晶構造を解く際にも多相対応となっている。構造未知相以外の相の構造が知られているか、最低格子定数が決まっていることが必要である。ただ、私は多相データで試してみたが、なかなかうまくいかない。まずindexingで引っかかる。不純物ピークが混ざっているとindexingはなかなか難しい。とはいえ最後の方に結晶構造を解く場合のやり方を追記した。

多相のRietveld解析をより簡単にするPythonスクリプト

 上記のやり方では.expファイルを作る部分が面倒なので、多相Rietveldを行うexpファイルを自動作成するPythonのスクリプトを作った。もちろん単相にも使える。ついでにウチの場合はリガクの装置なので、測定データが入っているrasファイルをまずEXPOが読めるxy形式に直すことも行う。rasファイルはコーディングがcp932のようなので、読み込む時に指定してやる必要があった(これ同じrasファイルでも装置で違ったりするので、もしコーディングがcp932でない時はその指定を外す)。実行の時には以下のようにrasファイル名、cifファイル名(複数可)を引数として与えてやる。当然、ras, cifファイルが存在しないといけない。実行するとxy, expファイルが作成される。

> ./ras2exp.py test.ras test1.cif test2.cif test3.cif ...  

 出来たexpファイルをEXPOからファイルメニューの"Load and Go"で選択する。GoボタンをクリックするとすぐRietveld解析の画面になるので、Automatic refinement profileをチェックして、必要に応じてその他も設定して、Refineボタンをクリックすると計算が始まる。普通は数分以内に終了。fittingが悪い場合はrefineするパラメータを色々変えてみる。定量分析結果を見たい場合はInfoメニューからView Output fileをクリック。一番最後に出ている。RIETAN-FPは定量分析に誤差が付いてないが、EXPOは誤差がでる。
 参考に作成したPythonプログラムras2exp.pyを置いておきます。ただ、ウチの環境(リガク、Mac)で作ったもので、エラー等の処理もちゃんとしてません。テストも1つのデータセットでしか行なってません。波長等も必要に応じて変更する必要があります(現在はCu Ka1単色での指定)。Ka2の補正が必要ならalpha2を波長指定の次行に書いておく(%dataのところ)。

多相での初期構造解析

 全く指数付けもできてない状態からは結構ハードルが高いので(マニュアルに記載がないので利用方法のハードルも高いので)、格子常数と空間群が分かっている場合の例を以下に示します。同じくquartz, coesiteを含む砂岩の例で。stishoviteはごく少量なので今回は無視。coesiteは構造既知としてcifから読んで、quartzの構造を求める場合。%rietveldがあるのが不思議だが、多分Le BailがRietveldの中に含まれているためにこうしているようです。実際行っているのはLe Bail法のはず。最初extractionでエラーが最初出ますが、それは無視してください。extraction消すとRietveld用の構造を入れろとなってうまくいきません。extractionのエラーで落ちることがありますが、再度起動してやればうまくいきます。この例だとちゃんと石英構造が求まりました。そこでcoesiteとquartzを入れ替えてみたら、構造はうまく解けない…まあ相対的に量が少ないわりに構造はもっと複雑なので。
なお、ここからさらにRietveldへ進む場合は、結晶構造を表示しているWindowで、構造をcifで出力。それをEXPOのメインWindowのメニューから読み込む。これで石英がRietveldのタブに出てきます。

%structure sandstone
%job structure sandstone
%init
%data
pattern /Users/masami/sandstone.xy
wave 1.540560
%crystal
name quartz
space P 32 2 1
cell 4.916  4.916 5.4054 90.0 90.0 120.0
cont Si3 O6

%crystal
name coesite
file coesite.cif

%rietveld
extraction
%continue