33#include " source_estate/elecstate_lcao.h" // use elecstate::ElecState
44#include " source_lcao/hamilt_lcao.h" // use hamilt::HamiltLCAO<TK, TR>
55
6+ #include " source_io/write_proj_band_lcao.h" // projcted band structure
7+ #include " source_io/cal_ldos.h" // cal LDOS
8+ #include " source_io/write_eband_terms.hpp"
9+ #include " source_io/write_vxc.hpp"
10+ #include " source_io/write_vxc_r.hpp"
11+
612// functions
713#ifdef __EXX
814#include " source_lcao/module_ri/Exx_LRI_interface.h" // use EXX codes
@@ -14,7 +20,7 @@ namespace ModuleIO
1420
1521template <typename TK, typename TR>
1622void ctrl_runner_lcao (UnitCell& ucell, // unitcell
17- Input_para &inp, // input
23+ const Input_para &inp, // input
1824 K_Vectors &kv, // k-point
1925 elecstate::ElecStateLCAO<TK>* pelec,// electronic info
2026 Parallel_Orbitals &pv, // orbital info
@@ -49,7 +55,7 @@ void ctrl_runner_lcao(UnitCell& ucell, // unitcell
4955 // 2) out ldos
5056 if (inp.out_ldos [0 ])
5157 {
52- ModuleIO::Cal_ldos<TK>::cal_ldos_lcao (estate , psi[0 ], pgrid, ucell);
58+ ModuleIO::Cal_ldos<TK>::cal_ldos_lcao (pelec , psi[0 ], pgrid, ucell);
5359 }
5460
5561 // 3) print out exchange-correlation potential
@@ -126,14 +132,91 @@ void ctrl_runner_lcao(UnitCell& ucell, // unitcell
126132 kv,
127133 pelec->wg ,
128134 gd,
129- orb_ .cutoffs (),
130- two_center_bundle_
135+ orb .cutoffs (),
136+ two_center_bundle
131137#ifdef __EXX
132138 ,
133139 exd ? &exd->get_Hexxs () : nullptr ,
134140 exc ? &exc->get_Hexxs () : nullptr
135141#endif
136- );
142+ );
137143 }
138144
139145}
146+
147+
148+
149+
150+ template void ModuleIO::ctrl_runner_lcao<double , double >(UnitCell& ucell, // unitcell
151+ const Input_para &inp, // input
152+ K_Vectors &kv, // k-point
153+ elecstate::ElecStateLCAO<double >* pelec,// electronic info
154+ Parallel_Orbitals &pv, // orbital info
155+ Parallel_Grid &pgrid, // grid info
156+ Grid_Driver &gd, // search for adjacent atoms
157+ psi::Psi<double >* psi, // wave function
158+ Charge &chr, // charge density
159+ hamilt::HamiltLCAO<double , double >* p_hamilt, // hamiltonian
160+ TwoCenterBundle &two_center_bundle, // use two-center integration
161+ Gint_Gamma &gg, // gint for Gamma-only
162+ Gint_k &gk, // gint for multi k-points
163+ LCAO_Orbitals &orb, // LCAO orbitals
164+ ModulePW::PW_Basis* pw_rho, // charge density
165+ ModulePW::PW_Basis* pw_rhod, // dense charge density
166+ Structure_Factor &sf, // structure factor
167+ ModuleBase::matrix &vloc, // local pseudopotential
168+ #ifdef __EXX
169+ Exx_LRI_Interface<double , double >& exd,
170+ Exx_LRI_Interface<double , std::complex <double >>& exc,
171+ #endif
172+ surchem &solvent); // solvent model
173+
174+ template void ctrl_runner_lcao<std::complex <double >, double >(UnitCell& ucell, // unitcell
175+ const Input_para &inp, // input
176+ K_Vectors &kv, // k-point
177+ elecstate::ElecStateLCAO<std::complex <double >>* pelec,// electronic info
178+ Parallel_Orbitals &pv, // orbital info
179+ Parallel_Grid &pgrid, // grid info
180+ Grid_Driver &gd, // search for adjacent atoms
181+ psi::Psi<std::complex <double >>* psi, // wave function
182+ Charge &chr, // charge density
183+ hamilt::HamiltLCAO<std::complex <double >, double >* p_hamilt, // hamiltonian
184+ TwoCenterBundle &two_center_bundle, // use two-center integration
185+ Gint_Gamma &gg, // gint for Gamma-only
186+ Gint_k &gk, // gint for multi k-points
187+ LCAO_Orbitals &orb, // LCAO orbitals
188+ ModulePW::PW_Basis* pw_rho, // charge density
189+ ModulePW::PW_Basis* pw_rhod, // dense charge density
190+ Structure_Factor &sf, // structure factor
191+ ModuleBase::matrix &vloc, // local pseudopotential
192+ #ifdef __EXX
193+ Exx_LRI_Interface<std::complex <double >, double >& exd,
194+ Exx_LRI_Interface<std::complex <double >, std::complex <double >>& exc,
195+ #endif
196+ surchem &solvent); // solvent model
197+
198+ template void ctrl_runner_lcao<std::complex <double >, std::complex <double >>(UnitCell& ucell, // unitcell
199+ const Input_para &inp, // input
200+ K_Vectors &kv, // k-point
201+ elecstate::ElecStateLCAO<std::complex <double >>* pelec,// electronic info
202+ Parallel_Orbitals &pv, // orbital info
203+ Parallel_Grid &pgrid, // grid info
204+ Grid_Driver &gd, // search for adjacent atoms
205+ psi::Psi<std::complex <double >>* psi, // wave function
206+ Charge &chr, // charge density
207+ hamilt::HamiltLCAO<std::complex <double >, std::complex <double >>* p_hamilt, // hamiltonian
208+ TwoCenterBundle &two_center_bundle, // use two-center integration
209+ Gint_Gamma &gg, // gint for Gamma-only
210+ Gint_k &gk, // gint for multi k-points
211+ LCAO_Orbitals &orb, // LCAO orbitals
212+ ModulePW::PW_Basis* pw_rho, // charge density
213+ ModulePW::PW_Basis* pw_rhod, // dense charge density
214+ Structure_Factor &sf, // structure factor
215+ ModuleBase::matrix &vloc, // local pseudopotential
216+ #ifdef __EXX
217+ Exx_LRI_Interface<std::complex <double >, double >& exd,
218+ Exx_LRI_Interface<std::complex <double >, std::complex <double >>& exc,
219+ #endif
220+ surchem &solvent); // solvent model
221+
222+ } // end namespace
0 commit comments