1mod crystal_system;
2mod space_group_table;
3mod sym_ops_order;
4
5pub use crystal_system::CrystalSystem;
6pub use space_group_table::LookUpSpaceGroup;
7pub use space_group_table::DEFAULT_SPACE_GROUP_SYMBOLS;
8pub use space_group_table::FULL_SPACE_GROUP_SYMBOLS;
9pub(crate) use sym_ops_order::{ORDER_12, ORDER_24, ORDER_48};
10
11#[derive(Debug, Clone, Copy)]
13#[allow(non_camel_case_types)]
14pub enum SpaceGroupHallSymbol {
15 P_1,
16 MP_1,
17 P_2y,
18 P_2,
19 P_2x,
20 P_2yb,
21 P_2c,
22 P_2xa,
23 C_2y,
24 A_2y,
25 I_2y,
26 A_2,
27 B_2,
28 I_2,
29 B_2x,
30 C_2x,
31 I_2x,
32 P_M2y,
33 P_M2,
34 P_M2x,
35 P_M2yc,
36 P_M2yac,
37 P_M2ya,
38 P_M2a,
39 P_M2ab,
40 P_M2b,
41 P_M2xb,
42 P_M2xbc,
43 P_M2xc,
44 C_M2y,
45 A_M2y,
46 I_M2y,
47 A_M2,
48 B_M2,
49 I_M2,
50 B_M2x,
51 C_M2x,
52 I_M2x,
53 C_M2yc,
54 A_M2yac,
55 I_M2ya,
56 A_M2ya,
57 C_M2ybc,
58 I_M2yc,
59 A_M2a,
60 B_M2bc,
61 I_M2b,
62 B_M2b,
63 A_M2ac,
64 I_M2a,
65 B_M2xb,
66 C_M2xbc,
67 I_M2xc,
68 C_M2xc,
69 B_M2xbc,
70 I_M2xb,
71 MP_2y,
72 MP_2,
73 MP_2x,
74 MP_2yb,
75 MP_2c,
76 MP_2xa,
77 MC_2y,
78 MA_2y,
79 MI_2y,
80 MA_2,
81 MB_2,
82 MI_2,
83 MB_2x,
84 MC_2x,
85 MI_2x,
86 MP_2yc,
87 MP_2yac,
88 MP_2ya,
89 MP_2a,
90 MP_2ab,
91 MP_2b,
92 MP_2xb,
93 MP_2xbc,
94 MP_2xc,
95 MP_2ybc,
96 MP_2yn,
97 MP_2yab,
98 MP_2ac,
99 MP_2n,
100 MP_2bc,
101 MP_2xab,
102 MP_2xn,
103 MP_2xac,
104 MC_2yc,
105 MA_2yac,
106 MI_2ya,
107 MA_2ya,
108 MC_2ybc,
109 MI_2yc,
110 MA_2a,
111 MB_2bc,
112 MI_2b,
113 MB_2b,
114 MA_2ac,
115 MI_2a,
116 MB_2xb,
117 MC_2xbc,
118 MI_2xc,
119 MC_2xc,
120 MB_2xbc,
121 MI_2xb,
122 P_2_2,
123 P_2c_2,
124 P_2a_2a,
125 P_2_2b,
126 P_2_2ab,
127 P_2bc_2,
128 P_2ac_2ac,
129 P_2ac_2ab,
130 C_2c_2,
131 A_2a_2a,
132 B_2_2b,
133 C_2_2,
134 A_2_2,
135 B_2_2,
136 F_2_2,
137 I_2_2,
138 I_2b_2c,
139 P_2_M2,
140 P_M2_2,
141 P_M2_M2,
142 P_2c_M2,
143 P_2c_M2c,
144 P_M2a_2a,
145 P_M2_2a,
146 P_M2_M2b,
147 P_M2b_M2,
148 P_2_M2c,
149 P_M2a_2,
150 P_M2b_M2b,
151 P_2_M2a,
152 P_2_M2b,
153 P_M2b_2,
154 P_M2c_2,
155 P_M2c_M2c,
156 P_M2a_M2a,
157 P_2c_M2ac,
158 P_2c_M2b,
159 P_M2b_2a,
160 P_M2ac_2a,
161 P_M2bc_M2c,
162 P_M2a_M2ab,
163 P_2_M2bc,
164 P_2_M2ac,
165 P_M2ac_2,
166 P_M2ab_2,
167 P_M2ab_M2ab,
168 P_M2bc_M2bc,
169 P_2ac_M2,
170 P_2bc_M2bc,
171 P_M2ab_2ab,
172 P_M2_2ac,
173 P_M2_M2bc,
174 P_M2ab_M2,
175 P_2_M2ab,
176 P_M2bc_2,
177 P_M2ac_M2ac,
178 P_2c_M2n,
179 P_2c_M2ab,
180 P_M2bc_2a,
181 P_M2n_2a,
182 P_M2n_M2ac,
183 P_M2ac_M2n,
184 P_2_M2n,
185 P_M2n_2,
186 P_M2n_M2n,
187 C_2_M2,
188 A_M2_2,
189 B_M2_M2,
190 C_2c_M2,
191 C_2c_M2c,
192 A_M2a_2a,
193 A_M2_2a,
194 B_M2_M2b,
195 B_M2b_M2,
196 C_2_M2c,
197 A_M2a_2,
198 B_M2b_M2b,
199 A_2_M2,
200 B_2_M2,
201 B_M2_2,
202 C_M2_2,
203 C_M2_M2,
204 A_M2_M2,
205 A_2_M2c,
206 B_2_M2c,
207 B_M2c_2,
208 C_M2b_2,
209 C_M2b_M2b,
210 A_M2c_M2c,
211 A_2_M2a,
212 B_2_M2b,
213 B_M2b_2,
214 C_M2c_2,
215 C_M2c_M2c,
216 A_M2a_M2a,
217 A_2_M2ac,
218 B_2_M2bc,
219 B_M2bc_2,
220 C_M2bc_2,
221 C_M2bc_M2bc,
222 A_M2ac_M2ac,
223 F_2_M2,
224 F_M2_2,
225 F_M2_M2,
226 F_2_M2d,
227 F_M2d_2,
228 F_M2d_M2d,
229 I_2_M2,
230 I_M2_2,
231 I_M2_M2,
232 I_2_M2c,
233 I_M2a_2,
234 I_M2b_M2b,
235 I_2_M2a,
236 I_2_M2b,
237 I_M2b_2,
238 I_M2c_2,
239 I_M2c_M2c,
240 I_M2a_M2a,
241 MP_2_2,
242 P_2_2_M1n,
243 MP_2ab_2bc,
244 MP_2_2c,
245 MP_2a_2,
246 MP_2b_2b,
247 P_2_2_M1ab,
248 MP_2ab_2b,
249 P_2_2_M1bc,
250 MP_2b_2bc,
251 P_2_2_M1ac,
252 MP_2a_2c,
253 MP_2a_2a,
254 MP_2b_2,
255 MP_2_2b,
256 MP_2c_2c,
257 MP_2c_2,
258 MP_2_2a,
259 MP_2a_2bc,
260 MP_2b_2n,
261 MP_2n_2b,
262 MP_2ab_2c,
263 MP_2ab_2n,
264 MP_2n_2bc,
265 MP_2ac_2,
266 MP_2bc_2bc,
267 MP_2ab_2ab,
268 MP_2_2ac,
269 MP_2_2bc,
270 MP_2ab_2,
271 MP_2a_2ac,
272 MP_2b_2c,
273 MP_2a_2b,
274 MP_2ac_2c,
275 MP_2bc_2b,
276 MP_2b_2ab,
277 MP_2_2ab,
278 MP_2bc_2,
279 MP_2ac_2ac,
280 MP_2ab_2ac,
281 MP_2ac_2bc,
282 MP_2bc_2ab,
283 MP_2c_2b,
284 MP_2c_2ac,
285 MP_2ac_2a,
286 MP_2b_2a,
287 MP_2a_2ab,
288 MP_2bc_2c,
289 MP_2_2n,
290 MP_2n_2,
291 MP_2n_2n,
292 P_2_2ab_M1ab,
293 MP_2ab_2a,
294 P_2bc_2_M1bc,
295 MP_2c_2bc,
296 P_2ac_2ac_M1ac,
297 MP_2c_2a,
298 MP_2n_2ab,
299 MP_2n_2c,
300 MP_2a_2n,
301 MP_2bc_2n,
302 MP_2ac_2b,
303 MP_2b_2ac,
304 MP_2ac_2ab,
305 MP_2bc_2ac,
306 MP_2ac_2n,
307 MP_2bc_2a,
308 MP_2c_2ab,
309 MP_2n_2ac,
310 MP_2n_2a,
311 MP_2c_2n,
312 MC_2c_2,
313 MC_2c_2c,
314 MA_2a_2a,
315 MA_2_2a,
316 MB_2_2b,
317 MB_2b_2,
318 MC_2bc_2,
319 MC_2bc_2bc,
320 MA_2ac_2ac,
321 MA_2_2ac,
322 MB_2_2bc,
323 MB_2bc_2,
324 MC_2_2,
325 MA_2_2,
326 MB_2_2,
327 MC_2_2c,
328 MA_2a_2,
329 MB_2b_2b,
330 MC_2b_2,
331 MC_2b_2b,
332 MA_2c_2c,
333 MA_2_2c,
334 MB_2_2c,
335 MB_2c_2,
336 C_2_2_M1bc_1,
337 MC_2b_2bc,
338 C_2_2_M1bc_2,
339 MC_2b_2c,
340 A_2_2_M1ac_1,
341 MA_2a_2c,
342 A_2_2_M1ac_2,
343 MA_2ac_2c,
344 B_2_2_M1bc_1,
345 MB_2bc_2b,
346 B_2_2_M1bc_2,
347 MB_2b_2bc,
348 MF_2_2,
349 F_2_2_M1d,
350 MF_2uv_2vw,
351 MI_2_2,
352 MI_2_2c,
353 MI_2a_2,
354 MI_2b_2b,
355 MI_2b_2c,
356 MI_2a_2b,
357 MI_2b_2,
358 MI_2a_2a,
359 MI_2c_2c,
360 MI_2_2b,
361 MI_2_2a,
362 MI_2c_2,
363 P_4,
364 P_4w,
365 P_4c,
366 P_4cw,
367 I_4,
368 I_4bw,
369 P_M4,
370 I_M4,
371 MP_4,
372 MP_4c,
373 P_4ab_M1ab,
374 MP_4a,
375 P_4n_M1n,
376 MP_4bc,
377 MI_4,
378 I_4bw_M1bw,
379 MI_4ad,
380 P_4_2,
381 P_4ab_2ab,
382 P_4w_2c,
383 P_4abw_2nw,
384 P_4c_2,
385 P_4n_2n,
386 P_4cw_2c,
387 P_4nw_2abw,
388 I_4_2,
389 I_4bw_2bw,
390 P_4_M2,
391 P_4_M2ab,
392 P_4c_M2c,
393 P_4n_M2n,
394 P_4_M2c,
395 P_4_M2n,
396 P_4c_M2,
397 P_4c_M2ab,
398 I_4_M2,
399 I_4_M2c,
400 I_4bw_M2,
401 I_4bw_M2c,
402 P_M4_2,
403 P_M4_2c,
404 P_M4_2ab,
405 P_M4_2n,
406 P_M4_M2,
407 P_M4_M2c,
408 P_M4_M2ab,
409 P_M4_M2n,
410 I_M4_M2,
411 I_M4_M2c,
412 I_M4_2,
413 I_M4_2bw,
414 MP_4_2,
415 MP_4_2c,
416 P_4_2_M1ab,
417 MP_4a_2b,
418 P_4_2_M1n,
419 MP_4a_2bc,
420 MP_4_2ab,
421 MP_4_2n,
422 P_4ab_2ab_M1ab,
423 MP_4a_2a,
424 P_4ab_2n_M1ab,
425 MP_4a_2ac,
426 MP_4c_2,
427 MP_4c_2c,
428 P_4n_2c_M1n,
429 MP_4ac_2b,
430 P_4n_2_M1n,
431 MP_4ac_2bc,
432 MP_4c_2ab,
433 MP_4n_2n,
434 P_4n_2n_M1n,
435 MP_4ac_2a,
436 P_4n_2ab_M1n,
437 MP_4ac_2ac,
438 MI_4_2,
439 MI_4_2c,
440 I_4bw_2bw_M1bw,
441 MI_4bd_2,
442 I_4bw_2aw_M1bw,
443 MI_4bd_2c,
444 P_3,
445 P_31,
446 P_32,
447 R_3,
448 P_3A,
449 MP_3,
450 MR_3,
451 MP_3A,
452 P_3_2,
453 P_3_2D,
454 P_31_2c_0_0_1,
455 P_31_2D,
456 P_32_2c_0_0_M1,
457 P_32_2D,
458 R_3_2D,
459 P_3A_2,
460 P_3_M2D,
461 P_3_M2,
462 P_3_M2Dc,
463 P_3_M2c,
464 R_3_M2D,
465 P_3A_M2,
466 R_3_M2Dc,
467 P_3A_M2n,
468 MP_3_2,
469 MP_3_2c,
470 MP_3_2D,
471 MP_3_2Dc,
472 MR_3_2D,
473 MP_3A_2,
474 MR_3_2Dc,
475 MP_3A_2n,
476 P_6,
477 P_61,
478 P_65,
479 P_62,
480 P_64,
481 P_6c,
482 P_M6,
483 MP_6,
484 MP_6c,
485 P_6_2,
486 P_61_2_0_0_M1,
487 P_65_2_0_0_1,
488 P_62_2c_0_0_1,
489 P_64_2c_0_0_M1,
490 P_6c_2c,
491 P_6_M2,
492 P_6_M2c,
493 P_6c_M2,
494 P_6c_M2c,
495 P_M6_2,
496 P_M6c_2,
497 P_M6_M2,
498 P_M6c_M2c,
499 MP_6_2,
500 MP_6_2c,
501 MP_6c_2,
502 MP_6c_2c,
503 P_2_2_3,
504 F_2_2_3,
505 I_2_2_3,
506 P_2ac_2ab_3,
507 I_2b_2c_3,
508 MP_2_2_3,
509 P_2_2_3_M1n,
510 MP_2ab_2bc_3,
511 MF_2_2_3,
512 F_2_2_3_M1d,
513 MF_2uv_2vw_3,
514 MI_2_2_3,
515 MP_2ac_2ab_3,
516 MI_2b_2c_3,
517 P_4_2_3,
518 P_4n_2_3,
519 F_4_2_3,
520 F_4d_2_3,
521 I_4_2_3,
522 P_4acd_2ab_3,
523 P_4bd_2ab_3,
524 I_4bd_2c_3,
525 P_M4_2_3,
526 F_M4_2_3,
527 I_M4_2_3,
528 P_M4n_2_3,
529 F_M4c_2_3,
530 I_M4bd_2c_3,
531 MP_4_2_3,
532 P_4_2_3_M1n,
533 MP_4a_2bc_3,
534 MP_4n_2_3,
535 P_4n_2_3_M1n,
536 MP_4bc_2bc_3,
537 MF_4_2_3,
538 MF_4c_2_3,
539 F_4d_2_3_M1d,
540 MF_4vw_2vw_3,
541 F_4d_2_3_M1cd,
542 MF_4cvw_2vw_3,
543 MI_4_2_3,
544 MI_4bd_2c_3,
545}
546
547impl SpaceGroupHallSymbol {
548 pub fn get_hall_symbol(&self) -> String {
549 let i = *self as usize;
550 FULL_SPACE_GROUP_SYMBOLS
551 .get_hall_symbol(i)
552 .unwrap()
553 .to_string()
554 }
555 pub fn get_hm_symbol(&self) -> String {
556 let i = *self as usize;
557 FULL_SPACE_GROUP_SYMBOLS
558 .get_hm_full_notation(i)
559 .unwrap()
560 .to_string()
561 }
562 pub fn get_space_group_number_code(&self) -> String {
563 let i = *self as usize;
564 FULL_SPACE_GROUP_SYMBOLS
565 .get_space_group_number(i)
566 .unwrap()
567 .to_string()
568 }
569}