Line data Source code
1 : !!****m* ABINIT/m_spgdata
2 : !! NAME
3 : !! m_spgdata
4 : !!
5 : !! FUNCTION
6 : !!
7 : !!
8 : !! COPYRIGHT
9 : !! Copyright (C) 2000-2026 ABINIT group (RC, XG)
10 : !! This file is distributed under the terms of the
11 : !! GNU General Public License, see ~abinit/COPYING
12 : !! or http://www.gnu.org/copyleft/gpl.txt .
13 : !!
14 : !! SOURCE
15 :
16 : #if defined HAVE_CONFIG_H
17 : #include "config.h"
18 : #endif
19 :
20 : #include "abi_common.h"
21 :
22 : module m_spgdata
23 :
24 : use defs_basis
25 : use m_abicore
26 : use m_errors
27 :
28 : use m_symtk, only : symdet
29 : use m_geometry, only : xred2xcart
30 :
31 : implicit none
32 :
33 : private
34 : !!***
35 :
36 : public :: prtspgroup
37 : public :: spgdata
38 : public :: getptgroupma
39 : public :: symptgroup
40 :
41 : contains
42 : !!***
43 :
44 : !!****f* m_spgdata/prtspgroup
45 : !! NAME
46 : !! prtspgroup
47 : !!
48 : !! FUNCTION
49 : !! Print the space group (first, the dataset)
50 : !!
51 : !! INPUTS
52 : !! bravais(11)=characteristics of Bravais lattice (see symlatt.f)
53 : !! genafm(3)=generator of magnetic translations, in case of
54 : !! Shubnikov type IV magnetic groups (if zero, the group is
55 : !! not a type IV magnetic group)
56 : !! iimage (optional) = index of the image, for possible printing purpose
57 : !! iout=unit number of output file
58 : !! jdtset= actual number of the dataset to be read
59 : !! ptgroupma=magnetic point group, in case of
60 : !! Shubnikov type III magnetic groups (if zero, the group is
61 : !! not a type III magnetic group)
62 : !! spgroup=space group number
63 : !!
64 : !! OUTPUT
65 : !!
66 : !! SOURCE
67 :
68 19629 : subroutine prtspgroup(bravais,genafm,iout,jdtset,ptgroupma,spgroup,iimage)
69 :
70 : !Arguments ------------------------------------
71 : !scalars
72 : integer,intent(in) :: iout,jdtset,ptgroupma,spgroup
73 : integer,intent(in),optional :: iimage
74 : !arrays
75 : integer,intent(in) :: bravais(11)
76 : real(dp),intent(in) :: genafm(3)
77 :
78 : !Local variables -------------------------------
79 : !scalars
80 : integer :: center,iholohedry,ii,shubnikov,spgaxor,spgorig,sporder,sumgen
81 : character(len=1) :: brvsb
82 : character(len=10) :: ptgrpmasb
83 : character(len=15) :: intsb,ptintsb,ptschsb,schsb
84 : character(len=35) :: intsbl
85 : character(len=500) :: message
86 : character(len=80) :: msg_header,bravais_name
87 : !arrays
88 : integer :: genafmint(3)
89 : real(dp) :: genafmconv(3),rprimdconv(3,3)
90 :
91 : !*************************************************************************
92 :
93 : !DEBUG
94 : !write(std_out,*)' prtspgroup : enter '
95 : !write(std_out,*)' ptgroupma=',ptgroupma
96 : !write(std_out,*)' genafm(:)=',genafm(:)
97 : !ENDDEBUG
98 :
99 19629 : center=bravais(2)
100 19629 : iholohedry=bravais(1)
101 :
102 : !Determine the magnetic type
103 19629 : shubnikov=1
104 19629 : if(ptgroupma/=0)shubnikov=3
105 78516 : if(sum(abs(genafm(:)))>tol6)then
106 4660 : shubnikov=4
107 : ! Produce genafm in conventional axes,
108 4660 : rprimdconv(:,1)=bravais(3:5)
109 4660 : rprimdconv(:,2)=bravais(6:8)
110 4660 : rprimdconv(:,3)=bravais(9:11)
111 3685 : if(center/=0)rprimdconv(:,:)=rprimdconv(:,:)*half
112 1165 : call xred2xcart(1,rprimdconv,genafmconv,genafm)
113 : ! Gives the associated translation, with components in the
114 : ! interval ]-0.5,0.5] .
115 4660 : genafmconv(:)=genafmconv(:)-nint(genafmconv(:)-tol6)
116 4660 : do ii=1,3
117 3495 : genafmint(ii)=-1
118 3495 : if(abs(genafmconv(ii)-zero)<tol6)genafmint(ii)=0
119 4660 : if(abs(genafmconv(ii)-half)<tol6)genafmint(ii)=1
120 : end do
121 4660 : if(minval(genafmint(:))==-1)then
122 : write(message, '(3a,3es12.2,a)' )&
123 0 : & 'The magnetic translation generator,',ch10,&
124 0 : & 'genafmconv(:)=',genafmconv(:),&
125 0 : & 'could not be identified.'
126 0 : ABI_BUG(message)
127 : end if
128 : end if
129 :
130 : !Prepare the print : establish message header
131 19629 : if(jdtset/=0)then
132 18302 : if(present(iimage))then
133 252 : write(msg_header,'(a,i5,a,i5)')' DATASET',jdtset,' IMAGE NUMBER',iimage
134 : else
135 18050 : write(msg_header,'(a,i5)')' DATASET',jdtset
136 : endif
137 : else
138 1327 : if(present(iimage))then
139 69 : write(msg_header,'(a,i5)')' IMAGE NUMBER',iimage
140 : else
141 1258 : write(msg_header,'(a)')' Symmetries'
142 : endif
143 : endif
144 :
145 : !Determine whether the space group can be printed
146 19629 : if(iholohedry<=0)then
147 453 : write(message,'(a,a)')trim(msg_header),' : the unit cell is not primitive'
148 453 : call wrtout(iout,message,'COLL')
149 19176 : else if(spgroup==0)then
150 20 : write(message,'(a,a)')trim(msg_header),' : the space group has not been recognized'
151 20 : call wrtout(iout,message,'COLL')
152 : else
153 :
154 : ! ------------------------------------------------------------------
155 : ! The space group can be printed
156 :
157 : ! Determine the Bravais lattice
158 :
159 19156 : bravais_name=' (the Bravais lattice could not be identified)'
160 :
161 : if(iholohedry==7)then ! Cubic
162 :
163 8478 : if(center==0) then
164 1413 : if(shubnikov/=4)bravais_name='cP (primitive cubic)'
165 54 : if(shubnikov==4)bravais_name='cP_I (primitive cubic, inner magnetic, #33)'
166 7065 : else if(center==-1) then
167 441 : if(shubnikov/=4)bravais_name='cI (body-center cubic)' ! Only non-magnetic is possible
168 6624 : else if(center==-3) then
169 6624 : if(shubnikov/=4)bravais_name='cF (face-center cubic)'
170 22 : if(shubnikov==4)bravais_name='cF_s (face-center cubic, simple cubic magnetic, #35)'
171 : end if
172 :
173 : else if(iholohedry==4)then ! Tetragonal
174 :
175 2450 : if(center==0) then
176 1981 : if(shubnikov/=4)bravais_name='tP (primitive tetrag.)'
177 1981 : if(shubnikov==4)then
178 1252 : sumgen=sum(genafmint(:))
179 313 : if(sumgen==1)bravais_name='tP_c (primitive tetrag., c-magnetic, #23)'
180 313 : if(sumgen==2)bravais_name='tP_C (primitive tetrag., C-magnetic, #24)'
181 313 : if(sumgen==3)bravais_name='tP_I (primitive tetrag., centered magnetic, #25)'
182 : end if
183 469 : else if(center==-1)then
184 469 : if(shubnikov/=4)bravais_name='tI (body-center tetrag.)'
185 38 : if(shubnikov==4)bravais_name='tI_c (body-center tetrag., simple tetragonal magnetic, #27)'
186 : end if
187 :
188 : else if(iholohedry==3)then ! Orthorhombic
189 :
190 2041 : if(center==0) then
191 1431 : if(shubnikov/=4)bravais_name='oP (primitive ortho.)'
192 1431 : if(shubnikov==4)then
193 1328 : sumgen=sum(genafmint(:))
194 332 : if(sumgen==1)then
195 136 : if(genafmint(1)==1)bravais_name='oP_a (primitive ortho., a-magnetic, #11)'
196 136 : if(genafmint(2)==1)bravais_name='oP_b (primitive ortho., b-magnetic, #11)'
197 136 : if(genafmint(3)==1)bravais_name='oP_c (primitive ortho., c-magnetic, #11)'
198 196 : else if(sumgen==2)then
199 136 : if(genafmint(1)==0)bravais_name='oP_A (primitive ortho., A-magnetic, #12)'
200 136 : if(genafmint(2)==0)bravais_name='oP_B (primitive ortho., B-magnetic, #12)'
201 136 : if(genafmint(3)==0)bravais_name='oP_C (primitive ortho., C-magnetic, #12)'
202 60 : else if(sumgen==3)then
203 60 : bravais_name='oP_I (primitive ortho., centered magnetic, #13)'
204 : end if
205 : end if
206 610 : else if(center==-1)then
207 226 : if(shubnikov/=4)bravais_name='oI (body-center ortho.)'
208 30 : if(shubnikov==4)bravais_name='oI_c (body-center ortho., simple ortho. magn., #21)'
209 384 : else if(center==1 .or. center==2 .or. center==3)then
210 327 : if(shubnikov/=4) bravais_name='oC (1-face-center ortho.)'
211 327 : if(shubnikov==4)then
212 360 : sumgen=sum(genafmint(:))
213 90 : if(sumgen==1)then
214 : ! One should work more to distinguish these magnetic groups
215 60 : bravais_name='oC_(a,b,c) (1-face-cent. ortho., 1-magn., #15 or 16)'
216 30 : else if(sumgen==2)then
217 30 : bravais_name='oC_A (1-face-centered ortho., 1-face-magnetic, #17)'
218 0 : else if(sumgen==3)then
219 0 : bravais_name='oC_c (C-face-centered ortho., c-magnetic, #15)'
220 : end if
221 : end if
222 57 : else if(center==-3)then
223 57 : if(shubnikov/=4)bravais_name='oF (face-center ortho.)'
224 10 : if(shubnikov==4)bravais_name='oF_s (face-center ortho., simple ortho. magnetic, #19)'
225 : end if
226 :
227 : else if(iholohedry==6)then ! Hexagonal
228 :
229 1209 : if(shubnikov/=4)bravais_name='hP (primitive hexag.)'
230 90 : if(shubnikov==4)bravais_name='hP_c (primitive hexag., c-magnetic, #29)'
231 :
232 : else if(iholohedry==5)then ! Rhombohedral
233 :
234 1201 : if(shubnikov/=4)bravais_name='hR (rhombohedral)'
235 82 : if(shubnikov==4)bravais_name='hR_I (rhombohedral, centered magnetic, #31)'
236 :
237 : else if(iholohedry==2)then ! Monoclinic
238 :
239 717 : if(center==0)then
240 246 : if(shubnikov/=4)bravais_name='mP (primitive monocl.)'
241 246 : if(shubnikov==4)then
242 240 : sumgen=sum(genafmint(:))
243 60 : if(sumgen==1)then
244 38 : if(genafmint(1)==1)bravais_name='mP_a (primitive monocl., a-magnetic, #5)'
245 38 : if(genafmint(2)==1)bravais_name='mP_b (primitive monocl., b-magnetic, #4)'
246 38 : if(genafmint(3)==1)bravais_name='mP_c (primitive monocl., c-magnetic, #5)'
247 22 : else if(sumgen==2)then
248 22 : if(genafmint(1)==0)bravais_name='mP_A (primitive monocl., A-magnetic, #6)'
249 22 : if(genafmint(2)==0)bravais_name='mP_B (primitive monocl., B-magnetic, #6)'
250 22 : if(genafmint(3)==0)bravais_name='mP_C (primitive monocl., C-magnetic, #6)'
251 : end if
252 : end if
253 471 : else if(center==3)then
254 471 : if(shubnikov/=4)bravais_name='mC (1-face-center monocl.)'
255 : if(shubnikov==4)then
256 20 : if(genafmint(3)==1)bravais_name='mC_c (C-face-center monocl., c-magnetic, #8)'
257 20 : if(genafmint(3)/=1)bravais_name='mC_a (C-face-center monocl., a-magnetic, #9)'
258 : end if
259 0 : else if(center==-3)then
260 0 : if(shubnikov/=4)bravais_name='(reduction of face-center)'
261 : end if
262 :
263 : else if(iholohedry==1)then ! Triclinic
264 :
265 3060 : if(shubnikov/=4)bravais_name='aP (primitive triclinic)'
266 4 : if(shubnikov==4)bravais_name='aP_s (primitive triclinic, simple magnetic, #2)'
267 :
268 : end if
269 :
270 : ! Determine the symbol of the Fedorov space group
271 19156 : spgaxor=1 ; spgorig=1
272 19156 : call spgdata(brvsb,intsb,intsbl,ptintsb,ptschsb,schsb,spgaxor,spgroup,sporder,spgorig)
273 :
274 : ! Prepare print of the dataset, symmetry point group, Bravais lattice
275 19156 : if(shubnikov==1)then
276 :
277 16348 : write(message,'(5a,i3,a,a,a)' )trim(msg_header), &
278 16348 : & ' : space group ',trim(brvsb),trim(intsb),' (#',spgroup,')',&
279 32696 : & '; Bravais ',trim(bravais_name)
280 16348 : call wrtout(iout,message,'COLL')
281 :
282 2808 : else if(shubnikov==3)then
283 :
284 1663 : if(jdtset/=0 .or. present(iimage))then
285 1657 : write(message,'(2a)' )trim(msg_header),' : magnetic group, Shubnikov type III '
286 : else
287 6 : write(message,'(a)' )' Magnetic group, Shubnikov type III '
288 : end if
289 1663 : call wrtout(iout,message,'COLL')
290 :
291 : write(message,'(a,a,a,a,i3,a,a,a)' )&
292 1663 : & ' Fedorov space group ',trim(brvsb),trim(intsb),' (#',spgroup,')',&
293 3326 : & '; Bravais ',trim(bravais_name)
294 1663 : call wrtout(iout,message,'COLL')
295 :
296 1663 : call ptgmadata(ptgroupma,ptgrpmasb)
297 :
298 : write(message,'(3a,i3,a)' )&
299 1663 : & ' Magnetic point group ',trim(ptgrpmasb),' (#',ptgroupma,')'
300 1663 : call wrtout(iout,message,'COLL')
301 :
302 : else if(shubnikov==4)then
303 :
304 1145 : if(jdtset/=0 .or. present(iimage))then
305 1124 : write(message,'(2a)' )trim(msg_header),' : magnetic group, Shubnikov type IV '
306 : else
307 21 : write(message,'(a)' )' Magnetic group, Shubnikov type IV '
308 : end if
309 1145 : call wrtout(iout,message,'COLL')
310 :
311 : write(message,'(a,a,a,a,i3,a)' )&
312 1145 : & ' Fedorov space group ',trim(brvsb),trim(intsb),' (#',spgroup,')'
313 1145 : call wrtout(iout,message,'COLL')
314 :
315 : write(message,'(2a)' )&
316 1145 : & ' Magnetic Bravais lattice ',trim(bravais_name)
317 1145 : call wrtout(iout,message,'COLL')
318 :
319 : end if
320 : end if
321 :
322 19629 : end subroutine prtspgroup
323 : !!***
324 :
325 : !!****f* m_spgdata/spgdata
326 : !! NAME
327 : !! spgdata
328 : !!
329 : !! FUNCTION
330 : !! Return point and space group data: Bravais lattice symbol,
331 : !! international symbol, Schonflies symbol, multiplicity
332 : !! The symbols are taken from The International Tables for Crystallography
333 : !! Volume A, 1983 Ed. Theo Hahn, D. Reidel Publishing Company and
334 : !! The mathematical theory of symmetry in solids, Representation theory for point
335 : !! groups and space groups, 1972, C.J. Bradley and A.P.
336 : !! Cracknell, Clarendon Press, Oxford.
337 : !!
338 : !! INPUTS
339 : !! spgroup = space group number
340 : !! spgorig = space group origin
341 : !! spgaxor = space group axis orientation
342 : !!
343 : !! OUTPUT
344 : !! brvsb=Bravais lattice symbol (P, I, F, A, B, C, R)
345 : !! intsb=international symbol (like m3m, 222, 2_12_12_1)
346 : !! intsbl=international symbol in long format like P2_b = P121)
347 : !! ptintsb=International point group symbol
348 : !! ptschsb=Schoenflies point group symbol
349 : !! sporder=multiplicity of the space group
350 : !! schsb=Schoenflies symbol
351 : !!
352 : !! NOTES
353 : !! brvsb, intsb, and schsb have been extensively checked, while
354 : !! more checking should be done for the others
355 : !! XG20160612 : in particular, at present it might be that spgaxor and spgorig are indetermined
356 : !! (e.g. spgaxor=-1;spgorig=-1) at input.
357 : !! When this has a bearing on some of the output variables (even brvsb or intsb !),
358 : !! these are mentioned as being X, unknown, or to be determined.
359 : !!
360 : !! SOURCE
361 :
362 :
363 32167 : subroutine spgdata(brvsb,intsb,intsbl,ptintsb,ptschsb,schsb,spgaxor,spgroup,sporder,spgorig)
364 :
365 : !Arguments ------------------------------------
366 : !scalars
367 : integer,intent(in) :: spgaxor,spgorig,spgroup
368 : integer,intent(out) :: sporder
369 : character(len=1),intent(out) :: brvsb
370 : character(len=15),intent(out) :: intsb,ptintsb,ptschsb,schsb
371 : character(len=35),intent(out) :: intsbl
372 :
373 : ! *************************************************************************
374 :
375 32167 : intsbl="same"
376 : !defaults for case spgroup is not well defined (eg chkprim 0)
377 32167 : brvsb="P"
378 32167 : intsb="1"
379 32167 : schsb="C1^1"
380 32167 : sporder=1
381 :
382 36361 : select case (spgroup)
383 : case(1)
384 4194 : brvsb="P"; intsb="1"; schsb="C1^1"; sporder=1
385 : case(2)
386 265 : brvsb="P"; intsb="-1"; schsb="Ci^1"; sporder=2
387 : case(3)
388 30 : brvsb="P"; intsb="2"; schsb="C2^1"; sporder=2
389 80 : select case (spgaxor)
390 : case(1)
391 30 : intsbl="P 2 _b = P 1 2 1"
392 : case(2)
393 0 : intsbl="P 2_a = P 2 1 1"
394 : case(3)
395 0 : intsbl="P 2 _c = P 1 1 2"
396 : case default
397 30 : intsbl="intsbl to be determined"
398 : end select
399 : case(4)
400 20 : brvsb="P"; intsb="2_1"; schsb="C2^2"; sporder=2
401 99 : select case (spgaxor)
402 : case(1)
403 20 : intsbl="P 2 1 _b = P 1 2_1 1"
404 : case(2)
405 0 : intsbl="P 2 1 _a = P 2_1 1 1"
406 : case(3)
407 0 : intsbl="P 2 1 _c = P 1 1 2_1"
408 : case default
409 20 : intsbl="intsbl to be determined"
410 : end select
411 : case(5)
412 59 : brvsb="C"; intsb="2"; schsb="C2^3"; sporder=2
413 277 : select case (spgaxor)
414 : case(1)
415 59 : intsbl="C 2 _b1 = C 1 2 1"
416 : case(2)
417 0 : intsbl="C 2 _a1 = B 2 1 1"
418 : case(3)
419 0 : intsbl="C 2 _a2 = C 2 1 1"
420 : case(4)
421 0 : intsbl="C 2 _a3 = I 2 1 1"
422 : case(5)
423 0 : intsbl="C 2 _b2 = A 1 2 1"
424 : case(6)
425 0 : intsbl="C 2 _b3 = I 1 2 1"
426 : case(7)
427 0 : intsbl="C 2 _c1 = A 1 1 2"
428 : case(8)
429 0 : intsbl="C 2 _c2 = B 1 1 2 = B 2"
430 : case(9)
431 0 : intsbl="C 2 _c3 = I 1 1 2"
432 : case default
433 59 : intsbl="intsbl to be determined"
434 : end select
435 : case(6)
436 159 : brvsb="P"; intsb="m"; schsb="Cs^1"; sporder=2
437 346 : select case (spgaxor)
438 : case(1)
439 159 : intsbl="P m _b = P 1 m 1"
440 : case(2)
441 0 : intsbl="P m _a = P m 1 1"
442 : case(3)
443 0 : intsbl="P m _c = P 1 1 m"
444 : case default
445 159 : intsbl="intsbl to be determined"
446 : end select
447 : case(7)
448 28 : brvsb="P"; intsb="c"; schsb="Cs^2"; sporder=2
449 571 : select case (spgaxor)
450 : case(1)
451 28 : intsbl="P c _b1 = P 1 c 1"
452 : case(2)
453 0 : intsbl="P c _a1 = P b 1 1"
454 : case(3)
455 0 : intsbl="P c _a2 = P n 1 1"
456 : case(4)
457 0 : intsbl="P c _a3 = P c 1 1"
458 : case(5)
459 0 : intsbl="P c _b2 = P 1 n 1"
460 : case(6)
461 0 : intsbl="P c _b3 = P 1 a 1"
462 : case(7)
463 0 : intsbl="P c _c1 = P 1 1 a"
464 : case(8)
465 0 : intsbl="P c _c2 = P 1 1 n"
466 : case(9)
467 0 : intsbl="P c _c3 = P 1 1 b = P b"
468 : case default
469 28 : intsbl="intsbl to be determined"
470 : end select
471 : case(8)
472 515 : brvsb="C"; intsb="m"; schsb="Cs^3"; sporder=4
473 1078 : select case (spgaxor)
474 : case(1)
475 515 : intsbl="C m _b1 = C 1 m 1"
476 : case(2)
477 0 : intsbl="C m _a1 = B m 1 1"
478 : case(3)
479 0 : intsbl="C m _a2 = C m 1 1"
480 : case(4)
481 0 : intsbl="C m _a3 = I m 1 1"
482 : case(5)
483 0 : intsbl="C m _b2 = A 1 m 1"
484 : case(6)
485 0 : intsbl="C m _b3 = I 1 m 1"
486 : case(7)
487 0 : intsbl="C m _c1 = A 1 1 m"
488 : case(8)
489 0 : intsbl="C m _c2 = B 1 1 m = B m"
490 : case(9)
491 0 : intsbl="C m _c3 = I 1 1 m"
492 : case default
493 515 : intsbl="intsbl to be determined"
494 : end select
495 : case(9)
496 48 : brvsb="C"; intsb="c"; schsb="Cs^4"; sporder=4
497 167 : select case (spgaxor)
498 : case(1)
499 48 : intsbl="C c _b1 = C 1 c 1"
500 : case(2)
501 0 : intsbl="C c _a1 = B b 1 1"
502 : case(3)
503 0 : intsbl="C c _a2 = C n 1 1"
504 : case(4)
505 0 : intsbl="C c _a3 = I c 1 1"
506 : case(5)
507 0 : intsbl="C c _b2 = A 1 n 1"
508 : case(6)
509 0 : intsbl="C c _b3 = I 1 a 1"
510 : case(7)
511 0 : intsbl="C c _c1 = A 1 1 a"
512 : case(8)
513 0 : intsbl="C c _c2 = B 1 1 n"
514 : case(9)
515 0 : intsbl="C c _c3 = I 1 1 b"
516 : case default
517 48 : intsbl="intsbl to be determined"
518 : end select
519 : case(10)
520 71 : brvsb="P"; intsb="2/m"; schsb="C2h^1"; sporder=4
521 176 : select case (spgaxor)
522 : case(1)
523 71 : intsbl="P 2/m _b = P 1 2/m 1"
524 : case(2)
525 0 : intsbl="P 2/m _a = P 2/m 1 1"
526 : case(3)
527 0 : intsbl="P 2/m _c = P 1 1 2/m"
528 : case default
529 71 : intsbl="intsbl to be determined"
530 : end select
531 : case(11)
532 : brvsb="P"
533 34 : intsb="2_1/m"
534 34 : schsb="C2h^2"
535 34 : sporder=4
536 283 : select case (spgaxor)
537 : case(1)
538 34 : intsbl="P 2_1/m _b = P 1 2_1/m 1"
539 : case(2)
540 0 : intsbl="P 2_1/m _a = P 2_1/m 1 1"
541 : case(3)
542 0 : intsbl="P 2_1/m _c = P 1 1 2_1/m"
543 : case default
544 34 : intsbl="intsbl to be determined"
545 : end select
546 : case(12)
547 215 : brvsb="C"; intsb="2/m"; schsb="C2h^3"; sporder=8
548 490 : select case (spgaxor)
549 : case(1)
550 215 : intsbl="C 2/m _b1 = C 1 2/m 1"
551 : case(2)
552 0 : intsbl="C 2/m _a1 = B 2/m 1 1"
553 : case(3)
554 0 : intsbl="C 2/m _a2 = C 2/m 1 1"
555 : case(4)
556 0 : intsbl="C 2/m _a3 = I 2/m 1 1"
557 : case(5)
558 0 : intsbl="C 2/m _b2 = A 1 2/m 1"
559 : case(6)
560 0 : intsbl="C 2/m _b3 = I 1 2/m 1"
561 : case(7)
562 0 : intsbl="C 2/m _c1 = A 1 1 2/m"
563 : case(8)
564 0 : intsbl="C 2/m _c2 = B 1 1 2/m = B 2/m"
565 : case(9)
566 0 : intsbl="C 2/m _c3 = I 1 1 2/m"
567 : case default
568 215 : intsbl="intsbl to be determined"
569 : end select
570 : case(13)
571 60 : brvsb="P"; intsb="2/c"; schsb="C2h^4"; sporder=4
572 166 : select case (spgaxor)
573 : case(1)
574 60 : intsbl="P 2/c _b1 = P 1 2/c 1"
575 : case(2)
576 0 : intsbl="P 2/c _a1 = P 2/b 1 1"
577 : case(3)
578 0 : intsbl="P 2/c _a2 = P 2/n 1 1"
579 : case(4)
580 0 : intsbl="P 2/c _a3 = P 2/c 1 1"
581 : case(5)
582 0 : intsbl="P 2/c _b2 = P 1 2/n 1"
583 : case(6)
584 0 : intsbl="P 2/c _b3 = P 1 2/a 1"
585 : case(7)
586 0 : intsbl="P 2/c _c1 = P 1 1 2/a"
587 : case(8)
588 0 : intsbl="P 2/c _c2 = P 1 1 2/n"
589 : case(9)
590 0 : intsbl="P 2/c _c3 = P 1 1 2/b = P 2/b"
591 : case default
592 60 : intsbl="intsbl to be determined"
593 : end select
594 : case(14)
595 46 : brvsb="P"; intsb="2_1/c"; schsb="C2h^5"; sporder=4
596 129 : select case (spgaxor)
597 : case(1)
598 46 : intsbl="P 2_1/c _b1 = P 1 2_1/c 1"
599 : case(2)
600 0 : intsbl="P 2_1/c _a1 = P 2_1/b 1 1"
601 : case(3)
602 0 : intsbl="P 2_1/c _a2 = P 2_1/n 1 1"
603 : case(4)
604 0 : intsbl="P 2_1/c _a3 = P 2_1/c 1 1"
605 : case(5)
606 0 : intsbl="P 2_1/c _b2 = P 1 2_1/n 1"
607 : case(6)
608 0 : intsbl="P 2_1/c _b3 = P 1 2_1/a 1"
609 : case(7)
610 0 : intsbl="P 2_1/c _c1 = P 1 1 2_1/a"
611 : case(8)
612 0 : intsbl="P 2_1/c _c2 = P 1 1 2_1/n"
613 : case(9)
614 0 : intsbl="P 2_1/c _c3 = P 1 1 2_1/b = P 2_1/b"
615 : case default
616 46 : intsbl="intsbl to be determined"
617 : end select
618 : case(15)
619 37 : brvsb="C"; intsb="2/c"; schsb="C2h^6"; sporder=8
620 106 : select case (spgaxor)
621 : case(1)
622 37 : intsbl="C 2/c _b1 = C 1 2/c 1"
623 : case(2)
624 0 : intsbl="C 2/c _a1 = B 2/b 1 1"
625 : case(3)
626 0 : intsbl="C 2/c _a2 = C 2/n 1 1"
627 : case(4)
628 0 : intsbl="C 2/c _a3 = I 2/c 1 1"
629 : case(5)
630 0 : intsbl="C 2/c _b2 = A 1 2/n 1"
631 : case(6)
632 0 : intsbl="C 2/c _b3 = I 1 2/a 1"
633 : case(7)
634 0 : intsbl="C 2/c _c1 = A 1 1 2/a"
635 : case(8)
636 0 : intsbl="C 2/c _c2 = B 1 1 2/n"
637 : case(9)
638 0 : intsbl="C 2/c _c3 = I 1 1 2/b"
639 : case default
640 37 : intsbl="intsbl to be determined"
641 : end select
642 : case(16)
643 32 : brvsb="P"; intsb="2 2 2"; schsb="D2^1"; sporder=4
644 : case(17)
645 32 : brvsb="P"; intsb="2 2 2_1"; schsb="D2^2"; sporder=4
646 96 : select case (spgaxor)
647 : case(1)
648 32 : intsbl="P 2 2 2_1"
649 : case(2)
650 0 : intsbl="P 2_1 2 2"
651 : case(3)
652 0 : intsbl="P 2 2_1 2"
653 : case default
654 32 : intsbl="intsbl to be determined"
655 : end select
656 : case(18)
657 32 : brvsb="P"; intsb="2_1 2_1 2"; schsb="D2^3"; sporder=4
658 84 : select case (spgaxor)
659 : case(1)
660 32 : intsbl="P 2_1 2_1 2"
661 : case(2)
662 0 : intsbl="P 2 2_1 2_1"
663 : case(3)
664 0 : intsbl="P 2_1 2 2_1"
665 : case default
666 32 : intsbl="intsbl to be determined"
667 : end select
668 : case(19)
669 20 : brvsb="P"; intsb="2_1 2_1 2_1"; schsb="D2^4"; sporder=4
670 : case(20)
671 24 : schsb="D2^5"; sporder=8
672 72 : select case (spgaxor)
673 : case(1)
674 24 : brvsb="C"; intsb="2 2 2_1"
675 : case(2)
676 0 : brvsb="A"; intsb="2_1 2 2"
677 : case(3)
678 0 : brvsb="B"; intsb="2 2_1 2"
679 : case default
680 0 : brvsb="X"
681 24 : intsbl="intsbl to be determined"
682 : end select
683 : case(21)
684 24 : schsb="D2^6"; sporder=8
685 70 : select case (spgaxor)
686 : case(1)
687 24 : brvsb="C"; intsb="2 2 2"
688 : case(2)
689 0 : brvsb="A"; intsb="2 2 2"
690 : case(3)
691 0 : brvsb="B"; intsb="2 2 2"
692 : case default
693 0 : brvsb="X"
694 24 : intsbl="intsbl to be determined"
695 : end select
696 : case(22)
697 22 : brvsb="F"; intsb="2 2 2"; schsb="D2^7"; sporder=16
698 : case(23)
699 12 : brvsb="I"; intsb="2 2 2"; schsb="D2^8"; sporder=8
700 : case(24)
701 12 : brvsb="I"; intsb="2_1 2_1 2_1"; schsb="D2^9"; sporder=8
702 : case(25)
703 309 : brvsb="P"; schsb="C2v^1"; sporder=4
704 666 : select case (spgaxor)
705 : case(1)
706 309 : intsb="m m 2"
707 : case(2)
708 0 : intsb="2 m m"
709 : case(3)
710 0 : intsb="m 2 m"
711 : case default
712 309 : intsb="intsb unknown"
713 : end select
714 : case(26)
715 48 : brvsb="P"; schsb="C2v^2"; sporder=4
716 128 : select case (spgaxor)
717 : case(1)
718 48 : intsb="m c 2_1"
719 : case(2)
720 0 : intsb="2_1 m a"
721 : case(3)
722 0 : intsb="b 2_1 m"
723 : case(4)
724 0 : intsb="m 2_1 b"
725 : case(5)
726 0 : intsb="c m 2_1"
727 : case(6)
728 0 : intsb="2_1 a m"
729 : case default
730 48 : intsb="intsb unknown"
731 : end select
732 : case(27)
733 32 : brvsb="P"; schsb="C2v^3"; sporder=4
734 108 : select case (spgaxor)
735 : case(1)
736 32 : intsb="c c 2"
737 : case(2)
738 0 : intsb="2 a a"
739 : case(3)
740 0 : intsb="b 2 b"
741 : case default
742 32 : intsb="intsb unknown"
743 : end select
744 : case(28)
745 44 : brvsb="P"; schsb="C2v^4"; sporder=4
746 132 : select case (spgaxor)
747 : case(1)
748 44 : intsb="m a 2"
749 : case(2)
750 0 : intsb="2 m b"
751 : case(3)
752 0 : intsb="c 2 m"
753 : case(4)
754 0 : intsb="m 2 a"
755 : case(5)
756 0 : intsb="b m 2"
757 : case(6)
758 0 : intsb="2 c m"
759 : case default
760 44 : intsb="intsb unknown"
761 : end select
762 : case(29)
763 44 : brvsb="P"; schsb="C2v^5"; sporder=4
764 132 : select case (spgaxor)
765 : case(1)
766 44 : intsb="c a 2_1"
767 : case(2)
768 0 : intsb="2_1 a b"
769 : case(3)
770 0 : intsb="c 2_1 b"
771 : case(4)
772 0 : intsb="b 2_1 a"
773 : case(5)
774 0 : intsb="b c 2_1"
775 : case(6)
776 0 : intsb="2_1 c a"
777 : case default
778 44 : intsb="intsb unknown"
779 : end select
780 : case(30)
781 44 : brvsb="P"; schsb="C2v^6"; sporder=4
782 132 : select case (spgaxor)
783 : case(1)
784 44 : intsb="n c 2"
785 : case(2)
786 0 : intsb="2 n a"
787 : case(3)
788 0 : intsb="b 2 n"
789 : case(4)
790 0 : intsb="n 2 b"
791 : case(5)
792 0 : intsb="c n 2"
793 : case(6)
794 0 : intsb="2 a n"
795 : case default
796 44 : intsb="intsb unknown"
797 : end select
798 : case(31)
799 44 : brvsb="P"; schsb="C2v^7"; sporder=4
800 120 : select case (spgaxor)
801 : case(1)
802 44 : intsb="m n 2_1"
803 : case(2)
804 0 : intsb="2_1 m n"
805 : case(3)
806 0 : intsb="n 2_1 m"
807 : case(4)
808 0 : intsb="m 2_1 n"
809 : case(5)
810 0 : intsb="n m 2_1"
811 : case(6)
812 0 : intsb="2_1 n m"
813 : case default
814 44 : intsb="intsb unknown"
815 : end select
816 : case(32)
817 32 : brvsb="P"; schsb="C2v^8"; sporder=4
818 108 : select case (spgaxor)
819 : case(1)
820 32 : intsb="b a 2"
821 : case(2)
822 0 : intsb="2 c b"
823 : case(3)
824 0 : intsb="c 2 a"
825 : case default
826 32 : intsb="intsb unknown"
827 : end select
828 : case(33)
829 44 : brvsb="P"; schsb="C2v^9"; sporder=4
830 120 : select case (spgaxor)
831 : case(1)
832 44 : intsb="n a 2_1"
833 : case(2)
834 0 : intsb="2_1 n b"
835 : case(3)
836 0 : intsb="c 2_1 n"
837 : case(4)
838 0 : intsb="n 2_1 a"
839 : case(5)
840 0 : intsb="b n 2_1"
841 : case(6)
842 0 : intsb="2_1 c n"
843 : case default
844 44 : intsb="intsb unknown"
845 : end select
846 : case(34)
847 32 : brvsb="P"; schsb="C2v^10"; sporder=4
848 92 : select case (spgaxor)
849 : case(1)
850 32 : intsb="n n 2"
851 : case(2)
852 0 : intsb="2 n n"
853 : case(3)
854 0 : intsb="n 2 n"
855 : case default
856 32 : intsb="intsb unknown"
857 : end select
858 : case(35)
859 28 : schsb="C2v^11"; sporder=8
860 105 : select case (spgaxor)
861 : case(1)
862 28 : brvsb="C"; intsb="m m 2"
863 : case(2)
864 0 : brvsb="A"; intsb="2 m m"
865 : case(3)
866 0 : brvsb="B"; intsb="m 2 m"
867 : case default
868 0 : brvsb="X"
869 28 : intsb="intsb unknown"
870 : end select
871 : case(36)
872 49 : schsb="C2v^12"; sporder=8
873 122 : select case (spgaxor)
874 : case(1)
875 49 : brvsb="C"; intsb="m c 2_1"
876 : case(2)
877 0 : brvsb="A"; intsb="2_1 m a"
878 : case(3)
879 0 : brvsb="B"; intsb="b 2_1 m"
880 : case(4)
881 0 : brvsb="B"; intsb="m 2_1 b"
882 : case(5)
883 0 : brvsb="C"; intsb="c m 2_1"
884 : case(6)
885 0 : brvsb="A"; intsb="2_1 a m"
886 : case default
887 0 : brvsb="X"
888 49 : intsb="intsb unknown"
889 : end select
890 : case(37)
891 24 : schsb="C2v^13"; sporder=8
892 161 : select case (spgaxor)
893 : case(1)
894 24 : brvsb="C"; intsb="c c 2"
895 : case(2)
896 0 : brvsb="A"; intsb="2 a a"
897 : case(3)
898 0 : brvsb="B"; intsb="b 2 b"
899 : case default
900 0 : brvsb="X"
901 24 : intsb="intsb unknown"
902 : end select
903 : case(38)
904 113 : schsb="C2v^14"; sporder=8
905 254 : select case (spgaxor)
906 : case(1)
907 113 : brvsb="A"; intsb="m m 2"
908 : case(2)
909 0 : brvsb="B"; intsb="2 m m"
910 : case(3)
911 0 : brvsb="C"; intsb="m 2 m"
912 : case(4)
913 0 : brvsb="A"; intsb="m 2 m"
914 : case(5)
915 0 : brvsb="B"; intsb="m m 2"
916 : case(6)
917 0 : brvsb="C"; intsb="2 m m"
918 : case default
919 0 : brvsb="X"
920 113 : intsb="intsb unknown"
921 : end select
922 : case(39)
923 28 : schsb="C2v^15"; sporder=8
924 84 : select case (spgaxor)
925 : case(1)
926 28 : brvsb="A"; intsb="b m 2"
927 : case(2)
928 0 : brvsb="B"; intsb="2 c m"
929 : case(3)
930 0 : brvsb="C"; intsb="m 2 a"
931 : case(4)
932 0 : brvsb="A"; intsb="c 2 m"
933 : case(5)
934 0 : brvsb="B"; intsb="m a 2"
935 : case(6)
936 0 : brvsb="C"; intsb="2 m b"
937 : case default
938 0 : brvsb="X"
939 28 : intsb="intsb unknown"
940 : end select
941 : case(40)
942 28 : schsb="C2v^16"; sporder=8
943 84 : select case (spgaxor)
944 : case(1)
945 28 : brvsb="A"; intsb="m a 2"
946 : case(2)
947 0 : brvsb="B"; intsb="2 m b"
948 : case(3)
949 0 : brvsb="C"; intsb="c 2 m"
950 : case(4)
951 0 : brvsb="A"; intsb="m 2 a"
952 : case(5)
953 0 : brvsb="B"; intsb="b m 2"
954 : case(6)
955 0 : brvsb="C"; intsb="2 c m"
956 : case default
957 0 : brvsb="X"
958 28 : intsb="intsb unknown"
959 : end select
960 : case(41)
961 28 : schsb="C2v^17"; sporder=8
962 72 : select case (spgaxor)
963 : case(1)
964 28 : brvsb="A"; intsb="b a 2"
965 : case(2)
966 0 : brvsb="B"; intsb="2 c b"
967 : case(3)
968 0 : brvsb="C"; intsb="c 2 a"
969 : case(4)
970 0 : brvsb="A"; intsb="c 2 a"
971 : case(5)
972 0 : brvsb="B"; intsb="b a 2"
973 : case(6)
974 0 : brvsb="C"; intsb="2 c b"
975 : case default
976 0 : brvsb="X"
977 28 : intsb="intsb unknown"
978 : end select
979 : case(42)
980 16 : brvsb="F"; schsb="C2v^18"; sporder=16
981 48 : select case (spgaxor)
982 : case(1)
983 16 : intsb="m m 2"
984 : case(2)
985 0 : intsb="2 m m"
986 : case(3)
987 0 : intsb="m 2 m"
988 : case default
989 16 : intsb="intsb unknown"
990 : end select
991 : case(43)
992 16 : brvsb="F"; schsb="C2v^19"; sporder=16
993 179 : select case (spgaxor)
994 : case(1)
995 16 : intsb="d d 2"
996 : case(2)
997 0 : intsb="2 d d"
998 : case(3)
999 0 : intsb="d 2 d"
1000 : case default
1001 16 : intsb="intsb unknown"
1002 : end select
1003 : case(44)
1004 147 : brvsb="I"; schsb="C2v^20"; sporder=8
1005 314 : select case (spgaxor)
1006 : case(1)
1007 147 : intsb="m m 2"
1008 : case(2)
1009 0 : intsb="2 m m"
1010 : case(3)
1011 0 : intsb="m 2 m"
1012 : case default
1013 147 : intsb="intsb unknown"
1014 : end select
1015 : case(45)
1016 20 : brvsb="I"; schsb="C2v^21"; sporder=8
1017 68 : select case (spgaxor)
1018 : case(1)
1019 20 : intsb="b a 2"
1020 : case(2)
1021 0 : intsb="2 c b"
1022 : case(3)
1023 0 : intsb="c 2 a"
1024 : case default
1025 20 : intsb="intsb unknown"
1026 : end select
1027 : case(46)
1028 28 : brvsb="I"; schsb="C2v^22"; sporder=8
1029 936 : select case (spgaxor)
1030 : case(1)
1031 28 : intsb="m a 2"
1032 : case(2)
1033 0 : intsb="2 m b"
1034 : case(3)
1035 0 : intsb="c 2 m"
1036 : case(4)
1037 0 : intsb="m 2 a"
1038 : case(5)
1039 0 : intsb="b m 2"
1040 : case(6)
1041 0 : intsb="2 c m"
1042 : case default
1043 28 : intsb="intsb unknown"
1044 : end select
1045 : case(47)
1046 880 : brvsb="P"; intsb="m m m"; schsb="D2h^1"; sporder=8
1047 : case(48)
1048 28 : brvsb="P"; intsb="n n n"; schsb="D2h^2"; sporder=8
1049 100 : select case (spgorig)
1050 : case(1)
1051 28 : intsbl="n n n _1"
1052 : case(2)
1053 0 : intsbl="n n n _2"
1054 : case default
1055 28 : intsbl="intsbl to be determined"
1056 : end select
1057 : case(49)
1058 44 : brvsb="P"; schsb="D2h^3"; sporder=8
1059 132 : select case (spgaxor)
1060 : case(1)
1061 44 : intsb="c c m"
1062 : case(2)
1063 0 : intsb="m a a"
1064 : case(3)
1065 0 : intsb="b m b"
1066 : case default
1067 44 : intsb="intsb unknown"
1068 : end select
1069 : case(50)
1070 44 : brvsb="P"; schsb="D2h^4"; sporder=8
1071 180 : select case(spgorig)
1072 : case(1)
1073 88 : select case(spgaxor)
1074 : case(1)
1075 44 : intsb="b a n"; intsbl="b a n _1"
1076 : case(2)
1077 0 : intsb="n c b"; intsbl="n c b _1"
1078 : case(3)
1079 0 : intsb="c n a"; intsbl="c n a _1"
1080 : case default
1081 0 : intsb="intsb unknown"
1082 44 : intsbl="intsbl to be determined"
1083 : end select
1084 : case(2)
1085 0 : select case(spgaxor)
1086 : case(5)
1087 0 : intsb="b a n"; intsbl="b a n _2"
1088 : case(6)
1089 0 : intsb="n c b"; intsbl="n c b _2"
1090 : case(4)
1091 0 : intsb="c n a"; intsbl="c n a _2"
1092 : case default
1093 0 : intsb="intsb unknown"
1094 0 : intsbl="intsbl to be determined"
1095 : end select
1096 : case default
1097 0 : intsb="intsb unknown"
1098 44 : intsbl="intsbl to be determined"
1099 : end select
1100 : case(51)
1101 92 : brvsb="P"; schsb="D2h^5"; sporder=8
1102 244 : select case (spgaxor)
1103 : case(1)
1104 92 : intsb="m m a"
1105 : case(2)
1106 0 : intsb="b m m"
1107 : case(3)
1108 0 : intsb="m c m"
1109 : case(4)
1110 0 : intsb="m a m"
1111 : case(5)
1112 0 : intsb="m m b"
1113 : case(6)
1114 0 : intsb="c m m"
1115 : case default
1116 92 : intsb="intsb unknown"
1117 : end select
1118 : case(52)
1119 60 : brvsb="P"; schsb="D2h^6"; sporder=8
1120 183 : select case (spgaxor)
1121 : case(1)
1122 60 : intsb="n n a"
1123 : case(2)
1124 0 : intsb="b n n"
1125 : case(3)
1126 0 : intsb="n c n"
1127 : case(4)
1128 0 : intsb="n a n"
1129 : case(5)
1130 0 : intsb="n n b"
1131 : case(6)
1132 0 : intsb="c n n"
1133 : case default
1134 60 : intsb="intsb unknown"
1135 : end select
1136 : case(53)
1137 : brvsb="P"
1138 63 : schsb="D2h^7"
1139 63 : sporder=8
1140 186 : select case (spgaxor)
1141 : case(1)
1142 63 : intsb="m n a"
1143 : case(2)
1144 0 : intsb="b m n"
1145 : case(3)
1146 0 : intsb="n c m"
1147 : case(4)
1148 0 : intsb="m a n"
1149 : case(5)
1150 0 : intsb="n m b"
1151 : case(6)
1152 0 : intsb="c n m"
1153 : case default
1154 63 : intsb="intsb unknown"
1155 : end select
1156 : case(54)
1157 60 : brvsb="P"; schsb="D2h^8"; sporder=8
1158 164 : select case (spgaxor)
1159 : case(1)
1160 60 : intsb="c c a"
1161 : case(2)
1162 0 : intsb="b a a"
1163 : case(3)
1164 0 : intsb="b c b"
1165 : case(4)
1166 0 : intsb="b a b"
1167 : case(5)
1168 0 : intsb="c c b"
1169 : case(6)
1170 0 : intsb="c a a"
1171 : case default
1172 60 : intsb="intsb unknown"
1173 : end select
1174 : case(55)
1175 44 : brvsb="P"; schsb="D2h^9"; sporder=8
1176 132 : select case (spgaxor)
1177 : case(1)
1178 44 : intsb="b a m"
1179 : case(2)
1180 0 : intsb="m c b"
1181 : case(3)
1182 0 : intsb="c m a"
1183 : case default
1184 44 : intsb="intsb unknown"
1185 : end select
1186 : case(56)
1187 44 : brvsb="P"; schsb="D2h^10"; sporder=8
1188 148 : select case (spgaxor)
1189 : case(1)
1190 44 : intsb="c c n"
1191 : case(2)
1192 0 : intsb="n a a"
1193 : case(3)
1194 0 : intsb="b n b"
1195 : case default
1196 44 : intsb="intsb unknown"
1197 : end select
1198 : case(57)
1199 60 : brvsb="P"; schsb="D2h^11"; sporder=8
1200 164 : select case (spgaxor)
1201 : case(1)
1202 60 : intsb="b c m"
1203 : case(2)
1204 0 : intsb="m c a"
1205 : case(3)
1206 0 : intsb="b m a"
1207 : case(4)
1208 0 : intsb="c m b"
1209 : case(5)
1210 0 : intsb="c a m"
1211 : case(6)
1212 0 : intsb="m a b"
1213 : case default
1214 60 : intsb="intsb unknown"
1215 : end select
1216 : case(58)
1217 44 : brvsb="P"; schsb="D2h^12"; sporder=8
1218 132 : select case (spgaxor)
1219 : case(1)
1220 44 : intsb="n n m"
1221 : case(2)
1222 0 : intsb="m n n"
1223 : case(3)
1224 0 : intsb="n m n"
1225 : case default
1226 44 : intsb="intsb unknown"
1227 : end select
1228 : case(59)
1229 44 : brvsb="P"; schsb="D2h^13"; sporder=8
1230 44 : if (spgorig==1) then
1231 88 : select case (spgaxor)
1232 : case(1)
1233 44 : intsb="m m n"; intsbl="m m n _1"
1234 : case(2)
1235 0 : intsb="m m n"; intsbl="n m m _1"
1236 : case(3)
1237 0 : intsb="m m n"; intsbl="m n m _1"
1238 : case default
1239 0 : intsb="intsb unknown"
1240 44 : intsbl="intsbl to be determined"
1241 : end select
1242 0 : else if(spgorig==2) then
1243 0 : select case (spgaxor)
1244 : case(5)
1245 0 : intsb="m m n"; intsbl="m m n _2"
1246 : case(6)
1247 0 : intsb="m m n"; intsbl="n m m _2"
1248 : case(4)
1249 0 : intsb="m m n"; intsbl="m n m _2"
1250 : case default
1251 0 : intsb="intsb unknown"
1252 0 : intsbl="intsbl to be determined"
1253 : end select
1254 : else
1255 0 : intsb="intsb unknown"
1256 0 : intsbl="intsbl to be determined"
1257 : end if
1258 : case(60)
1259 60 : brvsb="P"; schsb="D2h^14"; sporder=8
1260 148 : select case (spgaxor)
1261 : case(1)
1262 60 : intsb="b c n"
1263 : case(2)
1264 0 : intsb="n c a"
1265 : case(3)
1266 0 : intsb="b n a"
1267 : case(4)
1268 0 : intsb="c n b"
1269 : case(5)
1270 0 : intsb="c a n"
1271 : case(6)
1272 0 : intsb="n a b"
1273 : case default
1274 60 : intsb="intsb unknown"
1275 : end select
1276 : case(61)
1277 28 : brvsb="P"; schsb="D2h^15"; sporder=8
1278 28 : if (spgaxor==1)then
1279 28 : intsb="b c a"
1280 0 : else if (spgaxor==2)then
1281 0 : intsb="c a b"
1282 : else
1283 0 : intsb="intsb unknown"
1284 : end if
1285 : case(62)
1286 86 : brvsb="P"; schsb="D2h^16"; sporder=8
1287 220 : select case (spgaxor)
1288 : case(1)
1289 83 : intsb="n m a"
1290 : case(2)
1291 0 : intsb="b n m"
1292 : case(3)
1293 1 : intsb="m c n"
1294 : case(4)
1295 0 : intsb="n a m"
1296 : case(5)
1297 1 : intsb="m n b"
1298 : case(6)
1299 0 : intsb="c m n"
1300 : case default
1301 86 : intsb="intsb unknown"
1302 : end select
1303 : case(63)
1304 51 : schsb="D2h^17"; sporder=16
1305 146 : select case (spgaxor)
1306 : case(1)
1307 51 : brvsb="C"; intsb="m c m"
1308 : case(2)
1309 0 : brvsb="A"; intsb="m m a"
1310 : case(3)
1311 0 : brvsb="B"; intsb="b m m"
1312 : case(4)
1313 0 : brvsb="B"; intsb="m m b"
1314 : case(5)
1315 0 : brvsb="C"; intsb="c m m"
1316 : case(6)
1317 0 : brvsb="A"; intsb="m a m"
1318 : case default
1319 0 : brvsb="X"
1320 51 : intsbl="intsbl unknown"
1321 : end select
1322 : case(64)
1323 44 : schsb="D2h^18"; sporder=16
1324 198 : select case (spgaxor)
1325 : case(1)
1326 44 : brvsb="C"; intsb="m c a"
1327 : case(2)
1328 0 : brvsb="A"; intsb="b m a"
1329 : case(3)
1330 0 : brvsb="B"; intsb="b c m"
1331 : case(4)
1332 0 : brvsb="B"; intsb="m a b"
1333 : case(5)
1334 0 : brvsb="C"; intsb="c m b"
1335 : case(6)
1336 0 : brvsb="A"; intsb="c a m"
1337 : case default
1338 0 : brvsb="X"
1339 44 : intsb="intsb unknown"
1340 : end select
1341 : case(65)
1342 110 : schsb="D2h^19"; sporder=16
1343 256 : select case (spgaxor)
1344 : case(1)
1345 110 : brvsb="C"; intsb="m m m"
1346 : case(2)
1347 0 : brvsb="A"; intsb="m m m"
1348 : case(3)
1349 0 : brvsb="B"; intsb="m m m"
1350 : case default
1351 0 : brvsb="X"
1352 110 : intsb="intsb unknown"
1353 : end select
1354 : case(66)
1355 36 : schsb="D2h^20"; sporder=16
1356 108 : select case (spgaxor)
1357 : case(1)
1358 36 : brvsb="C"; intsb="c c m"
1359 : case(2)
1360 0 : brvsb="A"; intsb="m a a"
1361 : case(3)
1362 0 : brvsb="B"; intsb="b m b"
1363 : case default
1364 0 : brvsb="X"
1365 36 : intsb="intsb unknown"
1366 : end select
1367 : case(67)
1368 36 : schsb="D2h^21"; sporder=16
1369 120 : select case (spgaxor)
1370 : case(1)
1371 36 : brvsb="C"; intsb="m m a"
1372 : case(2)
1373 0 : brvsb="A"; intsb="b m m"
1374 : case(3)
1375 0 : brvsb="B"; intsb="m c m"
1376 : case(4)
1377 0 : brvsb="B"; intsb="m a m"
1378 : case(5)
1379 0 : brvsb="C"; intsb="m m b"
1380 : case(6)
1381 0 : brvsb="A"; intsb="c m m"
1382 : case default
1383 0 : brvsb="X"
1384 36 : intsb="intsb unknown"
1385 : end select
1386 : case(68)
1387 48 : schsb="D2h^22"; sporder=16
1388 48 : if (spgorig==1) then
1389 79 : select case (spgaxor)
1390 : case(1)
1391 37 : brvsb="C"; intsb="c c a"; intsbl="c c a _1"
1392 : case(2)
1393 1 : brvsb="A"; intsb="b a a"; intsbl="b a a _1"
1394 : case(3)
1395 1 : brvsb="B"; intsb="b c b"; intsbl="b c b _1"
1396 : case(4)
1397 1 : brvsb="B"; intsb="b a b"; intsbl="b a b _1"
1398 : case(5)
1399 1 : brvsb="C"; intsb="c c b"; intsbl="c c b _1"
1400 : case(6)
1401 1 : brvsb="A"; intsb="c a a"; intsbl="c a a _1"
1402 : case default
1403 0 : brvsb="X"
1404 0 : intsb="intsb unknown"
1405 42 : intsbl="intsbl to be determined"
1406 : end select
1407 6 : else if(spgorig==2)then
1408 7 : select case (spgaxor)
1409 : case(1)
1410 1 : brvsb="C"; intsb="c c a"; intsbl="c c a _2"
1411 : case(2)
1412 1 : brvsb="A"; intsb="b a a"; intsbl="b a a _2"
1413 : case(3)
1414 1 : brvsb="B"; intsb="b c b"; intsbl="b c b _2"
1415 : case(4)
1416 1 : brvsb="B"; intsb="b a b"; intsbl="b a b _2"
1417 : case(5)
1418 1 : brvsb="C"; intsb="c c b"; intsbl="c c b _2"
1419 : case(6)
1420 1 : brvsb="A"; intsb="c a a"; intsbl="c a a _2"
1421 : case default
1422 0 : brvsb="X"
1423 0 : intsb="intsb unknown"
1424 6 : intsbl="intsbl to be determined"
1425 : end select
1426 : else
1427 0 : brvsb="X"
1428 0 : intsb="intsb unknown"
1429 0 : intsbl="intsbl to be determined"
1430 : end if
1431 : case(69)
1432 35 : brvsb="F"; intsb="m m m"; schsb="D2h^23"; sporder=32
1433 : case(70)
1434 20 : brvsb="F"; intsb="d d d"; schsb="D2h^24"; sporder=32
1435 20 : if (spgorig==1)then
1436 20 : intsbl="d d d _1"
1437 0 : else if (spgorig==2)then
1438 0 : intsbl="d d d _2"
1439 : else
1440 0 : intsbl="intsbl to be determined"
1441 : end if
1442 : case(71)
1443 85 : brvsb="I"; intsb="m m m"; schsb="D2h^25"; sporder=16
1444 : case(72)
1445 32 : brvsb="I"; schsb="D2h^26"; sporder=16
1446 84 : select case (spgaxor)
1447 : case(1)
1448 32 : intsb="b a m"
1449 : case(2)
1450 0 : intsb="m c b"
1451 : case(3)
1452 0 : intsb="c m a"
1453 : case default
1454 32 : intsb="intsb unknown"
1455 : end select
1456 : case(73)
1457 20 : brvsb="I"; schsb="D2h^27"; sporder=16
1458 20 : if (spgorig==1)then
1459 20 : intsb="b c a"
1460 0 : else if (spgorig==2)then
1461 0 : intsb="c a b"
1462 : else
1463 0 : intsb="intsb unknown"
1464 : end if
1465 : case(74)
1466 54 : brvsb="I"; schsb="D2h^28"; sporder=16
1467 153 : select case (spgaxor)
1468 : case(1)
1469 54 : intsb="m m a"
1470 : case(2)
1471 0 : intsb="b m m"
1472 : case(3)
1473 0 : intsb="m c m"
1474 : case(4)
1475 0 : intsb="m a m"
1476 : case(5)
1477 0 : intsb="m m b"
1478 : case(6)
1479 0 : intsb="c m m"
1480 : case default
1481 54 : intsb="intsb unknown"
1482 : end select
1483 : case(75)
1484 45 : brvsb="P"; intsb="4"; schsb="C4^1"; sporder=4
1485 : case(76)
1486 23 : brvsb="P"; intsb="4_1"; schsb="C4^2"; sporder=4
1487 : case(77)
1488 20 : brvsb="P"; intsb="4_2"; schsb="C4^3"; sporder=4
1489 : case(78)
1490 20 : brvsb="P"; intsb="4_3"; schsb="C4^4"; sporder=4
1491 : case(79)
1492 12 : brvsb="I"; intsb="4"; schsb="C4^5"; sporder=8
1493 : case(80)
1494 12 : brvsb="I"; intsb="4_1"; schsb="C4^6"; sporder=8
1495 : case(81)
1496 20 : brvsb="P"; intsb="-4"; schsb="S4^1"; sporder=4
1497 : case(82)
1498 60 : brvsb="I"; intsb="-4"; schsb="S4^2"; sporder=8
1499 : case(83)
1500 59 : brvsb="P"; intsb="4/m"; schsb="C4h^1"; sporder=8
1501 : case(84)
1502 28 : brvsb="P"; intsb="4_2/m"; schsb="C4h^2"; sporder=8
1503 : case(85)
1504 28 : brvsb="P"; intsb="4/n"; schsb="C4h^3"; sporder=8
1505 28 : if (spgorig==1)then
1506 28 : intsbl="4/n _1"
1507 0 : else if (spgorig==2)then
1508 0 : intsbl="4/n _2"
1509 : else
1510 0 : intsbl="intsbl to be determined"
1511 : end if
1512 : case(86)
1513 28 : brvsb="P"; intsb="4_2/n"; schsb="C4h^4"; sporder=8
1514 28 : if (spgorig==1)then
1515 28 : intsbl="4_2/n _1"
1516 0 : else if (spgorig==2)then
1517 0 : intsbl="4_2/n _2"
1518 : else
1519 0 : intsbl="intsbl to be determined"
1520 : end if
1521 : case(87)
1522 24 : brvsb="I"; intsb="4/m"; schsb="C4h^5"; sporder=16
1523 : case(88)
1524 20 : brvsb="I"; intsb="4_1/a"; schsb="C4h^6"; sporder=16
1525 20 : if (spgorig==1)then
1526 20 : intsbl="4_1/a _1"
1527 0 : else if (spgorig==2)then
1528 0 : intsbl="4_1/a _2"
1529 : else
1530 0 : intsbl="intsbl to be determined"
1531 : end if
1532 : case(89)
1533 33 : brvsb="P"; intsb="4 2 2"; schsb="D4^1"; sporder=8
1534 : case(90)
1535 28 : brvsb="P"; intsb="4 2_1 2"; schsb="D4^2"; sporder=8
1536 : case(91)
1537 28 : brvsb="P"; intsb="4_1 2 2"; schsb="D4^3"; sporder=8
1538 : case(92)
1539 28 : brvsb="P"; intsb="4_1 2_1 2"; schsb="D4^4"; sporder=8
1540 : case(93)
1541 28 : brvsb="P"; intsb="4_2 2 2"; schsb="D4^5"; sporder=8
1542 : case(94)
1543 28 : brvsb="P"; intsb="4_2 2_1 2"; schsb="D4^6"; sporder=8
1544 : case(95)
1545 28 : brvsb="P"; intsb="4_3 2 2"; schsb="D4^7"; sporder=8
1546 : case(96)
1547 28 : brvsb="P"; intsb="4_3 2_1 2"; schsb="D4^8"; sporder=8
1548 : case(97)
1549 65 : brvsb="I"; intsb="4 2 2"; schsb="D4^9"; sporder=16
1550 : case(98)
1551 20 : brvsb="I"; intsb="4_1 2 2"; schsb="D4^10"; sporder=16
1552 : case(99)
1553 479 : brvsb="P"; intsb="4 m m"; schsb="C4v^1"; sporder=8
1554 : case(100)
1555 28 : brvsb="P"; intsb="4 b m"; schsb="C4v^2"; sporder=8
1556 : case(101)
1557 28 : brvsb="P"; intsb="4_2 c m"; schsb="C4v^3"; sporder=8
1558 : case(102)
1559 28 : brvsb="P"; intsb="4_2 n m"; schsb="C4v^4"; sporder=8
1560 : case(103)
1561 28 : brvsb="P"; intsb="4 c c"; schsb="C4v^5"; sporder=8
1562 : case(104)
1563 28 : brvsb="P"; intsb="4 n c"; schsb="C4v^6"; sporder=8
1564 : case(105)
1565 28 : brvsb="P"; intsb="4_2 m c"; schsb="C4v^7"; sporder=8
1566 : case(106)
1567 28 : brvsb="P"; intsb="4_2 b c"; schsb="C4v^8"; sporder=8
1568 : case(107)
1569 20 : brvsb="I"; intsb="4 m m"; schsb="C4v^9"; sporder=16
1570 : case(108)
1571 20 : brvsb="I"; intsb="4 c m"; schsb="C4v^10"; sporder=16
1572 : case(109)
1573 20 : brvsb="I"; intsb="4_1 m d"; schsb="C4v^11"; sporder=16
1574 : case(110)
1575 20 : brvsb="I"; intsb="4_1 c d"; schsb="C4v^12"; sporder=16
1576 : case(111)
1577 28 : brvsb="P"; intsb="-4 2 m"; schsb="D2d^1"; sporder=8
1578 : case(112)
1579 28 : brvsb="P"; intsb="-4 2 c"; schsb="D2d^2"; sporder=8
1580 : case(113)
1581 28 : brvsb="P"; intsb="-4 2_1 m"; schsb="D2d^3"; sporder=8
1582 : case(114)
1583 28 : brvsb="P"; intsb="-4 2_1 c"; schsb="D2d^4"; sporder=8
1584 : case(115)
1585 28 : brvsb="P"; intsb="-4 m 2"; schsb="D2d^5"; sporder=8
1586 : case(116)
1587 28 : brvsb="P"; intsb="-4 c 2"; schsb="D2d^6"; sporder=8
1588 : case(117)
1589 28 : brvsb="P"; intsb="-4 b 2"; schsb="D2d^7"; sporder=8
1590 : case(118)
1591 28 : brvsb="P"; intsb="-4 n 2"; schsb="D2d^8"; sporder=8
1592 : case(119)
1593 20 : brvsb="I"; intsb="-4 m 2"; schsb="D2d^9"; sporder=16
1594 : case(120)
1595 20 : brvsb="I"; intsb="-4 c 2"; schsb="D2d^10"; sporder=16
1596 : case(121)
1597 29 : brvsb="I"; intsb="-4 2 m"; schsb="D2d^11"; sporder=16
1598 : case(122)
1599 20 : brvsb="I"; intsb="-4 2 d"; schsb="D2d^12"; sporder=16
1600 : case(123)
1601 1426 : brvsb="P"; intsb="4/m m m"; schsb="D4h^1"; sporder=16
1602 : case(124)
1603 44 : brvsb="P"; intsb="4/m c c"; schsb="D4h^2"; sporder=16
1604 : case(125)
1605 44 : brvsb="P"; intsb="4/n b m"; schsb="D4h^3"; sporder=16
1606 44 : if (spgorig==1)then
1607 44 : intsbl="4/n b m _1"
1608 0 : else if (spgorig==2)then
1609 0 : intsbl="4/n b m _2"
1610 : else
1611 0 : intsbl="intsbl to be determined"
1612 : end if
1613 : case(126)
1614 44 : brvsb="P"; intsb="4/n n c"; schsb="D4h^4"; sporder=16
1615 44 : if (spgorig==1)then
1616 44 : intsbl="4/n n c _1"
1617 0 : else if (spgorig==2)then
1618 0 : intsbl="4/n n c _2"
1619 : else
1620 0 : intsbl="intsbl to be determined"
1621 : end if
1622 : case(127)
1623 44 : brvsb="P"; intsb="4/m b m"; schsb="D4h^5"; sporder=16
1624 : case(128)
1625 44 : brvsb="P"; intsb="4/m n c"; schsb="D4h^6"; sporder=16
1626 : case(129)
1627 89 : brvsb="P"; intsb="4/n m m"; schsb="D4h^7"; sporder=16
1628 89 : if (spgorig==1)then
1629 89 : intsbl="4/n m m _1"
1630 0 : else if (spgorig==2)then
1631 0 : intsbl="4/n m m _2"
1632 : else
1633 0 : intsbl="intsbl to be determined"
1634 : end if
1635 : case(130)
1636 44 : brvsb="P"; intsb="4/n c c"; schsb="D4h^8"; sporder=16
1637 44 : if (spgorig==1)then
1638 44 : intsbl="4/n c c _1"
1639 0 : else if (spgorig==2) then
1640 0 : intsbl="4/n c c _2"
1641 : else
1642 0 : intsbl="intsbl to be determined"
1643 : end if
1644 : case(131)
1645 44 : brvsb="P"; intsb="4_2/m m c"; schsb="D4h^9"; sporder=16
1646 : case(132)
1647 44 : brvsb="P"; intsb="4_2/m c m"; schsb="D4h^10"; sporder=16
1648 : case(133)
1649 44 : brvsb="P"; intsb="4_2/n b c"; schsb="D4h^11"; sporder=16
1650 44 : if (spgorig==1)then
1651 44 : intsbl="4_2/n b c _1"
1652 0 : else if (spgorig==2)then
1653 0 : intsbl="4_2/n b c _2"
1654 : else
1655 0 : intsbl="intsbl to be determined"
1656 : end if
1657 : case(134)
1658 44 : brvsb="P"; intsb="4_2/n n m"; schsb="D4h^12"; sporder=16
1659 44 : if (spgorig==1)then
1660 44 : intsbl="4_2/n n m _1"
1661 0 : else if (spgorig==2)then
1662 0 : intsbl="4_2/n n m _2"
1663 : else
1664 0 : intsbl="intsbl to be determined"
1665 : end if
1666 : case(135)
1667 44 : brvsb="P"; intsb="4_2/m b c"; schsb="D4h^13"; sporder=16
1668 : case(136)
1669 144 : brvsb="P"; intsb="4_2/m n m"; schsb="D4h^14"; sporder=16
1670 : case(137)
1671 44 : brvsb="P"; intsb="4_2/n m c"; schsb="D4h^15"; sporder=16
1672 44 : if (spgorig==1)then
1673 44 : intsbl="4_2/n m c _1"
1674 0 : else if (spgorig==2)then
1675 0 : intsbl="4_2/n m c _2"
1676 : else
1677 0 : intsbl="intsbl to be determined"
1678 : end if
1679 : case(138)
1680 44 : brvsb="P"; intsb="4_2/n c m"; schsb="D4h^16"; sporder=16
1681 44 : if (spgorig==1)then
1682 44 : intsbl="4_2/n c m _1"
1683 0 : else if (spgorig==2)then
1684 0 : intsbl="4_2/n c m _2"
1685 : else
1686 0 : intsbl="intsbl to be determined"
1687 : end if
1688 : case(139)
1689 316 : brvsb="I"; intsb="4/m m m"; schsb="D4h^17"; sporder=32
1690 : case(140)
1691 36 : brvsb="I"; intsb="4/m c m"; schsb="D4h^18"; sporder=32
1692 : case(141)
1693 88 : brvsb="I"; intsb="4_1/a m d"; schsb="D4h^19"; sporder=32
1694 88 : if (spgorig==1)then
1695 88 : intsbl="4_1/a m d _1"
1696 0 : else if (spgorig==2)then
1697 0 : intsbl="4_1/a m d _2"
1698 : else
1699 0 : intsbl="intsbl to be determined"
1700 : end if
1701 : case(142)
1702 36 : brvsb="I"; intsb="4_1/a c d"; schsb="D4h^20"; sporder=32
1703 36 : if (spgorig==1)then
1704 36 : intsbl="4_1/a c d _1"
1705 0 : else if (spgorig==2)then
1706 0 : intsbl="4_1/a c d _2"
1707 : else
1708 0 : intsbl="intsbl to be determined"
1709 : end if
1710 : case(143)
1711 21 : brvsb="P"; intsb="3"; schsb="C3^1"; sporder=3
1712 : case(144)
1713 12 : brvsb="P"; intsb="3_1"; schsb="C3^2"; sporder=3
1714 : case(145)
1715 12 : brvsb="P"; intsb="3_2"; schsb="C3^3"; sporder=3
1716 : case(146)
1717 19 : brvsb="R"; intsb="3"; schsb="C3^4"
1718 19 : if (spgorig==1)then
1719 19 : intsbl="3 _H" ; sporder=9
1720 0 : else if (spgorig==2)then
1721 0 : intsbl="3 _R" ; sporder=3
1722 : else
1723 0 : intsbl="intsbl to be determined"
1724 : end if
1725 : case(147)
1726 33 : brvsb="P"; intsb="-3"; schsb="C3i^1"; sporder=6
1727 : case(148)
1728 42 : brvsb="R"; intsb="-3"; schsb="C3i^2"
1729 42 : if (spgorig==1) then
1730 42 : intsbl="-3 _H" ; sporder=9
1731 0 : else if (spgorig==2) then
1732 0 : intsbl="-3 _R" ; sporder=3
1733 : else
1734 0 : intsbl="intsbl to be determined"
1735 : end if
1736 : case(149)
1737 48 : brvsb="P"; intsb="3 1 2"; schsb="D3^1"; sporder=6
1738 : case(150)
1739 33 : brvsb="P"; intsb="3 2 1"; schsb="D3^2"; sporder=6
1740 : case(151)
1741 24 : brvsb="P"; intsb="3_1 1 2"; schsb="D3^3"; sporder=6
1742 : case(152)
1743 51 : brvsb="P"; intsb="3_1 2 1"; schsb="D3^4"; sporder=6
1744 : case(153)
1745 21 : brvsb="P"; intsb="3_2 1 2"; schsb="D3^5"; sporder=6
1746 : case(154)
1747 241 : brvsb="P"; intsb="3_2 2 1"; schsb="D3^6"; sporder=6
1748 : case(155)
1749 163 : brvsb="R"; intsb="3 2"; schsb="D3^7"
1750 163 : if (spgorig==1) then
1751 163 : intsbl="3 2 _H" ; sporder=18
1752 0 : else if (spgorig==2) then
1753 0 : intsbl="3 2 _R" ; sporder=6
1754 : else
1755 0 : intsbl="intsbl to be determined"
1756 : end if
1757 : case(156)
1758 52 : brvsb="P"; intsb="3 m 1"; schsb="C3v^1"; sporder=6
1759 : case(157)
1760 24 : brvsb="P"; intsb="3 1 m"; schsb="C3v^2"; sporder=6
1761 : case(158)
1762 24 : brvsb="P"; intsb="3 c 1"; schsb="C3v^3"; sporder=6
1763 : case(159)
1764 21 : brvsb="P"; intsb="3 1 c"; schsb="C3v^4"; sporder=6
1765 : case(160)
1766 391 : brvsb="R"; intsb="3 m"; schsb="C3v^5"
1767 391 : if (spgorig==1) then
1768 391 : intsbl="3 m _H" ; sporder=18
1769 0 : else if (spgorig==2) then
1770 0 : intsbl="3 m _R" ; sporder=6
1771 : else
1772 0 : intsbl="intsbl to be determined"
1773 : end if
1774 : case(161)
1775 45 : brvsb="R"; intsb="3 c"; schsb="C3v^6"
1776 45 : if (spgorig==1) then
1777 45 : intsbl="3 m _H" ; sporder=18
1778 0 : else if (spgorig==2)then
1779 0 : intsbl="3 m _R" ; sporder=6
1780 : else
1781 0 : intsbl="intsbl to be determined"
1782 : end if
1783 : case(162)
1784 54 : brvsb="P"; intsb="-3 1 m"; schsb="D3d^1"; sporder=12
1785 : case(163)
1786 45 : brvsb="P"; intsb="-3 1 c"; schsb="D3d^2"; sporder=12
1787 : case(164)
1788 106 : brvsb="P"; intsb="-3 m 1"; schsb="D3d^3"; sporder=12
1789 : case(165)
1790 39 : brvsb="P"; intsb="-3 c 1"; schsb="D3d^4"; sporder=12
1791 : case(166)
1792 1273 : brvsb="R"; intsb="-3 m"; schsb="D3d^5"
1793 1273 : if (spgorig==1) then
1794 1273 : intsbl="3 m _H"; sporder=18
1795 0 : else if (spgorig==2) then
1796 0 : intsbl="3 m _R"; sporder=6
1797 : else
1798 0 : intsbl="intsbl to be determined"
1799 : end if
1800 : case(167)
1801 59 : brvsb="R"; intsb="-3 c"; schsb="D3d^6"
1802 59 : if (spgorig==1) then
1803 59 : intsbl="-3 c _H"; sporder=36
1804 0 : else if (spgorig==2) then
1805 0 : intsbl="-3 c _R"; sporder=12
1806 : else
1807 0 : intsbl="intsbl to be determined"
1808 0 : sporder=-1
1809 : end if
1810 : case(168)
1811 15 : brvsb="P"; intsb="6"; schsb="C6^1"; sporder=6
1812 : case(169)
1813 15 : brvsb="P"; intsb="6_1"; schsb="C6^2"; sporder=6
1814 : case(170)
1815 15 : brvsb="P"; intsb="6_5"; schsb="C6^3"; sporder=6
1816 : case(171)
1817 15 : brvsb="P"; intsb="6_2"; schsb="C6^4"; sporder=6
1818 : case(172)
1819 15 : brvsb="P"; intsb="6_4"; schsb="C6^5"; sporder=6
1820 : case(173)
1821 15 : brvsb="P"; intsb="6_3"; schsb="C6^6"; sporder=6
1822 : case(174)
1823 15 : brvsb="P"; intsb="-6"; schsb="C3h^1"; sporder=6
1824 : case(175)
1825 23 : brvsb="P"; intsb="6/m"; schsb="C6h^1"; sporder=12
1826 : case(176)
1827 23 : brvsb="P"; intsb="6_3/m"; schsb="C6h^2"; sporder=12
1828 : case(177)
1829 23 : brvsb="P"; intsb="6 2 2"; schsb="D6^1"; sporder=12
1830 : case(178)
1831 26 : brvsb="P"; intsb="6_1 2 2"; schsb="D6^2"; sporder=12
1832 : case(179)
1833 23 : brvsb="P"; intsb="6_5 2 2"; schsb="D6^3"; sporder=12
1834 : case(180)
1835 26 : brvsb="P"; intsb="6_2 2 2"; schsb="D6^4"; sporder=12
1836 : case(181)
1837 28 : brvsb="P"; intsb="6_4 2 2"; schsb="D6^5"; sporder=12
1838 : case(182)
1839 23 : brvsb="P"; intsb="6_3 2 2"; schsb="D6^6"; sporder=12
1840 : case(183)
1841 23 : brvsb="P"; intsb="6 m m"; schsb="C6v^1"; sporder=12
1842 : case(184)
1843 23 : brvsb="P"; intsb="6 c c"; schsb="C6v^2"; sporder=12
1844 : case(185)
1845 23 : brvsb="P"; intsb="6_3 c m"; schsb="C6v^3"; sporder=12
1846 : case(186)
1847 235 : brvsb="P"; intsb="6_3 m c"; schsb="C6v^4"; sporder=12
1848 : case(187)
1849 142 : brvsb="P"; intsb="-6 m 2"; schsb="D3h^1"; sporder=12
1850 : case(188)
1851 23 : brvsb="P"; intsb="-6 c 2"; schsb="D3h^2"; sporder=12
1852 : case(189)
1853 23 : brvsb="P"; intsb="-6 2 m"; schsb="D3h^3"; sporder=12
1854 : case(190)
1855 23 : brvsb="P"; intsb="-6 2 c"; schsb="D3h^4"; sporder=12
1856 : case(191)
1857 118 : brvsb="P"; intsb="6/m m m"; schsb="D6h^1"; sporder=24
1858 : case(192)
1859 39 : brvsb="P"; intsb="6/m c c"; schsb="D6h^2"; sporder=24
1860 : case(193)
1861 39 : brvsb="P"; intsb="6_3/m c m"; schsb="D6h^3"; sporder=24
1862 : case(194)
1863 171 : brvsb="P"; intsb="6_3/m m c"; schsb="D6h^4"; sporder=24
1864 : case(195)
1865 8 : brvsb="P"; intsb="2 3"; schsb="T^1"; sporder=12
1866 : case(196)
1867 36 : brvsb="F"; intsb="2 3"; schsb="T^2"; sporder=48
1868 : case(197)
1869 4 : brvsb="I"; intsb="2 3"; schsb="T^3"; sporder=24
1870 : case(198)
1871 8 : brvsb="P"; intsb="2_1 3"; schsb="T^4"; sporder=12
1872 : case(199)
1873 4 : brvsb="I"; intsb="2_1 3"; schsb="T^5"; sporder=24
1874 : case(200)
1875 16 : brvsb="P"; intsb="m -3"; schsb="Th^1"; sporder=24
1876 : case(201)
1877 27 : brvsb="P"; intsb="n -3"; schsb="Th^2"; sporder=24
1878 27 : if (spgorig==1) then
1879 26 : intsbl="n -3 _1"
1880 1 : else if (spgorig==2)then
1881 1 : intsbl="n -3 _2"
1882 : else
1883 0 : intsbl="intsbl to be determined"
1884 : end if
1885 : case(202)
1886 12 : brvsb="F"; intsb="m -3"; schsb="Th^3"; sporder=96
1887 : case(203)
1888 12 : brvsb="F"; intsb="d -3"; schsb="Th^4"; sporder=96
1889 12 : if (spgorig==1) then
1890 12 : intsbl="d -3 _1"
1891 0 : else if (spgorig==2) then
1892 0 : intsbl="d -3 _2"
1893 : else
1894 0 : intsbl="intsbl to be determined"
1895 : end if
1896 : case(204)
1897 8 : brvsb="I"; intsb="m -3"; schsb="Th^5"; sporder=48
1898 : case(205)
1899 12 : brvsb="P"; intsb="a -3"; schsb="Th^6"; sporder=24
1900 : case(206)
1901 8 : brvsb="I"; intsb="a -3"; schsb="Th^7"; sporder=48
1902 : case(207)
1903 14 : brvsb="P"; intsb="4 3 2"; schsb="O^1"; sporder=24
1904 : case(208)
1905 12 : brvsb="P"; intsb="4_2 3 2"; schsb="O^2"; sporder=24
1906 : case(209)
1907 32 : brvsb="F"; intsb="4 3 2"; schsb="O^3"; sporder=96
1908 : case(210)
1909 42 : brvsb="F"; intsb="4_1 3 2"; schsb="O^4"; sporder=96
1910 : case(211)
1911 8 : brvsb="I"; intsb="4 3 2"; schsb="O^5"; sporder=48
1912 : case(212)
1913 12 : brvsb="P"; intsb="4_3 3 2"; schsb="O^6"; sporder=24
1914 : case(213)
1915 12 : brvsb="P"; intsb="4_1 3 2"; schsb="O^7"; sporder=24
1916 : case(214)
1917 8 : brvsb="I"; intsb="4_1 3 2"; schsb="O^8"; sporder=48
1918 : case(215)
1919 126 : brvsb="P"; intsb="-4 3 m"; schsb="Td^1"; sporder=24
1920 : case(216)
1921 2663 : brvsb="F"; intsb="-4 3 m"; schsb="Td^2"; sporder=96
1922 : case(217)
1923 8 : brvsb="I"; intsb="-4 3 m"; schsb="Td^3"; sporder=48
1924 : case(218)
1925 12 : brvsb="P"; intsb="-4 3 n"; schsb="Td^4"; sporder=24
1926 : case(219)
1927 12 : brvsb="F"; intsb="-4 3 c"; schsb="Td^5"; sporder=96
1928 : case(220)
1929 8 : brvsb="I"; intsb="-4 3 d"; schsb="Td^6"; sporder=48
1930 : case(221)
1931 2138 : brvsb="P"; intsb="m -3 m"; schsb="Oh^1"; sporder=48
1932 : case(222)
1933 20 : brvsb="P"; intsb="n -3 n"; schsb="Oh^2"; sporder=48
1934 20 : if (spgorig==1) then
1935 20 : intsbl="n -3 n _1"
1936 0 : else if (spgorig==2) then
1937 0 : intsbl="n -3 n _2"
1938 : else
1939 0 : intsbl="intsbl to be determined"
1940 : end if
1941 : case(223)
1942 20 : brvsb="P"; intsb="m -3 n"; schsb="Oh^3"; sporder=48
1943 : case(224)
1944 25 : brvsb="P"; intsb="n -3 m"; schsb="Oh^4"; sporder=48
1945 25 : if (spgorig==1) then
1946 25 : intsbl="n -3 m _1"
1947 0 : else if (spgorig==2)then
1948 0 : intsbl="n -3 m _2"
1949 : else
1950 0 : intsbl="intsbl to be determined"
1951 : end if
1952 : case(225)
1953 2617 : brvsb="F"; intsb="m -3 m"; schsb="Oh^5"; sporder=192
1954 : case(226)
1955 20 : brvsb="F"; intsb="m -3 c"; schsb="Oh^6"; sporder=192
1956 : case(227)
1957 5511 : brvsb="F"; intsb="d -3 m"; schsb="Oh^7"; sporder=192
1958 5511 : if (spgorig==1) then
1959 5511 : intsbl="d -3 m _1"
1960 0 : else if (spgorig==2) then
1961 0 : intsbl="d -3 m _2"
1962 : else
1963 0 : intsbl="intsbl to be determined"
1964 : end if
1965 : case(228)
1966 20 : brvsb="F"; intsb="d -3 c"; schsb="Oh^8"; sporder=192
1967 20 : if (spgorig==1) then
1968 20 : intsbl="d -3 c _1"
1969 0 : else if (spgorig==2) then
1970 0 : intsbl="d -3 c _2"
1971 : else
1972 0 : intsbl="intsbl to be determined"
1973 : end if
1974 : case(229)
1975 675 : brvsb="I"; intsb="m -3 m"; schsb="Oh^9"; sporder=96
1976 : case(230)
1977 32167 : brvsb="I"; intsb="a -3 d"; schsb="Oh^10"; sporder=96
1978 : end select
1979 :
1980 32167 : if(trim(intsbl)=="same")intsbl=intsb
1981 :
1982 : !Assignment of the point group number
1983 32167 : if(spgroup<=2)then ! Triclinic system
1984 4194 : select case(spgroup)
1985 : case (1)
1986 4194 : ptintsb="1"; ptschsb="C1"
1987 : case (2)
1988 4476 : ptintsb="-1"; ptschsb="Ci"
1989 : end select
1990 27691 : else if(spgroup<=15)then ! Monoclinic system
1991 109 : select case(spgroup)
1992 : case (3:5)
1993 109 : ptintsb="2"; ptschsb="C2"
1994 : case (6:9)
1995 750 : ptintsb="m"; ptschsb="Cs = C1h "
1996 : case (10:15)
1997 1322 : ptintsb="2/m"; ptschsb="C2h"
1998 : end select
1999 26369 : else if(spgroup<=74)then ! Orthorhombic system
2000 210 : select case(spgroup)
2001 : case (16:24)
2002 210 : ptintsb="2 2 2"; ptschsb="D2"
2003 : case (25:46)
2004 1198 : ptintsb="m m 2"; ptschsb="C2v"
2005 : case (47:74)
2006 3660 : ptintsb="m m m"; ptschsb="D2h"
2007 : end select
2008 22709 : else if(spgroup<=142)then ! Tetragonal system
2009 132 : select case(spgroup)
2010 : case (75:80)
2011 132 : ptintsb="4"; ptschsb="C4"
2012 : case (81,82)
2013 80 : ptintsb="-4"; ptschsb="S4"
2014 : case (83:88)
2015 187 : ptintsb="4/m"; ptschsb="C4h"
2016 : case (89:98)
2017 314 : ptintsb="4 2 2"; ptschsb="D4"
2018 : case (99:110)
2019 755 : ptintsb="4 m m"; ptschsb="C4v"
2020 : case (111:114,121,122)
2021 161 : ptintsb="-4 2 m"; ptschsb="D2d^1"
2022 : case (115:120)
2023 152 : ptintsb="-4 m 2"; ptschsb="D2h^2"
2024 : case (123:142)
2025 2707 : ptintsb="4/m m m"
2026 4488 : ptschsb="D4h"
2027 : end select
2028 18221 : else if(spgroup<=167)then ! Trigonal system
2029 64 : select case(spgroup)
2030 : case (143:146)
2031 64 : ptintsb="3"; ptschsb="C3"
2032 : case (147,148)
2033 75 : ptintsb="-3"; ptschsb="C3i"
2034 : case (149,151,153)
2035 93 : ptintsb="3 1 2"; ptschsb="D3^1"
2036 : case (150,152,154,155)
2037 488 : ptintsb="3 2 1"; ptschsb="D3^2"
2038 : case (156,158,160,161)
2039 512 : ptintsb="3 m 1"; ptschsb="C3v^1"
2040 : case (157,159)
2041 45 : ptintsb="3 1 m"; ptschsb="C3v^2"
2042 : case (162,163)
2043 99 : ptintsb="-3 1 m"; ptschsb="D3d^1"
2044 : case (164:167)
2045 2853 : ptintsb="-3 m 1"; ptschsb="D3d^2"
2046 : end select
2047 15368 : else if(spgroup<=194)then ! Hexagonal system
2048 90 : select case(spgroup)
2049 : case (168:173)
2050 90 : ptintsb="6"; ptschsb="C6"
2051 : case (174)
2052 15 : ptintsb="-6"; ptschsb="C3h"
2053 : case (175,176)
2054 46 : ptintsb="6/m"; ptschsb="C6h"
2055 : case (177:182)
2056 149 : ptintsb="6 2 2"; ptschsb="D6"
2057 : case (183:186)
2058 304 : ptintsb="6 m m"; ptschsb="C6v"
2059 : case (187,188)
2060 165 : ptintsb="-6 m 2"; ptschsb="D3h^1"
2061 : case (189,190)
2062 46 : ptintsb="-6 2 m"; ptschsb="D3h^2"
2063 : case (191:194)
2064 1182 : ptintsb="6/m m m"; ptschsb="D6h"
2065 : end select
2066 : else ! Cubic system
2067 60 : select case(spgroup)
2068 : case (195:199)
2069 60 : ptintsb="2 3"; ptschsb="T"
2070 : case (200:206)
2071 95 : ptintsb="m 3"; ptschsb="Th"
2072 : case (207:214)
2073 140 : ptintsb="4 3 2"; ptschsb="O"
2074 : case (215:220)
2075 2829 : ptintsb="4 3 m"; ptschsb="Td"
2076 : case (221:230)
2077 14186 : ptintsb="m -3 m"; ptschsb="Oh"
2078 : end select
2079 : end if
2080 :
2081 32167 : end subroutine spgdata
2082 : !!***
2083 :
2084 :
2085 : !!****f* m_spgdata/ptgmadata
2086 : !! NAME
2087 : !! ptgmadata
2088 : !!
2089 : !! FUNCTION
2090 : !! Return magnetic point group symbol from the magnetic point group number
2091 : !! The symbols and numbers are taken from The Internationl Tables for Crystallography
2092 : !! Volume A, 1983 Ed. Theo Hahn, D. Reidel Publishing Company and
2093 : !! The mathematical theory of symmetry in solids, Representation theory for point
2094 : !! groups and space groups, 1972, C.J. Bradley and A.P.
2095 : !! Cracknell, Clarendon Press, Oxford.
2096 : !!
2097 : !! INPUTS
2098 : !! ptgroupma = space group number
2099 : !!
2100 : !! OUTPUT
2101 : !! ptgrpmasb= symbol
2102 : !!
2103 : !! SOURCE
2104 :
2105 1663 : subroutine ptgmadata(ptgroupma,ptgrpmasb)
2106 :
2107 : !Arguments ------------------------------------
2108 : !scalars
2109 : integer,intent(in) :: ptgroupma
2110 : character(len=10),intent(out) :: ptgrpmasb
2111 :
2112 : ! *************************************************************************
2113 :
2114 1669 : select case (ptgroupma)
2115 : case(1)
2116 6 : ptgrpmasb="-1'"
2117 : case(2)
2118 28 : ptgrpmasb="2'"
2119 : case(3)
2120 44 : ptgrpmasb="m'"
2121 : case(4)
2122 16 : ptgrpmasb="2/m'"
2123 : case(5)
2124 12 : ptgrpmasb="2'/m"
2125 : case(6)
2126 27 : ptgrpmasb="2'/m'"
2127 : case(7)
2128 32 : ptgrpmasb="2'2'2"
2129 : case(8)
2130 44 : ptgrpmasb="m'm'2"
2131 : case(9)
2132 74 : ptgrpmasb="m'm2'"
2133 : case(10)
2134 56 : ptgrpmasb="m'm'm'"
2135 : case(11)
2136 125 : ptgrpmasb="mmm'"
2137 : case(12)
2138 120 : ptgrpmasb="m'm'm"
2139 : case(13)
2140 12 : ptgrpmasb="4'"
2141 : case(14)
2142 4 : ptgrpmasb="-4'"
2143 : case(15)
2144 50 : ptgrpmasb="42'2'"
2145 : case(16)
2146 40 : ptgrpmasb="4'22'"
2147 : case(17)
2148 12 : ptgrpmasb="4/m'"
2149 : case(18)
2150 12 : ptgrpmasb="4'/m'"
2151 : case(19)
2152 12 : ptgrpmasb="4'/m"
2153 : case(20)
2154 24 : ptgrpmasb="4m'm'"
2155 : case(21)
2156 48 : ptgrpmasb="4'mm'"
2157 : case(22)
2158 29 : ptgrpmasb="-42'm'"
2159 : case(23)
2160 24 : ptgrpmasb="-4'2m'"
2161 : case(24)
2162 24 : ptgrpmasb="-4'm2'"
2163 : case(25)
2164 41 : ptgrpmasb="4/m'm'm'"
2165 : case(26)
2166 93 : ptgrpmasb="4/m'mm"
2167 : case(27)
2168 83 : ptgrpmasb="4'/mmm'"
2169 : case(28)
2170 85 : ptgrpmasb="4'/m'm'm"
2171 : case(29)
2172 75 : ptgrpmasb="4/mm'm'"
2173 : case(30)
2174 76 : ptgrpmasb="32'"
2175 : case(31)
2176 12 : ptgrpmasb="3m'"
2177 : case(32)
2178 2 : ptgrpmasb="-6'"
2179 : case(33)
2180 8 : ptgrpmasb="-6m'2'"
2181 : case(34)
2182 8 : ptgrpmasb="-6'm2'"
2183 : case(35)
2184 8 : ptgrpmasb="-6'm'2"
2185 : case(36)
2186 12 : ptgrpmasb="6'"
2187 : case(37)
2188 8 : ptgrpmasb="-3'"
2189 : case(38)
2190 12 : ptgrpmasb="-3m'"
2191 : case(39)
2192 12 : ptgrpmasb="-3'm"
2193 : case(40)
2194 23 : ptgrpmasb="-3'm'"
2195 : case(41)
2196 12 : ptgrpmasb="62'2'"
2197 : case(42)
2198 24 : ptgrpmasb="6'2'2"
2199 : case(43)
2200 4 : ptgrpmasb="6/m'"
2201 : case(44)
2202 4 : ptgrpmasb="6'/m'"
2203 : case(45)
2204 4 : ptgrpmasb="6'/m"
2205 : case(46)
2206 8 : ptgrpmasb="6m'm'"
2207 : case(47)
2208 16 : ptgrpmasb="6'm'm"
2209 : case(48)
2210 16 : ptgrpmasb="6'/mmm'"
2211 : case(49)
2212 16 : ptgrpmasb="6'/m'm'm"
2213 : case(50)
2214 8 : ptgrpmasb="6/m'm'm'"
2215 : case(51)
2216 8 : ptgrpmasb="6/m'mm"
2217 : case(52)
2218 8 : ptgrpmasb="6/mm'm'"
2219 : case(53)
2220 14 : ptgrpmasb="m'3"
2221 : case(54)
2222 12 : ptgrpmasb="-4'3m'"
2223 : case(55)
2224 16 : ptgrpmasb="4'32'"
2225 : case(56)
2226 20 : ptgrpmasb="m'3m'"
2227 : case(57)
2228 20 : ptgrpmasb="m'3m"
2229 : case(58)
2230 1663 : ptgrpmasb="m3m'"
2231 : end select
2232 :
2233 1663 : end subroutine ptgmadata
2234 : !!***
2235 :
2236 : !!****f* m_spgdata/getptgroupma
2237 : !! NAME
2238 : !! getptgroupma
2239 : !!
2240 : !! FUNCTION
2241 : !! Return magnetic point group number from the full point group number
2242 : !! and the point group number of the non-magnetic symmetry operations.
2243 : !! The (normal) point group numbers are taken from
2244 : !! The International Tables for Crystallography
2245 : !! Volume A, 1983 Ed. Theo Hahn, D. Reidel Publishing Company
2246 : !! The magnetic point group number are taken from
2247 : !! The mathematical theory of symmetry in solids, Representation theory for point
2248 : !! groups and space groups, 1972, C.J. Bradley and A.P.
2249 : !! Cracknell, Clarendon Press, Oxford.
2250 : !! In particular, see table 7.1 of the latter reference
2251 : !!
2252 : !! INPUTS
2253 : !! ptgroup = character(len=5) point group of all the symmetry operation
2254 : !! ptgroupha = character(len=5) point group of the non-magnetic symmetry operation (halved point group)
2255 : !!
2256 : !! OUTPUT
2257 : !! ptgroupma = magnetic point group number
2258 : !!
2259 : !! SOURCE
2260 :
2261 898 : subroutine getptgroupma(ptgroup,ptgroupha,ptgroupma)
2262 :
2263 : !Arguments ------------------------------------
2264 : !scalars
2265 : integer,intent(out) :: ptgroupma
2266 : character(len=5),intent(in) :: ptgroup,ptgroupha
2267 :
2268 : ! *************************************************************************
2269 :
2270 : !DEBUG
2271 : !write(std_out,*)' getptgroupma : enter '
2272 : !write(std_out,*)' ptgroup="',ptgroup,'"'
2273 : !write(std_out,*)' ptgroupha="',ptgroupha,'"'
2274 : !ENDDEBUG
2275 :
2276 898 : ptgroupma=0
2277 4 : select case (ptgroup)
2278 : case(" -1")
2279 4 : ptgroupma=1
2280 : case(" 2")
2281 18 : ptgroupma=2
2282 : case(" -2")
2283 28 : ptgroupma=3
2284 : case(" 2/m")
2285 34 : if(ptgroupha==" 2")ptgroupma=4
2286 34 : if(ptgroupha==" -2")ptgroupma=5
2287 34 : if(ptgroupha==" -1")ptgroupma=6
2288 : case(" 222")
2289 17 : ptgroupma=7
2290 : case(" mm2")
2291 60 : if(ptgroupha==" 2")ptgroupma=8
2292 60 : if(ptgroupha==" -2")ptgroupma=9
2293 : case(" mmm")
2294 153 : if(ptgroupha==" 222")ptgroupma=10
2295 153 : if(ptgroupha==" mm2")ptgroupma=11
2296 153 : if(ptgroupha==" 2/m")ptgroupma=12
2297 : case(" 4")
2298 6 : ptgroupma=13
2299 : case(" -4")
2300 2 : ptgroupma=14
2301 : case(" 422")
2302 50 : if(ptgroupha==" 4")ptgroupma=15
2303 50 : if(ptgroupha==" 222")ptgroupma=16
2304 : case(" 4/m")
2305 18 : if(ptgroupha==" 4")ptgroupma=17
2306 18 : if(ptgroupha==" -4")ptgroupma=18
2307 18 : if(ptgroupha==" 2/m")ptgroupma=19
2308 : case(" 4mm")
2309 36 : if(ptgroupha==" 4")ptgroupma=20
2310 36 : if(ptgroupha==" mm2")ptgroupma=21
2311 : case(" -42m")
2312 40 : if(ptgroupha==" -4")ptgroupma=22
2313 40 : if(ptgroupha==" 222")ptgroupma=23
2314 40 : if(ptgroupha==" mm2")ptgroupma=24
2315 : case("4/mmm")
2316 212 : if(ptgroupha==" 422")ptgroupma=25
2317 212 : if(ptgroupha==" 4mm")ptgroupma=26
2318 212 : if(ptgroupha==" mmm")ptgroupma=27
2319 212 : if(ptgroupha==" -42m")ptgroupma=28
2320 212 : if(ptgroupha==" 4/m")ptgroupma=29
2321 : case(" 32")
2322 49 : ptgroupma=30
2323 : case(" 3m")
2324 6 : ptgroupma=31
2325 : case(" -6")
2326 1 : ptgroupma=32
2327 : case(" -62m")
2328 12 : if(ptgroupha==" -6")ptgroupma=33
2329 12 : if(ptgroupha==" 3m")ptgroupma=34
2330 12 : if(ptgroupha==" 32")ptgroupma=35
2331 : case(" 6")
2332 6 : ptgroupma=36
2333 : case(" -3")
2334 5 : ptgroupma=37
2335 : case(" -3m")
2336 26 : if(ptgroupha==" -3")ptgroupma=38
2337 26 : if(ptgroupha==" 3m")ptgroupma=39
2338 26 : if(ptgroupha==" 32")ptgroupma=40
2339 : case(" 622")
2340 18 : if(ptgroupha==" 6")ptgroupma=41
2341 18 : if(ptgroupha==" 32")ptgroupma=42
2342 : case(" 6/m")
2343 6 : if(ptgroupha==" 6")ptgroupma=43
2344 6 : if(ptgroupha==" -3")ptgroupma=44
2345 6 : if(ptgroupha==" -6")ptgroupma=45
2346 : case(" 6mm")
2347 12 : if(ptgroupha==" 6")ptgroupma=46
2348 12 : if(ptgroupha==" 3m")ptgroupma=47
2349 : case("6/mmm")
2350 28 : if(ptgroupha==" -62m")ptgroupma=48
2351 28 : if(ptgroupha==" -3m")ptgroupma=49
2352 28 : if(ptgroupha==" 622")ptgroupma=50
2353 28 : if(ptgroupha==" 6mm")ptgroupma=51
2354 28 : if(ptgroupha==" 6/m")ptgroupma=52
2355 : case(" m-3")
2356 7 : ptgroupma=53
2357 : case(" -43m")
2358 6 : ptgroupma=54
2359 : case(" 432")
2360 8 : ptgroupma=55
2361 : case(" m-3m")
2362 30 : if(ptgroupha==" 432")ptgroupma=56
2363 30 : if(ptgroupha==" -43m")ptgroupma=57
2364 928 : if(ptgroupha==" m-3")ptgroupma=58
2365 : end select
2366 :
2367 : !DEBUG
2368 : !write(std_out,*)' getptgroupma : exit '
2369 : !write(std_out,*)' ptgroupma="',ptgroupma,'"'
2370 : !ENDDEBUG
2371 :
2372 898 : end subroutine getptgroupma
2373 : !!***
2374 :
2375 : !!****f* m_spgdata/symptgroup
2376 : !! NAME
2377 : !! symptgroup
2378 : !!
2379 : !! FUNCTION
2380 : !! Derive the name of the point group (+holohedry), from symrel.
2381 : !! Warning: might have to change the holohedry hR to hP, if hexagonal axes
2382 : !!
2383 : !! INPUTS
2384 : !! nsym=actual number of symmetries
2385 : !! symrel(3,3,nsym)=nsym symmetry operations in real space in terms of primitive translations
2386 : !!
2387 : !! OUTPUT
2388 : !! iholohedry=holohedry number
2389 : !! ptgroup=symmetry point group
2390 : !!
2391 : !! SOURCE
2392 :
2393 11936 : subroutine symptgroup(iholohedry, nsym, ptgroup, symrel)
2394 :
2395 : !Arguments ------------------------------------
2396 : !scalars
2397 : integer,intent(in) :: nsym
2398 : integer,intent(out) :: iholohedry
2399 : character(len=5),intent(out) :: ptgroup
2400 : !arrays
2401 : integer,intent(in) :: symrel(3,3,nsym)
2402 :
2403 : !Local variables-------------------------------
2404 : !scalars
2405 : integer :: inversion,iorder,isym
2406 : character(len=500) :: message
2407 : !arrays
2408 : integer :: identity(3,3),matrix(3,3),n_axes(-6:6),trial(3,3)
2409 11936 : integer,allocatable :: determinant(:),order(:),root_invers(:)
2410 11936 : character(len=2),allocatable :: ptsym(:)
2411 :
2412 : !**************************************************************************
2413 :
2414 : !DEBUG
2415 : !write(std_out,*)' symptgroup : enter'
2416 : !do isym=1,nsym
2417 : ! write(std_out,'(i3,2x,9i3)' )isym,symrel(:,:,isym)
2418 : !end do
2419 : !ENDDEBUG
2420 :
2421 11936 : identity(:,:)=0
2422 11936 : identity(1,1)=1 ; identity(2,2)=1 ; identity(3,3)=1
2423 11936 : n_axes(:)=0
2424 :
2425 35808 : ABI_MALLOC(determinant,(nsym))
2426 23872 : ABI_MALLOC(order,(nsym))
2427 23872 : ABI_MALLOC(ptsym,(nsym))
2428 23872 : ABI_MALLOC(root_invers,(nsym))
2429 :
2430 : !Get the determinant
2431 11936 : call symdet(determinant,nsym,symrel)
2432 :
2433 : !Get the order of each the symmetry operation, as well as the maximal order
2434 : !Also, examine whether each symmetry operation is the inversion, or a root
2435 : !of the inversion (like -3)
2436 : !Finally, decide which kind of point symmetry operation it is
2437 298545 : do isym=1,nsym
2438 :
2439 286609 : trial(:,:)=identity(:,:)
2440 3725917 : matrix(:,:)=symrel(:,:,isym)
2441 286609 : order(isym)=0
2442 286609 : root_invers(isym)=0
2443 892854 : do iorder=1,6
2444 35714160 : trial=matmul(matrix,trial)
2445 11607102 : if(sum((trial-identity)**2)==0)then
2446 286609 : order(isym)=iorder
2447 286609 : exit
2448 : end if
2449 7881185 : if(sum((trial+identity)**2)==0)then
2450 44390 : root_invers(isym)=iorder
2451 44390 : if(iorder==1)inversion=isym
2452 : end if
2453 : end do
2454 286609 : if(order(isym)==0)then
2455 0 : write(message, '(a,i0,a)' )' The symmetry operation number',isym,' is not a root of unity'
2456 0 : ABI_BUG(message)
2457 : end if
2458 :
2459 : ! determinant, order and root_invers are enough to determine the
2460 : ! kind of symmetry operation
2461 286609 : ptsym(isym)='no'
2462 11936 : select case(order(isym))
2463 : case(1)
2464 11936 : ptsym(isym)=' 1' ; n_axes(1)=n_axes(1)+1
2465 : case(2)
2466 123249 : if(determinant(isym)== 1)then
2467 56264 : ptsym(isym)=' 2' ; n_axes(2)=n_axes(2)+1
2468 66985 : else if(determinant(isym)==-1 .and. root_invers(isym)==1)then
2469 7156 : ptsym(isym)='-1' ; n_axes(-1)=n_axes(-1)+1
2470 59829 : else if(determinant(isym)==-1 .and. root_invers(isym)==0)then
2471 59829 : ptsym(isym)='-2' ; n_axes(-2)=n_axes(-2)+1
2472 : end if
2473 : case(3)
2474 47904 : ptsym(isym)=' 3' ; n_axes(3)=n_axes(3)+1
2475 : case(4)
2476 65206 : if(determinant(isym)== 1)then
2477 29912 : ptsym(isym)=' 4' ; n_axes(4)=n_axes(4)+1
2478 35294 : else if(determinant(isym)==-1)then
2479 35294 : ptsym(isym)='-4' ; n_axes(-4)=n_axes(-4)+1
2480 : end if
2481 : case(6)
2482 286609 : if(determinant(isym)== 1)then
2483 628 : ptsym(isym)=' 6' ; n_axes(6)=n_axes(6)+1
2484 37686 : else if(determinant(isym)==-1 .and. root_invers(isym)==3)then
2485 37234 : ptsym(isym)='-3' ; n_axes(-3)=n_axes(-3)+1
2486 452 : else if(determinant(isym)==-1 .and. root_invers(isym)==0)then
2487 452 : ptsym(isym)='-6' ; n_axes(-6)=n_axes(-6)+1
2488 : end if
2489 : end select
2490 :
2491 298545 : if(ptsym(isym)=='no')then
2492 : write(message,'(a,i4,a,a,a,i4,a,a,i4,a,a,i4)' )&
2493 0 : 'The symmetry operation number',isym,' could not be identified',ch10,&
2494 0 : 'order(isym) =',order(isym),ch10,&
2495 0 : 'determinant(isym)=',determinant(isym),ch10,&
2496 0 : 'root_invers(isym)=',root_invers(isym)
2497 0 : ABI_BUG(message)
2498 : end if
2499 :
2500 : end do
2501 :
2502 11936 : iholohedry=0
2503 167104 : if (sum((n_axes-(/0,0,0,0,0,0, 0 ,1,0,0,0,0,0/))**2)==0)then
2504 1333 : ptgroup=' 1' ; iholohedry=1
2505 148442 : else if(sum((n_axes-(/0,0,0,0,0,1, 0 ,1,0,0,0,0,0/))**2)==0)then
2506 133 : ptgroup=' -1' ; iholohedry=1
2507 :
2508 146580 : else if(sum((n_axes-(/0,0,0,0,0,0, 0 ,1,1,0,0,0,0/))**2)==0)then
2509 85 : ptgroup=' 2' ; iholohedry=2
2510 145390 : else if(sum((n_axes-(/0,0,0,0,1,0, 0 ,1,0,0,0,0,0/))**2)==0)then
2511 362 : ptgroup=' -2' ; iholohedry=2
2512 140322 : else if(sum((n_axes-(/0,0,0,0,1,1, 0 ,1,1,0,0,0,0/))**2)==0)then
2513 206 : ptgroup=' 2/m' ; iholohedry=2
2514 :
2515 137438 : else if(sum((n_axes-(/0,0,0,0,0,0, 0 ,1,3,0,0,0,0/))**2)==0)then
2516 89 : ptgroup=' 222' ; iholohedry=3
2517 136192 : else if(sum((n_axes-(/0,0,0,0,2,0, 0 ,1,1,0,0,0,0/))**2)==0)then
2518 369 : ptgroup=' mm2' ; iholohedry=3
2519 131026 : else if(sum((n_axes-(/0,0,0,0,3,1, 0 ,1,3,0,0,0,0/))**2)==0)then
2520 592 : ptgroup=' mmm' ; iholohedry=3
2521 :
2522 122738 : else if(sum((n_axes-(/0,0,0,0,0,0, 0 ,1,1,0,2,0,0/))**2)==0)then
2523 71 : ptgroup=' 4' ; iholohedry=4
2524 121744 : else if(sum((n_axes-(/0,0,2,0,0,0, 0 ,1,1,0,0,0,0/))**2)==0)then
2525 48 : ptgroup=' -4' ; iholohedry=4
2526 121072 : else if(sum((n_axes-(/0,0,2,0,1,1, 0 ,1,1,0,2,0,0/))**2)==0)then
2527 89 : ptgroup=' 4/m' ; iholohedry=4
2528 119826 : else if(sum((n_axes-(/0,0,0,0,0,0, 0 ,1,5,0,2,0,0/))**2)==0)then
2529 81 : ptgroup=' 422' ; iholohedry=4
2530 118692 : else if(sum((n_axes-(/0,0,0,0,4,0, 0 ,1,1,0,2,0,0/))**2)==0)then
2531 271 : ptgroup=' 4mm' ; iholohedry=4
2532 114898 : else if(sum((n_axes-(/0,0,2,0,2,0, 0 ,1,3,0,0,0,0/))**2)==0)then
2533 96 : ptgroup=' -42m' ; iholohedry=4
2534 113554 : else if(sum((n_axes-(/0,0,2,0,5,1, 0 ,1,5,0,2,0,0/))**2)==0)then
2535 953 : ptgroup='4/mmm' ; iholohedry=4
2536 :
2537 100212 : else if(sum((n_axes-(/0,0,0,0,0,0, 0 ,1,0,2,0,0,0/))**2)==0)then
2538 84 : ptgroup=' 3' ; iholohedry=5
2539 99036 : else if(sum((n_axes-(/0,0,0,2,0,1, 0 ,1,0,2,0,0,0/))**2)==0)then
2540 32 : ptgroup=' -3' ; iholohedry=5
2541 98588 : else if(sum((n_axes-(/0,0,0,0,0,0, 0 ,1,3,2,0,0,0/))**2)==0)then
2542 240 : ptgroup=' 32' ; iholohedry=5
2543 95228 : else if(sum((n_axes-(/0,0,0,0,3,0, 0 ,1,0,2,0,0,0/))**2)==0)then
2544 269 : ptgroup=' 3m' ; iholohedry=5
2545 91462 : else if(sum((n_axes-(/0,0,0,2,3,1, 0 ,1,3,2,0,0,0/))**2)==0)then
2546 534 : ptgroup=' -3m' ; iholohedry=5
2547 :
2548 83986 : else if(sum((n_axes-(/0,0,0,0,0,0, 0 ,1,1,2,0,0,2/))**2)==0)then
2549 30 : ptgroup=' 6' ; iholohedry=6
2550 83566 : else if(sum((n_axes-(/2,0,0,0,1,0, 0 ,1,0,2,0,0,0/))**2)==0)then
2551 9 : ptgroup=' -6' ; iholohedry=6
2552 83440 : else if(sum((n_axes-(/2,0,0,2,1,1, 0 ,1,1,2,0,0,2/))**2)==0)then
2553 14 : ptgroup=' 6/m' ; iholohedry=6
2554 83244 : else if(sum((n_axes-(/0,0,0,0,0,0, 0 ,1,7,2,0,0,2/))**2)==0)then
2555 38 : ptgroup=' 622' ; iholohedry=6
2556 82712 : else if(sum((n_axes-(/0,0,0,0,6,0, 0 ,1,1,2,0,0,2/))**2)==0)then
2557 107 : ptgroup=' 6mm' ; iholohedry=6
2558 81214 : else if(sum((n_axes-(/2,0,0,0,4,0, 0 ,1,3,2,0,0,0/))**2)==0)then
2559 78 : ptgroup=' -62m' ; iholohedry=6
2560 80122 : else if(sum((n_axes-(/2,0,0,2,7,1, 0 ,1,7,2,0,0,2/))**2)==0)then
2561 125 : ptgroup='6/mmm' ; iholohedry=6
2562 :
2563 78372 : else if(sum((n_axes-(/0,0,0,0,0,0, 0 ,1,3,8,0,0,0/))**2)==0)then
2564 36 : ptgroup=' 23' ; iholohedry=7
2565 77868 : else if(sum((n_axes-(/0,0,0,8,3,1, 0 ,1,3,8,0,0,0/))**2)==0)then
2566 28 : ptgroup=' m-3' ; iholohedry=7
2567 77476 : else if(sum((n_axes-(/0,0,0,0,0,0, 0 ,1,9,8,6,0,0/))**2)==0)then
2568 47 : ptgroup=' 432' ; iholohedry=7
2569 76818 : else if(sum((n_axes-(/0,0,6,0,6,0, 0 ,1,3,8,0,0,0/))**2)==0)then
2570 1037 : ptgroup=' -43m' ; iholohedry=7
2571 62300 : else if(sum((n_axes-(/0,0,6,8,9,1, 0 ,1,9,8,6,0,0/))**2)==0)then
2572 4450 : ptgroup=' m-3m' ; iholohedry=7
2573 :
2574 : end if
2575 :
2576 11936 : if(iholohedry==0)then
2577 0 : ABI_ERROR_CLASS('Could not find the point group', "TolSymError")
2578 : end if
2579 :
2580 : !DEBUG
2581 : !do isym=1,nsym
2582 : !write(std_out,'(a,3i5)' )' symptgroup : isym,determinant,order=',isym,determinant(isym),order(isym)
2583 : !end do
2584 :
2585 : !write(std_out,'(a,13i3)' )' symptgroup : n_axes(-6:6)=',n_axes(-6:6)
2586 : !write(std_out,*)' iholohedry, ptgroup=',iholohedry,',',ptgroup
2587 : !ENDDEBUG
2588 :
2589 11936 : ABI_FREE(determinant)
2590 11936 : ABI_FREE(order)
2591 11936 : ABI_FREE(ptsym)
2592 11936 : ABI_FREE(root_invers)
2593 :
2594 11936 : end subroutine symptgroup
2595 : !!***
2596 :
2597 : end module m_spgdata
2598 : !!***
|