チュートリアル

このチュートリアルでは Sr2CuO3 を例に, 1次元1軌道Hubbardモデルにダウンフォールドし, HPhi/mVMCで計算するまでの一連の流れを示す. DFT計算はQuantumESPRESSOで行う. 入力ファイルは samples/Wannier/Sr2CuO3 ディレクトリにある.

なお, 実際の研究では必要に応じ, 各ソルバーの入力ファイル等を調整する. 入力ファイルの詳細については, 各ソルバーのマニュアルを参考にすること.

電荷密度のSCF計算

まず, DFTによる電荷密度のSCF計算を行う.

scf.in

&CONTROL
 calculation = 'scf'
  pseudo_dir = '../pseudo'
prefix = 'sr2cuo3'
/
&SYSTEM
       ibrav = 0
         nat = 6
        ntyp = 3
     ecutwfc = 30.000000
     ecutrho = 240.000000
 occupations = 'tetrahedra_opt'
/
&ELECTRONS
mixing_beta = 0.3
/
CELL_PARAMETERS angstrom
 -1.749305 1.955690 6.351200
 1.749305 -1.955690 6.351200
 1.749305 1.955690 -6.351200
ATOMIC_SPECIES
 Sr 87.620000 Sr_ONCV_PBE-1.0.upf
 Cu 63.546000 Cu_ONCV_PBE-1.0.upf
 O 15.999400 O_ONCV_PBE-1.0.upf
ATOMIC_POSITIONS crystal
 Sr 0.851940 0.351940 0.500000
 Sr 0.148060 0.648060 0.500000
 Cu 0.500000 0.000000 0.500000
 O 0.654110 0.154110 0.500000
 O 0.345890 0.845890 0.500000
 O 0.000000 0.000000 0.000000
K_POINTS automatic
 4 4 4 0 0 0

擬ポテンシャル (UPF ファイル) は The SG15 Optimized Norm-Conserving Vanderbilt (ONCV) pseudopotentials のものを使う. 実行ディレクトリの直上に pseudo ディレクトリを作成して, そこに収める.

http://www.quantum-simulation.org/potentials/sg15_oncv/sg15_oncv_upf_2015-10-07.tar.gz

SCF 計算には QuantumESPRESSO内のプログラム pw.x を使う.

$ pw.x -in scf.in

(Optional) バンド計算と描画

band.in

&CONTROL
 calculation = 'bands'
  pseudo_dir = '../pseudo'
prefix = 'sr2cuo3'
/
&SYSTEM
       ibrav = 0
         nat = 6
        ntyp = 3
     ecutwfc = 30.000000
     ecutrho = 240.000000
        nbnd = 35
/
&ELECTRONS
/
CELL_PARAMETERS angstrom
 -1.749305 1.955690 6.351200
 1.749305 -1.955690 6.351200
 1.749305 1.955690 -6.351200
ATOMIC_SPECIES
 Sr 87.620000 Sr_ONCV_PBE-1.0.upf
 Cu 63.546000 Cu_ONCV_PBE-1.0.upf
 O 15.999400 O_ONCV_PBE-1.0.upf
ATOMIC_POSITIONS crystal
 Sr 0.851940 0.351940 0.500000
 Sr 0.148060 0.648060 0.500000
 Cu 0.500000 0.000000 0.500000
 O 0.654110 0.154110 0.500000
 O 0.345890 0.845890 0.500000
 O 0.000000 0.000000 0.000000
K_POINTS crystal
          50
        0.5000000000    0.5000000000   -0.5000000000    1.0
        0.4994075000    0.5005925000   -0.4428337500    1.0
        0.4988150000    0.5011850000   -0.3856675000    1.0
        0.4982225000    0.5017775000   -0.3285012500    1.0
        0.4976300000    0.5023700000   -0.2713350000    1.0
        0.4970375000    0.5029625000   -0.2141687500    1.0
        0.4964450000    0.5035550000   -0.1570025000    1.0
        0.4958525000    0.5041475000   -0.0998362500    1.0
        0.4952600000    0.5047400000   -0.0426700000    1.0
        0.5337666667    0.4662333333   -0.0811750000    1.0
        0.5722733333    0.4277266667   -0.1196800000    1.0
        0.6107800000    0.3892200000   -0.1581850000    1.0
        0.6492866667    0.3507133333   -0.1966900000    1.0
        0.6877933333    0.3122066667   -0.2351950000    1.0
        0.7263000000    0.2737000000   -0.2737000000    1.0
        0.6810400000    0.3189600000   -0.3189600000    1.0
        0.6357800000    0.3642200000   -0.3642200000    1.0
        0.5905200000    0.4094800000   -0.4094800000    1.0
        0.5452600000    0.4547400000   -0.4547400000    1.0
        0.5000000000    0.5000000000   -0.5000000000    1.0
        0.3333333333    0.3333333333   -0.3333333333    1.0
        0.1666666667    0.1666666667   -0.1666666667    1.0
        0.0000000000    0.0000000000    0.0000000000    1.0
        0.0000000000    0.0000000000    0.0625000000    1.0
        0.0000000000    0.0000000000    0.1250000000    1.0
        0.0000000000    0.0000000000    0.1875000000    1.0
        0.0000000000    0.0000000000    0.2500000000    1.0
        0.0000000000    0.0000000000    0.3125000000    1.0
        0.0000000000    0.0000000000    0.3750000000    1.0
        0.0000000000    0.0000000000    0.4375000000    1.0
        0.0000000000    0.0000000000    0.5000000000    1.0
        0.0426700000   -0.0426700000    0.5047400000    1.0
        0.0811750000   -0.0811750000    0.4662333333    1.0
        0.1196800000   -0.1196800000    0.4277266667    1.0
        0.1581850000   -0.1581850000    0.3892200000    1.0
        0.1966900000   -0.1966900000    0.3507133333    1.0
        0.2351950000   -0.2351950000    0.3122066667    1.0
        0.2737000000   -0.2737000000    0.2737000000    1.0
        0.2280833333   -0.2280833333    0.2280833333    1.0
        0.1824666667   -0.1824666667    0.1824666667    1.0
        0.1368500000   -0.1368500000    0.1368500000    1.0
        0.0912333333   -0.0912333333    0.0912333333    1.0
        0.0456166667   -0.0456166667    0.0456166667    1.0
        0.0000000000    0.0000000000    0.0000000000    1.0
        0.0833333333    0.0000000000    0.0000000000    1.0
        0.1666666667    0.0000000000    0.0000000000    1.0
        0.2500000000    0.0000000000    0.0000000000    1.0
        0.3333333333    0.0000000000    0.0000000000    1.0
        0.4166666667    0.0000000000    0.0000000000    1.0
        0.5000000000    0.0000000000   -0.0000000000    1.0

