Skip to content

Commit c5bb5d7

Browse files
committed
Refactor ModuleESolver::init_esolver()
1 parent 8ec123c commit c5bb5d7

File tree

1 file changed

+17
-13
lines changed

1 file changed

+17
-13
lines changed

source/source_esolver/esolver.cpp

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -206,41 +206,45 @@ ESolver* init_esolver(const Input_para& inp, UnitCell& ucell)
206206
return new ESolver_GetS();
207207
}
208208
}
209-
if (PARAM.globalv.gamma_only_local)
209+
else if (PARAM.inp.deepks_out_base != "none")
210210
{
211-
if (PARAM.inp.deepks_out_base != "none")
211+
if (PARAM.globalv.gamma_only_local)
212212
{
213213
return new ESolver_DoubleXC<double, double>();
214214
}
215+
else if (PARAM.inp.nspin < 4)
216+
{
217+
return new ESolver_DoubleXC<std::complex<double>, double>();
218+
}
215219
else
216220
{
217-
return new ESolver_KS_LCAO<double, double>();
221+
return new ESolver_DoubleXC<std::complex<double>, std::complex<double>>();
218222
}
219223
}
220-
else if (PARAM.inp.nspin < 4)
224+
else if (PARAM.inp.dm_to_rho)
221225
{
222-
if (PARAM.inp.dm_to_rho)
226+
if (PARAM.globalv.gamma_only_local)
223227
{
224-
return new ESolver_DM2rho<std::complex<double>, double>();
228+
ModuleBase::WARNING_QUIT("ESolver", "dm_to_rho is not implemented for gamma_only");
225229
}
226-
else if (PARAM.inp.deepks_out_base != "none")
230+
else if (PARAM.inp.nspin < 4)
227231
{
228-
return new ESolver_DoubleXC<std::complex<double>, double>();
232+
return new ESolver_DM2rho<std::complex<double>, double>();
229233
}
230234
else
231235
{
232-
return new ESolver_KS_LCAO<std::complex<double>, double>();
236+
return new ESolver_DM2rho<std::complex<double>, std::complex<double>>();
233237
}
234238
}
235239
else
236240
{
237-
if (PARAM.inp.dm_to_rho)
241+
if (PARAM.globalv.gamma_only_local)
238242
{
239-
return new ESolver_DM2rho<std::complex<double>, std::complex<double>>();
243+
return new ESolver_KS_LCAO<double, double>();
240244
}
241-
else if (PARAM.inp.deepks_out_base != "none")
245+
else if (PARAM.inp.nspin < 4)
242246
{
243-
return new ESolver_DoubleXC<std::complex<double>, std::complex<double>>();
247+
return new ESolver_KS_LCAO<std::complex<double>, double>();
244248
}
245249
else
246250
{

0 commit comments

Comments
 (0)