ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
symmetry_test_cases.h
Go to the documentation of this file.
1#include "symmetry_test.h"
2// cases
24std::vector<stru_> stru_lib{
25 stru_{1,
26 "O_h",
27 "m-3m",
28 "Pm-3m",
29 std::vector<double>{1., 0., 0., 0., 1., 0., 0., 0., 1.},
30 std::vector<atomtype_>{atomtype_{"C",
31 std::vector<std::vector<double>>{
32 {0., 0., 0.},
33 }}}, "C"},
34 stru_{2,
35 "O_h",
36 "m-3m",
37 "Im-3m",
38 std::vector<double>{-0.5, 0.5, 0.5, 0.5, -0.5, 0.5, 0.5, 0.5, -0.5},
39 std::vector<atomtype_>{atomtype_{"C",
40 std::vector<std::vector<double>>{
41 {0., 0., 0.},
42 }}}, "C"},
43 stru_{3,
44 "O_h",
45 "m-3m",
46 "Fm-3m",
47 std::vector<double>{0., 0.5, 0.5, 0.5, 0., 0.5, 0.5, 0.5, 0.},
48 std::vector<atomtype_>{atomtype_{"C",
49 std::vector<std::vector<double>>{
50 {0., 0., 0.},
51 }}}, "C"},
52 stru_{4,
53 "D_6h",
54 "6/mmm",
55 "P6/mmm",
56 std::vector<double>{1., 0., 0., -0.5, 0.8660254, 0., 0., 0., 2.},
57 std::vector<atomtype_>{atomtype_{"C",
58 std::vector<std::vector<double>>{
59 {0., 0., 0.},
60 }}}, "C"},
61 stru_{5,
62 "D_4h",
63 "4/mmm",
64 "P4/mmm",
65 std::vector<double>{1., 0., 0., 0., 1., 0., 0., 0., 2.},
66 std::vector<atomtype_>{atomtype_{"C",
67 std::vector<std::vector<double>>{
68 {0., 0., 0.},
69 }}}, "C"},
70 stru_{6,
71 "D_4h",
72 "4/mmm",
73 "I4/mmm",
74 std::vector<double>{-0.35355339, 0.35355339, 1., 0.35355339, -0.35355339, 1., 0.35355339, 0.35355339, -1.},
75 std::vector<atomtype_>{atomtype_{"C",
76 std::vector<std::vector<double>>{
77 {0., 0., 0.},
78 }}}, "C"},
79 stru_{7,
80 "D_3d",
81 "-3m",
82 "R-3m",
83 std::vector<double>{0.57357644,
84 0.33115451,
85 0.74923078,
86 -0.57357644,
87 0.33115451,
88 0.74923078,
89 0.,
90 -0.66230902,
91 0.74923078},
92 std::vector<atomtype_>{atomtype_{"C",
93 std::vector<std::vector<double>>{
94 {-0., 0., 0.},
95 }}}, "C"},
96 stru_{8,
97 "D_2h",
98 "mmm",
99 "Pmmm",
100 std::vector<double>{1., 0., 0., 0., 2., 0., 0., 0., 3.},
101 std::vector<atomtype_>{atomtype_{"C",
102 std::vector<std::vector<double>>{
103 {0., 0., 0.},
104 }}}, "C"},
105 stru_{9,
106 "D_2h",
107 "mmm",
108 "Immm",
109 std::vector<double>{-0.25, 0.75, 1., 0.25, -0.75, 1., 0.25, 0.75, -1.},
110 std::vector<atomtype_>{atomtype_{"C",
111 std::vector<std::vector<double>>{
112 {0., 0., 0.},
113 }}}, "C"},
114 stru_{10,
115 "D_2h",
116 "mmm",
117 "Fmmm",
118 std::vector<double>{0., 1., 1.5, 0.5, 0., 1.5, 0.5, 1., 0.},
119 std::vector<atomtype_>{atomtype_{"C",
120 std::vector<std::vector<double>>{
121 {0., 0., 0.},
122 }}}, "C"},
123 stru_{11,
124 "D_2h",
125 "mmm",
126 "Cmmm",
127 std::vector<double>{0.5, -1.5, 0., 0.5, 1.5, 0., 0., 0., 2.},
128 std::vector<atomtype_>{atomtype_{"C",
129 std::vector<std::vector<double>>{
130 {0., 0., 0.},
131 }}}, "C"},
132 stru_{12,
133 "C_2h",
134 "2/m",
135 "P2/m",
136 std::vector<double>{1., 0., 0., 0., 2., 0., -0.02606043, 0., 2.81907786},
137 std::vector<atomtype_>{atomtype_{"C",
138 std::vector<std::vector<double>>{
139 {0., 0., 0.},
140 }}}, "C"},
141 stru_{13,
142 "C_2h",
143 "2/m",
144 "C2/m",
145 std::vector<double>{0.5, -1., 0., 0.5, 1., 0., -0.40192379, 0., 1.5},
146 std::vector<atomtype_>{atomtype_{"C",
147 std::vector<std::vector<double>>{
148 {0., 0., 0.},
149 }}}, "C"},
150 stru_{14,
151 "S_2",
152 "-1",
153 "P-1",
154 std::vector<double>{1., 0., 0., -0.28989928, 1.53691386, 0., -0.31595971, -0.66789914, 1.75670135},
155 std::vector<atomtype_>{atomtype_{"C",
156 std::vector<std::vector<double>>{
157 {0., 0., 0.},
158 }}}, "C"},
159
160};
161
162// test cases for space group and primitive cell analysis
163// ibrav here means the number of primitive cells
164std::vector<stru_> supercell_lib{
165 // bcc, 2 primitive cells
166 stru_{2,
167 "O_h",
168 "",
169 "O_h",
170 std::vector<double>{1., 0., 0., 0., 1., 0., 0., 0., 1.},
171 std::vector<atomtype_>{atomtype_{"C",
172 std::vector<std::vector<double>>{
173 {0., 0., 0.}, {0.5, 0.5, 0.5}}}}, "D",
174 std::vector<int>{0, 1},
175 {},
176 {},
177 {{0, 1}, {0, 2}, {1, 0}, {1, 2}, {2, 0}, {2, 1}},
178 {{{0, 0}, {1, 1}, {2, 2}}}},
179 // bct, 2
180 stru_{2,
181 "D_4h",
182 "",
183 "D_4h",
184 std::vector<double>{1.2, 0., 0., 0., 1., 0., 0., 0., 1.},
185 std::vector<atomtype_>{atomtype_{"C",
186 std::vector<std::vector<double>>{
187 {0., 0., 0.}, {0.5, 0.5, 0.5},}}} , "D",
188 std::vector<int>{0, 1},
189 {},
190 {},
191 {{0, 1}, {0, 2}, {1, 0}, {1, 2}, {2, 0}, {2, 1}},
192 {{{1, 1}, {2, 2}}}},
193 //bct, 2
194 stru_{2,
195 "D_2h",
196 "",
197 "D_2h",
198 std::vector<double>{1.2, 0., 0., 0., 1.1, 0., 0., 0., 1.},
199 std::vector<atomtype_>{atomtype_{"C",
200 std::vector<std::vector<double>>{
201 {0., 0., 0.}, {0.5, 0.5, 0.5}}}} , "D",
202 std::vector<int>{0, 1},
203 {},
204 {},
205 {{0, 1}, {0, 2}, {1, 0}, {1, 2}, {2, 0}, {2, 1}},
206 {}},
207 //fcc, 4
208 stru_{4,
209 "O_h",
210 "",
211 "O_h",
212 std::vector<double>{1., 0., 0., 0., 1., 0., 0., 0., 1.},
213 std::vector<atomtype_>{atomtype_{"C",
214 std::vector<std::vector<double>>{
215 {0., 0., 0.}, {0.5, 0.5, 0.},{0.5, 0., 0.5},{0., 0.5, 0.5}}}} , "D",
216 std::vector<int>{0, 1, 2, 3},
217 {},
218 {},
219 {{0, 1}, {0, 2}, {1, 0}, {1, 2}, {2, 0}, {2, 1}},
220 {{{0, 0}, {1, 1}, {2, 2}}}},
221 //fco, 4
222 stru_{4,
223 "D_2h",
224 "",
225 "D_2h",
226 std::vector<double>{1.2, 0., 0., 0., 1.1, 0., 0., 0., 1.},
227 std::vector<atomtype_>{atomtype_{"C",
228 std::vector<std::vector<double>>{
229 {0., 0., 0.}, {0.5, 0.5, 0.},{0.5, 0., 0.5},{0., 0.5, 0.5}}}} , "D",
230 std::vector<int>{0, 1, 2, 3},
231 {},
232 {},
233 {{0, 1}, {0, 2}, {1, 0}, {1, 2}, {2, 0}, {2,1}},
234 {}},
235 //3 in x
236 stru_{3,
237 "C_1h",
238 "",
239 "D_2h",
240 std::vector<double>{3., -3., -3., -1., 1., -1., -1., -1., 1.},
241 std::vector<atomtype_>{atomtype_{"C",
242 std::vector<std::vector<double>>{
243 {0., 0.1, 0.5}, {1. / 3., 0.1, 0.5},{2. / 3., 0.1, 0.5}}}} , "D",
244 std::vector<int>{1},
245 std::map<int,int>{{0, 2}},
246 {},
247 {{0, 1}, {0, 2}, {1, 0}, {2, 0}},
248 {{{1, 2}, {2, 1}}, {{1, 1}, {2, 2}}}},
249 //3 in y
250 stru_{3,
251 "C_1h",
252 "",
253 "D_2h",
254 std::vector<double>{1., -1., -1., -3., 3., -3., -1., -1., 1.},
255 std::vector<atomtype_>{atomtype_{"C",
256 std::vector<std::vector<double>>{
257 {0.4, 0., 0.1}, {0.4, 1. / 3., 0.1},{0.4, 2. / 3., 0.1}}}} , "D",
258 std::vector<int>{2},
259 std::map<int,int>{{0, 1}},
260 {},
261 {{0, 1}, {1, 0}, {1, 2}, {2, 1}},
262 {{{0, 2}, {2, 0}}, {{0, 0}, {2, 2}}}},
263 //3 in z
264 stru_{3,
265 "C_1h",
266 "",
267 "D_2h",
268 std::vector<double>{1., -1., -1., -1., 1., -1., -3., -3., 3.},
269 std::vector<atomtype_>{atomtype_{"C",
270 std::vector<std::vector<double>>{
271 {0.3, 0.1, 0.}, {0.3, 0.1, 1. / 3.},{0.3, 0.1, 2. / 3.}}}} , "D",
272 std::vector<int>{1},
273 std::map<int,int>{{0, 2}},
274 {},
275 {{0, 2}, {1, 2}, {2, 0}, {2, 1}},
276 {{{0, 0}, {1, 1}}, {{0, 1}, {1, 0}}} },
277 //6 in xy
278 stru_{6,
279 "C_1",
280 "",
281 "S_2",
282 std::vector<double>{2., -2., -2., -3., 3., -3., -1., -1., 1.},
283 std::vector<atomtype_>{atomtype_{"C",
284 std::vector<std::vector<double>>{
285 {0., 0., 0.1}, {0., 1. / 3., 0.1},{0., 2. / 3., 0.1},{0.5, 0., 0.1}, {0.5, 1. / 3., 0.1},{0.5, 2. / 3., 0.1}}}} , "D",
286 std::vector<int>{0, 3},
287 std::map<int,int>{{1, 2}, {4, 5}},
288 {} },
289 //6 in yz
290 stru_{6,
291 "C_1",
292 "",
293 "S_2",
294 std::vector<double>{1., -1., -1., -2., 2., -2., -3., -3., 3.},
295 std::vector<atomtype_>{atomtype_{"C",
296 std::vector<std::vector<double>>{
297 {0.1, 0., 0.}, {0.1, 0., 1. / 3.},{0.1, 0., 2. / 3.},{0.1, 0.5, 0.}, {0.1, 0.5, 1. / 3.},{0.1, 0.5, 2. / 3.}}}} , "D",
298 std::vector<int>{2, 5},
299 std::map<int,int>{{0, 1}, {3, 4}},
300 {} },
301 //6 in zx
302 stru_{6,
303 "C_1",
304 "",
305 "S_2",
306 std::vector<double>{3., -3., -3., -1., 1., -1., -2., -2., 2.},
307 std::vector<atomtype_>{atomtype_{"C",
308 std::vector<std::vector<double>>{
309 {0., 0.1, 0.}, {1. / 3., 0.1, 0.},{2. / 3., 0.1, 0.}, {0., 0.1, 0.5}, {1. / 3., 0.1, 0.5},{2. / 3., 0.1, 0.5}}}} , "D",
310 std::vector<int>{0, 3},
311 std::map<int,int>{{1, 2}, {4, 5}},
312 {} },
313 //hex: 3 in a1 - 231
314 stru_{3,
315 "C_1h",
316 "",
317 "C_2v",
318 std::vector<double>{0., 1.59516, 2.76289, 20., 0., 0., 0., 9.57096, 0.},
319 std::vector<atomtype_>{atomtype_{"Mo",
320 std::vector<std::vector<double>>{
321 {2./3., 0.1859875, 0.22222222}, {2./3., 0.1859875, 0.55555555},{2./3., 0.1859875, 0.88888888},
322 }},
323 atomtype_{"S",
324 std::vector<std::vector<double>>{
325 {1./3., 0.2642317, 0.11111111}, {1./3., 0.1077433, 0.11111111},{1./3., 0.2642317, 0.44444444},
326 {1./3., 0.1077433, 0.44444444}, {1./3., 0.2642317, 0.77777777},{1./3., 0.1077433, 0.77777777},
327 }}}
328 , "D",
329 {},
330 {},
331 std::vector<std::vector<int>>{{3, 4, 0, 1, 0}, {5, 6, 0, 1, 0}, {7, 8, 0, 1, 0}},
332 {{0, 1}, {0, 2}, {1, 0}, {2, 0}},
333 {} },
334};
Definition symmetry_test.h:9
Definition symmetry_test.h:15
std::vector< stru_ > supercell_lib
Definition symmetry_test_cases.h:164
std::vector< stru_ > stru_lib
Definition symmetry_test_cases.h:24