このチュートリアルではpp.xを使って電子密度と分子軌道を可視化する方法を述べます。ここでは立方体中の水分子を使用します。
もしもまだビルドしておらずbin/にpp.xが存在しない場合はQEのルートディレクトリで以下を実行します。
$ make pp
先ずSCFあるいは構造最適化を行い、波動関数を獲得します。 以下は孤立水分子の構造最適化のための入力ファイルの一例です。
H2O in a box &control calculation = 'relax' restart_mode = 'from_scratch' prefix = 'h2o' pseudo_dir = '/home/ikutaro/QE/pseudo/' outdir = './tmp/' forc_conv_thr = 1.0D-4 / &system ibrav = 1 celldm(1) = 20.00 nat = 3 ntyp = 2 ecutwfc = 50.0 ecutrho = 400.0 nbnd = 8 / &electrons mixing_beta = 0.5 conv_thr = 1.0d-10 / &ions / ATOMIC_SPECIES H 0.0000 H.pbe-kjpaw_psl.1.0.0.UPF O 0.0000 O.pbe-n-kjpaw_psl.1.0.0.UPF ATOMIC_POSITIONS (bohr) H 1.447909955222 0.000000000000 1.127167146902 H -1.447909955222 0.000000000000 1.127167146902 O 0.000000000000 0.000000000000 0.000000000000 K_POINTS (GAMMA)
pw.xを以下のように実行します。
$ mpirun -np 4 ${HOME}/QE/src/qe-6.6/bin/pw.x < h2_relax.in > h2_relax.out
あるいはジョブスクリプト(この例ではh2o.sh)を使ってジョブをサブミットします。
$ qsub h2o.sh
計算 (SCF) が収束したならば波動関数と電子密度の(実空間での)計算が可能になります。
実空間における電子密度をプロットするためのpp.xの入力ファイル (ここではpp_rho.in) は以下のようになります。
&inputpp prefix = 'h2o' outdir = './tmp/' filplot = 'h2o' plot_num = 0 / &plot iflag = 3 output_format = 5 fileout = 'h2o_rho.xsf' /
ここでprefixとoutdirはpw.xのものと同じである必要があります。
この例では
plot_num = 0
と&inputpp ... / セクションでしています。これは電子密度を実空間でプロットするためのものです。 さらに
iflag = 3
を指定することで、電子密度を3Dでプロットすることができます。
さらに以下を指定することでXSFフォーマットで電子密度が出力されます。
output_format = 5
以下のようにして出力ファイル名を指定しています。
fileout = 'h2o_rho.xsf'
入力ファイルが準備できたならば以下を実行します。
$ mpirun -np 4 ${HOME}/QE/src/qe-6.6/bin/pp.x < pp_rho.in > pp_rho.out
(もしくは同様のコマンドをジョブスクリプトを使用して実行)
ここで使用するコア数はpp.xの前のpw.xで使用したものと同じものにする必要があります(wf_collectが指定できる場合はwf_collect=.true.にすることで異なるコア数の使用が可能)。
ここでは波動関数(波動関数の二乗)をプロットします。
この場合の入力ファイル (pp_psi2.in) は以下のようになります。
&inputpp prefix = 'h2o' outdir = './tmp/' filplot = 'h2o' plot_num = 7 kpoint(1) = 1 kband(1) = 1 kband(2) = 5 lsign = .true. / &plot iflag = 3 output_format = 5 fileout ='.xsf' /
ここで波動関数として複数のものをプロットすることが可能で、kpoint(1)とkpoint(2)でそれぞれ最初と最後のk点を指定します。 ガンマ点における波動関数の二乗をプロットする際には符号をつけることが可能です (lsign = .true.) また波動関数をプロットする場合, fileoutはファイル名ではなくsuffixを指定するために使用されます。今の例だとpp.xを実行すると以下のようなアウトプットファイルが作成されます。
h2o_K001_B001.xsf h2o_K001_B002.xsf h2o_K001_B003.xsf h2o_K001_B004.xsf h2o_K001_B005.xsf