1#ifndef TOWannier90_LCAO_H
2#define TOWannier90_LCAO_H
44 Coordinate_3D(
double x = 0.0,
double y = 0.0,
double z = 0.0) :
x(
x), y(y), z(z)
48 bool operator<(
const Coordinate_3D& other)
const
55 return std::abs(z - other.z) >=
threshold && z < other.z;
62 toWannier90_LCAO(
const bool& out_wannier_mmn,
63 const bool& out_wannier_amn,
64 const bool& out_wannier_unk,
65 const bool& out_wannier_eig,
66 const bool& out_wannier_wvfn_formatted,
67 const std::string& nnkpfile,
68 const std::string& wannier_spin,
88 "The wave function is real (double type), indicating 'gamma_only = 1'. "
89 "The Wannier90 interface does not support Gamma-only calculations. "
90 "Please set 'gamma_only 0' in your INPUT file.");
99 const int mesh_r = 1001;
100 const double dr = 0.01;
101 std::vector<std::vector<Numerical_Orbital_Lm>> A_orbs;
110 double kmesh_times = 1;
113 std::vector<std::vector<std::vector<Numerical_Orbital_Lm>>> orbs;
114 std::map<size_t, std::map<size_t, std::map<size_t, Center2_Orb::Orb11>>> center2_orb11_A;
116 std::vector<ModuleBase::Vector3<double>> R_coor_car;
117 std::vector<std::vector<std::vector<double>>> psi_psiA_R;
119 std::vector<int> iw2it;
120 std::vector<int> iw2ia;
121 std::vector<int> iw2iL;
122 std::vector<int> iw2iN;
123 std::vector<int> iw2im;
124 std::vector<int> iw2iorb;
128 void initialize_orb_table(
const UnitCell& ucell);
129 void produce_basis_orb();
133 std::vector<Coordinate_3D> delta_k_all;
134 std::map<Coordinate_3D, int> delta_k_all_index;
136 void unkdotkb(
const UnitCell& ucell,
138 const psi::Psi<std::complex<double>>& psi_in,
144 void produce_trial_in_lcao();
145 void construct_overlap_table_project();
146 void cal_orbA_overlap_R(
const UnitCell& ucell);
149 const psi::Psi<std::complex<double>>& psi_in,
153 std::vector<FR_overlap<std::complex<double>>> FR;
bool operator<(const Abfs::Vector3_Order< T > &v1, const Abfs::Vector3_Order< T > &v2)
Definition sltk_grid_driver.h:40
Definition complexmatrix.h:13
Definition sph_bessel_recursive.h:49
3 elements vector
Definition vector3.h:24
Definition ORB_atomic_lm.h:21
Definition ORB_gaunt_table.h:9
Definition parallel_orbitals.h:9
Definition to_wannier90.h:18
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
void WARNING_QUIT(const std::string &, const std::string &)
Combine the functions of WARNING and QUIT.
Definition test_delley.cpp:14
#define threshold
Definition sph_bessel_recursive_test.cpp:4