#PHREEQC、PHREEQPYとは?
PHREEQC、PHREEQPYは、地球科学分野?で開発された、溶液内のイオンがどのような形態で存在するかをシミュレーションするためのソフトウェアです。
自分の研究の備忘録みたいな感じで作っている記事なので、あんまり親切じゃないかも
PHREEQの後についているCとかPYとかは、動かしている言語の名前です。(Rもあります。)
多分PHREEQCが一番メジャーに使われていて、PYとかRは利用者が少ないのかな?なんてイメージですが、絶対RとかPythonでやったほうが便利なので、後々RやPyhton用に記事を発展させるつもりです。
PHREEQシリーズは熱力学的シミュレーションですが、シミュレーションするための基盤になる熱力学的なデータベースが何種類かあります。
多分データベースによって、計算値が若干異なりますが、簡単なシミュレーションをする分にはあまり困らないのでは??
一応自分はminteq.v4.datを使うことが多いです。
##シミュレーションの例
例えば、リン酸、硫酸マグネシウム、炭酸カルシウムを水に溶かしたとしましょう。
まずpHはどうなるか?酸性のリン酸と弱塩基の炭酸カルシウムがぶつかるので、pHはリン酸と炭酸カルシウムの量によって決まりますよね?
こういったpHの変化はシミュレーション可能です。
またリン酸はカルシウムやマグネシウムと凝集し、塩をつくってしまうので、水溶液中にCaHPO4やMgHPO4が沈殿します。こういった沈殿の量も同時にシミュレーション可能です!
#諸々のソース
PHREEQCの公式サイト
→PHREEQCはまずココから。
簡単なターミナルやコマンドプロンプトの知識があれば、ここからダウンロードしたPHREEQCで色々出来ます。
C言語知らない自分が使えるので、ご安心ください。
一応GUI付きのソフトウェアも入っているので、それが利用できればPCの知識0でも大丈夫かもしれません。(自分のMacでは動きませんでした。)
ちょっとPython触れるくらいの知識だと、PHREEQCを直接使うのは難しいかも。。
PHREEQC公式の取り扱い説明書
→PHREEQCとありますが、多分PHREEQPYもPHREEQRも一緒です。
中身に色々なコマンドがあるので、それを理解するためにコイツは必須です。
特に例1~22まである実装例が超役に立ちます。
最終的には、微生物の反応なども同時に記述できるらしい。。
PHREEQPYの実装例
→ちょくちょくお世話になるhatari labのPHREEQPY解説です。ライブラリや使用したプログラムはサイト下部のリンクから手に入ります。
一応pip installでもphreeqpyは入手可能なんですが、このhatari labでは別のソースを使っている気がします。。。
PHREEQPY公式ドキュメント(pip版)
#全体の流れ
以下のテストケースを、自分でなぞれるようになればOKです。
##環境構築
正直あんまり覚えてないですが、公式サイトのBatch Versions of PHREEQCからご自分の環境にあったプログラムをインストール、解答してください。多分問題は起きないはず。
####Run PHREEQC
インストールしたファイル内に、RUN PHREEQCというGUIが入っているので、動かしてみてください。(これが動けば一番ラクなはず。。。)
詳細は僕わかんないです。
もし動かない人は次の方法に行きましょう。
###Testフォルダ
このTestフォルダの中に、test.commandというコマンドがあります。
こいつをダブルクリックして動かしてみましょう。
これが、実際のPHREEQCの計算になります。
####test.command
test.commandの中身を理解できれば、もうPHREEQCは使えたも同然です。
詳しい解説はとりあえず飛ばしますが、流れとしては
- 最初に実行するための基本情報が記述してあり、(実行フォルダ名とか)
- 中盤の繰り返し部分では、スクリプトを読み込んで計算を実行しています。
- 計算を実行する部分では、利用データベースとか条件を記述したスクリプトを指定。
- 条件を記述したスクリプトは、test.commandの場合は、examplesフォルダのex1~ex22です。
###シミュレーション内容を記述
testフォルダ内のex1~ex22はシミュレーション内容を記述したテキストファイルです。
中身の詳しい説明は、公式取説の例1~22と対応しています。
今後は自分で、このシミュレーション内容を自分好みに書き換えればPHREEQCを使えたも同然です。
#シミュレーションファイルの記述
結局PHREEQCはPythonだろうがRだろうがCだろうが、シミュレーション内容が記述できれば、完了です。(RとかPythonなら結果はグラフにしやすい)
##SOLUTION
公式まず何をするにしろ、最初に使用する溶液を定義する必要があります。
その際に使うコマンドがSOLUTION。
ただ全ての分子を記述できるわけではなく(例えばシュウ酸。データベースにない)、その場合は未知の分子として、なにかしらのパラメータを与えて記述する必要あり。
ちなみにminteqのデータベースは、クエン酸(citrate)のデータあり。
! 各元素の量を多くしすぎると、エラーが発生する。その場合は、-waterの量を減らす等で対応。