ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
to_wannier90_lcao_in_pw.h
Go to the documentation of this file.
1#ifndef TO_WANNIER90_LCAO_IN_PW_H
2#define TO_WANNIER90_LCAO_IN_PW_H
3
11#include "source_base/timer.h"
12#include "source_base/vector3.h"
13#include "source_base/ylm.h"
17#include "source_cell/klist.h"
20#include "source_psi/psi.h"
21#include "single_R_io.h"
22#include "to_wannier90.h"
23#include "to_wannier90_pw.h"
24
25#include <algorithm>
26#include <cmath>
27#include <cstdlib>
28#include <iostream>
29#include <vector>
30
31#ifdef __LCAO
34
35class toWannier90_LCAO_IN_PW : public toWannier90_PW
36{
37 public:
38 toWannier90_LCAO_IN_PW(const bool& out_wannier_mmn,
39 const bool& out_wannier_amn,
40 const bool& out_wannier_unk,
41 const bool& out_wannier_eig,
42 const bool& out_wannier_wvfn_formatted,
43 const std::string& nnkpfile,
44 const std::string& wannier_spin);
45 ~toWannier90_LCAO_IN_PW();
46
47 void calculate(UnitCell& ucell,
48 const ModuleBase::matrix& ekb,
49 const ModulePW::PW_Basis_K* wfcpw,
50 const ModulePW::PW_Basis_Big* bigpw,
51 const Structure_Factor& sf,
52 const K_Vectors& kv,
53 const psi::Psi<std::complex<double>>* psi,
54 const Parallel_Orbitals* pv);
55
56 void calculate(UnitCell& ucell,
57 const ModuleBase::matrix& ekb,
58 const ModulePW::PW_Basis_K* wfcpw,
59 const ModulePW::PW_Basis_Big* bigpw,
60 const Structure_Factor& sf,
61 const K_Vectors& kv,
62 const psi::Psi<double>* psi,
63 const Parallel_Orbitals* pv)
64 {
65 throw std::logic_error("The wave function of toWannier90_LCAO_IN_PW is generally a std::complex<double> type.");
66 }
67
68 protected:
69 const Parallel_Orbitals* ParaV;
71 psi_initializer<std::complex<double>>* psi_initer_ = nullptr;
72
73 psi::Psi<std::complex<double>, base_device::DEVICE_CPU>* psi = nullptr;
74
81 psi::Psi<std::complex<double>>* get_unk_from_lcao(const UnitCell& ucell,
82 const psi::Psi<std::complex<double>>& psi_in,
83 const ModulePW::PW_Basis_K* wfcpw,
84 const Structure_Factor& sf,
85 const K_Vectors& kv);
90 void nao_G_expansion(const int& ik, const ModulePW::PW_Basis_K* wfc_basis, ModuleBase::ComplexMatrix& psi);
91
92 void get_lcao_wfc_global_ik(const int ik,
93 const psi::Psi<std::complex<double>>& psi_in,
94 ModuleBase::ComplexMatrix& lcao_wfc_global);
95};
96#endif
97
98#endif
Definition klist.h:13
Definition complexmatrix.h:14
Definition matrix.h:19
Definition pw_basis_big.h:16
Special pw_basis class. It includes different k-points.
Definition pw_basis_k.h:57
Definition parallel_orbitals.h:9
Definition structure_factor.h:11
Definition unitcell.h:17
Definition psi.h:37
Definition psi_initializer.h:53
Definition to_wannier90_pw.h:22
void calculate()
Definition to_wannier90.cpp:69
Definition exx_lip.h:23