熱力学計算ソフト「MELTS」の自動計算アプリ「MELTS-auto(Ubuntu向けC言語アプリ)」を開発しました

かつて試作し、実際に現場で使っているアプリケーションとして「MELTS-auto(C言語アプリ / Linux用)」について紹介します。現在ももちろん使っていますよ!

MELTSとは

火山岩石学の研究で使う便利なソフトのこと!

MELTSとは熱力学計算ソフトで、入力した条件下からマグマを発達させたときに、結晶化する鉱物やその化学組成、また温度圧力条件などが得られるソフトです。

Welcome to MELTS

もともとはマフィック側の計算に強いといわれていましたが、最近はフェルシック側まで拡張した「rhyorite-MELTS」が配布されています。

開発動機

さて、MELTSは長らくLinux環境で開発され、最近になってWindowsやエクセル向けのものも出てきました。以下、2016年当時のLinux版に限った話ですが、正直あまりユーザビリティの高いソフトとは言えませんでした。

  • 一回計算したら、立ち上げなおさないと、2回目以降の計算がおかしくなる
  • 精度高く計算するなら、何度も計算を繰り返さないといけない

正直、これを手作業でやるのはおそろしく時間がかかります。

それじゃあMELTSを自動化して、人間はインプットとアウトプットのデータ管理だけやろう、ということで開発したものが「MELTS-auto」です(ネーミングが安直w)

技術的な話

動作環境

  • ホストPC
    OS : Windows 7 64bit
    CPU:Core i7-3770
    RAM:16GB
    HDD:1TB
  • ゲストOS
    Ubuntu 10.04
    (VMware workstation 6)
  • エディタ
    gedit
  • 開発言語
    C言語
  • 追加ライブラリ
    Xaut(xautomation)written by Steve Slaven
  • コンパイラ
    gcc4.3.3
  • MELTSバージョン
    Rhyolite-MELTS 1.0.2

※2016年当時

MELTS-autoの処理の流れ

xautomation(現在はXaut)という自動化ライブラリを利用し、MELTSのショートカットキーを操作します。これは当時利用したLinuxのパッケージ(Ubuntu 10.04)には入っていなかったため、別途インストールし、MELTS-auto専用の環境にする、という方針でカスタマイズしました。

処理の流れは以下のフローチャートで解説した通りです。

MELTS-autoの処理の流れ

大きな流れで説明すると、

  1. 最初にインプットするデータ(csv管理)をMELTSの入力可能なデータに変換
  2. 1ファイルごとにMELTSを自動で走らせる(ここでxautomationを使う)
  3. MELTSの吐き出したデータを取得し、一覧で閲覧できるサマリーファイルに展開

という流れで処理を行います。MELTS-autoはファイル変換機能も持たせており、計算に先駆けてエクセルで作成したCSVファイルをMELTS向けのファイルに分解し、作成します。

計算結果を記録するサマリーファイルはリスト形式のテキストファイルで吐き出しますので、Windows PCで読み込み後にエクセルで閲覧できます。我々はこのテキストファイルを条件に応じて選択できるマクロファイルも作っており、なるべく時間をかけずにMELTSの結果を閲覧できるようになりました。

MELTS-autoの導入でどの程度作業は改善されたか

  • 完全に自動化されているので、そもそもPCに貼り付いて計算する必要がない
  • 1計算あたり20秒で結果取得

これぞ、「AI導入後の社会」みたいになっていますが、時間が空いたのは事実です。3時間もあれば数百というデータを一気に処理できますし、疲れたときは昼寝でもしていればよいわけです。事実、筆者は昼寝や食事している最中に計算を走らせる、といことも多々やりました。

また、なんらかの理由でインプットするデータを修正したいときも気が楽です。手間がかかる作業だと「え~、また~!?」って嫌気がさしますもんね。

MELTS-autoの利用実績

MELTS-autoは山形大学の研究チームで利用しています。仮想環境(VMware)にて利用しますので、専用のLinux PCを用意する必要もありませんし、必要に応じて個々人のマシンに仮想マシンをそのままコピーする方向で使っています。

この方法で増殖させると、アップデートしたときに面倒なんですが・・・w

まとめ

  • Linux環境下にて、C言語およびxautomationライブラリを利用して、MELTSの自動化アプリを開発
  • 開発の結果、今まで手入力で計算していた計算アプリが全自動化。あまった時間は他のことや昼寝の時間に
  • ついでに人間が必要なデータを取得しやすいよう、エクセルでマクロも作ったため、さらに便利に

我ながら、なかなか良いものを作ったと思っています。

コメント