#author("2018-02-18T10:52:32+09:00","default:masami","masami")
#author("2019-01-08T17:51:40+09:00","default:masami","masami")
RIGHT:&ref(http://www.misasa.okayama-u.ac.jp/~masami/images/OUOperatingGrant.png);
**pyqhaのインストール [#w6bf5a39]
-pyqhaは、Quantum-Espressoなどの計算結果(energy, phonon)から、QHA(quasi-harmonic approximation)で熱力学量を計算する一連のpythonコード集で、Mauro Palumboさんが作成されている。MIT-Licenceとなっている。なお、同様な目的のプログラムとして、thermo_pwがあり、こちらはFortranで、Andrea Dal Corsoさんが開発している。
-ソースはhttps://github.com/mauropalumbo75/pyqhaからダウンロードできる。pythonを使うので、pythonはもちろん、scipy, numpy, matplotlibが必要。ダウンロードしたら、マニュアルに従って、インストールする。私はとりあえずMac_Book_Airにインストールした。pyquaは既に計算されたデータを使うので、Qunatum-Espressoで計算しているPCに必ずしもインストールする必要はない。thermo_pwの方は、Qunatum-Espressoを制御するので、計算しているPCにインストールする必要がある。
-とりあえず、付属のexamplesを試してみた。まず、example1.pyの最初の行を私のpythonのパスに直す。そして、実行すると私の環境ではエラーがいくつか出てしまった(pythonのversionの違い?)。1つはeos.pyの中で、整数を指定するところで整数ではないと判断されたので、int()として型を変換して解決。
-それ以外のエラーは全て、a,Ex,guessなどの変数が配列ではあるが、ときにはNoneタイプを取るために、if文でa, ExがNoneかどうか判断するところで問題となっている。a.any(), a.all()にしろとエラーメッセージにあるので、試して見たが、エラーは消えない。Noneは特別な型であるのが原因かもしれない。ちょっと難儀したが、結局aやExがNone型であるかどうかを判断すればよいので、a,Exの型をisinstance()で調べることにして、以下の例のように変更した。これらの変更はplotutils.py, minutils.pyで必要だった。
 if (Ex==None) and (a==None):  # 変更前 line 111 in plotutils.py
 if isinstance(Ex,type(None)) and isinstance(a,type(None)):  # 変更後
-上記の変更でエラーが出なくなり、examplesが全て動くようになった。なお、注意としては、実際に使っているpythonコードは、pyqha-master内にあるオリジナルではなくて、installの時にコピーされたコードなので、修正する場合はそちらを修正しないといけない。その場所はエラー表示に出ているので、そこのコードを修正する。私の環境の場合は、sudoしてアクセスする必要があった。
-マニュアルは、pdf版はgithubのサイトにリンクがあるが、sphinxでマニュアルを作っているので、ダウンロードした中の、doc/build/htmlのindex.htmlをブラウザーで開けば、マニュアルを読むことができる。
-現在のところ、orthorhombicまでしか対応していない。また、最近updateされていないのでちょっと不安。しかし、pythonなのでコードが理解しやすく、変更などはやりやすい感じがする。thermo_pwも試してみたが、make時にエラーが出て、進めず。とりあえずthermo_pwフォーラムに入って質問しようとしているが、フォーラム参加の許可を待っているところ。もし、うまくいったら、別途紹介します。
**pyqhaの使用方法 [#c2eeb232]
-まだ自分のデータで試していないが、examplesを実行して、exampleX.pyを読むと大体どう使えばよいか分かる。必要なpw.x, ph.xの必要な計算を予め実施しておいて、そのデータをpyqhaで処理する流れとなっている。phonon DOSはph.xの出力ファイルがそのまま使えるようだが、pw.x計算のvolume (cell parameters), energyはgrep等を使って、予めextractして、text fileへまとめておく必要がある。また、pythonなので、ipython, jupytorなど使って、interactiveに計算を進めることもできる。
-example1は、energyをvolumeでfitするもの(cubic cell)。Birch-Murnaghanの式を使う。必要なデータはvolumeを変えたscf計算で得たvolume(またはcell parameter)とenergyの対を記録したtext fileだけ。example2はほぼ同じだが、こちらはhexagonal cellでa,c,energyを4次式でfitするもの。
-example3はphonon計算で得たphono DOS(1つのデータ)を使う。これをharmonic approximationを使って、この計算のvolumeに対応する、熱力学量の温度依存性(Evib(T), Fvib(T), Svib(T)など)を計算する。example4は基本同じだが、複数のphono DOSデータを処理する例。
-example5は複数のphono DOSとそれらのvolume (cell parameters)とenergyから、quasi-harmonic approximationでF(V,T), 熱膨張率、比熱などを計算する。example5がcubicの例で、example6はhexagonal cellの例。後者の場合は軸の熱膨張率も計算。
-example7は弾性常数の温度依存性を求める例。example8は計算の精度に関する例。
-Gibbsのfree energyを計算するpythonコードは用意されていないが、example5, 6の出力データにはHelmholtzのfree energyのデータ(温度について)があるので、そこから計算することができると思う。

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS