ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
Matrix_Orbs22.h
Go to the documentation of this file.
1//=======================
2// AUTHOR : Peize Lin
3// DATE : 2023-02-23
4//=======================
5
6#ifndef MATRIX_ORB22_H
7#define MATRIX_ORB22_H
8
10#include "source_base/vector3.h"
15
16#include <RI/global/Tensor.h>
17#include <map>
18#include <set>
19#include <vector>
20
22{
23 public:
24 void init(
25 const std::vector<std::vector<std::vector<Numerical_Orbital_Lm>>>& orb_A1,
26 const std::vector<std::vector<std::vector<Numerical_Orbital_Lm>>>& orb_A2,
27 const std::vector<std::vector<std::vector<Numerical_Orbital_Lm>>>& orb_B1,
28 const std::vector<std::vector<std::vector<Numerical_Orbital_Lm>>>& orb_B2,
29 const UnitCell& ucell,
30 const LCAO_Orbitals& orb,
31 const double kmesh_times); // extend Kcut, keep dK
32
33 void init_radial_table();
34 void init_radial_table(const std::map<size_t, std::map<size_t, std::set<double>>>& Rs); // unit: ucell.lat0
35
36 enum class Matrix_Order
37 {
62 };
63
64 template <typename Tdata>
65 RI::Tensor<Tdata> cal_overlap_matrix(const size_t TA,
66 const size_t TB,
67 const ModuleBase::Vector3<double>& tauA, // unit: ucell.lat0
68 const ModuleBase::Vector3<double>& tauB, // unit: ucell.lat0
73 const Matrix_Order& matrix_order) const;
74 template <typename Tdata>
75 std::array<RI::Tensor<Tdata>, 3> cal_grad_overlap_matrix(
76 const size_t TA,
77 const size_t TB,
78 const ModuleBase::Vector3<double>& tauA, // unit: ucell.lat0
79 const ModuleBase::Vector3<double>& tauB, // unit: ucell.lat0
84 const Matrix_Order& matrix_order) const;
85
86 template <typename Tdata>
87 std::map<size_t, std::map<size_t, std::map<size_t, std::map<size_t, RI::Tensor<Tdata>>>>> cal_overlap_matrix_all(
88 const UnitCell &ucell,
92 const ModuleBase::Element_Basis_Index::IndexLNM& index_B2) const;
93
94 std::shared_ptr<ORB_gaunt_table> MGT;
95
96 private:
98 const double lcao_dr_ = 0.01;
99 double* lat0 = nullptr; // restore ucell.lat0
100 std::map<
101 size_t, // TA
102 std::map<size_t, // TB
103 std::map<int, // LA1
104 std::map<size_t, // NA1
105 std::map<int, // LA2
106 std::map<size_t, // NA2
107 std::map<int, // LB1
108 std::map<size_t, // NB1
109 std::map<int, // LB2
110 std::map<size_t, // NB2
111 Center2_Orb::Orb22>>>>>>>>>>
113 // this->center2_orb22_s[TA][TB][LA1][NA1][LA2][NA2][LB1][NB1][LB2][NB2]
114};
115
116#include "Matrix_Orbs22.hpp"
117
118#endif
Definition center2_orb-orb22.h:20
Definition ORB_read.h:19
Definition Matrix_Orbs22.h:22
std::array< RI::Tensor< Tdata >, 3 > cal_grad_overlap_matrix(const size_t TA, const size_t TB, const ModuleBase::Vector3< double > &tauA, const ModuleBase::Vector3< double > &tauB, const ModuleBase::Element_Basis_Index::IndexLNM &index_A1, const ModuleBase::Element_Basis_Index::IndexLNM &index_A2, const ModuleBase::Element_Basis_Index::IndexLNM &index_B1, const ModuleBase::Element_Basis_Index::IndexLNM &index_B2, const Matrix_Order &matrix_order) const
Definition Matrix_Orbs22.hpp:141
void init_radial_table()
Definition Matrix_Orbs22.cpp:115
void init(const std::vector< std::vector< std::vector< Numerical_Orbital_Lm > > > &orb_A1, const std::vector< std::vector< std::vector< Numerical_Orbital_Lm > > > &orb_A2, const std::vector< std::vector< std::vector< Numerical_Orbital_Lm > > > &orb_B1, const std::vector< std::vector< std::vector< Numerical_Orbital_Lm > > > &orb_B2, const UnitCell &ucell, const LCAO_Orbitals &orb, const double kmesh_times)
Definition Matrix_Orbs22.cpp:13
ModuleBase::Sph_Bessel_Recursive::D2 * psb_
Definition Matrix_Orbs22.h:97
const double lcao_dr_
Definition Matrix_Orbs22.h:98
std::map< size_t, std::map< size_t, std::map< size_t, std::map< size_t, RI::Tensor< Tdata > > > > > cal_overlap_matrix_all(const UnitCell &ucell, const ModuleBase::Element_Basis_Index::IndexLNM &index_A1, const ModuleBase::Element_Basis_Index::IndexLNM &index_A2, const ModuleBase::Element_Basis_Index::IndexLNM &index_B1, const ModuleBase::Element_Basis_Index::IndexLNM &index_B2) const
Definition Matrix_Orbs22.hpp:278
std::shared_ptr< ORB_gaunt_table > MGT
Definition Matrix_Orbs22.h:94
std::map< size_t, std::map< size_t, std::map< int, std::map< size_t, std::map< int, std::map< size_t, std::map< int, std::map< size_t, std::map< int, std::map< size_t, Center2_Orb::Orb22 > > > > > > > > > > center2_orb22_s
Definition Matrix_Orbs22.h:112
Matrix_Order
Definition Matrix_Orbs22.h:37
double * lat0
Definition Matrix_Orbs22.h:99
RI::Tensor< Tdata > cal_overlap_matrix(const size_t TA, const size_t TB, const ModuleBase::Vector3< double > &tauA, const ModuleBase::Vector3< double > &tauB, const ModuleBase::Element_Basis_Index::IndexLNM &index_A1, const ModuleBase::Element_Basis_Index::IndexLNM &index_A2, const ModuleBase::Element_Basis_Index::IndexLNM &index_B1, const ModuleBase::Element_Basis_Index::IndexLNM &index_B2, const Matrix_Order &matrix_order) const
Definition Matrix_Orbs22.hpp:14
Definition sph_bessel_recursive.h:49
3 elements vector
Definition vector3.h:22
Definition unitcell.h:17
std::vector< Index_T > IndexLNM
Definition element_basis_index.h:42