1- #include " source_lcao/LCAO_set_pot .h"
1+ #include " source_lcao/LCAO_set .h"
22#include " source_io/module_parameter/parameter.h"
3+ #include " source_psi/setup_psi.h" // use Setup_Psi
4+ #include " source_io/read_wfc_nao.h" // use read_wfc_nao
5+ #include " source_estate/elecstate_tools.h" // use fixed_weights
36
47template <typename TK>
58void LCAO_domain::set_psi_occ_dm_chg (
@@ -11,6 +14,7 @@ void LCAO_domain::set_psi_occ_dm_chg(
1114 Charge &chr, // charge density
1215 const Input_para &inp) // input parameters
1316{
17+
1418 // ! 1) init electronic wave function psi
1519 Setup_Psi<TK>::allocate_psi (psi, kv, pv, inp);
1620
@@ -29,7 +33,7 @@ void LCAO_domain::set_psi_occ_dm_chg(
2933 if (inp.ocp && inp.esolver_type != " tddft" )
3034 {
3135 elecstate::fixed_weights (inp.ocp_kb , inp.nbands , inp.nelec ,
32- kv, pelec->wg , pelec->skip_weights );
36+ & kv, pelec->wg , pelec->skip_weights );
3337 }
3438
3539 // ! 4) init DMK, but DMR is constructed in before_scf()
@@ -42,32 +46,33 @@ void LCAO_domain::set_psi_occ_dm_chg(
4246}
4347
4448
45-
49+ template < typename TK>
4650void LCAO_domain::set_pot (
47- const K_Vectors &kv,
48- const Structure_Factor& sf,
51+ UnitCell &ucell, // not const because of dftu
52+ K_Vectors &kv, // not const due to exx
53+ Structure_Factor& sf, // will be modified in potential
4954 const ModulePW::PW_Basis &pw_rho,
5055 const ModulePW::PW_Basis &pw_rhod,
5156 elecstate::ElecState* pelec,
5257 const LCAO_Orbitals& orb,
53- const Parallel_Orbitals &pv,
58+ Parallel_Orbitals &pv, // not const due to deepks
5459 pseudopot_cell_vl &locpp,
5560 Plus_U &dftu,
5661 surchem& solvent,
57- Exx_NAO<T > &exx_nao,
58- Setup_DeePKS<T > &deepks,
62+ Exx_NAO<TK > &exx_nao,
63+ Setup_DeePKS<TK > &deepks,
5964 const Input_para &inp)
6065{
6166 // ! 1) init local pseudopotentials
62- locpp.init_vloc (ucell, pw_rho);
67+ locpp.init_vloc (ucell, & pw_rho);
6368 ModuleBase::GlobalFunc::DONE (GlobalV::ofs_running, " LOCAL POTENTIAL" );
6469
6570 // ! 2) init potentials
6671 if (pelec->pot == nullptr )
6772 {
6873 // where is the pot deleted?
6974 pelec->pot = new elecstate::Potential (&pw_rhod, &pw_rho,
70- &ucell, &( locpp.vloc ) , &(sf) , &( solvent) ,
75+ &ucell, &locpp.vloc , &sf , &solvent,
7176 &(pelec->f_en .etxc ), &(pelec->f_en .vtxc ));
7277 }
7378
@@ -87,3 +92,53 @@ void LCAO_domain::set_pot(
8792}
8893
8994
95+
96+ template void LCAO_domain::set_psi_occ_dm_chg<double >(
97+ const K_Vectors &kv, // k-points
98+ psi::Psi<double >* psi, // coefficients of NAO basis
99+ const Parallel_Orbitals &pv, // parallel scheme of NAO basis
100+ elecstate::ElecState* pelec, // eigen values and weights
101+ LCAO_domain::Setup_DM<double > &dmat, // density matrix
102+ Charge &chr, // charge density
103+ const Input_para &inp);
104+
105+ template void LCAO_domain::set_psi_occ_dm_chg<std::complex <double >>(
106+ const K_Vectors &kv, // k-points
107+ psi::Psi<std::complex <double >>* psi, // coefficients of NAO basis
108+ const Parallel_Orbitals &pv, // parallel scheme of NAO basis
109+ elecstate::ElecState* pelec, // eigen values and weights
110+ LCAO_domain::Setup_DM<std::complex <double >> &dmat, // density matrix
111+ Charge &chr, // charge density
112+ const Input_para &inp);
113+
114+ template void LCAO_domain::set_pot<double >(
115+ UnitCell &ucell,
116+ K_Vectors &kv,
117+ Structure_Factor& sf,
118+ const ModulePW::PW_Basis &pw_rho,
119+ const ModulePW::PW_Basis &pw_rhod,
120+ elecstate::ElecState* pelec,
121+ const LCAO_Orbitals& orb,
122+ Parallel_Orbitals &pv,
123+ pseudopot_cell_vl &locpp,
124+ Plus_U &dftu,
125+ surchem& solvent,
126+ Exx_NAO<double > &exx_nao,
127+ Setup_DeePKS<double > &deepks,
128+ const Input_para &inp);
129+
130+ template void LCAO_domain::set_pot<std::complex <double >>(
131+ UnitCell &ucell,
132+ K_Vectors &kv,
133+ Structure_Factor& sf,
134+ const ModulePW::PW_Basis &pw_rho,
135+ const ModulePW::PW_Basis &pw_rhod,
136+ elecstate::ElecState* pelec,
137+ const LCAO_Orbitals& orb,
138+ Parallel_Orbitals &pv,
139+ pseudopot_cell_vl &locpp,
140+ Plus_U &dftu,
141+ surchem& solvent,
142+ Exx_NAO<std::complex <double >> &exx_nao,
143+ Setup_DeePKS<std::complex <double >> &deepks,
144+ const Input_para &inp);
0 commit comments