1#ifndef TOWannier90_LCAO_H
2#define TOWannier90_LCAO_H
51 Coordinate_3D(
double x = 0.0,
double y = 0.0,
double z = 0.0) :
x(
x), y(y), z(z)
55 bool operator<(
const Coordinate_3D& other)
const
62 return std::abs(z - other.z) >=
threshold && z < other.z;
69 toWannier90_LCAO(
const bool& out_wannier_mmn,
70 const bool& out_wannier_amn,
71 const bool& out_wannier_unk,
72 const bool& out_wannier_eig,
73 const bool& out_wannier_wvfn_formatted,
74 const std::string& nnkpfile,
75 const std::string& wannier_spin,
94 throw std::logic_error(
"The wave function of toWannier90_LCAO_IN_PW is generally a std::complex<double> type.");
103 const int mesh_r = 1001;
104 const double dr = 0.01;
105 std::vector<std::vector<Numerical_Orbital_Lm>> A_orbs;
114 double kmesh_times = 1;
117 std::vector<std::vector<std::vector<Numerical_Orbital_Lm>>> orbs;
118 std::map<size_t, std::map<size_t, std::map<size_t, Center2_Orb::Orb11>>> center2_orb11_A;
120 std::vector<ModuleBase::Vector3<double>> R_coor_car;
121 std::vector<std::vector<std::vector<double>>> psi_psiA_R;
123 std::vector<int> iw2it;
124 std::vector<int> iw2ia;
125 std::vector<int> iw2iL;
126 std::vector<int> iw2iN;
127 std::vector<int> iw2im;
128 std::vector<int> iw2iorb;
132 void initialize_orb_table(
const UnitCell& ucell);
133 void produce_basis_orb();
137 std::vector<Coordinate_3D> delta_k_all;
138 std::map<Coordinate_3D, int> delta_k_all_index;
140 void unkdotkb(
const UnitCell& ucell,
142 const psi::Psi<std::complex<double>>& psi_in,
148 void produce_trial_in_lcao();
149 void construct_overlap_table_project();
150 void cal_orbA_overlap_R(
const UnitCell& ucell);
153 const psi::Psi<std::complex<double>>& psi_in,
157 std::vector<FR_overlap<std::complex<double>>> FR;
bool operator<(const Abfs::Vector3_Order< double > &v1, const Abfs::Vector3_Order< double > &v2)
Definition abfs-vector3_order.cpp:4
Definition sltk_grid_driver.h:43
Definition complexmatrix.h:14
Definition sph_bessel_recursive.h:49
3 elements vector
Definition vector3.h:22
Definition ORB_atomic_lm.h:22
Definition ORB_gaunt_table.h:9
Definition parallel_orbitals.h:9
Definition to_wannier90.h:23
void cal_Amn()
Definition to_wannier90.cpp:124
void cal_Mmn()
Definition to_wannier90.cpp:128
void out_unk()
Definition to_wannier90.cpp:120
void calculate()
Definition to_wannier90.cpp:69
double x[440]
Definition sincos.cpp:28
#define threshold
Definition sph_bessel_recursive_test.cpp:4