ここでも pw.x を使う.

$ pw.x -in band.in

bands.in

&BANDS
      prefix = 'sr2cuo3'
       lsym = .false.
/

QuantumESPRESSOの bands.x を使う.

$ bands.x -in bands.in

出力された bands.out.gnu をGnuPlotなどで読み込んでバンドを描く.

Kohn-Sham軌道の計算

nscf.in

&CONTROL
 calculation = 'nscf'
  pseudo_dir = '../pseudo'
  wf_collect = .true.
      prefix = 'sr2cuo3'
/
&SYSTEM
       ibrav = 0
         nat = 6
        ntyp = 3
     ecutwfc = 30.000000
     ecutrho = 240.000000
 occupations = 'tetrahedra_opt'
        nbnd = 35
/
&ELECTRONS
/
CELL_PARAMETERS angstrom
 -1.749305 1.955690 6.351200
 1.749305 -1.955690 6.351200
 1.749305 1.955690 -6.351200
ATOMIC_SPECIES
 Sr 87.620000 Sr_ONCV_PBE-1.0.upf
 Cu 63.546000 Cu_ONCV_PBE-1.0.upf
 O 15.999400 O_ONCV_PBE-1.0.upf
ATOMIC_POSITIONS crystal
 Sr 0.851940 0.351940 0.500000
 Sr 0.148060 0.648060 0.500000
 Cu 0.500000 0.000000 0.500000
 O 0.654110 0.154110 0.500000
 O 0.345890 0.845890 0.500000
 O 0.000000 0.000000 0.000000
K_POINTS automatic
 4 4 4 0 0 0

ここでも pw.x を使う.

$ pw.x -in nscf.in

次にRESPACKに付属のユーティリティー qe2respack.py を使う. 引数は [prefix].save ディレクトリ名.

$ qe2respack.py sr2cuo3.save

Wannier関数, 誘電関数, 有効相互作用の計算

respack.in

&PARAM_CHIQW
Num_freq_grid = 1
!Ecut_for_eps = 
flg_cRPA = 1
/
&PARAM_WANNIER
N_wannier = 1
Lower_energy_window = 8
Upper_energy_window = 13
N_initial_guess = 1
/
dx2 0.2 0.500000 0.000000 0.50000 0.0 0.0 1.0  0.0 1.0 0.0 1.0 0.0 0.0
&PARAM_INTERPOLATION
N_sym_points = 10
!dense = 20, 24, 28
/
0.50000 0.50000 -0.50000
0.49526 0.50474 -0.04267
0.72630 0.27370 -0.27370
0.50000 0.50000 -0.50000
0.00000 0.00000 0.00000
0.00000 0.00000 0.50000
0.04267 -0.04267 0.50474
0.27370 -0.27370 0.27370
0.00000 0.00000 0.00000
0.50000 0.00000 0.00000
&PARAM_VISUALIZATION
flg_vis_wannier = 1,
ix_vis_min = -1,
ix_vis_max = 2,
iy_vis_min = -1,
iy_vis_max = 1,
iz_vis_min = -1,
iz_vis_max = 2
/
&PARAM_CALC_INT
calc_ifreq = 1
ix_intJ_min = -1
ix_intJ_max = 1
iy_intJ_min = -1
iy_intJ_max = 1
iz_intJ_min = -1
iz_intJ_max = 1
/

RESPACKのプログラム calc_wannier, calc_chiqw, calc_j3d, calc_w3d を使う.

$ calc_wannier < respack.in
$ calc_chiqw < respack.in
$ calc_w3d < respack.in
$ calc_j3d < respack.in

これにより, RESPACKによって出力されたホッピング等のファイルが, Wannier90の形式で dir-model ディレクトリに格納される. (RESPACKのバージョン20190227 以前では, dir-mvmc ディレクトリ)

HPhi/mVMCによるモデル計算

HPhi/mVMCのスタンダードモードを利用することで, dir-model のファイルを読み込み該当したモデルの計算ができる. 最初に dir-model 以下のファイル一式を, 実行するディレクトリに移したあとに, スタンダードモードで計算実行を行えばよい. 例えば, HPhiの場合は以下のコマンドを打つことで計算が実行される(mVMCでもほぼ同様).

stan.in

model = "Hubbard"
lattice = "wannier90"
a0w = 8
a0l = 0
a0h = 8
a1w = 0
a1l = 1
a1h = 0
a2w = 1
a2l = 0
a2h = 0
method = "TPQ"
nelec = 8
exct = 1
cutoff_t = 0.5
cutoff_u = 1.0
cutoff_j = 0.02
$ cp ./dir-model/* .
$ HPhi -s stan.in