- 追加された行はこの色です。
- 削除された行はこの色です。
* Visualization of molecular orbitals of a water monomer [#hd5bae9c]
このチュートリアルではpp.xを使って電子密度と分子軌道を可視化する方法を述べます。ここでは立方体中の水分子を使用します。
** 準備 [#m23594fd]
もしもまだビルドしておらずbin/にpp.xが存在しない場合はQEのルートディレクトリで以下を実行します。
$ make pp
** SCF/構造最適化 [#rafa0126]
先ず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) が収束したならば波動関数と電子密度の(実空間での)計算が可能になります。
** ポストプロセス [#ac3f780c]
*** 実空間における電子密度 [#s3866ccc]
実空間における電子密度をプロットするための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.にすることで異なるコア数の使用が可能)。
*** 波動関数 [#g0c3a1b3]
ここでは波動関数(波動関数の二乗)をプロットします。
この場合の入力ファイル (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点を指定します。
ここで波動関数として複数のものをプロットすることが可能で、kpoint(1)とkpoint(2)でそれぞれ最初と最後のk点を指定します。同様にkbnad(1)とkband(2)でプロットするバンドを指定することも可能です。
ガンマ点における波動関数の二乗をプロットする際には符号をつけることが可能です (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