| 981 | } // namespace |
| 982 | |
| 983 | std::vector<PotcarDataset> parse_potcar(const std::string& potcar_path) { |
| 984 | const std::string text = read_file_to_string(potcar_path); |
| 985 | const auto blocks = split_datasets(text); |
| 986 | if (blocks.empty()) { |
| 987 | throw std::runtime_error("parse_potcar: no dataset blocks found"); |
| 988 | } |
| 989 | |
| 990 | std::vector<PotcarDataset> datasets; |
| 991 | datasets.reserve(blocks.size()); |
| 992 | for (std::size_t i = 0; i < blocks.size(); ++i) { |
| 993 | datasets.push_back(parse_dataset_block(blocks[i], i)); |
| 994 | } |
| 995 | return datasets; |
| 996 | } |
| 997 | |
| 998 | std::vector<int> flatten_potcar_projector_l_values(const PotcarDataset& dataset) { |
| 999 | std::vector<int> projector_l; |