ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
Matrix_Orbs11.h
Go to the documentation of this file.
1//=======================
2// AUTHOR : Peize Lin
3// DATE : 2022-08-17
4//=======================
5
6#ifndef MATRIX_ORB11_H
7#define MATRIX_ORB11_H
8
11#include "source_base/vector3.h"
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_A,
26 const std::vector<std::vector<std::vector<Numerical_Orbital_Lm>>>& orb_B,
27 const UnitCell& ucell,
28 const LCAO_Orbitals& orb,
29 const double kmesh_times); // extend Kcut, keep dK
30
31 void init_radial_table();
32 void init_radial_table(const std::map<size_t, std::map<size_t, std::set<double>>>& Rs); // unit: ucell.lat0
33
34 enum class Matrix_Order
35 {
36 AB,
37 BA
38 };
39
40 template <typename Tdata>
41 RI::Tensor<Tdata> cal_overlap_matrix(const size_t TA,
42 const size_t TB,
43 const ModuleBase::Vector3<double>& tauA, // unit: ucell.lat0
44 const ModuleBase::Vector3<double>& tauB, // unit: ucell.lat0
47 const Matrix_Order& matrix_order) const;
48 template <typename Tdata>
49 std::array<RI::Tensor<Tdata>, 3> cal_grad_overlap_matrix(
50 const size_t TA,
51 const size_t TB,
52 const ModuleBase::Vector3<double>& tauA, // unit: ucell.lat0
53 const ModuleBase::Vector3<double>& tauB, // unit: ucell.lat0
56 const Matrix_Order& matrix_order) const;
57
58 template <typename Tdata>
59 std::map<size_t, std::map<size_t, std::map<size_t, std::map<size_t, RI::Tensor<Tdata>>>>> cal_overlap_matrix_all(
60 const UnitCell &ucell,
63
64 std::shared_ptr<ORB_gaunt_table> MGT;
65
66 private:
68 const double lcao_dr_ = 0.01;
69 double* lat0=nullptr; // restore ucell.lat0
70 std::map<size_t, // TA
71 std::map<size_t, // TB
72 std::map<int, // LA
73 std::map<size_t, // NA
74 std::map<int, // LB
75 std::map<size_t, // NB
78 // this->center2_orb11_s[TA][TB][LA][NA][LB][NB]
79};
80
81#include "Matrix_Orbs11.hpp"
82
83#endif
Definition center2_orb-orb11.h:20
Definition ORB_read.h:19
Definition Matrix_Orbs11.h:22
void init_radial_table()
Definition Matrix_Orbs11.cpp:94
ModuleBase::Sph_Bessel_Recursive::D2 * psb_
Definition Matrix_Orbs11.h:67
std::map< size_t, std::map< size_t, std::map< int, std::map< size_t, std::map< int, std::map< size_t, Center2_Orb::Orb11 > > > > > > center2_orb11_s
Definition Matrix_Orbs11.h:77
std::shared_ptr< ORB_gaunt_table > MGT
Definition Matrix_Orbs11.h:64
void init(const std::vector< std::vector< std::vector< Numerical_Orbital_Lm > > > &orb_A, const std::vector< std::vector< std::vector< Numerical_Orbital_Lm > > > &orb_B, const UnitCell &ucell, const LCAO_Orbitals &orb, const double kmesh_times)
Definition Matrix_Orbs11.cpp:13
const double lcao_dr_
Definition Matrix_Orbs11.h:68
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_r, const ModuleBase::Element_Basis_Index::IndexLNM &index_c) const
Definition Matrix_Orbs11.hpp:130
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_A, const ModuleBase::Element_Basis_Index::IndexLNM &index_B, const Matrix_Order &matrix_order) const
Definition Matrix_Orbs11.hpp:14
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_A, const ModuleBase::Element_Basis_Index::IndexLNM &index_B, const Matrix_Order &matrix_order) const
Definition Matrix_Orbs11.hpp:69
double * lat0
Definition Matrix_Orbs11.h:69
Matrix_Order
Definition Matrix_Orbs11.h:35
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