ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
td_current_io.h
Go to the documentation of this file.
1#ifndef TD_CURRENT_IO_H
2#define TD_CURRENT_IO_H
3
6#include "source_psi/psi.h"
9#ifdef __EXX
10#include <RI/global/Tensor.h>
11#endif
12
13namespace ModuleIO
14{
15#ifdef __LCAO
17template <typename TR>
18void write_current_eachk(const UnitCell& ucell,
19 const int istep,
20 const psi::Psi<std::complex<double>>* psi,
21 const elecstate::ElecState* pelec,
22 const K_Vectors& kv,
23 const TwoCenterIntegrator* intor,
24 const Parallel_Orbitals* pv,
25 const LCAO_Orbitals& orb,
26 const Velocity_op<TR>* cal_current,
27 Record_adj& ra);
28template <typename TR>
29void write_current(const UnitCell& ucell,
30 const int istep,
31 const psi::Psi<std::complex<double>>* psi,
32 const elecstate::ElecState* pelec,
33 const K_Vectors& kv,
34 const TwoCenterIntegrator* intor,
35 const Parallel_Orbitals* pv,
36 const LCAO_Orbitals& orb,
37 const Velocity_op<TR>* cal_current,
38 Record_adj& ra);
40template <typename TR>
41void write_current(
42 const UnitCell& ucell,
43 const Grid_Driver& GridD,
44 const int istep,
45 const psi::Psi<std::complex<double>>* psi,
46 const elecstate::ElecState* pelec,
47 const K_Vectors& kv,
48 const Parallel_Orbitals* pv,
49 const LCAO_Orbitals& orb,
50 cal_r_overlap_R& r_calculator,
51 const hamilt::HContainer<TR>* sR,
52 const hamilt::HContainer<TR>* hR,
53 const Exx_NAO<std::complex<double>>& exx_nao
54);
56void cal_tmp_DM_k(const UnitCell& ucell,
57 elecstate::DensityMatrix<std::complex<double>, double>& DM_real,
58 elecstate::DensityMatrix<std::complex<double>, double>& DM_imag,
59 const int ik,
60 const int nspin,
61 const int is,
62 const bool reset = true);
63
64void cal_tmp_DM(const UnitCell& ucell,
65 elecstate::DensityMatrix<std::complex<double>, double>& DM_real,
66 elecstate::DensityMatrix<std::complex<double>, double>& DM_imag,
67 const int nspin);
68void set_rR_from_hR(const UnitCell& ucell,
69 const Grid_Driver& GridD,
70 const LCAO_Orbitals& orb,
71 const Parallel_Orbitals* pv,
72 cal_r_overlap_R& r_calculator,
73 const hamilt::HContainer<std::complex<double>>* hR,
75template <typename TR>
76void sum_HR(
77 const UnitCell& ucell,
78 const Parallel_Orbitals& pv,
79 const K_Vectors& kv,
80 const hamilt::HContainer<TR>* hR,
81 hamilt::HContainer<std::complex<double>>* full_hR,
82 const Exx_NAO<std::complex<double>>& exx_nao
83);
84
85template <typename Tadd, typename Tfull>
86void add_HR(const hamilt::HContainer<Tadd>* hR, hamilt::HContainer<Tfull>* full_hR);
87
88void init_from_adj(const UnitCell& ucell,
89 const Grid_Driver& GridD,
90 const LCAO_Orbitals& orb,
91 const Parallel_Orbitals* pv,
92 std::vector<AdjacentAtomInfo>& adjs_all,
94template <typename TR, typename TA>
95void init_from_hR(const hamilt::HContainer<TR>* hR, hamilt::HContainer<TA>* aimR);
96template <typename TR>
97void cal_velocity_basis_k(const UnitCell& ucell,
98 const LCAO_Orbitals& orb,
99 const Parallel_Orbitals* pv,
100 const K_Vectors& kv,
102 const hamilt::HContainer<TR>& sR,
103 const hamilt::HContainer<std::complex<double>>& hR,
104 std::vector<ModuleBase::Vector3<std::complex<double>*>>& velocity_basis_k);
105
106void cal_velocity_matrix(const psi::Psi<std::complex<double>>* psi,
107 const Parallel_Orbitals* pv,
108 const K_Vectors& kv,
109 const std::vector<ModuleBase::Vector3<std::complex<double>*>>& velocity_basis_k,
110 std::vector<std::array<ModuleBase::ComplexMatrix, 3>>& velocity_k);
111template <typename TR>
112void cal_current_comm_k(const UnitCell& ucell,
113 const Grid_Driver& GridD,
114 const LCAO_Orbitals& orb,
115 const Parallel_Orbitals* pv,
116 const K_Vectors& kv,
117 cal_r_overlap_R& r_calculator,
118 const hamilt::HContainer<TR>& sR,
119 const hamilt::HContainer<std::complex<double>>& hR,
120 const psi::Psi<std::complex<double>>* psi,
121 const elecstate::ElecState* pelec,
122 std::vector<ModuleBase::Vector3<double>>& current_k);
123#endif // __LCAO
124} // namespace ModuleIO
125#endif
Definition setup_exx.h:18
Definition sltk_grid_driver.h:40
Definition klist.h:12
Definition ORB_read.h:18
3 elements vector
Definition vector3.h:24
Definition parallel_orbitals.h:9
Definition record_adj.h:12
A class to compute two-center integrals.
Definition two_center_integrator.h:35
Definition unitcell.h:15
Definition velocity_op.h:15
Definition cal_r_overlap_R.h:24
Definition density_matrix.h:70
Definition elecstate.h:15
Definition hcontainer.h:144
Definition psi.h:37
Definition input_help.cpp:10
Definition exx_lip.h:23