8.2. チュートリアル¶
このチュートリアルでは Sr2VO4 を2次元3軌道Hubbardモデルにダウンフォールドして, それをHPhi++/mVMCで計算する. DFT計算はQuantumESPRESSOで行う.
8.2.1. 電荷密度のSCF計算¶
まず, DFTによる電荷密度のSCF計算を行う.
&CONTROL
calculation = 'scf'
pseudo_dir = '../pseudo/'
prefix = 'sr2vo4'
/
&SYSTEM
ibrav = 0
nat = 7
ntyp = 3
ecutwfc = 45.000000
ecutrho = 360.000000
occupations = 'tetrahedra_opt'
/
&ELECTRONS
mixing_beta = 0.3
/
CELL_PARAMETERS angstrom
-1.917800 1.917800 6.280100
1.917800 -1.917800 6.280100
1.917800 1.917800 -6.280100
ATOMIC_SPECIES
O 15.999400 O_pbe_v1.2.uspp.F.UPF
Sr 87.620000 Sr.pbe-spn-rrkjus_psl.1.0.0.UPF
V 50.941500 V_pbe_v1.uspp.F.UPF
ATOMIC_POSITIONS crystal
Sr 0.644600 0.644600 1.000000
Sr 0.355400 0.355400 0.000000
V 0.000000 0.000000 0.000000
O 0.500000 0.000000 0.500000
O 0.000000 0.500000 0.500000
O 0.842000 0.842000 1.000000
O 0.158000 0.158000 0.000000
K_POINTS automatic
4 4 4 0 0 0
擬ポテンシャル (UPF ファイル) は The SG15 Optimized Norm-Conserving Vanderbilt (ONCV) pseudopotentials のものを使う.
http://www.quantum-simulation.org/potentials/sg15_oncv/sg15_oncv_upf_2015-10-07.tar.gz
QuantumESPRESSO内のプログラム pw.x
を使う.
$ pw.x -in scf.in
8.2.2. (Optional) バンド計算と描画¶
&CONTROL
calculation = 'bands'
pseudo_dir = '../pseudo/'
prefix = 'sr2vo4'
/
&SYSTEM
ibrav = 0
nat = 7
ntyp = 3
ecutwfc = 45.000000
ecutrho = 360.000000
nbnd = 57
/
&ELECTRONS
/
CELL_PARAMETERS angstrom
-1.917800 1.917800 6.280100
1.917800 -1.917800 6.280100
1.917800 1.917800 -6.280100
ATOMIC_SPECIES
O 15.999400 O_pbe_v1.2.uspp.F.UPF
Sr 87.620000 Sr.pbe-spn-rrkjus_psl.1.0.0.UPF
V 50.941500 V_pbe_v1.uspp.F.UPF
ATOMIC_POSITIONS crystal
Sr 0.644600 0.644600 1.000000
Sr 0.355400 0.355400 0.000000
V 0.000000 0.000000 0.000000
O 0.500000 0.000000 0.500000
O 0.000000 0.500000 0.500000
O 0.842000 0.842000 1.000000
O 0.158000 0.158000 0.000000
K_POINTS crystal
49
0.5000000000 0.5000000000 -0.5000000000 1.0
0.4433287500 0.5566712500 -0.5000000000 1.0
0.3866575000 0.6133425000 -0.5000000000 1.0
0.3299862500 0.6700137500 -0.5000000000 1.0
0.2733150000 0.7266850000 -0.5000000000 1.0
0.2166437500 0.7833562500 -0.5000000000 1.0
0.1599725000 0.8400275000 -0.5000000000 1.0
0.1033012500 0.8966987500 -0.5000000000 1.0
0.0466300000 0.9533700000 -0.5000000000 1.0
0.0919660000 0.9080340000 -0.4546620000 1.0
0.1373020000 0.8626980000 -0.4093240000 1.0
0.1826380000 0.8173620000 -0.3639860000 1.0
0.2279740000 0.7720260000 -0.3186480000 1.0
0.2733100000 0.7266900000 -0.2733100000 1.0
0.3186480000 0.6813520000 -0.3186480000 1.0
0.3639860000 0.6360140000 -0.3639860000 1.0
0.4093240000 0.5906760000 -0.4093240000 1.0
0.4546620000 0.5453380000 -0.4546620000 1.0
0.5000000000 0.5000000000 -0.5000000000 1.0
0.3750000000 0.3750000000 -0.3750000000 1.0
0.2500000000 0.2500000000 -0.2500000000 1.0
0.1250000000 0.1250000000 -0.1250000000 1.0
0.0000000000 0.0000000000 0.0000000000 1.0
-0.0625000000 0.0625000000 0.0000000000 1.0
-0.1250000000 0.1250000000 0.0000000000 1.0
-0.1875000000 0.1875000000 0.0000000000 1.0
-0.2500000000 0.2500000000 0.0000000000 1.0
-0.3125000000 0.3125000000 0.0000000000 1.0
-0.3750000000 0.3750000000 0.0000000000 1.0
-0.4375000000 0.4375000000 0.0000000000 1.0
-0.5000000000 0.5000000000 0.0000000000 1.0
-0.5000000000 0.5000000000 0.0466300000 1.0
-0.4546620000 0.4546620000 0.0919660000 1.0
-0.4093240000 0.4093240000 0.1373020000 1.0
-0.3639860000 0.3639860000 0.1826380000 1.0
-0.3186480000 0.3186480000 0.2279740000 1.0
-0.2733100000 0.2733100000 0.2733100000 1.0
-0.2277583333 0.2277583333 0.2277583333 1.0
-0.1822066667 0.1822066667 0.1822066667 1.0
-0.1366550000 0.1366550000 0.1366550000 1.0
-0.0911033333 0.0911033333 0.0911033333 1.0
-0.0455516667 0.0455516667 0.0455516667 1.0
0.0000000000 0.0000000000 0.0000000000 1.0
0.0000000000 0.0833333333 0.0000000000 1.0
0.0000000000 0.1666666667 0.0000000000 1.0
0.0000000000 0.2500000000 0.0000000000 1.0
0.0000000000 0.3333333333 0.0000000000 1.0
0.0000000000 0.4166666667 0.0000000000 1.0
0.0000000000 0.5000000000 -0.0000000000 1.0
ここでも pw.x
を使う.
$ pw.x -in band.in
&BANDS
prefix = 'sr2vo4'
lsym = .false.
/
QuantumESPRESSOの bands.x
を使う.
$ bands.x -in bands.in
出力された bands.out.gnu
をGnuPlotなどで読み込んでバンドを描く.
8.2.3. Kohn-Sham軌道の計算¶
&CONTROL
calculation = 'nscf'
pseudo_dir = '../pseudo/'
wf_collect = .true.
prefix = 'sr2vo4'
/
&SYSTEM
ibrav = 0
nat = 7
ntyp = 3
ecutwfc = 45.000000
ecutrho = 360.000000
occupations = 'tetrahedra_opt'
nbnd = 57
/
&ELECTRONS
/
CELL_PARAMETERS angstrom
-1.917800 1.917800 6.280100
1.917800 -1.917800 6.280100
1.917800 1.917800 -6.280100
ATOMIC_SPECIES
O 15.999400 O_pbe_v1.2.uspp.F.UPF
Sr 87.620000 Sr.pbe-spn-rrkjus_psl.1.0.0.UPF
V 50.941500 V_pbe_v1.uspp.F.UPF
ATOMIC_POSITIONS crystal
Sr 0.644600 0.644600 1.000000
Sr 0.355400 0.355400 0.000000
V 0.000000 0.000000 0.000000
O 0.500000 0.000000 0.500000
O 0.000000 0.500000 0.500000
O 0.842000 0.842000 1.000000
O 0.158000 0.158000 0.000000
K_POINTS automatic
4 4 4 0 0 0
ここでも pw.x
を使う.
$ pw.x -in nscf.in
次にRESPACKに付属のユーティリティー qe2respack.sh
を使う.
引数は [prefix].save
ディレクトリ名.
$ qe2respack.sh sr2cuo3.save
8.2.4. Wannier関数, 誘電関数, 有効相互作用の計算¶
&PARAM_CHIQW
Num_freq_grid = 1
!Ecut_for_eps =
flg_cRPA = 1
MPI_num_proc_per_qcomm = 1
MPI_num_qcomm = 4
!flg_calc_type = 2
!n_calc_q = 8
/
&PARAM_WANNIER
N_wannier = 3
Lower_energy_window = 9.865
Upper_energy_window = 13.35
N_initial_guess = 3
/
dxy 0.2 0.0 0.0 0.0
dyz 0.2 0.0 0.0 0.0
dzx 0.2 0.0 0.0 0.0
&PARAM_INTERPOLATION
N_sym_points = 10
dense = 12, 12, 12
/
0.50000 0.50000 -0.50000
0.04663 0.95337 -0.50000
0.27331 0.72669 -0.27331
0.50000 0.50000 -0.50000
0.00000 0.00000 0.00000
-0.50000 0.50000 0.00000
-0.50000 0.50000 0.04663
-0.27331 0.27331 0.27331
0.00000 0.00000 0.00000
0.00000 0.50000 0.00000
&PARAM_VISUALIZATION
flg_vis_wannier = 1,
ix_vis_min = -1,
ix_vis_max = 2,
iy_vis_min = -1,
iy_vis_max = 2,
iz_vis_min = -1,
iz_vis_max = 2
/
&PARAM_CALC_INT
calc_ifreq = 1
ix_intJ_min = 0
ix_intJ_max = 0
iy_intJ_min = 0
iy_intJ_max = 0
iz_intJ_min = 0
iz_intJ_max = 0
/
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
8.2.5. HPhi++/mVMCによるモデル計算¶
まず, RESPACKによって出力されたホッピング等のファイルを
Wannier90の形式に変換する.
これにはHPhi++/mVMCに付属のユーティリティー
respack2wan90.pyを使う.
引数はHPhi++/mVMCのスタンダードモードのパラメーター CDataFileHead
と同じにする.
引数を指定しない場合は zvo
(HPhi++/mVMCの CDataFileHead
のデフォルト)
が指定されたものとする.
$ respack2wan90.py zvo
これで, HPhi++/mVMCで実行する準備が出来たので, スタンダードモードを用いて計算する.
model = "Hubbard"
lattice = "wannier90"
a0w = 2
a0l = 0
a0h = 2
a1w = 0
a1l = 2
a1h = 2
a2w = 1
a2l = 0
a2h = 0
method = "CG"
2Sz = 0
nelec = 4
exct = 1
cutoff_t = 0.2
cutoff_u = 0.4
cutoff_j = 0.1
$ vmc.out -s stan.in