atomic_basis.h Source File

LibRPA: atomic_basis.h Source File
LibRPA
atomic_basis.h
1 /*
2  * @file basis.h
3  */
4 #pragma once
5 #include <map>
6 #include <utility>
7 #include <vector>
8 
9 namespace LIBRPA {
10 
12 {
13 private:
14  std::vector<std::size_t> nbs_;
15  std::vector<std::size_t> part_range;
16  void initialize();
17 public:
18  std::size_t n_atoms;
19  std::size_t nb_total;
20  AtomicBasis(): nbs_(), part_range(), n_atoms(0), nb_total(0) {};
21  AtomicBasis(const std::vector<std::size_t>& nbs);
22  AtomicBasis(const std::vector<int>& atoms,
23  const std::map<int, std::size_t>& map_atom_nb);
24  AtomicBasis(const std::map<std::size_t, std::size_t>& iatom_nbs);
25  void set(const std::vector<std::size_t>& nbs);
26  void set(const std::map<std::size_t, std::size_t>& iatom_nbs);
27  std::size_t get_global_index(const int& i_atom, const std::size_t& i_loc_b) const;
28  int get_i_atom(const std::size_t& i_glo_b) const;
29  void get_local_index(const std::size_t& i_glo_b, int& i_atom, int& i_loc_b) const;
30  int get_local_index(const std::size_t& i_glo_b, const int& i_atom) const;
31  std::pair<int, int> get_local_index(const std::size_t& i_glo_b) const;
32  std::size_t get_atom_nb(const int& i_atom) const { return nbs_[i_atom]; }
33  const std::vector<std::size_t>& get_part_range() const { return part_range; }
34 };
35 
36 extern AtomicBasis atomic_basis_wfc;
37 extern AtomicBasis atomic_basis_abf;
38 
39 } // namespace LIBRPA
Definition: atomic_basis.h:12
Definition: analycont.cpp:14