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
8#include "source_base/timer.h"
10#include "source_base/ylm.h"
11#include "source_cell/klist.h"
12#include "source_psi/psi.h"
13#include "to_wannier90.h"
14#include "to_wannier90_pw.h"
15
16#include <algorithm>
17#include <cmath>
18#include <cstdlib>
19#include <iostream>
20#include <vector>
21
22#ifdef __LCAO
25
26class toWannier90_LCAO_IN_PW : public toWannier90_PW
27{
28 public:
29 toWannier90_LCAO_IN_PW(const bool& out_wannier_mmn,
30 const bool& out_wannier_amn,
31 const bool& out_wannier_unk,
32 const bool& out_wannier_eig,
33 const bool& out_wannier_wvfn_formatted,
34 const std::string& nnkpfile,
35 const std::string& wannier_spin);
36 ~toWannier90_LCAO_IN_PW();
37
38 void calculate(UnitCell& ucell,
39 const ModuleBase::matrix& ekb,
40 const ModulePW::PW_Basis_K* wfcpw,
41 const ModulePW::PW_Basis_Big* bigpw,
42 const Structure_Factor& sf,
43 const K_Vectors& kv,
44 const psi::Psi<std::complex<double>>* psi,
45 const Parallel_Orbitals* pv);
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<double>* psi,
54 const Parallel_Orbitals* pv)
55 {
56 throw std::logic_error("The wave function of toWannier90_LCAO_IN_PW is generally a std::complex<double> type.");
57 }
58
59 protected:
60 const Parallel_Orbitals* ParaV = nullptr;
62 psi_initializer<std::complex<double>>* psi_initer_ = nullptr;
63
64 psi::Psi<std::complex<double>, base_device::DEVICE_CPU>* psi = nullptr;
65
72 psi::Psi<std::complex<double>>* get_unk_from_lcao(const UnitCell& ucell,
73 const psi::Psi<std::complex<double>>& psi_in,
74 const ModulePW::PW_Basis_K* wfcpw,
75 const Structure_Factor& sf,
76 const K_Vectors& kv);
81 void nao_G_expansion(const int& ik, const ModulePW::PW_Basis_K* wfc_basis, ModuleBase::ComplexMatrix& psi);
82
83 void get_lcao_wfc_global_ik(const int ik,
84 const psi::Psi<std::complex<double>>& psi_in,
85 ModuleBase::ComplexMatrix& lcao_wfc_global);
86};
87#endif
88
89#endif
Definition klist.h:12
Definition complexmatrix.h:13
Definition matrix.h:18
Definition pw_basis_big.h:17
Special pw_basis class. It includes different k-points.
Definition pw_basis_k.h:56
Definition parallel_orbitals.h:9
Definition structure_factor.h:10
Definition unitcell.h:15
Definition psi.h:37
Definition psi_initializer.h:51
Definition to_wannier90_pw.h:21
void calculate()
Definition to_wannier90.cpp:69
Definition exx_lip.h:23