ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
hsolver_lcao.h
Go to the documentation of this file.
1#ifndef HSOLVERLCAO_H
2#define HSOLVERLCAO_H
3
7
8#include "source_estate/module_charge/charge.h" // mohan add 20251024
9#include "source_estate/module_dm/density_matrix.h" // mohan add 20251103
10
11namespace hsolver
12{
13
14template <typename TK, typename Device = base_device::DEVICE_CPU>
16{
17 public:
18 HSolverLCAO(const Parallel_Orbitals* ParaV_in, std::string method_in) : ParaV(ParaV_in), method(method_in) {};
19
20 void solve(hamilt::Hamilt<TK>* pHamilt,
23 elecstate::DensityMatrix<TK, double>& dm, // mohan add 2025-11-03
24 Charge &chr, // charge density
25 const int nspin,
26 const bool skip_charge);
27
28 private:
29 void hamiltSolvePsiK(hamilt::Hamilt<TK>* hm, psi::Psi<TK>& psi, double* eigenvalue); // for kpar_lcao == 1
30
31 void parakSolve(hamilt::Hamilt<TK>* pHamilt, psi::Psi<TK>& psi, elecstate::ElecState* pes, int kpar); // for kpar_lcao > 1
32
33 // The solving algorithm using cusolver is different from others, so a separate function is needed
37
39
40 const std::string method;
41};
42
43} // namespace hsolver
44
45#endif
Definition charge.h:18
Definition parallel_orbitals.h:9
Definition density_matrix.h:36
Definition elecstate.h:15
Definition hamilt.h:16
Definition hsolver_lcao.h:16
void hamiltSolvePsiK(hamilt::Hamilt< TK > *hm, psi::Psi< TK > &psi, double *eigenvalue)
Definition hsolver_lcao.cpp:136
void parakSolve(hamilt::Hamilt< TK > *pHamilt, psi::Psi< TK > &psi, elecstate::ElecState *pes, int kpar)
Definition hsolver_lcao.cpp:193
void parakSolve_cusolver(hamilt::Hamilt< TK > *pHamilt, psi::Psi< TK > &psi, elecstate::ElecState *pes)
const Parallel_Orbitals * ParaV
Definition hsolver_lcao.h:38
const std::string method
Definition hsolver_lcao.h:40
void solve(hamilt::Hamilt< TK > *pHamilt, psi::Psi< TK > &psi, elecstate::ElecState *pes, elecstate::DensityMatrix< TK, double > &dm, Charge &chr, const int nspin, const bool skip_charge)
Definition hsolver_lcao.cpp:43
HSolverLCAO(const Parallel_Orbitals *ParaV_in, std::string method_in)
Definition hsolver_lcao.h:18
Definition psi.h:37
Definition diag_comm_info.h:9
Definition exx_lip.h:23