#include "output_sk.h"
#include "source_base/tool_quit.h"
namespace ModuleIO
{
template
Output_Sk::Output_Sk(hamilt::Hamilt* p_hamilt, Parallel_Orbitals* ParaV, int nspin, int nks)
: p_hamilt_(p_hamilt), ParaV_(ParaV), nspin_(nspin), nks_(nks)
{
}
template
double* Output_Sk::get_Sk(int ik)
{
if (ik < 0 || ik >= this->nks_)
{
ModuleBase::WARNING_QUIT("Output_Sk::get_sk", "ik out of range");
}
return dynamic_cast(this->p_hamilt_)->getSk();
}
template
std::complex* Output_Sk::get_Sk(int ik)
{
if (ik < 0 || ik >= this->nks_)
{
ModuleBase::WARNING_QUIT("Output_Sk::get_sk", "ik out of range");
}
if (this->nspin_ == 4)
{
dynamic_cast(this->p_hamilt_)
->updateSk(ik, 1);
return dynamic_cast(this->p_hamilt_)->getSk();
}
else
{
dynamic_cast(this->p_hamilt_)->updateSk(ik, 1);
return dynamic_cast(this->p_hamilt_)->getSk();
}
return nullptr;
}
template class Output_Sk;
template class Output_Sk;
} // namespace ModuleIO