シーケンシャルな解析の為にマクロを組む
悲しい現実
最近、ようやくRIETAN-FPに慣れてきて、解析の練習をしていて思いました。
「これ、簡単な結晶構造でも一回の解析に最低でも1時間はかかるぞ…」
対称性が高いとかで、構造パラメータのサイト数が少ない場合(SnO2とか)はまだいいのです。ところが、研究で扱っている結晶構造はP1で、300弱のサイトがあるため、ちまちま.insファイルをいじるのは面倒で候ふ。
しかし、便利な世の中で、そんな迷える羊たちに手を差し伸べてくれるのがSeqRunというもの。リートベルト解析のための計算高効率化マクロだそうな。
はえ~ありがたや~~
なんて思っていたのも束の間、なんと有料である。そりゃそうか。
秀丸エディタを無償で使えないくらいには困窮していない*1はずだが、5000円(学生価格)は痛い。
仕方ない。自分でマクロを組んでみよう。ということでVBAの勉強を始めます。
初日の成果
いやいやVBAの勉強を始めて初日。右も左も分かんないけど、いきなりRIETAN用のマクロを組み始めます。
やりながら必要な事勉強すればいいでしょう。
RIETAN-FPを用いて精密化するパラメータは
- 尺度因子
- ピーク位置シフト関数
- バックグラウンド関数
- プロファイルパラメータ
- 格子定数及び共通の等方性原子変位パラメータ
といったところでしょうか。
特に、プロファイル関数によって精密化するパラメータは変化します。
ということで、まずはプロファイル関数を選択し、精密化するパラメータを呼び起こすマクロを作成しました。
それがこちら。
プロファイル関数をinsファイルの設定と合わせて、実行ボタンを押します。
すると、精密化するパラメータを呼び出してくれます。
とまあ、上のようになります。実行後、精密化するパラメータの表示と解析ステップ数、使用するプロファイル関数などを表示してくれます。
また、指定外の値を入れた場合はエラー表示が出るようにしてみました。
また、エラー表示の後に、マス目のExcelは気持ち悪いので行列の幅を標準の状態に戻すようにしました。
こんな感じに。
他にも地味な機能をいくつか搭載してみました。
今後の展望
初日は結晶構造以外の固定されたパラメータを表示させるので精一杯。
今後は精密化する構造パラメータをinsファイルから取得し、表示する機能を付けていきたいと思います。
それができたら、insファイルに書き出す機能とシーケンス解析の機能を付けていきまっしょい。
あ、あとBVAの記述についても、知ったことを備忘録として載せていこうかなと思います。
素人が作ったので誰の参考にはなりませんが。自己満って大事。