(2024/05/10) デモ動画追加
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を使った方法であるが、コマンドラインで使うこともできたはずである。
最近のバージョンでは多相も解析できるようになっているが、マニュアルには方法が書かれていないようである(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
これはアリゾナの隕石孔の砂岩試料の粉末X線回折パターンで、quartz > coesite >> stishoviteの3相含む例であり、sandstone.xyが回折データファイル。波長はCu Ka1。%crystalで相を定義しており、そのcifファイル名を与えている。%crystalを繰り返せば、多相のRietveldが可能となる。3相のcifファイルは、quartz、coesite、stishovite。試しに実施した結果のパターンを示す。特に何もしなくても順調に収束した。こちらも出力ファイルに細かい結果があるので、そちらに例えば定量分析結果などが出ている。この例の場合はRIETAN-FPでの計算も行っているが(Plot2のマクロ利用)、ほぼ同じ定量分析結果が得られた。なお、この試料は隕石が落ちてきた衝撃で元々あった砂岩(石英が主)が高圧高温条件に晒されて石英の高圧相のcoesite, stishoviteが一部生じている。
なお、このページではRietveld法だけについて触れているが、現在結晶構造を解く際にも多相対応となっている。構造未知相以外の相の構造が知られているか、最低格子定数が決まっていることが必要である。ただ、私は多相データで試してみたが、なかなかうまくいかない。まずindexingで引っかかる。不純物ピークが沢山混ざっているとindexingがそもそも難しい。とはいえ最後の方に結晶構造を解く場合のやり方を追記した。
上記のやり方では.expファイルを作る部分が面倒なので、多相Rietveldを行うexpファイルを自動作成するPythonのスクリプトを作った。もちろん単相にも使える。ついでにウチの場合はリガクの装置なので、測定データが入っているrasファイルをまずEXPOが読めるxy形式に直すことも行う。rasファイルはコーディングがcp932のようなので、読み込む時に指定してやる必要があった(これ同じrasファイルでも装置で違ったりするので、もしコーディングがcp932でない時はpythonコードのその指定を外す)。実行の時には以下のように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