ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
exx_opt_orb.h
Go to the documentation of this file.
1#ifndef EXX_OPT_ORB_H
2#define EXX_OPT_ORB_H
3
4#include "../../source_hamilt/module_xc/exx_info.h"
5#include "../../source_base/matrix.h"
6#include "../../source_base/element_basis_index.h"
7#include "source_cell/klist.h"
9#include <RI/global/Tensor.h>
10#include <vector>
11#include <map>
12#include <set>
13
15{
16public:
17 void generate_matrix(
19 const K_Vectors &kv,
20 const UnitCell &ucell,
21 const LCAO_Orbitals &orb) const;
22private:
23 std::vector<std::vector<RI::Tensor<double>>> cal_I(
24 const std::map<size_t,std::map<size_t,std::map<size_t,std::map<size_t,RI::Tensor<double>>>>> &ms,
25 const size_t TA, const size_t IA, const size_t TB, const size_t IB ) const;
26 RI::Tensor<double> cal_mul_22(
27 const std::vector<RI::Tensor<double>> & m_left,
28 const std::vector<std::vector<RI::Tensor<double>>> & m_middle,
29 const std::vector<RI::Tensor<double>> & m_right ) const;
30 RI::Tensor<double> cal_mul_21(
31 const std::vector<RI::Tensor<double>> & m_left,
32 const std::vector<std::vector<RI::Tensor<double>>> & m_middle,
33 const std::vector<RI::Tensor<double>> & m_right ) const;
34 RI::Tensor<double> cal_mul_12(
35 const std::vector<RI::Tensor<double>> & m_left,
36 const std::vector<std::vector<RI::Tensor<double>>> & m_middle,
37 const std::vector<RI::Tensor<double>> & m_right ) const;
38 RI::Tensor<double> cal_mul_11(
39 const std::vector<RI::Tensor<double>> & m_left,
40 const std::vector<std::vector<RI::Tensor<double>>> & m_middle,
41 const std::vector<RI::Tensor<double>> & m_right ) const;
42 void print_matrix(
44 const UnitCell& ucell,
45 const K_Vectors &kv,
46 const int Lmax,
47 const std::vector<std::size_t> &ecut_number,
48 const std::string& file_name,
49 const std::vector<RI::Tensor<double>> &matrix_Q,
50 const std::vector<std::vector<RI::Tensor<double>>> &matrix_S,
51 const RI::Tensor<double> &matrix_V,
52 const size_t TA, const size_t IA, const size_t TB, const size_t IB,
53 const std::vector<double>& orb_cutoff,
55 const ModuleBase::Element_Basis_Index::IndexLNM &index_jles) const;
56 std::map<size_t,std::map<size_t,std::set<double>>> get_radial_R(const UnitCell& ucell) const;
57};
58#endif
Definition exx_opt_orb.h:15
std::map< size_t, std::map< size_t, std::set< double > > > get_radial_R(const UnitCell &ucell) const
Definition exx_opt_orb.cpp:440
std::vector< std::vector< RI::Tensor< double > > > cal_I(const std::map< size_t, std::map< size_t, std::map< size_t, std::map< size_t, RI::Tensor< double > > > > > &ms, const size_t TA, const size_t IA, const size_t TB, const size_t IB) const
Definition exx_opt_orb.cpp:419
void generate_matrix(const Exx_Info::Exx_Info_Opt_ABFs &info, const K_Vectors &kv, const UnitCell &ucell, const LCAO_Orbitals &orb) const
Definition exx_opt_orb.cpp:16
RI::Tensor< double > cal_mul_12(const std::vector< RI::Tensor< double > > &m_left, const std::vector< std::vector< RI::Tensor< double > > > &m_middle, const std::vector< RI::Tensor< double > > &m_right) const
Definition exx_opt_orb.cpp:374
RI::Tensor< double > cal_mul_11(const std::vector< RI::Tensor< double > > &m_left, const std::vector< std::vector< RI::Tensor< double > > > &m_middle, const std::vector< RI::Tensor< double > > &m_right) const
Definition exx_opt_orb.cpp:396
RI::Tensor< double > cal_mul_21(const std::vector< RI::Tensor< double > > &m_left, const std::vector< std::vector< RI::Tensor< double > > > &m_middle, const std::vector< RI::Tensor< double > > &m_right) const
Definition exx_opt_orb.cpp:352
void print_matrix(const Exx_Info::Exx_Info_Opt_ABFs &info, const UnitCell &ucell, const K_Vectors &kv, const int Lmax, const std::vector< std::size_t > &ecut_number, const std::string &file_name, const std::vector< RI::Tensor< double > > &matrix_Q, const std::vector< std::vector< RI::Tensor< double > > > &matrix_S, const RI::Tensor< double > &matrix_V, const size_t TA, const size_t IA, const size_t TB, const size_t IB, const std::vector< double > &orb_cutoff, const ModuleBase::Element_Basis_Index::Range &range_jles, const ModuleBase::Element_Basis_Index::IndexLNM &index_jles) const
Definition exx_opt_orb-print.cpp:7
RI::Tensor< double > cal_mul_22(const std::vector< RI::Tensor< double > > &m_left, const std::vector< std::vector< RI::Tensor< double > > > &m_middle, const std::vector< RI::Tensor< double > > &m_right) const
Definition exx_opt_orb.cpp:330
Definition klist.h:13
Definition ORB_read.h:19
Definition unitcell.h:17
std::vector< Index_T > IndexLNM
Definition element_basis_index.h:42
std::vector< std::vector< NM > > Range
Definition element_basis_index.h:41
Definition exx_info.h:81