#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, std::complex>*>(this->p_hamilt_) ->updateSk(ik, 1); return dynamic_cast, std::complex>*>(this->p_hamilt_)->getSk(); } else { dynamic_cast, double>*>(this->p_hamilt_)->updateSk(ik, 1); return dynamic_cast, double>*>(this->p_hamilt_)->getSk(); } return nullptr; } template class Output_Sk; template class Output_Sk>; } // namespace ModuleIO