OUOperatingGrant.png

pyqhaのインストール

  • 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の使用方法

  • まだ自分のデータで試していないが、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
Last-modified: 2018-02-15 (木) 10:37:57 (341d)