QNANO
TB_Parameter_Id.h
1 #ifndef QNANO_NEW_PARAMETER_ID_DEFINED_H
2 #define QNANO_NEW_PARAMETER_ID_DEFINED_H
3 
4 #include "tightbinding/TB_Parameter_List.h"
5 #include "tightbinding/TB_Hopping_Parameter_List.h"
6 
9 public:
10  std::string str;
11  int element[2];
12 
13  std::string get_name()const{
14  std::stringstream ss;
15  ss<<str<<" "<<element[0]<<" "<<element[1];
16  return ss.str();
17  }
18  bool operator==(const TB_Parameter_Id &other)const{
19  return str==other.str && element[0]==other.element[0] && element[1]==other.element[1];
20  }
21  TB_Parameter_Id(const std::string &str_=0, int e0_=0, int e1_=0){
22  str=str_;
23  element[0]=e0_;
24  element[1]=e1_;
25  }
26  TB_Parameter_Id(const std::vector<std::string> &strvec){
27  if(strvec.size()<3){
28  std::cerr<<"Initializing TB_Parameter_Id from string vector ";
29  for(size_t i=0; i<strvec.size(); i++){
30  std::cerr<<"'"<<strvec[i]<<"', ";
31  }
32  std::cerr<<std::endl;
33  exit(1);
34  }
35  str=strvec[0];
36  element[0]=Reader::readDouble(strvec[1], "TB_Parameter_Id, element[0]");
37  element[1]=Reader::readDouble(strvec[2], "TB_Parameter_Id, element[1]");
38  }
39 };
40 
41 
42 class TB_Parameter_Id_List: public List_Class_NoFind<TB_Parameter_Id>{
43 public:
44 
45  void print(std::ostream &os=std::cout)const{
46  for(size_t i=0; i<list.size(); i++){
47  os<<list[i].get_name()<<std::endl;
48  }
49  }
50  int find(const TB_Parameter_Id & other) const{
51  for(size_t i=0;i<list.size();i++){
52  if(list[i]==other)return i;
53  }
54  return -1;
55  }
56  int find_check(const TB_Parameter_Id & element) const{
57  int i=find(element);
58  if(i<0){
59  std::cerr<<"TB_Parameter_Id_List:: '"<<element.get_name()<<"' not found!"<<std::endl;
60  std::cerr<<"Registered parameters:"<<std::endl;
61  print(std::cerr);
62  exit(1);
63  }
64  return i;
65  }
66 
67  bool add(const std::string &str, int e0, int e1){
68  TB_Parameter_Id id(str,e0,e1);
69  if(find(id)>=0){
70  std::cout<<"WARNING: TB_Parameter_Id_List: Parameter '"<<id.get_name()<<"' already exists!"<<std::endl;
71  return false;
72  }
73  list.push_back(id);
74  return true;
75  }
76 
77 };
78 
79 #endif
Definition: List_Class.h:27
Definition: TB_Parameter_Id.h:42
Structure that lets one identify a parameter by its name.
Definition: TB_Parameter_Id.h:8