先頭へ
先頭へ

技術情報:PHASE/0使いこなしのヒント


PHASE/0のコンパイル

当社製品版PHASE/0は実行形式ファイルで配布しています。ご利用に際してこれら作業は不要です。)

PHASE/0は、PHASEシステム研究会が管理している第一原理電子状態計算ソフトウェアです。そのソースコードは無料でダウンロードできますので、それをコンパイルして計算実行する手順をご説明します。開発環境が整っていることを前提とします(開発環境構築についてはこちらを参照して下さい)。

GNUコンパイラを利用したインストール

PHASE/0ダウンロード版一式は、GNUコンパイラを利用してコンパイルできるように整備されています。インストール手順はマニュアルで詳しく説明されていますが、改めてここに示します。install.sh実行後は【...】内を入力して下さい。

$ tar zxf phase0_2015.01.tar.gz
$ cd phase0_2015.01/
$ ./install.sh
 === PHASE installer ===
 Do you want to install PHASE? (yes/no) [yes]
【enter】
GenMake ver 1200
Supported platforms
 0) GNU Linux (IA32)
 1) GNU Linux (EM64T/AMD64)
 2) NEC SX Series
 x) Exit
Enter number of your platform. [0]
【1 enter】
Selected platform: GNU Linux (EM64T/AMD64)
Supported compilers
 0) GNU compiler collection (gfortran)
 1) Intel Fortran compiler
 x) Exit
Enter number of a desired compiler. [0]
【enter】
Selected compiler: GNU compiler collection (gfortran)
Supported programming-models
 0) Serial
 1) MPI parallel
 x) Exit
Enter number of a desired programming-model. [0]
【1 enter】
Selected programming-model: MPI parallel
Selected MPI library: MPICH1/MPICH2/Open MPI
【enter】
Supported BLAS/LAPACK
 0) Netlib BLAS/LAPACK
 1) Intel Math Kernel Library (MKL)
 x) Exit
Enter number of a desired library. [0]
【enter】
Selected BLAS/LAPACK: Netlib BLAS/LAPACK
Supported FFT libraries
 0) Built-in FFT subroutnes
 1) FFTW3 library
 x) Exit
Enter number of a desired library. [0]
【enter】
Selected FFT library: Built-in FFT subroutnes

 Do you want to edit the makefile that has been generated? (yes/no/exit) [no]
【enter】
 Do you want to make PHASE now? (yes/no) [yes]
【enter】
cd LAPACK; make F77="mpif90 -m64" F77FLAGS="-O2 -ffixed-form" AR="ar -vq"
	...
	...
PHASE was successfully installed.
Do you want to check the installed programs? (yes/no) [no]
【enter】
$

ディレクトリphase0_2015.01/binに実行形式ファイルがコピーされます。

Solaris Studioを利用したインストール

PHASE/0インストーラーはSolaris Studioに対応していないようですので、コンパイルオプションやライブラリ指定などMakefileの修正が必要です。また同コンパイラは文法チェックが厳しく、一部ソースがコンパイルエラーになります。変更内容をパッチにまとめました(PHASE0_2015.01用)。

$ tar zxf phase0_2015.01.tar.gz
$ bzip2 -d phase0_solaris.diff.bz2
$ cd phase0_2015.01/src_phase
$ patch < ../../phase0_solaris.diff
$ make
	...
	...
$ make install
	...
$

ディレクトリphase0_2015.01/binに実行形式ファイルがコピーされます。

テスト計算

付属サンプルのBaO_Si001を使って実行性能を比較してみましょう。同一計算機かつ同一並列条件(例えば、k点2並列)で実行して計算所要時間を調べてください。

$ cd ../samples/BaO_Si001/
$ mpirun -np 2 ../../bin/phase ne=1 nk=2

(なお、CentOS仮想マシン上のGNUコンパイラ版と、ネイティブ実行したWindows版matelier PHASE/0 の比較では、後者の計算所要時間は前者の1/3程度でした。)

