先頭へ
先頭へ

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


PHASE/0のコンパイル

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

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

旧バージョンの情報:2015.01

PHASE0 2016.01のコンパイル

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

$ tar zxf phase0_2016.01.tar.gz
$ cd phase0_2016.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

Supported BLAS/LAPACK
 0) Netlib BLAS/LAPACK
 1) Intel Math Kernel Library (MKL)
 2) System-installed 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
 2) System-installed FFTW3 library
 x) Exit
Enter number of a desired library. [0]
【1 enter】
Selected FFT library: FFTW3 library
Enter FFT library directory. [/usr/local/lib]
【enter】
Selected FFT library directory: /usr/local/lib
Do you want to enable the ESM feature? (yes/no) [yes]
【enter】

 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 EsmPack; make INCLUDE="-I/usr/local/lib/../include" FORTRAN="mpif90 -m64" LIBFLAG="-L./ -lesm  -L./ -llapack -lblas -L/usr/local/lib -lfftw3 " MPIFLAG="-D__MPI__" AR="ar -vq"
make[1]: ディレクトリ `/home/asms/phase0_2016.01/src_phase/EsmPack' に入ります
mpif90 -m64 -c -I/usr/local/lib/../include  -D__MPI__ fft.F90
mpif90 -m64 -c -I/usr/local/lib/../include  -D__MPI__ vector.f90
mpif90 -m64 -c -I/usr/local/lib/../include  -D__MPI__ Ewald.f90
mpif90 -m64 -c -I/usr/local/lib/../include  -D__MPI__ Esm.F90
...
...
PHASE was successfully installed.
Do you want to check the installed programs? (yes/no) [no]
【enter】
$

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

テスト計算:並列性能確認

それでは並列性能を評価してみましょう。PHASE/0配布物には多数のサンプル入力ファイルが付属していますが、小さな系が中心です。小さな系では並列性能が低くなる傾向があります。また実用上、並列を利用して実行時間を短縮したい計算は、原子数が多い(計算に時間を要する)系です。そこで並列性能を評価することを目的に、ゼオライトの入力ファイルをご用意しました。全72原子で、小規模並列計算の性能評価に適しています。対称性を利用するとk点は一つだけになりますので、k点並列は利用できません。バンド並列のみを利用して、並列数(-npの後ろの数値;下記実行例では4並列)を変えて計算時間を測定しました。

$ ls zeolite.tar.xz
zeolite.tar.xz
$ mkdir bench
$ cd bench
$ tar Jxf ../zeolite.tar.xz
$ mpirun -np 4 ~/phase0_2016.01/bin/phase

Windowsのタスクマネージャーを起動すると、CPUが仕事をしていることが確認できます。並列しない場合と比較した計算速度は、2並列で約1.9倍、4並列で約3.3倍でした。並列数が多くなると効率が悪くなりますが、原子数が多くなれば、より多くの並列数まで高い効率を保つことが期待できます。

Windowsパソコンでも実用的な第一原理電子状態計算を遂行できますので、上手に活用してください。


改良擬ポテンシャル

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

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