10#include <unordered_map>
16#ifndef __NONLOCALNEWTEMPLATE
17#define __NONLOCALNEWTEMPLATE
38template <
typename TK,
typename TR>
43 const std::vector<ModuleBase::Vector3<double>>& kvec_d_in,
46 const std::vector<double>& orb_cutoff,
57 void cal_force_stress(
const bool cal_force,
58 const bool cal_stress,
75 bool allocated =
false;
77 bool HR_fixed_done =
false;
100 const std::unordered_map<
int, std::vector<double>>& nlm1_all,
101 const std::unordered_map<
int, std::vector<double>>& nlm2_all,
113 const std::unordered_map<
int, std::vector<double>>& nlm1_all,
114 const std::unordered_map<
int, std::vector<double>>& nlm2_all,
125 const std::unordered_map<
int, std::vector<double>>& nlm1_all,
126 const std::unordered_map<
int, std::vector<double>>& nlm2_all,
Definition sltk_grid_driver.h:43
3 elements vector
Definition vector3.h:22
Definition parallel_orbitals.h:9
A class to compute two-center integrals.
Definition two_center_integrator.h:35
Definition base_matrix.h:20
Definition hcontainer.h:144
Definition hs_matrix_k.hpp:11
void initialize_HR(const Grid_Driver *GridD_in)
initialize HR, search the nearest neighbor atoms HContainer is used to store the non-local pseudopote...
void cal_HR_IJR(const int &iat1, const int &iat2, const int &T0, const Parallel_Orbitals *paraV, const std::unordered_map< int, std::vector< double > > &nlm1_all, const std::unordered_map< int, std::vector< double > > &nlm2_all, TR *data_pointer)
calculate the HR local matrix of <I,J,R> atom pair
void calculate_HR()
calculate the non-local pseudopotential matrix with specific <I,J,R> atom-pairs nearest neighbor atom...
std::vector< double > orb_cutoff_
Definition nonlocal_new.h:68
std::vector< AdjacentAtomInfo > adjs_all
Definition nonlocal_new.h:132
virtual void contributeHR() override
contributeHR() is used to calculate the HR matrix <phi_{\mu, 0}|beta_p1>D_{p1, p2}<beta_p2|phi_{\nu,...
virtual void set_HR_fixed(void *) override
set_HR_fixed() is used for pass HR_fixed matrix to the next node in sub-chain table not used in base ...
Definition nonlocal_new.h:26
void cal_force_IJR(const int &iat1, const int &iat2, const int &T0, const Parallel_Orbitals *paraV, const std::unordered_map< int, std::vector< double > > &nlm1_all, const std::unordered_map< int, std::vector< double > > &nlm2_all, const hamilt::BaseMatrix< std::complex< double > > *dmR_pointer, double *force1, double *force2)
Definition nonlocal_force_stress.hpp:226
void cal_stress_IJR(const int &iat1, const int &iat2, const int &T0, const Parallel_Orbitals *paraV, const std::unordered_map< int, std::vector< double > > &nlm1_all, const std::unordered_map< int, std::vector< double > > &nlm2_all, const hamilt::BaseMatrix< std::complex< double > > *dmR_pointer, const ModuleBase::Vector3< double > &dis1, const ModuleBase::Vector3< double > &dis2, double *stress)
Definition nonlocal_force_stress.hpp:295
Definition operator_lcao.h:12
#define T
Definition exp.cpp:237