ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
to_wannier90.h
Go to the documentation of this file.
1#ifndef TOWannier90_H
2#define TOWannier90_H
3
4#include <iostream>
5#include <algorithm>
6#include <cmath>
7#include <cstdlib>
8#include <vector>
9#include <unordered_set>
10
14#include "source_base/matrix.h"
15#include "source_base/matrix3.h"
16#include "source_cell/klist.h"
18#include "source_psi/psi.h"
21
23{
24 public:
26
28 const bool &out_wannier_mmn,
29 const bool &out_wannier_amn,
30 const bool &out_wannier_unk,
31 const bool &out_wannier_eig,
32 const bool &out_wannier_wvfn_formatted,
33 const std::string &nnkpfile,
34 const std::string &wannier_spin
35 );
37
38 void calculate();
39 void read_nnkp(const UnitCell& ucell, const K_Vectors& kv);
40
41 void out_eig(const ModuleBase::matrix& ekb);
42 void cal_Amn();
43 void cal_Mmn();
44 void out_unk();
45
46 protected:
47 bool try_read_nnkp(const UnitCell& ucell, const K_Vectors& kv);
48
49 // Parameters related to k point
50 int num_kpts=0;
52 std::vector<std::vector<int>> nnlist;
53 std::vector<std::vector<ModuleBase::Vector3<double>>> nncell;
54 int nntot = 0;
56
57 // Parameters related to trial orbitals
58 int num_wannier=0; // Number of Wannier orbits
60 int *L = nullptr;
61 int *m = nullptr;
62 int *rvalue = nullptr;
65 double *alfa = nullptr;
66 int *spin_eig = nullptr; // 'up' state is 1, 'down' state is -1
67 ModuleBase::Vector3<double> *spin_qaxis = nullptr; // spin quantisation axis
68 std::complex<double> *up_con = nullptr;
69 std::complex<double> *dn_con = nullptr;
70
71 // Wannier control parameters
72 bool out_wannier_mmn = true;
73 bool out_wannier_amn = true;
74 bool out_wannier_unk = true;
75 bool out_wannier_eig = true;
77
78 std::string nnkpfile = "";
79 std::string wannier_file_name = "seedname";
80 std::string wannier_spin = "up";
81
83 // int *exclude_bands = nullptr;
84 std::unordered_set<int> exclude_bands;
85 // bool *tag_cal_band = nullptr;
86 int num_bands = 0;
87 int *cal_band_index = nullptr;
88 bool gamma_only_wannier = false;
89
90
91};
92
93#endif
Definition klist.h:13
3 elements vector
Definition vector3.h:22
Definition matrix.h:19
Definition unitcell.h:16
Definition to_wannier90.h:23
int cal_num_kpts
Definition to_wannier90.h:51
int num_kpts
Definition to_wannier90.h:50
void cal_Amn()
Definition to_wannier90.cpp:124
bool out_wannier_wvfn_formatted
Definition to_wannier90.h:76
int start_k_index
Definition to_wannier90.h:55
std::vector< std::vector< int > > nnlist
Definition to_wannier90.h:52
toWannier90()
Definition to_wannier90.cpp:10
std::string nnkpfile
Definition to_wannier90.h:78
ModuleBase::Vector3< double > * x_axis
Definition to_wannier90.h:64
int * m
Definition to_wannier90.h:61
std::vector< std::vector< ModuleBase::Vector3< double > > > nncell
Definition to_wannier90.h:53
std::unordered_set< int > exclude_bands
Definition to_wannier90.h:84
ModuleBase::Vector3< double > * R_centre
Definition to_wannier90.h:59
ModuleBase::Vector3< double > * z_axis
Definition to_wannier90.h:63
double * alfa
Definition to_wannier90.h:65
std::string wannier_spin
Definition to_wannier90.h:80
void cal_Mmn()
Definition to_wannier90.cpp:128
std::complex< double > * dn_con
Definition to_wannier90.h:69
int * L
Definition to_wannier90.h:60
void out_unk()
Definition to_wannier90.cpp:120
std::complex< double > * up_con
Definition to_wannier90.h:68
int * rvalue
Definition to_wannier90.h:62
std::string wannier_file_name
Definition to_wannier90.h:79
int * spin_eig
Definition to_wannier90.h:66
int num_exclude_bands
Definition to_wannier90.h:82
bool out_wannier_unk
Definition to_wannier90.h:74
int * cal_band_index
Definition to_wannier90.h:87
bool try_read_nnkp(const UnitCell &ucell, const K_Vectors &kv)
Definition to_wannier90.cpp:132
~toWannier90()
Definition to_wannier90.cpp:43
int num_wannier
Definition to_wannier90.h:58
bool out_wannier_mmn
Definition to_wannier90.h:72
void calculate()
Definition to_wannier90.cpp:69
int num_bands
Definition to_wannier90.h:86
ModuleBase::Vector3< double > * spin_qaxis
Definition to_wannier90.h:67
bool out_wannier_amn
Definition to_wannier90.h:73
int nntot
Definition to_wannier90.h:54
void out_eig(const ModuleBase::matrix &ekb)
Definition to_wannier90.cpp:98
bool gamma_only_wannier
Definition to_wannier90.h:88
bool out_wannier_eig
Definition to_wannier90.h:75
void read_nnkp(const UnitCell &ucell, const K_Vectors &kv)
Definition to_wannier90.cpp:73