2121#include " module_exx_symmetry/symmetry_rotation.h"
2222
2323 class Parallel_Orbitals ;
24-
24+
2525 template <typename T, typename Tdata>
2626 class RPA_LRI ;
2727
2828 template <typename T, typename Tdata>
2929 class Exx_LRI_Interface ;
3030
31- namespace LR
32- {
33- template <typename T, typename TR>
34- class ESolver_LR ;
31+ namespace LR
32+ {
33+ template <typename T, typename TR>
34+ class ESolver_LR ;
3535
36- template <typename T>
37- class OperatorLREXX ;
38- }
36+ template <typename T>
37+ class OperatorLREXX ;
38+ }
3939
4040template <typename Tdata>
4141class Exx_LRI
@@ -49,37 +49,39 @@ class Exx_LRI
4949 using TatomR = std::array<double ,Ndim>; // tmp
5050
5151public:
52- Exx_LRI (const Exx_Info::Exx_Info_RI& info_in) :info(info_in) {}
53- Exx_LRI operator =(const Exx_LRI&) = delete ;
54- Exx_LRI operator =(Exx_LRI&&);
55-
56- void reset_Cs (const std::map<TA, std::map<TAC, RI::Tensor<Tdata>>>& Cs_in) { this ->exx_lri .set_Cs (Cs_in, this ->info .C_threshold ); }
57- void reset_Vs (const std::map<TA, std::map<TAC, RI::Tensor<Tdata>>>& Vs_in) { this ->exx_lri .set_Vs (Vs_in, this ->info .V_threshold ); }
58-
59- void init (const MPI_Comm &mpi_comm_in,
60- const UnitCell &ucell,
61- const K_Vectors &kv_in,
62- const LCAO_Orbitals& orb);
63- void cal_exx_force (const int & nat);
64- void cal_exx_stress (const double & omega, const double & lat0);
52+ Exx_LRI (const Exx_Info::Exx_Info_RI& info_in) :info(info_in) {}
53+ Exx_LRI operator =(const Exx_LRI&) = delete ;
54+ Exx_LRI operator =(Exx_LRI&&);
55+
56+ void init (
57+ const MPI_Comm &mpi_comm_in,
58+ const UnitCell &ucell,
59+ const K_Vectors &kv_in,
60+ const LCAO_Orbitals& orb);
6561 void cal_exx_ions (const UnitCell& ucell, const bool write_cv = false );
66- void cal_exx_elec (const std::vector<std::map<TA, std::map<TAC, RI::Tensor<Tdata>>>>& Ds,
62+ void cal_exx_elec (
63+ const std::vector<std::map<TA, std::map<TAC, RI::Tensor<Tdata>>>>& Ds,
6764 const UnitCell& ucell,
68- const Parallel_Orbitals& pv,
69- const ModuleSymmetry::Symmetry_rotation* p_symrot = nullptr );
70- std::vector<std::vector<int >> get_abfs_nchis () const ;
65+ const Parallel_Orbitals& pv,
66+ const ModuleSymmetry::Symmetry_rotation* p_symrot = nullptr );
67+ void cal_exx_force (const int & nat);
68+ void cal_exx_stress (const double & omega, const double & lat0);
69+
70+ void reset_Cs (const std::map<TA, std::map<TAC, RI::Tensor<Tdata>>>& Cs_in) { this ->exx_lri .set_Cs (Cs_in, this ->info .C_threshold ); }
71+ void reset_Vs (const std::map<TA, std::map<TAC, RI::Tensor<Tdata>>>& Vs_in) { this ->exx_lri .set_Vs (Vs_in, this ->info .V_threshold ); }
72+ // std::vector<std::vector<int>> get_abfs_nchis() const;
7173
7274 std::vector< std::map<TA, std::map<TAC, RI::Tensor<Tdata>>>> Hexxs;
73- double Eexx;
75+ double Eexx;
7476 ModuleBase::matrix force_exx;
7577 ModuleBase::matrix stress_exx;
76-
78+
7779
7880private:
7981 const Exx_Info::Exx_Info_RI &info;
8082 MPI_Comm mpi_comm;
8183 const K_Vectors *p_kv = nullptr ;
82- std::vector<double > orb_cutoff_;
84+ std::vector<double > orb_cutoff_;
8385
8486 std::vector<std::vector<std::vector<Numerical_Orbital_Lm>>> lcaos;
8587 std::vector<std::vector<std::vector<Numerical_Orbital_Lm>>> abfs;
@@ -89,16 +91,16 @@ class Exx_LRI
8991 RI::Exx<TA,Tcell,Ndim,Tdata> exx_lri;
9092
9193 void post_process_Hexx ( std::map<TA, std::map<TAC, RI::Tensor<Tdata>>> &Hexxs_io ) const ;
92- double post_process_Eexx (const double & Eexx_in) const ;
94+ double post_process_Eexx (const double & Eexx_in) const ;
9395
9496 friend class RPA_LRI <double , Tdata>;
9597 friend class RPA_LRI <std::complex <double >, Tdata>;
9698 friend class Exx_LRI_Interface <double , Tdata>;
9799 friend class Exx_LRI_Interface <std::complex <double >, Tdata>;
98- friend class LR ::ESolver_LR<double , double >;
99- friend class LR ::ESolver_LR<std::complex <double >, double >;
100- friend class LR ::OperatorLREXX<double >;
101- friend class LR ::OperatorLREXX<std::complex <double >>;
100+ friend class LR ::ESolver_LR<double , double >;
101+ friend class LR ::ESolver_LR<std::complex <double >, double >;
102+ friend class LR ::OperatorLREXX<double >;
103+ friend class LR ::OperatorLREXX<std::complex <double >>;
102104};
103105
104106#include " Exx_LRI.hpp"
0 commit comments