韜晦日記

韜晦日記

Rietveldよりもプログラミングメインになりつつある

Rietveld解析初心者による備忘録とつぶやき

シーケンシャルな解析の為にマクロを組む

悲しい現実

最近、ようやくRIETAN-FPに慣れてきて、解析の練習をしていて思いました。
「これ、簡単な結晶構造でも一回の解析に最低でも1時間はかかるぞ…」
対称性が高いとかで、構造パラメータのサイト数が少ない場合(SnO2とか)はまだいいのです。ところが、研究で扱っている結晶構造はP1で、300弱のサイトがあるため、ちまちま.insファイルをいじるのは面倒で候ふ。

しかし、便利な世の中で、そんな迷える羊たちに手を差し伸べてくれるのがSeqRunというもの。リートベルト解析のための計算高効率化マクロだそうな。
はえ~ありがたや~~
なんて思っていたのも束の間、なんと有料である。そりゃそうか。
秀丸エディタを無償で使えないくらいには困窮していない*1はずだが、5000円(学生価格)は痛い。
仕方ない。自分でマクロを組んでみよう。ということでVBAの勉強を始めます。

初日の成果

いやいやVBAの勉強を始めて初日。右も左も分かんないけど、いきなりRIETAN用のマクロを組み始めます。
やりながら必要な事勉強すればいいでしょう。

RIETAN-FPを用いて精密化するパラメータは

  • 尺度因子
  • ピーク位置シフト関数
  • バックグラウンド関数
  • プロファイルパラメータ
  • 格子定数及び共通の等方性原子変位パラメータ

といったところでしょうか。
特に、プロファイル関数によって精密化するパラメータは変化します。
ということで、まずはプロファイル関数を選択し、精密化するパラメータを呼び起こすマクロを作成しました。
それがこちら。
f:id:tanisuke_str:20170818204048p:plain
プロファイル関数をinsファイルの設定と合わせて、実行ボタンを押します。
すると、精密化するパラメータを呼び出してくれます。
f:id:tanisuke_str:20170818204330p:plain
とまあ、上のようになります。実行後、精密化するパラメータの表示と解析ステップ数、使用するプロファイル関数などを表示してくれます。
また、指定外の値を入れた場合はエラー表示が出るようにしてみました。
f:id:tanisuke_str:20170818204555p:plain
また、エラー表示の後に、マス目のExcelは気持ち悪いので行列の幅を標準の状態に戻すようにしました。
こんな感じに。
f:id:tanisuke_str:20170818204814p:plain
他にも地味な機能をいくつか搭載してみました。

今後の展望

初日は結晶構造以外の固定されたパラメータを表示させるので精一杯。
今後は精密化する構造パラメータをinsファイルから取得し、表示する機能を付けていきたいと思います。
それができたら、insファイルに書き出す機能とシーケンス解析の機能を付けていきまっしょい。

あ、あとBVAの記述についても、知ったことを備忘録として載せていこうかなと思います。
素人が作ったので誰の参考にはなりませんが。自己満って大事。