ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
unitcell_plus.h
Go to the documentation of this file.
1#pragma once
2
4#include <vector>
5
7{
8public:
9 UnitCellPlus()=default;
10 ~UnitCellPlus()=default;
11
12 double get_lat0() const override {
13 return lat0;
14 }
15
16 double get_omega() const override {
17 return omega;
18 }
19
20 const ModuleBase::Matrix3& get_latvec() const override {
21 return latvec;
22 }
23
24 int get_natom() const override {
25 return nat;
26 }
27
28 int get_na(int i) const override {
29 assert(i >= 0 && i < ntype);
30 return na[i];
31 }
32
33 int get_ntype() const override {
34 return ntype;
35 }
36
37 ModuleBase::Vector3<double> get_tauu(int i, int j) const override {
38 assert(i >= 0 && i < ntype);
39 assert(j >= 0 && j < na[i]);
40 //assert(naa.size() > 0);
41 if(i==0)
42 {
43 return tau[j];
44 }
45 return tau[naa[i-1]+j];
46 }
47
48 double lat0;
49 double omega;
50 int nat;
51 std::vector<int> na;
52 // naa is the cumulative sum of na: naa[i] = na[0] + na[1] + ... + na[i]
53 std::vector<int> naa;
54 int ntype;
56 std::vector<ModuleBase::Vector3<double>> tau;
57
58 // Compute cumulative counts in naa from current na vector.
59 // Assumption: naa[i] == sum_{k=0..i} na[k]. Call this after na is set/modified.
61 {
62 naa.resize(na.size());
63 if(naa.size()>0)
64 {
65 naa[0] = na[0];
66 }
67 for(int i=1;i<naa.size();i++)
68 {
69 naa[i] = naa[i-1] + na[i];
70 }
71 }
72
73};
const std::complex< double > i
Definition cal_pLpR.cpp:46
Definition unitcell_interface.h:9
3x3 matrix and related mathamatical operations
Definition matrix3.h:19
3 elements vector
Definition vector3.h:24
Definition unitcell_plus.h:7
~UnitCellPlus()=default
double omega
Definition unitcell_plus.h:49
ModuleBase::Matrix3 latvec
Definition unitcell_plus.h:55
std::vector< ModuleBase::Vector3< double > > tau
Definition unitcell_plus.h:56
int nat
Definition unitcell_plus.h:50
int get_ntype() const override
Definition unitcell_plus.h:33
ModuleBase::Vector3< double > get_tauu(int i, int j) const override
Definition unitcell_plus.h:37
int get_natom() const override
Definition unitcell_plus.h:24
double get_omega() const override
Definition unitcell_plus.h:16
void compute_naa()
Definition unitcell_plus.h:60
std::vector< int > naa
Definition unitcell_plus.h:53
std::vector< int > na
Definition unitcell_plus.h:51
int ntype
Definition unitcell_plus.h:54
const ModuleBase::Matrix3 & get_latvec() const override
Definition unitcell_plus.h:20
double lat0
Definition unitcell_plus.h:48
int get_na(int i) const override
Definition unitcell_plus.h:28
UnitCellPlus()=default
double get_lat0() const override
Definition unitcell_plus.h:12