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 // mode:
25 // 1: <lcaos|lcaos>
26 // 2: <jYs|jYs> <abfs|abfs>
27 void init(const int mode,
28 const UnitCell& ucell,
29 const LCAO_Orbitals& orb,
30 const double kmesh_times, // extend Kcut, keep dK
31 const double rmax,
32 int& Lmax);
33
34 void init_radial(const std::vector<std::vector<std::vector<Numerical_Orbital_Lm>>>& orb_A,
35 const std::vector<std::vector<std::vector<Numerical_Orbital_Lm>>>& orb_B,
36 const ORB_gaunt_table& MGT);
37 void init_radial(const LCAO_Orbitals& orb_A, const LCAO_Orbitals& orb_B, const ORB_gaunt_table& MGT);
38
39 void init_radial_table();
40 void init_radial_table(const std::map<size_t, std::map<size_t, std::set<double>>>& Rs); // unit: ucell.lat0
41
42 enum class Matrix_Order
43 {
44 AB,
45 BA
46 };
47
48 template <typename Tdata>
49 RI::Tensor<Tdata> cal_overlap_matrix(const size_t TA,
50 const size_t TB,
51 const ModuleBase::Vector3<double>& tauA, // unit: ucell.lat0
52 const ModuleBase::Vector3<double>& tauB, // unit: ucell.lat0
55 const Matrix_Order& matrix_order) const;
56 template <typename Tdata>
57 std::array<RI::Tensor<Tdata>, 3> cal_grad_overlap_matrix(
58 const size_t TA,
59 const size_t TB,
60 const ModuleBase::Vector3<double>& tauA, // unit: ucell.lat0
61 const ModuleBase::Vector3<double>& tauB, // unit: ucell.lat0
64 const Matrix_Order& matrix_order) const;
65
66 template <typename Tdata>
67 std::map<size_t, std::map<size_t, std::map<size_t, std::map<size_t, RI::Tensor<Tdata>>>>> cal_overlap_matrix_all(
68 const UnitCell &ucell,
71
72 private:
74 const double lcao_dr_ = 0.01;
75 double* lat0=nullptr; // restore ucell.lat0
76 std::map<size_t, // TA
77 std::map<size_t, // TB
78 std::map<int, // LA
79 std::map<size_t, // NA
80 std::map<int, // LB
81 std::map<size_t, // NB
84 // this->center2_orb11_s[TA][TB][LA][NA][LB][NB]
85};
86
87#include "Matrix_Orbs11.hpp"
88
89#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:108
ModuleBase::Sph_Bessel_Recursive::D2 * psb_
Definition Matrix_Orbs11.h:73
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:83
const double lcao_dr_
Definition Matrix_Orbs11.h:74
void init_radial(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 ORB_gaunt_table &MGT)
Definition Matrix_Orbs11.cpp:59
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:75
Matrix_Order
Definition Matrix_Orbs11.h:43
void init(const int mode, const UnitCell &ucell, const LCAO_Orbitals &orb, const double kmesh_times, const double rmax, int &Lmax)
Definition Matrix_Orbs11.cpp:12
std::vector< Index_T > IndexLNM
Definition element_basis_index.h:41
Definition sph_bessel_recursive.h:49
3 elements vector
Definition vector3.h:22
Definition ORB_gaunt_table.h:9
Definition unitcell.h:16