計算時間差の要因として、コンパイラの最適化性能の違いだけでなく、最適化された数値演算ライブラリ(Solaris Studio版では付属する最適化されたLAPACKと BLASを使用しました)の影響も含まれます。今回は利用しませんでしたが、高性能な高速フーリエ変換ライブラリとしてFFTWが有名です。これを使うと、計算速度の向上が期待できるだけでなく、同ライブラリを必要とする計算機能(ESM法やvdW-DF)が利用できるようになります。興味があれば挑戦して下さい。


改良擬ポテンシャル

PHASE/0は擬ポテンシャル法を採用しており、計算の際には各元素の擬ポテンシャルが必要です。PHASE/0で用いる擬ポテンシャルは第一原理計算で作成されるのですが、作成時のパラメータの与え方によっては実験との一致がさほど良くない擬ポテンシャルができることがあります。実験値との一致が良い(それもなるべく小さなカットオフエネルギーで)擬ポテンシャルを作るためには永年の経験に基づく試行錯誤が不可欠です。

当社では、様々な計算を通して擬ポテンシャルの確認を行っており、いくつかの擬ポテンシャルについては改良版を作成しています。その一例として、スズの擬ポテンシャルをご紹介します。

公開擬ポテンシャル

公開擬ポテンシャル

スズ単結晶(ダイヤモンド構造)の凝集エネルギーと格子に作用するストレス(応力)の格子定数依存性を示します。波動関数のカットオフエネルギーを25 Rydbergとしました。最安定な格子定数は、エネルギーが最小になるところ、もしくは、ストレスがゼロになるところであり、理想的には両者は一致します。ところが現実には両者の計算手順が異なるため、同一値にはなりません。そして特に公開されている擬ポテンシャル(Sn_ggapbe_paw_us_02.pp)を使った計算では差が顕著です(右図上)。エネルギー(青線)は格子定数6.6Å付近で最小値を取りますが、ストレスがゼロになる(赤実線が点線と交わる)のはおおよそ6.2Åです。カットオフエネルギーを大きくするとこの差が小さくなる(ストレスゼロになる格子定数がエネルギー最小に近づく)ことが分かっていますが、計算負荷の上昇を伴うので、あまり大きな値は使いたくありません。

改良擬ポテンシャル

改良擬ポテンシャル

当社が作成した改良擬ポテンシャルを使うと、この問題を改善することができました。同じく波動関数のカットオフエネルギーを25 Rydbergにして計算したところ、二つの方法で求めた安定な格子定数はどちらも約6.6Åであり、実用上一致しているとみなせる程度の差で求めることができました。(右図下)。

なお、当社製品版PHASE/0にはスズ以外にも改良擬ポテンシャルが付属しています。


テキストエディタPHASE/0入力ファイル編集モード

テキストエディタで入力ファイルを編集して困ることの一つが、キーワードの打ち間違いです。特にPHASE/0は間違ったキーワードに対してエラーを出すことはなく、無視して計算を続けようとします。GUIを利用すれば打ち間違いからは解放されますが、一部応用機能にはGUIが対応できておらず、それら機能を利用する際にはテキストエディタでの入力ファイル編集が不可避です。

そこでテキストエディタでの入力ファイル編集の負担を軽減すべく、主にLinuxで用いられる二大エディタVimとEmacsについて編集支援モードを作成しました。キーワードを色付け表示することにより間違いが見つけやすくなります。

Vim用

gvim

PHASE/0入力ファイルの一行目を

!phase0_input

としてください。PHASE/0にとっては単なるコメントですが、VimはこのファイルがPHASE/0の入力であると認識します。利用方法は付属文書を参照してください。

ダウンロード:phase0-vim_001.zip

Emacs用

emacs ターミナル emacs X window

PHASE/0入力ファイルの一行目を

!-*- PHASE0 -*-

としてください。この行はPHASE/0からはコメントとみなされる一方で、EmacsにPHASE/0入力ファイルであることを伝えます。またアウトラインモードが備わっており、入力ファイルが長くなった場合に、注目箇所のみを表示することができます。

こちらで公開しています。


PHASE/0製品版のご利用にあたりご不明な点や、解析、カスタマイズのご依頼・ご相談などにつきましてはお問い合せください。

ナノ材料シミュレーション お問い合わせ ナノ材料シミュレーション 解析のご依頼へ