ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
parallel_orbitals.h
Go to the documentation of this file.
1#ifndef _PARALLEL_ORBITALS_H_
2#define _PARALLEL_ORBITALS_H_
4#include <fstream>
5
9{
10public:
13
18
21
22 //ncol_bands*ncol_bands
24
27
32 int nnr=1;
33 int *nlocdim;
35
36#ifdef __MPI
37 int desc_wfc[9]; //for wfc, nlocal*nbands
38 int desc_Eij[9]; // for Eij in TDDFT, nbands*nbands
39 int desc_wfc1[9]; // for wfc^T in TDDFT, nbands*nlocal
40
42 int set_nloc_wfc_Eij(const int& N_A,
43 std::ofstream& ofs_running,
44 std::ofstream& ofs_warning);
45
47 void set_desc_wfc_Eij(const int& nbasis,
48 const int& nbands,
49 const int& lld);
50#endif
51
54
55 int get_wfc_global_nbands () const;
56 int get_wfc_global_nbasis () const;
57
67 void set_atomic_trace(const int* iat2iwt, const int &nat, const int &nlocal);
68
76 int get_col_size()const { return this->ncol; };
77 int get_row_size()const { return this->nrow; };
78 int get_col_size(int iat) const;
79 int get_row_size(int iat) const;
80
81 int get_nbands() const;
82
83 int nbands;
84
92 std::vector<int> get_indexes_row() const;
93 std::vector<int> get_indexes_col() const;
94 std::vector<int> get_indexes_row(int iat) const;
95 std::vector<int> get_indexes_col(int iat) const;
96
97 // private:
98 // orbital index for each atom
99 std::vector<int> atom_begin_row;
100 std::vector<int> atom_begin_col;
101
102 const int* iat2iwt_ = nullptr;
103
104};
105#endif
This class packs the basic information of 2D-block-cyclic parallel distribution of an arbitrary matri...
Definition parallel_2d.h:12
int ncol
Definition parallel_2d.h:116
int nrow
local size (nloc = nrow * ncol)
Definition parallel_2d.h:115
Definition parallel_orbitals.h:9
std::vector< int > get_indexes_col() const
Definition parallel_orbitals.cpp:154
long nloc_wfc
ncol_bands*nrow
Definition parallel_orbitals.h:20
int ncol_bands
Definition parallel_orbitals.h:16
const int * iat2iwt_
Definition parallel_orbitals.h:102
int * loc_sizes
Definition parallel_orbitals.h:52
int get_wfc_global_nbasis() const
Definition parallel_orbitals.cpp:41
int get_wfc_global_nbands() const
Definition parallel_orbitals.cpp:32
int nrow_bands
Definition parallel_orbitals.h:17
int loc_size
Definition parallel_orbitals.h:53
int desc_wfc1[9]
Definition parallel_orbitals.h:39
int desc_wfc[9]
Definition parallel_orbitals.h:37
int lastband_number
Definition parallel_orbitals.h:26
int get_nbands() const
Definition parallel_orbitals.cpp:50
void set_desc_wfc_Eij(const int &nbasis, const int &nbands, const int &lld)
set the desc[9] of the 2D-block-cyclic distribution of wavefunction and Eij
Definition parallel_orbitals.cpp:211
int * nlocdim
Definition parallel_orbitals.h:33
Parallel_Orbitals()
Definition parallel_orbitals.cpp:7
int get_col_size() const
dimension getters for 2D-block-cyclic division of Hamiltonian matrix get_col_size() : total number of...
Definition parallel_orbitals.h:76
int nbands
Definition parallel_orbitals.h:83
~Parallel_Orbitals()
Definition parallel_orbitals.cpp:25
int lastband_in_proc
Definition parallel_orbitals.h:25
int get_row_size() const
Definition parallel_orbitals.h:77
std::vector< int > get_indexes_row() const
gather global indexes of orbitals in this processor get_indexes_row() : global indexes (~NLOCAL) of r...
Definition parallel_orbitals.cpp:140
int desc_Eij[9]
Definition parallel_orbitals.h:38
std::vector< int > atom_begin_col
Definition parallel_orbitals.h:100
int set_nloc_wfc_Eij(const int &N_A, std::ofstream &ofs_running, std::ofstream &ofs_warning)
set the local size of wavefunction and Eij
Definition parallel_orbitals.cpp:224
void set_atomic_trace(const int *iat2iwt, const int &nat, const int &nlocal)
set row and col begin index for each atom it should be called after:
Definition parallel_orbitals.cpp:55
std::vector< int > atom_begin_row
Definition parallel_orbitals.h:99
int * nlocstart
Definition parallel_orbitals.h:34
long nloc_Eij
Definition parallel_orbitals.h:23
int nnr
Definition parallel_orbitals.h:32