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 W_ABACUS_DEVELOP_ABACUS_DEVELOP_SOURCE_MODULE_IO_TO_WANNIER90_LCAO_IN_PW_H
2#define W_ABACUS_DEVELOP_ABACUS_DEVELOP_SOURCE_MODULE_IO_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
35
36class toWannier90_LCAO_IN_PW : public toWannier90_PW
37{
38 public:
39 toWannier90_LCAO_IN_PW(const bool& out_wannier_mmn,
40 const bool& out_wannier_amn,
41 const bool& out_wannier_unk,
42 const bool& out_wannier_eig,
43 const bool& out_wannier_wvfn_formatted,
44 const std::string& nnkpfile,
45 const std::string& wannier_spin);
46 ~toWannier90_LCAO_IN_PW();
47
48 void calculate(UnitCell& ucell,
49 const ModuleBase::matrix& ekb,
50 const ModulePW::PW_Basis_K* wfcpw,
51 const ModulePW::PW_Basis_Big* bigpw,
52 const Structure_Factor& sf,
53 const K_Vectors& kv,
54 const psi::Psi<std::complex<double>>* psi,
55 const Parallel_Orbitals* pv);
56
57 void calculate(UnitCell& ucell,
58 const ModuleBase::matrix& ekb,
59 const ModulePW::PW_Basis_K* wfcpw,
60 const ModulePW::PW_Basis_Big* bigpw,
61 const Structure_Factor& sf,
62 const K_Vectors& kv,
63 const psi::Psi<double>* psi,
64 const Parallel_Orbitals* pv)
65 {
66 throw std::logic_error("The wave function of toWannier90_LCAO_IN_PW is generally a std::complex<double> type.");
67 }
68
69 protected:
70 const Parallel_Orbitals* ParaV;
72 psi_initializer<std::complex<double>>* psi_initer_ = nullptr;
73
74 psi::Psi<std::complex<double>, base_device::DEVICE_CPU>* psi = nullptr;
75
82 psi::Psi<std::complex<double>>* get_unk_from_lcao(const UnitCell& ucell,
83 const psi::Psi<std::complex<double>>& psi_in,
84 const ModulePW::PW_Basis_K* wfcpw,
85 const Structure_Factor& sf,
86 const K_Vectors& kv);
91 void nao_G_expansion(const int& ik, const ModulePW::PW_Basis_K* wfc_basis, ModuleBase::ComplexMatrix& psi);
92
93 void get_lcao_wfc_global_ik(const int ik,
94 const psi::Psi<std::complex<double>>& psi_in,
95 ModuleBase::ComplexMatrix& lcao_wfc_global);
96};
97#endif
98
99#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:16
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