#include "esolver.h"
#include "esolver_ks_pw.h"
#include "esolver_sdft_pw.h"
#include "source_base/module_device/device.h"
#include "source_io/module_parameter/parameter.h"
#ifdef __LCAO
#include "esolver_dm2rho.h"
#include "esolver_gets.h"
#include "esolver_ks_lcao.h"
#include "esolver_ks_lcao_tddft.h"
#include "esolver_ks_lcaopw.h"
#include "source_lcao/module_lr/esolver_lrtd_lcao.h"
extern "C"
{
#include "source_base/module_external/blacs_connector.h"
}
#endif
#include "esolver_dp.h"
#include "esolver_lj.h"
#include "esolver_of.h"
#include "source_io/module_parameter/md_parameter.h"
#include
namespace ModuleESolver
{
std::string determine_type()
{
std::string esolver_type = "none";
if (PARAM.inp.basis_type == "pw")
{
if (PARAM.inp.esolver_type == "sdft")
{
esolver_type = "sdft_pw";
}
else if (PARAM.inp.esolver_type == "ofdft")
{
esolver_type = "ofdft";
}
else if (PARAM.inp.esolver_type == "ksdft")
{
esolver_type = "ksdft_pw";
}
}
else if (PARAM.inp.basis_type == "lcao_in_pw")
{
#ifdef __LCAO
if (PARAM.inp.esolver_type == "sdft")
{
esolver_type = "sdft_pw";
}
else if (PARAM.inp.esolver_type == "ksdft")
{
esolver_type = "ksdft_lip";
}
#else
ModuleBase::WARNING_QUIT("ESolver", "Calculation involving numerical orbitals must be compiled with __LCAO");
#endif
}
else if (PARAM.inp.basis_type == "lcao")
{
#ifdef __LCAO
if (PARAM.inp.esolver_type == "tddft")
{
esolver_type = "ksdft_lcao_tddft";
}
else if (PARAM.inp.esolver_type == "ksdft")
{
esolver_type = "ksdft_lcao";
}
else if (PARAM.inp.esolver_type == "ks-lr")
{
esolver_type = "ksdft_lr_lcao";
}
else if (PARAM.inp.esolver_type == "lr")
{
esolver_type = "lr_lcao";
}
#else
ModuleBase::WARNING_QUIT("ESolver", "Calculation involving numerical orbitals must be compiled with __LCAO");
#endif
}
if (PARAM.inp.esolver_type == "lj")
{
esolver_type = "lj_pot";
}
else if (PARAM.inp.esolver_type == "dp")
{
esolver_type = "dp_pot";
}
else if (esolver_type == "none")
{
ModuleBase::WARNING_QUIT("ESolver", "No such esolver_type combined with basis_type");
}
GlobalV::ofs_running