27 #include "cif++/symmetry.hpp" 31 #include "symop_table_data.hpp" 45 if (spacegroup ==
"P 21 21 2 A")
46 spacegroup =
"P 21 21 2 (a)";
47 else if (spacegroup.empty())
48 throw std::runtime_error(
"No spacegroup, cannot continue");
52 const size_t N = kNrOfSpaceGroups;
53 int32_t L = 0, R =
static_cast<int32_t
>(N - 1);
56 int32_t
i = (L + R) / 2;
58 int d = spacegroup.compare(kSpaceGroups[i].name);
66 result = kSpaceGroups[
i].nr;
74 for (
size_t i = 0;
i < kNrOfSpaceGroups; ++
i)
76 auto& sp = kSpaceGroups[
i];
77 if (sp.xHM == spacegroup)
86 throw std::runtime_error(
"Spacegroup name " + spacegroup +
" was not found in table");
95 if (spacegroup ==
"P 21 21 2 A")
96 spacegroup =
"P 21 21 2 (a)";
97 else if (spacegroup.empty())
98 throw std::runtime_error(
"No spacegroup, cannot continue");
102 if (type == space_group_name::full)
104 const size_t N = kNrOfSpaceGroups;
105 int32_t L = 0, R =
static_cast<int32_t
>(N - 1);
108 int32_t
i = (L + R) / 2;
110 int d = spacegroup.compare(kSpaceGroups[i].name);
118 result = kSpaceGroups[
i].nr;
123 else if (type == space_group_name::xHM)
125 for (
auto &sg : kSpaceGroups)
127 if (sg.xHM == spacegroup)
136 for (
auto &sg : kSpaceGroups)
138 if (sg.Hall == spacegroup)
148 throw std::runtime_error(
"Spacegroup name " + spacegroup +
" was not found in table");
int get_space_group_number(std::string spacegroup)