Davidson solverによるGrapheneのバンド計算
Up to Install, Compile, Usageお世話になっています、東芝研究開発センターの塚越です。最近、phaseを使い始めました。
テスト計算として、GrapheneのバンドをDavidson solverで計算したところ(つまり、電子密度固定計算)、ouputでは収束が確認できるのですが、バンドを書いてみるとおかしな結果になっていました(バンド図を添付します)。solverをlm+msd→rmm3とCGにしたところ、まっとうな結果が得られることを確認しました(ただし、Davidsonに比べて時間がかかりました)。このとことに関して、コメントをいただけると幸いです。
以下にscf計算とband計算、k点生成のインプットファイルを書きます。
------------------------------------
input_scf_Graphene.data
-------------------------------------
Control{
condition = initial
cpumax = 3600 sec ! maximum cpu time
}
accuracy{
cutoff_wf = 20.00
cutoff_cd = 60.00
num_bands = 8
xctype = ggapbe
initial_wavefunctions = random_numbers
initial_charge_density = atomic_charge_density
ksampling{
method = monk
mesh{ nx = 4, ny = 4, nz = 1 }
kshift{ k1 = 0.0, k2 = 0.0, k3 = 0.0 }
}
smearing{
method = parabolic
}
}
structure{
unit_cell_type = primitive
unit_cell{
// alat = 1.42*sqrt(3) = 2.45951215
!#units angstrom
a_vector = 1.229756075 2.13 0.0
b_vector = -1.229756075 2.13 0.0
c_vector = 0.0 0.0 10.0
}
atom_list{
coordinate_system = internal
atoms{
#tag rx ry rz element
0.0 0.0 0.0 C
0.33333333 0.33333333 0.0 C
}
}
element_list{ #tag element atomicnumber
C 6
}
}
wavefunction_solver{
solvers{
#tag sol till_n dts dte itr var prec submat cmix
lm+MSD +2 0.2 1.0 200 tanh on on 1
rmm3 -1 0.2 1.0 200 tanh on on 1
}
line_minimization{
dt_lower_critical = 0.1
dt_upper_critical = 3.0
}
rmm{
edelta_change_to_rmm = 1.0e-2
}
submat{
before_renewal=on
}
}
charge_mixing{
mixing_methods{
!#tag no method rmxs rmxe itr var prec istr nbmix update
1 broyden2 0.80 0.80 40 * on 3 20 RENEW
}
}
printoutlevel{
base = 1
inputfile = 2
occup = 2
iprikp = 2
}
-------------------------------------
input_band_Graphene.data
--------------------------------------
Control{
condition = fixed_charge
cpumax = 3600 sec ! maximum cpu time
}
accuracy{
cutoff_wf = 20.00
cutoff_cd = 60.00
num_bands = 8
xctype = ggapbe
initial_wavefunctions = random_numbers
initial_charge_density = file
ksampling{
method = file
}
smearing{
method = parabolic
}
ek_convergence{
num_max_iteration = 180
sw_eval_eig_diff = on
delta_eigenvalue = 1.e-5 hartree
succession = 2
}
}
structure{
unit_cell_type = primitive
unit_cell{
// alat = 1.42*sqrt(3) = 2.45951215
!#units angstrom
a_vector = 1.229756075 2.13 0.0
b_vector = -1.229756075 2.13 0.0
c_vector = 0.0 0.0 10.0
}
atom_list{
coordinate_system = internal
atoms{
#tag rx ry rz element
0.0 0.0 0.0 C
0.33333333 0.33333333 0.0 C
}
}
element_list{ #tag element atomicnumber
C 6
}
}
printoutlevel{
base = 1
inputfile = 2
occup = 2
iprikp = 2
}
//lm+msd → rmm3, 部分空間対角化は波動関数更新前
//wavefunction_solver{
// solvers{
// !#tag id sol till_n dts dte itr var prec cmix submat
// 1 lm+msd 1 * * * * on 1 on
// 2 rmm3 -1 * * * * on 1 on
// }
// rmm{
// edelta_change_to_rmm = 5.0e-3
// }
// submat{
// before_renewal=on
// }
//}
//Davidson
wavefunction_solver{
solvers{
!#tag id sol till_n dts dte itr var prec cmix submat
1 davidson -1 * * * * off 1 off
}
}
//CG
//wavefunction_solver{
// solvers{
// !#tag id sol till_n dts dte itr var prec cmix submat
// 1 cg -1 * * * * on 1 on
// }
// submat{
// before_renewal= ON
// submat_period = 4
// }
// cg{
// sw_modified_cg_formula = ON
// }
//}
//Davidson → rmm3, 部分空間対角化は波動関数更新前
//wavefunction_solver{
// solvers{
// !#tag id sol till_n dts dte itr var prec cmix submat
// 1 davidson 1 * * * * off 1 off
// 2 rmm3 -1 * * * * on 1 on
// }
// rmm{
// edelta_change_to_rmm = 5.0e-3
// }
// submat{
// before_renewal=on
// }
//}
-------------------------------------
bandkpt_hpc_kgmk.in
-------------------------------------
0.03
1.0 -1.0 0.0
0.57735027 0.57735027 0.0
0.0 0.0 0.245951215
1 -1 0 3 # K
0 0 0 1 # {/Symbol G}
1 0 1 2 # M
1 -1 0 3 # K