60 for (
auto& [
key, elem] :
map_) {
61 elem.file_dir_ = dirname;
81 DIR *dir = opendir(dirname.c_str());
84 while ((ent = readdir(dir)) != NULL) {
86 const std::string fullname = dirname +
"/" + filename;
88 if (filename ==
"." || filename ==
"..")
121 for (
int ii = 0; ii < 3; ii++) {
122 char cc = filename[ii];
123 bool is_letter = (cc >=
'a' && cc <=
'z') || (cc >=
'A' && cc <=
'Z');
126 symbol.push_back(cc);
131 symbol = pseudo->
symbol();
144 std::ifstream defaults_file((dirname +
"/set_defaults").c_str());
150 getline(defaults_file, line);
154 defaults_file >> symbol;
155 if (defaults_file.eof())
162 defaults_file >> fname;
164 defaults_file >>
map_[symbol].lmax_;
165 defaults_file >>
map_[symbol].llocal_;
168 getline(defaults_file, line);
171 defaults_file.close();
176 const std::string file_name = dirname +
"/elements_map.dat";
177 std::ofstream map_file(file_name);
179 if (!map_file.is_open()) {
180 throw std::ios_base::failure(
"Failed to open file for writing: " + file_name);
183 for (
const auto& [symbol, elem] :
map_) {
184 map_file <<
trim(symbol) <<
" "
185 <<
trim(elem.file_rel_path_) <<
" "
187 << elem.llocal_ <<
"\n";
201 std::ifstream map_file((dirname +
"/elements_map.dat").c_str());
203 std::cerr <<
"Internal warning: cannot open file element_map.dat for the pseudopotential set."
205 std::cerr <<
"This will be regenerated in the installation folder."
212 while (map_file >> symbol) {
216 std::cerr <<
"Error parsing the file: " << vals.
file_rel_path_ << std::endl;
226 str.erase(0, str.find_first_not_of(chars));
232 str.erase(str.find_last_not_of(chars) + 1);
258 return a.map_it_ !=
b.map_it_;
#define INVALID_L
Definition: base.hpp:28
virtual std::string symbol() const =0
Definition: element.hpp:34
const std::string & symbol() const
Definition: element.hpp:69
friend bool operator!=(const iterator &a, const iterator &b)
Definition: set.hpp:257
iterator(const element_map::iterator &map_it)
Definition: set.hpp:250
element_map::iterator map_it_
Definition: set.hpp:247
iterator & operator++()
Definition: set.hpp:252
element operator*()
Definition: set.hpp:261
int lmax(const element &el) const
Definition: set.hpp:74
static std::string trim(std::string str, const std::string &chars="\t\n\v\f\r ")
Definition: set.hpp:236
bool automatic_
Definition: set.hpp:52
std::map< std::string, element_values > element_map
Definition: set.hpp:49
iterator begin()
Definition: set.hpp:264
set(const std::string &dirname)
Definition: set.hpp:55
std::string file_path(const element &el) const
Definition: set.hpp:70
static std::string & ltrim(std::string &str, const std::string &chars="\t\n\v\f\r ")
Definition: set.hpp:224
element_map map_
Definition: set.hpp:51
static std::string & rtrim(std::string &str, const std::string &chars="\t\n\v\f\r ")
Definition: set.hpp:230
bool has(const element &el) const
Definition: set.hpp:66
iterator end()
Definition: set.hpp:265
void load_element_map(const std::string &dirname)
Definition: set.hpp:195
void generate_element_map(const std::string &dirname)
Definition: set.hpp:79
int llocal(const element &el) const
Definition: set.hpp:76
!The assertions are ignored if the code is compiled in not debug when !prints out the assertion string
Definition: global.h:58
void const fint * key
Definition: iihash_low.cc:40
Definition: anygrid.hpp:27
format
Definition: base.hpp:49
double const double const double * b
Definition: spline_low.cc:121
double const double * a
Definition: spline_low.cc:120
int lmax_
Definition: set.hpp:45
int llocal_
Definition: set.hpp:46
std::string file_rel_path_
Definition: set.hpp:43
std::string file_dir_
Definition: set.hpp:44