TABLE OF CONTENTS


ABINIT/m_spgdata [ Modules ]

[ Top ] [ Modules ]

NAME

  m_spgdata

FUNCTION

COPYRIGHT

  Copyright (C) 2000-2022 ABINIT group (RC, XG)
  This file is distributed under the terms of the
  GNU General Public License, see ~abinit/COPYING
  or http://www.gnu.org/copyleft/gpl.txt .

SOURCE

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

m_spgdata/getptgroupma [ Functions ]

[ Top ] [ m_spgdata ] [ Functions ]

NAME

 getptgroupma

FUNCTION

 Return magnetic point group number from the full point group number
 and the point group number of the non-magnetic symmetry operations.
 The (normal) point group numbers are taken from
 The International Tables for Crystallography
 Volume A, 1983 Ed. Theo Hahn, D. Reidel Publishing Company
 The magnetic point group number are taken from
 The mathematical theory of symmetry in solids, Representation theory for point
 groups and space groups, 1972, C.J. Bradley and A.P.
 Cracknell, Clarendon Press, Oxford.
 In particular, see table 7.1 of the latter reference

INPUTS

 ptgroup = character(len=5) point group of all the symmetry operation
 ptgroupha = character(len=5) point group of the non-magnetic symmetry operation (halved point group)

OUTPUT

 ptgroupma = magnetic point group number

SOURCE

2275 subroutine getptgroupma(ptgroup,ptgroupha,ptgroupma)
2276 
2277 !Arguments ------------------------------------
2278 !scalars
2279  integer,intent(out) :: ptgroupma
2280  character(len=5),intent(in) :: ptgroup,ptgroupha
2281 
2282 ! *************************************************************************
2283 
2284 !DEBUG
2285 !write(std_out,*)' getptgroupma : enter '
2286 !write(std_out,*)' ptgroup="',ptgroup,'"'
2287 !write(std_out,*)' ptgroupha="',ptgroupha,'"'
2288 !ENDDEBUG
2289 
2290  ptgroupma=0
2291  select case (ptgroup)
2292  case("   -1")
2293    ptgroupma=1
2294  case("    2")
2295    ptgroupma=2
2296  case("   -2")
2297    ptgroupma=3
2298  case("  2/m")
2299    if(ptgroupha=="    2")ptgroupma=4
2300    if(ptgroupha=="   -2")ptgroupma=5
2301    if(ptgroupha=="   -1")ptgroupma=6
2302  case("  222")
2303    ptgroupma=7
2304  case("  mm2")
2305    if(ptgroupha=="    2")ptgroupma=8
2306    if(ptgroupha=="   -2")ptgroupma=9
2307  case("  mmm")
2308    if(ptgroupha=="  222")ptgroupma=10
2309    if(ptgroupha=="  mm2")ptgroupma=11
2310    if(ptgroupha=="  2/m")ptgroupma=12
2311  case("    4")
2312    ptgroupma=13
2313  case("   -4")
2314    ptgroupma=14
2315  case("  422")
2316    if(ptgroupha=="    4")ptgroupma=15
2317    if(ptgroupha=="  222")ptgroupma=16
2318  case("  4/m")
2319    if(ptgroupha=="    4")ptgroupma=17
2320    if(ptgroupha=="   -4")ptgroupma=18
2321    if(ptgroupha=="  2/m")ptgroupma=19
2322  case("  4mm")
2323    if(ptgroupha=="    4")ptgroupma=20
2324    if(ptgroupha=="  mm2")ptgroupma=21
2325  case(" -42m")
2326    if(ptgroupha=="   -4")ptgroupma=22
2327    if(ptgroupha=="  222")ptgroupma=23
2328    if(ptgroupha=="  mm2")ptgroupma=24
2329  case("4/mmm")
2330    if(ptgroupha=="  422")ptgroupma=25
2331    if(ptgroupha=="  4mm")ptgroupma=26
2332    if(ptgroupha=="  mmm")ptgroupma=27
2333    if(ptgroupha==" -42m")ptgroupma=28
2334    if(ptgroupha=="  4/m")ptgroupma=29
2335  case("   32")
2336    ptgroupma=30
2337  case("   3m")
2338    ptgroupma=31
2339  case("   -6")
2340    ptgroupma=32
2341  case(" -62m")
2342    if(ptgroupha=="   -6")ptgroupma=33
2343    if(ptgroupha=="   3m")ptgroupma=34
2344    if(ptgroupha=="   32")ptgroupma=35
2345  case("    6")
2346    ptgroupma=36
2347  case("   -3")
2348    ptgroupma=37
2349  case("  -3m")
2350    if(ptgroupha=="   -3")ptgroupma=38
2351    if(ptgroupha=="   3m")ptgroupma=39
2352    if(ptgroupha=="   32")ptgroupma=40
2353  case("  622")
2354    if(ptgroupha=="    6")ptgroupma=41
2355    if(ptgroupha=="   32")ptgroupma=42
2356  case("  6/m")
2357    if(ptgroupha=="    6")ptgroupma=43
2358    if(ptgroupha=="   -3")ptgroupma=44
2359    if(ptgroupha=="   -6")ptgroupma=45
2360  case("  6mm")
2361    if(ptgroupha=="    6")ptgroupma=46
2362    if(ptgroupha=="   3m")ptgroupma=47
2363  case("6/mmm")
2364    if(ptgroupha==" -62m")ptgroupma=48
2365    if(ptgroupha=="  -3m")ptgroupma=49
2366    if(ptgroupha=="  622")ptgroupma=50
2367    if(ptgroupha=="  6mm")ptgroupma=51
2368    if(ptgroupha=="  6/m")ptgroupma=52
2369  case("  m-3")
2370    ptgroupma=53
2371  case(" -43m")
2372    ptgroupma=54
2373  case("  432")
2374    ptgroupma=55
2375  case(" m-3m")
2376    if(ptgroupha=="  432")ptgroupma=56
2377    if(ptgroupha==" -43m")ptgroupma=57
2378    if(ptgroupha=="  m-3")ptgroupma=58
2379  end select
2380 
2381 !DEBUG
2382 !write(std_out,*)' getptgroupma : exit '
2383 !write(std_out,*)' ptgroupma="',ptgroupma,'"'
2384 !ENDDEBUG
2385 
2386 end subroutine getptgroupma

m_spgdata/prtspgroup [ Functions ]

[ Top ] [ m_spgdata ] [ Functions ]

NAME

 prtspgroup

FUNCTION

 Print the space group (first, the dataset)

INPUTS

  bravais(11)=characteristics of Bravais lattice (see symlatt.f)
  genafm(3)=generator of magnetic translations, in case of
            Shubnikov type IV magnetic groups (if zero, the group is
            not a type IV magnetic group)
  iout=unit number of output file
  jdtset= actual number of the dataset to be read
  ptgroupma=magnetic point group, in case of
            Shubnikov type III magnetic groups (if zero, the group is
            not a type III magnetic group)
  spgroup=space group number

OUTPUT

SOURCE

 67 subroutine prtspgroup(bravais,genafm,iout,jdtset,ptgroupma,spgroup)
 68 
 69 !Arguments ------------------------------------
 70 !scalars
 71  integer,intent(in) :: iout,jdtset,ptgroupma,spgroup
 72 !arrays
 73  integer,intent(in) :: bravais(11)
 74  real(dp),intent(inout) :: genafm(3)
 75 
 76 !Local variables -------------------------------
 77 !scalars
 78  integer :: center,iholohedry,ii,shubnikov,spgaxor,spgorig,sporder,sumgen
 79  character(len=1) :: brvsb
 80  character(len=10) :: ptgrpmasb
 81  character(len=15) :: intsb,ptintsb,ptschsb,schsb
 82  character(len=35) :: intsbl
 83  character(len=500) :: message
 84  character(len=80) :: bravais_name
 85 !arrays
 86  integer :: genafmint(3)
 87  real(dp) :: genafmconv(3),rprimdconv(3,3)
 88 
 89 !*************************************************************************
 90 
 91 !DEBUG
 92 !write(std_out,*)' prtspgroup : enter '
 93 !write(std_out,*)' ptgroupma=',ptgroupma
 94 !write(std_out,*)' genafm(:)=',genafm(:)
 95 !ENDDEBUG
 96 
 97  center=bravais(2)
 98  iholohedry=bravais(1)
 99 
100 !Determine the magnetic type
101  shubnikov=1
102  if(ptgroupma/=0)shubnikov=3
103  if(sum(abs(genafm(:)))>tol6)then
104    shubnikov=4
105 !  Produce genafm in conventional axes,
106    rprimdconv(:,1)=bravais(3:5)
107    rprimdconv(:,2)=bravais(6:8)
108    rprimdconv(:,3)=bravais(9:11)
109    if(center/=0)rprimdconv(:,:)=rprimdconv(:,:)*half
110    call xred2xcart(1,rprimdconv,genafmconv,genafm)
111 !  Gives the associated translation, with components in the
112 !  interval ]-0.5,0.5] .
113    genafmconv(:)=genafmconv(:)-nint(genafmconv(:)-tol6)
114    do ii=1,3
115      genafmint(ii)=-1
116      if(abs(genafmconv(ii)-zero)<tol6)genafmint(ii)=0
117      if(abs(genafmconv(ii)-half)<tol6)genafmint(ii)=1
118    end do
119    if(minval(genafmint(:))==-1)then
120      write(message, '(3a,3es12.2,a)' )&
121 &     'The magnetic translation generator,',ch10,&
122 &     'genafmconv(:)=',genafmconv(:),&
123 &     'could not be identified.'
124      ABI_BUG(message)
125    end if
126  end if
127 
128 !Determine whether the space group can be printed
129  if(iholohedry<=0)then
130    if(jdtset/=0)then
131      write(message,'(a,a,i5,a)')ch10,&
132 &     ' DATASET',jdtset,' : the unit cell is not primitive'
133    else
134      write(message,'(a,a)')ch10,&
135 &     ' Symmetries : the unit cell is not primitive'
136    end if
137    call wrtout(std_out,message,'COLL')
138    call wrtout(iout,message,'COLL')
139  else if(spgroup==0)then
140    if(jdtset/=0)then
141      write(message,'(a,a,i5,a)')ch10,&
142 &     ' DATASET',jdtset,' : the space group has not been recognized'
143    else
144      write(message,'(a,a)')ch10,&
145 &     ' Symmetries : the space group has not been recognized'
146    end if
147    call wrtout(std_out,message,'COLL')
148    call wrtout(iout,message,'COLL')
149  else
150 
151 !  ------------------------------------------------------------------
152 !  The space group can be printed
153 
154 !  Determine the Bravais lattice
155 
156    bravais_name=' (the Bravais lattice could not be identified)'
157 
158    if(iholohedry==7)then ! Cubic
159 
160      if(center==0) then
161        if(shubnikov/=4)bravais_name='cP (primitive cubic)'
162        if(shubnikov==4)bravais_name='cP_I (primitive cubic, inner magnetic, #33)'
163      else if(center==-1) then
164        if(shubnikov/=4)bravais_name='cI (body-center cubic)' ! Only non-magnetic is possible
165      else if(center==-3) then
166        if(shubnikov/=4)bravais_name='cF (face-center cubic)'
167        if(shubnikov==4)bravais_name='cF_s (face-center cubic, simple cubic magnetic, #35)'
168      end if
169 
170    else if(iholohedry==4)then ! Tetragonal
171 
172      if(center==0) then
173        if(shubnikov/=4)bravais_name='tP (primitive tetrag.)'
174        if(shubnikov==4)then
175          sumgen=sum(genafmint(:))
176          if(sumgen==1)bravais_name='tP_c (primitive tetrag., c-magnetic, #23)'
177          if(sumgen==2)bravais_name='tP_C (primitive tetrag., C-magnetic, #24)'
178          if(sumgen==3)bravais_name='tP_I (primitive tetrag., centered magnetic, #25)'
179        end if
180      else if(center==-1)then
181        if(shubnikov/=4)bravais_name='tI (body-center tetrag.)'
182        if(shubnikov==4)bravais_name='tI_c (body-center tetrag., simple tetragonal magnetic, #27)'
183      end if
184 
185    else if(iholohedry==3)then ! Orthorhombic
186 
187      if(center==0) then
188        if(shubnikov/=4)bravais_name='oP (primitive ortho.)'
189        if(shubnikov==4)then
190          sumgen=sum(genafmint(:))
191          if(sumgen==1)then
192            if(genafmint(1)==1)bravais_name='oP_a (primitive ortho., a-magnetic, #11)'
193            if(genafmint(2)==1)bravais_name='oP_b (primitive ortho., b-magnetic, #11)'
194            if(genafmint(3)==1)bravais_name='oP_c (primitive ortho., c-magnetic, #11)'
195          else if(sumgen==2)then
196            if(genafmint(1)==0)bravais_name='oP_A (primitive ortho., A-magnetic, #12)'
197            if(genafmint(2)==0)bravais_name='oP_B (primitive ortho., B-magnetic, #12)'
198            if(genafmint(3)==0)bravais_name='oP_C (primitive ortho., C-magnetic, #12)'
199          else if(sumgen==3)then
200            bravais_name='oP_I (primitive ortho., centered magnetic, #13)'
201          end if
202        end if
203      else if(center==-1)then
204        if(shubnikov/=4)bravais_name='oI (body-center ortho.)'
205        if(shubnikov==4)bravais_name='oI_c (body-center ortho., simple ortho. magn., #21)'
206      else if(center==1 .or. center==2 .or. center==3)then
207        if(shubnikov/=4) bravais_name='oC (1-face-center ortho.)'
208        if(shubnikov==4)then
209          sumgen=sum(genafmint(:))
210          if(sumgen==1)then
211 !          One should work more to distinguish these magnetic groups
212            bravais_name='oC_(a,b,c) (1-face-cent. ortho., 1-magn., #15 or 16)'
213          else if(sumgen==2)then
214            bravais_name='oC_A (1-face-centered ortho., 1-face-magnetic, #17)'
215          else if(sumgen==3)then
216            bravais_name='oC_c (C-face-centered ortho., c-magnetic, #15)'
217          end if
218        end if
219      else if(center==-3)then
220        if(shubnikov/=4)bravais_name='oF (face-center ortho.)'
221        if(shubnikov==4)bravais_name='oF_s (face-center ortho., simple ortho. magnetic, #19)'
222      end if
223 
224    else if(iholohedry==6)then ! Hexagonal
225 
226      if(shubnikov/=4)bravais_name='hP (primitive hexag.)'
227      if(shubnikov==4)bravais_name='hP_c (primitive hexag., c-magnetic, #29)'
228 
229    else if(iholohedry==5)then ! Rhombohedral
230 
231      if(shubnikov/=4)bravais_name='hR (rhombohedral)'
232      if(shubnikov==4)bravais_name='hR_I (rhombohedral, centered magnetic, #31)'
233 
234    else if(iholohedry==2)then ! Monoclinic
235 
236      if(center==0)then
237        if(shubnikov/=4)bravais_name='mP (primitive monocl.)'
238        if(shubnikov==4)then
239          sumgen=sum(genafmint(:))
240          if(sumgen==1)then
241            if(genafmint(1)==1)bravais_name='mP_a (primitive monocl., a-magnetic, #5)'
242            if(genafmint(2)==1)bravais_name='mP_b (primitive monocl., b-magnetic, #4)'
243            if(genafmint(3)==1)bravais_name='mP_c (primitive monocl., c-magnetic, #5)'
244          else if(sumgen==2)then
245            if(genafmint(1)==0)bravais_name='mP_A (primitive monocl., A-magnetic, #6)'
246            if(genafmint(2)==0)bravais_name='mP_B (primitive monocl., B-magnetic, #6)'
247            if(genafmint(3)==0)bravais_name='mP_C (primitive monocl., C-magnetic, #6)'
248          end if
249        end if
250      else if(center==3)then
251        if(shubnikov/=4)bravais_name='mC (1-face-center monocl.)'
252        if(shubnikov==4)then
253          if(genafmint(3)==1)bravais_name='mC_c (C-face-center monocl., c-magnetic, #8)'
254          if(genafmint(3)/=1)bravais_name='mC_a (C-face-center monocl., a-magnetic, #9)'
255        end if
256      else if(center==-3)then
257        if(shubnikov/=4)bravais_name='(reduction of face-center)'
258      end if
259 
260    else if(iholohedry==1)then ! Triclinic
261 
262      if(shubnikov/=4)bravais_name='aP (primitive triclinic)'
263      if(shubnikov==4)bravais_name='aP_s (primitive triclinic, simple magnetic, #2)'
264 
265    end if
266 
267 !  Determine the symbol of the Fedorov space group
268    spgaxor=1 ; spgorig=1
269    call spgdata(brvsb,intsb,intsbl,ptintsb,ptschsb,schsb,spgaxor,spgroup,sporder,spgorig)
270 
271 !  Prepare print of the dataset, symmetry point group, Bravais lattice
272    if(shubnikov==1)then
273 
274      if(jdtset/=0)then
275        write(message,'(a,a,i5,a,a,a,a,i3,a,a,a)' )ch10,&
276 &       ' DATASET',jdtset,' : space group ',trim(brvsb),trim(intsb),' (#',spgroup,')',&
277 &       '; Bravais ',trim(bravais_name)
278      else
279        write(message,'(a,a,a,a,a,i3,a,a,a)' )ch10,&
280 &       ' Symmetries : space group ',trim(brvsb),trim(intsb),' (#',spgroup,')',&
281 &       '; Bravais ',trim(bravais_name)
282      end if
283      call wrtout(std_out,message,'COLL')
284      call wrtout(iout,message,'COLL')
285 
286    else if(shubnikov==3)then
287 
288      if(jdtset/=0)then
289        write(message,'(a,a,i5,a)' )ch10,&
290 &       ' DATASET',jdtset,' : magnetic group, Shubnikov type III '
291      else
292        write(message,'(2a)' )ch10,&
293 &       ' Magnetic group, Shubnikov type III '
294      end if
295      call wrtout(std_out,message,'COLL')
296      call wrtout(iout,message,'COLL')
297 
298      write(message,'(a,a,a,a,i3,a,a,a)' )&
299 &     ' Fedorov space group ',trim(brvsb),trim(intsb),' (#',spgroup,')',&
300 &     '; Bravais ',trim(bravais_name)
301      call wrtout(std_out,message,'COLL')
302      call wrtout(iout,message,'COLL')
303 
304      call ptgmadata(ptgroupma,ptgrpmasb)
305 
306      write(message,'(3a,i3,a)' )&
307 &     ' Magnetic point group ',trim(ptgrpmasb),' (#',ptgroupma,')'
308      call wrtout(std_out,message,'COLL')
309      call wrtout(iout,message,'COLL')
310 
311    else if(shubnikov==4)then
312 
313      if(jdtset/=0)then
314        write(message,'(a,a,i5,a)' )ch10,&
315 &       ' DATASET',jdtset,' : magnetic group, Shubnikov type IV '
316      else
317        write(message,'(2a)' )ch10,&
318 &       ' Magnetic group, Shubnikov type IV '
319      end if
320      call wrtout(std_out,message,'COLL')
321      call wrtout(iout,message,'COLL')
322 
323      write(message,'(a,a,a,a,i3,a)' )&
324 &     ' Fedorov space group ',trim(brvsb),trim(intsb),' (#',spgroup,')'
325      call wrtout(std_out,message,'COLL')
326      call wrtout(iout,message,'COLL')
327 
328      write(message,'(2a)' )&
329 &     ' Magnetic Bravais lattice ',trim(bravais_name)
330      call wrtout(std_out,message,'COLL')
331      call wrtout(iout,message,'COLL')
332 
333    end if
334  end if
335 
336 end subroutine prtspgroup

m_spgdata/ptgmadata [ Functions ]

[ Top ] [ m_spgdata ] [ Functions ]

NAME

 ptgmadata

FUNCTION

 Return magnetic point group symbol from the magnetic point group number
 The symbols and numbers are taken from  The Internationl Tables for Crystallography
 Volume A, 1983 Ed. Theo Hahn, D. Reidel Publishing Company and
 The mathematical theory of symmetry in solids, Representation theory for point
 groups and space groups, 1972, C.J. Bradley and A.P.
 Cracknell, Clarendon Press, Oxford.

INPUTS

 ptgroupma = space group number

OUTPUT

 ptgrpmasb= symbol

SOURCE

2119 subroutine ptgmadata(ptgroupma,ptgrpmasb)
2120 
2121 !Arguments ------------------------------------
2122 !scalars
2123  integer,intent(in) :: ptgroupma
2124  character(len=10),intent(out) :: ptgrpmasb
2125 
2126 ! *************************************************************************
2127 
2128  select case (ptgroupma)
2129  case(1)
2130    ptgrpmasb="-1'"
2131  case(2)
2132    ptgrpmasb="2'"
2133  case(3)
2134    ptgrpmasb="m'"
2135  case(4)
2136    ptgrpmasb="2/m'"
2137  case(5)
2138    ptgrpmasb="2'/m"
2139  case(6)
2140    ptgrpmasb="2'/m'"
2141  case(7)
2142    ptgrpmasb="2'2'2"
2143  case(8)
2144    ptgrpmasb="m'm'2"
2145  case(9)
2146    ptgrpmasb="m'm2'"
2147  case(10)
2148    ptgrpmasb="m'm'm'"
2149  case(11)
2150    ptgrpmasb="mmm'"
2151  case(12)
2152    ptgrpmasb="m'm'm"
2153  case(13)
2154    ptgrpmasb="4'"
2155  case(14)
2156    ptgrpmasb="-4'"
2157  case(15)
2158    ptgrpmasb="42'2'"
2159  case(16)
2160    ptgrpmasb="4'22'"
2161  case(17)
2162    ptgrpmasb="4/m'"
2163  case(18)
2164    ptgrpmasb="4'/m'"
2165  case(19)
2166    ptgrpmasb="4'/m"
2167  case(20)
2168    ptgrpmasb="4m'm'"
2169  case(21)
2170    ptgrpmasb="4'mm'"
2171  case(22)
2172    ptgrpmasb="-42'm'"
2173  case(23)
2174    ptgrpmasb="-4'2m'"
2175  case(24)
2176    ptgrpmasb="-4'm2'"
2177  case(25)
2178    ptgrpmasb="4/m'm'm'"
2179  case(26)
2180    ptgrpmasb="4/m'mm"
2181  case(27)
2182    ptgrpmasb="4'/mmm'"
2183  case(28)
2184    ptgrpmasb="4'/m'm'm"
2185  case(29)
2186    ptgrpmasb="4/mm'm'"
2187  case(30)
2188    ptgrpmasb="32'"
2189  case(31)
2190    ptgrpmasb="3m'"
2191  case(32)
2192    ptgrpmasb="-6'"
2193  case(33)
2194    ptgrpmasb="-6m'2'"
2195  case(34)
2196    ptgrpmasb="-6'm2'"
2197  case(35)
2198    ptgrpmasb="-6'm'2"
2199  case(36)
2200    ptgrpmasb="6'"
2201  case(37)
2202    ptgrpmasb="-3'"
2203  case(38)
2204    ptgrpmasb="-3m'"
2205  case(39)
2206    ptgrpmasb="-3'm"
2207  case(40)
2208    ptgrpmasb="-3'm'"
2209  case(41)
2210    ptgrpmasb="62'2'"
2211  case(42)
2212    ptgrpmasb="6'2'2"
2213  case(43)
2214    ptgrpmasb="6/m'"
2215  case(44)
2216    ptgrpmasb="6'/m'"
2217  case(45)
2218    ptgrpmasb="6'/m"
2219  case(46)
2220    ptgrpmasb="6m'm'"
2221  case(47)
2222    ptgrpmasb="6'm'm"
2223  case(48)
2224    ptgrpmasb="6'/mmm'"
2225  case(49)
2226    ptgrpmasb="6'/m'm'm"
2227  case(50)
2228    ptgrpmasb="6/m'm'm'"
2229  case(51)
2230    ptgrpmasb="6/m'mm"
2231  case(52)
2232    ptgrpmasb="6/mm'm'"
2233  case(53)
2234    ptgrpmasb="m'3"
2235  case(54)
2236    ptgrpmasb="-4'3m'"
2237  case(55)
2238    ptgrpmasb="4'32'"
2239  case(56)
2240    ptgrpmasb="m'3m'"
2241  case(57)
2242    ptgrpmasb="m'3m"
2243  case(58)
2244    ptgrpmasb="m3m'"
2245  end select
2246 
2247 end subroutine ptgmadata

m_spgdata/spgdata [ Functions ]

[ Top ] [ m_spgdata ] [ Functions ]

NAME

 spgdata

FUNCTION

 Return point and space group data: Bravais lattice symbol,
 international symbol, Schonflies symbol, multiplicity
 The symbols are taken from  The International Tables for Crystallography
 Volume A, 1983 Ed. Theo Hahn, D. Reidel Publishing Company and
 The mathematical theory of symmetry in solids, Representation theory for point
 groups and space groups, 1972, C.J. Bradley and A.P.
 Cracknell, Clarendon Press, Oxford.

INPUTS

 spgroup = space group number
 spgorig = space group origin
 spgaxor = space group axis orientation

OUTPUT

 brvsb=Bravais lattice symbol (P, I, F, A, B, C, R)
 intsb=international symbol (like m3m, 222, 2_12_12_1)
 intsbl=international symbol in long format like P2_b = P121)
 ptintsb=International point group symbol
 ptschsb=Schoenflies point group symbol
 sporder=multiplicity of the space group
 schsb=Schoenflies symbol

NOTES

 brvsb, intsb, and schsb have been extensively checked, while
 more checking should be done for the others
 XG20160612 : in particular, at present it might be that spgaxor and spgorig are indetermined
 (e.g. spgaxor=-1;spgorig=-1) at input.
 When this has a bearing on some of the output variables (even brvsb or intsb !),
 these are mentioned as being X, unknown, or to be determined.

SOURCE

 377 subroutine spgdata(brvsb,intsb,intsbl,ptintsb,ptschsb,schsb,spgaxor,spgroup,sporder,spgorig)
 378 
 379 !Arguments ------------------------------------
 380 !scalars
 381  integer,intent(in) :: spgaxor,spgorig,spgroup
 382  integer,intent(out) :: sporder
 383  character(len=1),intent(out) :: brvsb
 384  character(len=15),intent(out) :: intsb,ptintsb,ptschsb,schsb
 385  character(len=35),intent(out) :: intsbl
 386 
 387 ! *************************************************************************
 388 
 389  intsbl="same"
 390 !defaults for case spgroup is not well defined (eg chkprim 0)
 391  brvsb="P"
 392  intsb="1"
 393  schsb="C1^1"
 394  sporder=1
 395 
 396  select case (spgroup)
 397  case(1)
 398    brvsb="P"; intsb="1"; schsb="C1^1"; sporder=1
 399  case(2)
 400    brvsb="P"; intsb="-1"; schsb="Ci^1"; sporder=2
 401  case(3)
 402    brvsb="P"; intsb="2"; schsb="C2^1"; sporder=2
 403    select case (spgaxor)
 404    case(1)
 405      intsbl="P 2 _b = P 1 2 1"
 406    case(2)
 407      intsbl="P 2_a = P 2 1 1"
 408    case(3)
 409      intsbl="P 2 _c = P 1 1 2"
 410    case default
 411      intsbl="intsbl to be determined"
 412    end select
 413  case(4)
 414    brvsb="P"; intsb="2_1"; schsb="C2^2"; sporder=2
 415    select case (spgaxor)
 416    case(1)
 417      intsbl="P 2 1 _b = P 1 2_1 1"
 418    case(2)
 419      intsbl="P 2 1 _a = P 2_1 1 1"
 420    case(3)
 421      intsbl="P 2 1 _c = P 1 1 2_1"
 422    case default
 423      intsbl="intsbl to be determined"
 424    end select
 425  case(5)
 426    brvsb="C"; intsb="2"; schsb="C2^3"; sporder=2
 427    select case (spgaxor)
 428    case(1)
 429      intsbl="C 2 _b1 =  C 1 2 1"
 430    case(2)
 431      intsbl="C 2 _a1 =  B 2 1 1"
 432    case(3)
 433      intsbl="C 2 _a2 =  C 2 1 1"
 434    case(4)
 435      intsbl="C 2 _a3 =  I 2 1 1"
 436    case(5)
 437      intsbl="C 2 _b2 =  A 1 2 1"
 438    case(6)
 439      intsbl="C 2 _b3 =  I 1 2 1"
 440    case(7)
 441      intsbl="C 2 _c1 =  A 1 1 2"
 442    case(8)
 443      intsbl="C 2 _c2 =  B 1 1 2 = B 2"
 444    case(9)
 445      intsbl="C 2 _c3 =  I 1 1 2"
 446    case default
 447      intsbl="intsbl to be determined"
 448    end select
 449  case(6)
 450    brvsb="P"; intsb="m"; schsb="Cs^1"; sporder=2
 451    select case (spgaxor)
 452    case(1)
 453      intsbl="P m _b = P 1 m 1"
 454    case(2)
 455      intsbl="P m _a = P m 1 1"
 456    case(3)
 457      intsbl="P m _c = P 1 1 m"
 458    case default
 459      intsbl="intsbl to be determined"
 460    end select
 461  case(7)
 462    brvsb="P"; intsb="c"; schsb="Cs^2"; sporder=2
 463    select case (spgaxor)
 464    case(1)
 465      intsbl="P c _b1 = P 1 c 1"
 466    case(2)
 467      intsbl="P c _a1 = P b 1 1"
 468    case(3)
 469      intsbl="P c _a2 = P n 1 1"
 470    case(4)
 471      intsbl="P c _a3 = P c 1 1"
 472    case(5)
 473      intsbl="P c _b2 = P 1 n 1"
 474    case(6)
 475      intsbl="P c _b3 = P 1 a 1"
 476    case(7)
 477      intsbl="P c _c1 = P 1 1 a"
 478    case(8)
 479      intsbl="P c _c2 = P 1 1 n"
 480    case(9)
 481      intsbl="P c _c3 = P 1 1 b = P b"
 482    case default
 483      intsbl="intsbl to be determined"
 484    end select
 485  case(8)
 486    brvsb="C"; intsb="m"; schsb="Cs^3"; sporder=4
 487    select case (spgaxor)
 488    case(1)
 489      intsbl="C m _b1 = C 1 m 1"
 490    case(2)
 491      intsbl="C m _a1 = B m 1 1"
 492    case(3)
 493      intsbl="C m _a2 = C m 1 1"
 494    case(4)
 495      intsbl="C m _a3 = I m 1 1"
 496    case(5)
 497      intsbl="C m _b2 = A 1 m 1"
 498    case(6)
 499      intsbl="C m _b3 = I 1 m 1"
 500    case(7)
 501      intsbl="C m _c1 = A 1 1 m"
 502    case(8)
 503      intsbl="C m _c2 = B 1 1 m = B m"
 504    case(9)
 505      intsbl="C m _c3 = I 1 1 m"
 506    case default
 507      intsbl="intsbl to be determined"
 508    end select
 509  case(9)
 510    brvsb="C"; intsb="c"; schsb="Cs^4"; sporder=4
 511    select case (spgaxor)
 512    case(1)
 513      intsbl="C c _b1 = C 1 c 1"
 514    case(2)
 515      intsbl="C c _a1 = B b 1 1"
 516    case(3)
 517      intsbl="C c _a2 = C n 1 1"
 518    case(4)
 519      intsbl="C c _a3 = I c 1 1"
 520    case(5)
 521      intsbl="C c _b2 = A 1 n 1"
 522    case(6)
 523      intsbl="C c _b3 = I 1 a 1"
 524    case(7)
 525      intsbl="C c _c1 = A 1 1 a"
 526    case(8)
 527      intsbl="C c _c2 = B 1 1 n"
 528    case(9)
 529      intsbl="C c _c3 = I 1 1 b"
 530    case default
 531      intsbl="intsbl to be determined"
 532    end select
 533  case(10)
 534    brvsb="P"; intsb="2/m"; schsb="C2h^1"; sporder=4
 535    select case (spgaxor)
 536    case(1)
 537      intsbl="P 2/m _b = P 1 2/m 1"
 538    case(2)
 539      intsbl="P 2/m _a = P 2/m 1 1"
 540    case(3)
 541      intsbl="P 2/m _c = P 1 1 2/m"
 542    case default
 543      intsbl="intsbl to be determined"
 544    end select
 545  case(11)
 546    brvsb="P"
 547    intsb="2_1/m"
 548    schsb="C2h^2"
 549    sporder=4
 550    select case (spgaxor)
 551    case(1)
 552      intsbl="P 2_1/m _b = P 1 2_1/m 1"
 553    case(2)
 554      intsbl="P 2_1/m _a = P 2_1/m 1 1"
 555    case(3)
 556      intsbl="P 2_1/m _c = P 1 1 2_1/m"
 557    case default
 558      intsbl="intsbl to be determined"
 559    end select
 560  case(12)
 561    brvsb="C"; intsb="2/m"; schsb="C2h^3"; sporder=8
 562    select case (spgaxor)
 563    case(1)
 564      intsbl="C 2/m _b1 = C 1 2/m 1"
 565    case(2)
 566      intsbl="C 2/m _a1 = B 2/m 1 1"
 567    case(3)
 568      intsbl="C 2/m _a2 = C 2/m 1 1"
 569    case(4)
 570      intsbl="C 2/m _a3 = I 2/m 1 1"
 571    case(5)
 572      intsbl="C 2/m _b2 = A 1 2/m 1"
 573    case(6)
 574      intsbl="C 2/m _b3 = I 1 2/m 1"
 575    case(7)
 576      intsbl="C 2/m _c1 = A 1 1 2/m"
 577    case(8)
 578      intsbl="C 2/m _c2 = B 1 1 2/m = B 2/m"
 579    case(9)
 580      intsbl="C 2/m _c3 = I 1 1 2/m"
 581    case default
 582      intsbl="intsbl to be determined"
 583    end select
 584  case(13)
 585    brvsb="P"; intsb="2/c"; schsb="C2h^4"; sporder=4
 586    select case (spgaxor)
 587    case(1)
 588      intsbl="P 2/c _b1 = P 1 2/c 1"
 589    case(2)
 590      intsbl="P 2/c _a1 = P 2/b 1 1"
 591    case(3)
 592      intsbl="P 2/c _a2 = P 2/n 1 1"
 593    case(4)
 594      intsbl="P 2/c _a3 = P 2/c 1 1"
 595    case(5)
 596      intsbl="P 2/c _b2 = P 1 2/n 1"
 597    case(6)
 598      intsbl="P 2/c _b3 = P 1 2/a 1"
 599    case(7)
 600      intsbl="P 2/c _c1 = P 1 1 2/a"
 601    case(8)
 602      intsbl="P 2/c _c2 = P 1 1 2/n"
 603    case(9)
 604      intsbl="P 2/c _c3 = P 1 1 2/b = P 2/b"
 605    case default
 606      intsbl="intsbl to be determined"
 607    end select
 608  case(14)
 609    brvsb="P"; intsb="2_1/c"; schsb="C2h^5"; sporder=4
 610    select case (spgaxor)
 611    case(1)
 612      intsbl="P 2_1/c _b1 = P 1 2_1/c 1"
 613    case(2)
 614      intsbl="P 2_1/c _a1 = P 2_1/b 1 1"
 615    case(3)
 616      intsbl="P 2_1/c _a2 = P 2_1/n 1 1"
 617    case(4)
 618      intsbl="P 2_1/c _a3 = P 2_1/c 1 1"
 619    case(5)
 620      intsbl="P 2_1/c _b2 = P 1 2_1/n 1"
 621    case(6)
 622      intsbl="P 2_1/c _b3 = P 1 2_1/a 1"
 623    case(7)
 624      intsbl="P 2_1/c _c1 = P 1 1 2_1/a"
 625    case(8)
 626      intsbl="P 2_1/c _c2 = P 1 1 2_1/n"
 627    case(9)
 628      intsbl="P 2_1/c _c3 = P 1 1 2_1/b = P 2_1/b"
 629    case default
 630      intsbl="intsbl to be determined"
 631    end select
 632  case(15)
 633    brvsb="C"; intsb="2/c"; schsb="C2h^6"; sporder=8
 634    select case (spgaxor)
 635    case(1)
 636      intsbl="C 2/c _b1 = C 1 2/c 1"
 637    case(2)
 638      intsbl="C 2/c _a1 = B 2/b 1 1"
 639    case(3)
 640      intsbl="C 2/c _a2 = C 2/n 1 1"
 641    case(4)
 642      intsbl="C 2/c _a3 = I 2/c 1 1"
 643    case(5)
 644      intsbl="C 2/c _b2 = A 1 2/n 1"
 645    case(6)
 646      intsbl="C 2/c _b3 = I 1 2/a 1"
 647    case(7)
 648      intsbl="C 2/c _c1 = A 1 1 2/a"
 649    case(8)
 650      intsbl="C 2/c _c2 = B 1 1 2/n"
 651    case(9)
 652      intsbl="C 2/c _c3 = I 1 1 2/b"
 653    case default
 654      intsbl="intsbl to be determined"
 655    end select
 656  case(16)
 657    brvsb="P"; intsb="2 2 2"; schsb="D2^1"; sporder=4
 658  case(17)
 659    brvsb="P"; intsb="2 2 2_1"; schsb="D2^2"; sporder=4
 660    select case (spgaxor)
 661    case(1)
 662      intsbl="P 2 2 2_1"
 663    case(2)
 664      intsbl="P 2_1 2 2"
 665    case(3)
 666      intsbl="P 2 2_1 2"
 667    case default
 668      intsbl="intsbl to be determined"
 669    end select
 670  case(18)
 671    brvsb="P"; intsb="2_1 2_1 2"; schsb="D2^3"; sporder=4
 672    select case (spgaxor)
 673    case(1)
 674      intsbl="P 2_1 2_1 2"
 675    case(2)
 676      intsbl="P 2 2_1 2_1"
 677    case(3)
 678      intsbl="P 2_1 2 2_1"
 679    case default
 680      intsbl="intsbl to be determined"
 681    end select
 682  case(19)
 683    brvsb="P"; intsb="2_1 2_1 2_1"; schsb="D2^4"; sporder=4
 684  case(20)
 685    schsb="D2^5"; sporder=8
 686    select case (spgaxor)
 687    case(1)
 688      brvsb="C"; intsb="2 2 2_1"
 689    case(2)
 690      brvsb="A"; intsb="2_1 2 2"
 691    case(3)
 692      brvsb="B"; intsb="2 2_1 2"
 693    case default
 694      brvsb="X"
 695      intsbl="intsbl to be determined"
 696    end select
 697  case(21)
 698    schsb="D2^6"; sporder=8
 699    select case (spgaxor)
 700    case(1)
 701      brvsb="C"; intsb="2 2 2"
 702    case(2)
 703      brvsb="A"; intsb="2 2 2"
 704    case(3)
 705      brvsb="B"; intsb="2 2 2"
 706    case default
 707      brvsb="X"
 708      intsbl="intsbl to be determined"
 709    end select
 710  case(22)
 711    brvsb="F"; intsb="2 2 2"; schsb="D2^7"; sporder=16
 712  case(23)
 713    brvsb="I"; intsb="2 2 2"; schsb="D2^8"; sporder=8
 714  case(24)
 715    brvsb="I"; intsb="2_1 2_1 2_1"; schsb="D2^9"; sporder=8
 716  case(25)
 717    brvsb="P"; schsb="C2v^1"; sporder=4
 718    select case (spgaxor)
 719    case(1)
 720      intsb="m m 2"
 721    case(2)
 722      intsb="2 m m"
 723    case(3)
 724      intsb="m 2 m"
 725    case default
 726      intsb="intsb unknown"
 727    end select
 728  case(26)
 729    brvsb="P"; schsb="C2v^2"; sporder=4
 730    select case (spgaxor)
 731    case(1)
 732      intsb="m c 2_1"
 733    case(2)
 734      intsb="2_1 m a"
 735    case(3)
 736      intsb="b 2_1 m"
 737    case(4)
 738      intsb="m 2_1 b"
 739    case(5)
 740      intsb="c m 2_1"
 741    case(6)
 742      intsb="2_1 a m"
 743    case default
 744      intsb="intsb unknown"
 745    end select
 746  case(27)
 747    brvsb="P"; schsb="C2v^3"; sporder=4
 748    select case (spgaxor)
 749    case(1)
 750      intsb="c c 2"
 751    case(2)
 752      intsb="2 a a"
 753    case(3)
 754      intsb="b 2 b"
 755    case default
 756      intsb="intsb unknown"
 757    end select
 758  case(28)
 759    brvsb="P"; schsb="C2v^4"; sporder=4
 760    select case (spgaxor)
 761    case(1)
 762      intsb="m a 2"
 763    case(2)
 764      intsb="2 m b"
 765    case(3)
 766      intsb="c 2 m"
 767    case(4)
 768      intsb="m 2 a"
 769    case(5)
 770      intsb="b m 2"
 771    case(6)
 772      intsb="2 c m"
 773    case default
 774      intsb="intsb unknown"
 775    end select
 776  case(29)
 777    brvsb="P"; schsb="C2v^5"; sporder=4
 778    select case (spgaxor)
 779    case(1)
 780      intsb="c a 2_1"
 781    case(2)
 782      intsb="2_1 a b"
 783    case(3)
 784      intsb="c 2_1 b"
 785    case(4)
 786      intsb="b 2_1 a"
 787    case(5)
 788      intsb="b c 2_1"
 789    case(6)
 790      intsb="2_1 c a"
 791    case default
 792      intsb="intsb unknown"
 793    end select
 794  case(30)
 795    brvsb="P"; schsb="C2v^6"; sporder=4
 796    select case (spgaxor)
 797    case(1)
 798      intsb="n c 2"
 799    case(2)
 800      intsb="2 n a"
 801    case(3)
 802      intsb="b 2 n"
 803    case(4)
 804      intsb="n 2 b"
 805    case(5)
 806      intsb="c n 2"
 807    case(6)
 808      intsb="2 a n"
 809    case default
 810      intsb="intsb unknown"
 811    end select
 812  case(31)
 813    brvsb="P"; schsb="C2v^7"; sporder=4
 814    select case (spgaxor)
 815    case(1)
 816      intsb="m n 2_1"
 817    case(2)
 818      intsb="2_1 m n"
 819    case(3)
 820      intsb="n 2_1 m"
 821    case(4)
 822      intsb="m 2_1 n"
 823    case(5)
 824      intsb="n m 2_1"
 825    case(6)
 826      intsb="2_1 n m"
 827    case default
 828      intsb="intsb unknown"
 829    end select
 830  case(32)
 831    brvsb="P"; schsb="C2v^8"; sporder=4
 832    select case (spgaxor)
 833    case(1)
 834      intsb="b a 2"
 835    case(2)
 836      intsb="2 c b"
 837    case(3)
 838      intsb="c 2 a"
 839    case default
 840      intsb="intsb unknown"
 841    end select
 842  case(33)
 843    brvsb="P"; schsb="C2v^9"; sporder=4
 844    select case (spgaxor)
 845    case(1)
 846      intsb="n a 2_1"
 847    case(2)
 848      intsb="2_1 n b"
 849    case(3)
 850      intsb="c 2_1 n"
 851    case(4)
 852      intsb="n 2_1 a"
 853    case(5)
 854      intsb="b n 2_1"
 855    case(6)
 856      intsb="2_1 c n"
 857    case default
 858      intsb="intsb unknown"
 859    end select
 860  case(34)
 861    brvsb="P"; schsb="C2v^10"; sporder=4
 862    select case (spgaxor)
 863    case(1)
 864      intsb="n n 2"
 865    case(2)
 866      intsb="2 n n"
 867    case(3)
 868      intsb="n 2 n"
 869    case default
 870      intsb="intsb unknown"
 871    end select
 872  case(35)
 873    schsb="C2v^11"; sporder=8
 874    select case (spgaxor)
 875    case(1)
 876      brvsb="C"; intsb="m m 2"
 877    case(2)
 878      brvsb="A"; intsb="2 m m"
 879    case(3)
 880      brvsb="B"; intsb="m 2 m"
 881    case default
 882      brvsb="X"
 883      intsb="intsb unknown"
 884    end select
 885  case(36)
 886    schsb="C2v^12"; sporder=8
 887    select case (spgaxor)
 888    case(1)
 889      brvsb="C"; intsb="m c 2_1"
 890    case(2)
 891      brvsb="A"; intsb="2_1 m a"
 892    case(3)
 893      brvsb="B"; intsb="b 2_1 m"
 894    case(4)
 895      brvsb="B"; intsb="m 2_1 b"
 896    case(5)
 897      brvsb="C"; intsb="c m 2_1"
 898    case(6)
 899      brvsb="A"; intsb="2_1 a m"
 900    case default
 901      brvsb="X"
 902      intsb="intsb unknown"
 903    end select
 904  case(37)
 905    schsb="C2v^13"; sporder=8
 906    select case (spgaxor)
 907    case(1)
 908      brvsb="C"; intsb="c c 2"
 909    case(2)
 910      brvsb="A"; intsb="2 a a"
 911    case(3)
 912      brvsb="B"; intsb="b 2 b"
 913    case default
 914      brvsb="X"
 915      intsb="intsb unknown"
 916    end select
 917  case(38)
 918    schsb="C2v^14"; sporder=8
 919    select case (spgaxor)
 920    case(1)
 921      brvsb="A"; intsb="m m 2"
 922    case(2)
 923      brvsb="B"; intsb="2 m m"
 924    case(3)
 925      brvsb="C"; intsb="m 2 m"
 926    case(4)
 927      brvsb="A"; intsb="m 2 m"
 928    case(5)
 929      brvsb="B"; intsb="m m 2"
 930    case(6)
 931      brvsb="C"; intsb="2 m m"
 932    case default
 933      brvsb="X"
 934      intsb="intsb unknown"
 935    end select
 936  case(39)
 937    schsb="C2v^15"; sporder=8
 938    select case (spgaxor)
 939    case(1)
 940      brvsb="A"; intsb="b m 2"
 941    case(2)
 942      brvsb="B"; intsb="2 c m"
 943    case(3)
 944      brvsb="C"; intsb="m 2 a"
 945    case(4)
 946      brvsb="A"; intsb="c 2 m"
 947    case(5)
 948      brvsb="B"; intsb="m a 2"
 949    case(6)
 950      brvsb="C"; intsb="2 m b"
 951    case default
 952      brvsb="X"
 953      intsb="intsb unknown"
 954    end select
 955  case(40)
 956    schsb="C2v^16"; sporder=8
 957    select case (spgaxor)
 958    case(1)
 959      brvsb="A"; intsb="m a 2"
 960    case(2)
 961      brvsb="B"; intsb="2 m b"
 962    case(3)
 963      brvsb="C"; intsb="c 2 m"
 964    case(4)
 965      brvsb="A"; intsb="m 2 a"
 966    case(5)
 967      brvsb="B"; intsb="b m 2"
 968    case(6)
 969      brvsb="C"; intsb="2 c m"
 970    case default
 971      brvsb="X"
 972      intsb="intsb unknown"
 973    end select
 974  case(41)
 975    schsb="C2v^17"; sporder=8
 976    select case (spgaxor)
 977    case(1)
 978      brvsb="A"; intsb="b a 2"
 979    case(2)
 980      brvsb="B"; intsb="2 c b"
 981    case(3)
 982      brvsb="C"; intsb="c 2 a"
 983    case(4)
 984      brvsb="A"; intsb="c 2 a"
 985    case(5)
 986      brvsb="B"; intsb="b a 2"
 987    case(6)
 988      brvsb="C"; intsb="2 c b"
 989    case default
 990      brvsb="X"
 991      intsb="intsb unknown"
 992    end select
 993  case(42)
 994    brvsb="F"; schsb="C2v^18"; sporder=16
 995    select case (spgaxor)
 996    case(1)
 997      intsb="m m 2"
 998    case(2)
 999      intsb="2 m m"
1000    case(3)
1001      intsb="m 2 m"
1002    case default
1003      intsb="intsb unknown"
1004    end select
1005  case(43)
1006    brvsb="F"; schsb="C2v^19"; sporder=16
1007    select case (spgaxor)
1008    case(1)
1009      intsb="d d 2"
1010    case(2)
1011      intsb="2 d d"
1012    case(3)
1013      intsb="d 2 d"
1014    case default
1015      intsb="intsb unknown"
1016    end select
1017  case(44)
1018    brvsb="I"; schsb="C2v^20"; sporder=8
1019    select case (spgaxor)
1020    case(1)
1021      intsb="m m 2"
1022    case(2)
1023      intsb="2 m m"
1024    case(3)
1025      intsb="m 2 m"
1026    case default
1027      intsb="intsb unknown"
1028    end select
1029  case(45)
1030    brvsb="I"; schsb="C2v^21"; sporder=8
1031    select case (spgaxor)
1032    case(1)
1033      intsb="b a 2"
1034    case(2)
1035      intsb="2 c b"
1036    case(3)
1037      intsb="c 2 a"
1038    case default
1039      intsb="intsb unknown"
1040    end select
1041  case(46)
1042    brvsb="I"; schsb="C2v^22"; sporder=8
1043    select case (spgaxor)
1044    case(1)
1045      intsb="m a 2"
1046    case(2)
1047      intsb="2 m b"
1048    case(3)
1049      intsb="c 2 m"
1050    case(4)
1051      intsb="m 2 a"
1052    case(5)
1053      intsb="b m 2"
1054    case(6)
1055      intsb="2 c m"
1056    case default
1057      intsb="intsb unknown"
1058    end select
1059  case(47)
1060    brvsb="P"; intsb="m m m"; schsb="D2h^1"; sporder=8
1061  case(48)
1062    brvsb="P"; intsb="n n n"; schsb="D2h^2"; sporder=8
1063    select case (spgorig)
1064    case(1)
1065      intsbl="n n n _1"
1066    case(2)
1067      intsbl="n n n _2"
1068    case default
1069      intsbl="intsbl to be determined"
1070    end select
1071  case(49)
1072    brvsb="P"; schsb="D2h^3"; sporder=8
1073    select case (spgaxor)
1074    case(1)
1075      intsb="c c m"
1076    case(2)
1077      intsb="m a a"
1078    case(3)
1079      intsb="b m b"
1080    case default
1081      intsb="intsb unknown"
1082    end select
1083  case(50)
1084    brvsb="P"; schsb="D2h^4"; sporder=8
1085    select case(spgorig)
1086    case(1)
1087      select case(spgaxor)
1088      case(1)
1089        intsb="b a n"; intsbl="b a n _1"
1090      case(2)
1091        intsb="n c b"; intsbl="n c b _1"
1092      case(3)
1093        intsb="c n a"; intsbl="c n a _1"
1094      case default
1095        intsb="intsb unknown"
1096        intsbl="intsbl to be determined"
1097      end select
1098    case(2)
1099      select case(spgaxor)
1100      case(5)
1101        intsb="b a n"; intsbl="b a n _2"
1102      case(6)
1103        intsb="n c b"; intsbl="n c b _2"
1104      case(4)
1105        intsb="c n a"; intsbl="c n a _2"
1106      case default
1107        intsb="intsb unknown"
1108        intsbl="intsbl to be determined"
1109      end select
1110    case default
1111      intsb="intsb unknown"
1112      intsbl="intsbl to be determined"
1113    end select
1114  case(51)
1115    brvsb="P"; schsb="D2h^5"; sporder=8
1116    select case (spgaxor)
1117    case(1)
1118      intsb="m m a"
1119    case(2)
1120      intsb="b m m"
1121    case(3)
1122      intsb="m c m"
1123    case(4)
1124      intsb="m a m"
1125    case(5)
1126      intsb="m m b"
1127    case(6)
1128      intsb="c m m"
1129    case default
1130      intsb="intsb unknown"
1131    end select
1132  case(52)
1133    brvsb="P"; schsb="D2h^6"; sporder=8
1134    select case (spgaxor)
1135    case(1)
1136      intsb="n n a"
1137    case(2)
1138      intsb="b n n"
1139    case(3)
1140      intsb="n c n"
1141    case(4)
1142      intsb="n a n"
1143    case(5)
1144      intsb="n n b"
1145    case(6)
1146      intsb="c n n"
1147    case default
1148      intsb="intsb unknown"
1149    end select
1150  case(53)
1151    brvsb="P"
1152    schsb="D2h^7"
1153    sporder=8
1154    select case (spgaxor)
1155    case(1)
1156      intsb="m n a"
1157    case(2)
1158      intsb="b m n"
1159    case(3)
1160      intsb="n c m"
1161    case(4)
1162      intsb="m a n"
1163    case(5)
1164      intsb="n m b"
1165    case(6)
1166      intsb="c n m"
1167    case default
1168      intsb="intsb unknown"
1169    end select
1170  case(54)
1171    brvsb="P"; schsb="D2h^8"; sporder=8
1172    select case (spgaxor)
1173    case(1)
1174      intsb="c c a"
1175    case(2)
1176      intsb="b a a"
1177    case(3)
1178      intsb="b c b"
1179    case(4)
1180      intsb="b a b"
1181    case(5)
1182      intsb="c c b"
1183    case(6)
1184      intsb="c a a"
1185    case default
1186      intsb="intsb unknown"
1187    end select
1188  case(55)
1189    brvsb="P"; schsb="D2h^9"; sporder=8
1190    select case (spgaxor)
1191    case(1)
1192      intsb="b a m"
1193    case(2)
1194      intsb="m c b"
1195    case(3)
1196      intsb="c m a"
1197    case default
1198      intsb="intsb unknown"
1199    end select
1200  case(56)
1201    brvsb="P"; schsb="D2h^10"; sporder=8
1202    select case (spgaxor)
1203    case(1)
1204      intsb="c c n"
1205    case(2)
1206      intsb="n a a"
1207    case(3)
1208      intsb="b n b"
1209    case default
1210      intsb="intsb unknown"
1211    end select
1212  case(57)
1213    brvsb="P"; schsb="D2h^11"; sporder=8
1214    select case (spgaxor)
1215    case(1)
1216      intsb="b c m"
1217    case(2)
1218      intsb="m c a"
1219    case(3)
1220      intsb="b m a"
1221    case(4)
1222      intsb="c m b"
1223    case(5)
1224      intsb="c a m"
1225    case(6)
1226      intsb="m a b"
1227    case default
1228      intsb="intsb unknown"
1229    end select
1230  case(58)
1231    brvsb="P"; schsb="D2h^12"; sporder=8
1232    select case (spgaxor)
1233    case(1)
1234      intsb="n n m"
1235    case(2)
1236      intsb="m n n"
1237    case(3)
1238      intsb="n m n"
1239    case default
1240      intsb="intsb unknown"
1241    end select
1242  case(59)
1243    brvsb="P"; schsb="D2h^13"; sporder=8
1244    if (spgorig==1) then
1245      select case (spgaxor)
1246      case(1)
1247        intsb="m m n"; intsbl="m m n _1"
1248      case(2)
1249        intsb="m m n"; intsbl="n m m _1"
1250      case(3)
1251        intsb="m m n"; intsbl="m n m _1"
1252      case default
1253        intsb="intsb unknown"
1254        intsbl="intsbl to be determined"
1255      end select
1256    else if(spgorig==2) then
1257      select case (spgaxor)
1258      case(5)
1259        intsb="m m n"; intsbl="m m n _2"
1260      case(6)
1261        intsb="m m n"; intsbl="n m m _2"
1262      case(4)
1263        intsb="m m n"; intsbl="m n m _2"
1264      case default
1265        intsb="intsb unknown"
1266        intsbl="intsbl to be determined"
1267      end select
1268    else
1269      intsb="intsb unknown"
1270      intsbl="intsbl to be determined"
1271    end if
1272  case(60)
1273    brvsb="P"; schsb="D2h^14"; sporder=8
1274    select case (spgaxor)
1275    case(1)
1276      intsb="b c n"
1277    case(2)
1278      intsb="n c a"
1279    case(3)
1280      intsb="b n a"
1281    case(4)
1282      intsb="c n b"
1283    case(5)
1284      intsb="c a n"
1285    case(6)
1286      intsb="n a b"
1287    case default
1288      intsb="intsb unknown"
1289    end select
1290  case(61)
1291    brvsb="P"; schsb="D2h^15"; sporder=8
1292    if (spgaxor==1)then
1293      intsb="b c a"
1294    else if (spgaxor==2)then
1295      intsb="c a b"
1296    else
1297      intsb="intsb unknown"
1298    end if
1299  case(62)
1300    brvsb="P"; schsb="D2h^16"; sporder=8
1301    select case (spgaxor)
1302    case(1)
1303      intsb="n m a"
1304    case(2)
1305      intsb="b n m"
1306    case(3)
1307      intsb="m c n"
1308    case(4)
1309      intsb="n a m"
1310    case(5)
1311      intsb="m n b"
1312    case(6)
1313      intsb="c m n"
1314    case default
1315      intsb="intsb unknown"
1316    end select
1317  case(63)
1318    schsb="D2h^17"; sporder=16
1319    select case (spgaxor)
1320    case(1)
1321      brvsb="C"; intsb="m c m"
1322    case(2)
1323      brvsb="A"; intsb="m m a"
1324    case(3)
1325      brvsb="B"; intsb="b m m"
1326    case(4)
1327      brvsb="B"; intsb="m m b"
1328    case(5)
1329      brvsb="C"; intsb="c m m"
1330    case(6)
1331      brvsb="A"; intsb="m a m"
1332    case default
1333      brvsb="X"
1334      intsbl="intsbl unknown"
1335    end select
1336  case(64)
1337    schsb="D2h^18"; sporder=16
1338    select case (spgaxor)
1339    case(1)
1340      brvsb="C"; intsb="m c a"
1341    case(2)
1342      brvsb="A"; intsb="b m a"
1343    case(3)
1344      brvsb="B"; intsb="b c m"
1345    case(4)
1346      brvsb="B"; intsb="m a b"
1347    case(5)
1348      brvsb="C"; intsb="c m b"
1349    case(6)
1350      brvsb="A"; intsb="c a m"
1351    case default
1352      brvsb="X"
1353      intsb="intsb unknown"
1354    end select
1355  case(65)
1356    schsb="D2h^19"; sporder=16
1357    select case (spgaxor)
1358    case(1)
1359      brvsb="C"; intsb="m m m"
1360    case(2)
1361      brvsb="A"; intsb="m m m"
1362    case(3)
1363      brvsb="B"; intsb="m m m"
1364    case default
1365      brvsb="X"
1366      intsb="intsb unknown"
1367    end select
1368  case(66)
1369    schsb="D2h^20"; sporder=16
1370    select case (spgaxor)
1371    case(1)
1372      brvsb="C"; intsb="c c m"
1373    case(2)
1374      brvsb="A"; intsb="m a a"
1375    case(3)
1376      brvsb="B"; intsb="b m b"
1377    case default
1378      brvsb="X"
1379      intsb="intsb unknown"
1380    end select
1381  case(67)
1382    schsb="D2h^21"; sporder=16
1383    select case (spgaxor)
1384    case(1)
1385      brvsb="C"; intsb="m m a"
1386    case(2)
1387      brvsb="A"; intsb="b m m"
1388    case(3)
1389      brvsb="B"; intsb="m c m"
1390    case(4)
1391      brvsb="B"; intsb="m a m"
1392    case(5)
1393      brvsb="C"; intsb="m m b"
1394    case(6)
1395      brvsb="A"; intsb="c m m"
1396    case default
1397      brvsb="X"
1398      intsb="intsb unknown"
1399    end select
1400  case(68)
1401    schsb="D2h^22"; sporder=16
1402    if (spgorig==1) then
1403      select case (spgaxor)
1404      case(1)
1405        brvsb="C"; intsb="c c a"; intsbl="c c a _1"
1406      case(2)
1407        brvsb="A"; intsb="b a a"; intsbl="b a a _1"
1408      case(3)
1409        brvsb="B"; intsb="b c b"; intsbl="b c b _1"
1410      case(4)
1411        brvsb="B"; intsb="b a b"; intsbl="b a b _1"
1412      case(5)
1413        brvsb="C"; intsb="c c b"; intsbl="c c b _1"
1414      case(6)
1415        brvsb="A"; intsb="c a a"; intsbl="c a a _1"
1416      case default
1417        brvsb="X"
1418        intsb="intsb unknown"
1419        intsbl="intsbl to be determined"
1420      end select
1421    else if(spgorig==2)then
1422      select case (spgaxor)
1423      case(1)
1424        brvsb="C"; intsb="c c a"; intsbl="c c a _2"
1425      case(2)
1426        brvsb="A"; intsb="b a a"; intsbl="b a a _2"
1427      case(3)
1428        brvsb="B"; intsb="b c b"; intsbl="b c b _2"
1429      case(4)
1430        brvsb="B"; intsb="b a b"; intsbl="b a b _2"
1431      case(5)
1432        brvsb="C"; intsb="c c b"; intsbl="c c b _2"
1433      case(6)
1434        brvsb="A"; intsb="c a a"; intsbl="c a a _2"
1435      case default
1436        brvsb="X"
1437        intsb="intsb unknown"
1438        intsbl="intsbl to be determined"
1439      end select
1440    else
1441      brvsb="X"
1442      intsb="intsb unknown"
1443      intsbl="intsbl to be determined"
1444    end if
1445  case(69)
1446    brvsb="F"; intsb="m m m"; schsb="D2h^23"; sporder=32
1447  case(70)
1448    brvsb="F"; intsb="d d d"; schsb="D2h^24"; sporder=32
1449    if (spgorig==1)then
1450      intsbl="d d d _1"
1451    else if (spgorig==2)then
1452      intsbl="d d d _2"
1453    else
1454      intsbl="intsbl to be determined"
1455    end if
1456  case(71)
1457    brvsb="I"; intsb="m m m"; schsb="D2h^25"; sporder=16
1458  case(72)
1459    brvsb="I"; schsb="D2h^26"; sporder=16
1460    select case (spgaxor)
1461    case(1)
1462      intsb="b a m"
1463    case(2)
1464      intsb="m c b"
1465    case(3)
1466      intsb="c m a"
1467    case default
1468      intsb="intsb unknown"
1469    end select
1470  case(73)
1471    brvsb="I"; schsb="D2h^27"; sporder=16
1472    if (spgorig==1)then
1473      intsb="b c a"
1474    else if (spgorig==2)then
1475      intsb="c a b"
1476    else
1477      intsb="intsb unknown"
1478    end if
1479  case(74)
1480    brvsb="I"; schsb="D2h^28"; sporder=16
1481    select case (spgaxor)
1482    case(1)
1483      intsb="m m a"
1484    case(2)
1485      intsb="b m m"
1486    case(3)
1487      intsb="m c m"
1488    case(4)
1489      intsb="m a m"
1490    case(5)
1491      intsb="m m b"
1492    case(6)
1493      intsb="c m m"
1494    case default
1495      intsb="intsb unknown"
1496    end select
1497  case(75)
1498    brvsb="P"; intsb="4"; schsb="C4^1"; sporder=4
1499  case(76)
1500    brvsb="P"; intsb="4_1"; schsb="C4^2"; sporder=4
1501  case(77)
1502    brvsb="P"; intsb="4_2"; schsb="C4^3"; sporder=4
1503  case(78)
1504    brvsb="P"; intsb="4_3"; schsb="C4^4"; sporder=4
1505  case(79)
1506    brvsb="I"; intsb="4"; schsb="C4^5"; sporder=8
1507  case(80)
1508    brvsb="I"; intsb="4_1"; schsb="C4^6"; sporder=8
1509  case(81)
1510    brvsb="P"; intsb="-4"; schsb="S4^1"; sporder=4
1511  case(82)
1512    brvsb="I"; intsb="-4"; schsb="S4^2"; sporder=8
1513  case(83)
1514    brvsb="P"; intsb="4/m"; schsb="C4h^1"; sporder=8
1515  case(84)
1516    brvsb="P"; intsb="4_2/m"; schsb="C4h^2"; sporder=8
1517  case(85)
1518    brvsb="P"; intsb="4/n"; schsb="C4h^3"; sporder=8
1519    if (spgorig==1)then
1520      intsbl="4/n _1"
1521    else if (spgorig==2)then
1522      intsbl="4/n _2"
1523    else
1524      intsbl="intsbl to be determined"
1525    end if
1526  case(86)
1527    brvsb="P"; intsb="4_2/n"; schsb="C4h^4"; sporder=8
1528    if (spgorig==1)then
1529      intsbl="4_2/n _1"
1530    else if (spgorig==2)then
1531      intsbl="4_2/n _2"
1532    else
1533      intsbl="intsbl to be determined"
1534    end if
1535  case(87)
1536    brvsb="I"; intsb="4/m"; schsb="C4h^5"; sporder=16
1537  case(88)
1538    brvsb="I"; intsb="4_1/a"; schsb="C4h^6"; sporder=16
1539    if (spgorig==1)then
1540      intsbl="4_1/a _1"
1541    else if (spgorig==2)then
1542      intsbl="4_1/a _2"
1543    else
1544      intsbl="intsbl to be determined"
1545    end if
1546  case(89)
1547    brvsb="P"; intsb="4 2 2"; schsb="D4^1"; sporder=8
1548  case(90)
1549    brvsb="P"; intsb="4 2_1 2"; schsb="D4^2"; sporder=8
1550  case(91)
1551    brvsb="P"; intsb="4_1 2 2"; schsb="D4^3"; sporder=8
1552  case(92)
1553    brvsb="P"; intsb="4_1 2_1 2"; schsb="D4^4"; sporder=8
1554  case(93)
1555    brvsb="P"; intsb="4_2 2 2"; schsb="D4^5"; sporder=8
1556  case(94)
1557    brvsb="P"; intsb="4_2 2_1 2"; schsb="D4^6"; sporder=8
1558  case(95)
1559    brvsb="P"; intsb="4_3 2 2"; schsb="D4^7"; sporder=8
1560  case(96)
1561    brvsb="P"; intsb="4_3 2_1 2"; schsb="D4^8"; sporder=8
1562  case(97)
1563    brvsb="I"; intsb="4 2 2"; schsb="D4^9"; sporder=16
1564  case(98)
1565    brvsb="I"; intsb="4_1 2 2"; schsb="D4^10"; sporder=16
1566  case(99)
1567    brvsb="P"; intsb="4 m m"; schsb="C4v^1"; sporder=8
1568  case(100)
1569    brvsb="P"; intsb="4 b m"; schsb="C4v^2"; sporder=8
1570  case(101)
1571    brvsb="P"; intsb="4_2 c m"; schsb="C4v^3"; sporder=8
1572  case(102)
1573    brvsb="P"; intsb="4_2 n m"; schsb="C4v^4"; sporder=8
1574  case(103)
1575    brvsb="P"; intsb="4 c c"; schsb="C4v^5"; sporder=8
1576  case(104)
1577    brvsb="P"; intsb="4 n c"; schsb="C4v^6"; sporder=8
1578  case(105)
1579    brvsb="P"; intsb="4_2 m c"; schsb="C4v^7"; sporder=8
1580  case(106)
1581    brvsb="P"; intsb="4_2 b c"; schsb="C4v^8"; sporder=8
1582  case(107)
1583    brvsb="I"; intsb="4 m m"; schsb="C4v^9"; sporder=16
1584  case(108)
1585    brvsb="I"; intsb="4 c m"; schsb="C4v^10"; sporder=16
1586  case(109)
1587    brvsb="I"; intsb="4_1 m d"; schsb="C4v^11"; sporder=16
1588  case(110)
1589    brvsb="I"; intsb="4_1 c d"; schsb="C4v^12"; sporder=16
1590  case(111)
1591    brvsb="P"; intsb="-4 2 m"; schsb="D2d^1"; sporder=8
1592  case(112)
1593    brvsb="P"; intsb="-4 2 c"; schsb="D2d^2"; sporder=8
1594  case(113)
1595    brvsb="P"; intsb="-4 2_1 m"; schsb="D2d^3"; sporder=8
1596  case(114)
1597    brvsb="P"; intsb="-4 2_1 c"; schsb="D2d^4"; sporder=8
1598  case(115)
1599    brvsb="P"; intsb="-4 m 2"; schsb="D2d^5"; sporder=8
1600  case(116)
1601    brvsb="P"; intsb="-4 c 2"; schsb="D2d^6"; sporder=8
1602  case(117)
1603    brvsb="P"; intsb="-4 b 2"; schsb="D2d^7"; sporder=8
1604  case(118)
1605    brvsb="P"; intsb="-4 n 2"; schsb="D2d^8"; sporder=8
1606  case(119)
1607    brvsb="I"; intsb="-4 m 2"; schsb="D2d^9"; sporder=16
1608  case(120)
1609    brvsb="I"; intsb="-4 c 2"; schsb="D2d^10"; sporder=16
1610  case(121)
1611    brvsb="I"; intsb="-4 2 m"; schsb="D2d^11"; sporder=16
1612  case(122)
1613    brvsb="I"; intsb="-4 2 d"; schsb="D2d^12"; sporder=16
1614  case(123)
1615    brvsb="P"; intsb="4/m m m"; schsb="D4h^1"; sporder=16
1616  case(124)
1617    brvsb="P"; intsb="4/m c c"; schsb="D4h^2"; sporder=16
1618  case(125)
1619    brvsb="P"; intsb="4/n b m"; schsb="D4h^3"; sporder=16
1620    if (spgorig==1)then
1621      intsbl="4/n b m _1"
1622    else if (spgorig==2)then
1623      intsbl="4/n b m _2"
1624    else
1625      intsbl="intsbl to be determined"
1626    end if
1627  case(126)
1628    brvsb="P"; intsb="4/n n c"; schsb="D4h^4"; sporder=16
1629    if (spgorig==1)then
1630      intsbl="4/n n c _1"
1631    else if (spgorig==2)then
1632      intsbl="4/n n c _2"
1633    else
1634      intsbl="intsbl to be determined"
1635    end if
1636  case(127)
1637    brvsb="P"; intsb="4/m b m"; schsb="D4h^5"; sporder=16
1638  case(128)
1639    brvsb="P"; intsb="4/m n c"; schsb="D4h^6"; sporder=16
1640  case(129)
1641    brvsb="P"; intsb="4/n m m"; schsb="D4h^7"; sporder=16
1642    if (spgorig==1)then
1643      intsbl="4/n m m _1"
1644    else if (spgorig==2)then
1645      intsbl="4/n m m _2"
1646    else
1647      intsbl="intsbl to be determined"
1648    end if
1649  case(130)
1650    brvsb="P"; intsb="4/n c c"; schsb="D4h^8"; sporder=16
1651    if (spgorig==1)then
1652      intsbl="4/n c c _1"
1653    else if (spgorig==2) then
1654      intsbl="4/n c c _2"
1655    else
1656      intsbl="intsbl to be determined"
1657    end if
1658  case(131)
1659    brvsb="P"; intsb="4_2/m m c"; schsb="D4h^9"; sporder=16
1660  case(132)
1661    brvsb="P"; intsb="4_2/m c m"; schsb="D4h^10"; sporder=16
1662  case(133)
1663    brvsb="P"; intsb="4_2/n b c"; schsb="D4h^11"; sporder=16
1664    if (spgorig==1)then
1665      intsbl="4_2/n b c _1"
1666    else if (spgorig==2)then
1667      intsbl="4_2/n b c _2"
1668    else
1669      intsbl="intsbl to be determined"
1670    end if
1671  case(134)
1672    brvsb="P"; intsb="4_2/n n m"; schsb="D4h^12"; sporder=16
1673    if (spgorig==1)then
1674      intsbl="4_2/n n m _1"
1675    else if (spgorig==2)then
1676      intsbl="4_2/n n m _2"
1677    else
1678      intsbl="intsbl to be determined"
1679    end if
1680  case(135)
1681    brvsb="P"; intsb="4_2/m b c"; schsb="D4h^13"; sporder=16
1682  case(136)
1683    brvsb="P"; intsb="4_2/m n m"; schsb="D4h^14"; sporder=16
1684  case(137)
1685    brvsb="P"; intsb="4_2/n m c"; schsb="D4h^15"; sporder=16
1686    if (spgorig==1)then
1687      intsbl="4_2/n m c _1"
1688    else if (spgorig==2)then
1689      intsbl="4_2/n m c _2"
1690    else
1691      intsbl="intsbl to be determined"
1692    end if
1693  case(138)
1694    brvsb="P"; intsb="4_2/n c m"; schsb="D4h^16"; sporder=16
1695    if (spgorig==1)then
1696      intsbl="4_2/n c m _1"
1697    else if (spgorig==2)then
1698      intsbl="4_2/n c m _2"
1699    else
1700      intsbl="intsbl to be determined"
1701    end if
1702  case(139)
1703    brvsb="I"; intsb="4/m m m"; schsb="D4h^17"; sporder=32
1704  case(140)
1705    brvsb="I"; intsb="4/m c m"; schsb="D4h^18"; sporder=32
1706  case(141)
1707    brvsb="I"; intsb="4_1/a m d"; schsb="D4h^19"; sporder=32
1708    if (spgorig==1)then
1709      intsbl="4_1/a m d _1"
1710    else if (spgorig==2)then
1711      intsbl="4_1/a m d _2"
1712    else
1713      intsbl="intsbl to be determined"
1714    end if
1715  case(142)
1716    brvsb="I"; intsb="4_1/a c d"; schsb="D4h^20"; sporder=32
1717    if (spgorig==1)then
1718      intsbl="4_1/a c d _1"
1719    else if (spgorig==2)then
1720      intsbl="4_1/a c d _2"
1721    else
1722      intsbl="intsbl to be determined"
1723    end if
1724  case(143)
1725    brvsb="P"; intsb="3"; schsb="C3^1"; sporder=3
1726  case(144)
1727    brvsb="P"; intsb="3_1"; schsb="C3^2"; sporder=3
1728  case(145)
1729    brvsb="P"; intsb="3_2"; schsb="C3^3"; sporder=3
1730  case(146)
1731    brvsb="R"; intsb="3"; schsb="C3^4"
1732    if (spgorig==1)then
1733      intsbl="3 _H" ; sporder=9
1734    else if (spgorig==2)then
1735      intsbl="3 _R" ; sporder=3
1736    else
1737      intsbl="intsbl to be determined"
1738    end if
1739  case(147)
1740    brvsb="P"; intsb="-3"; schsb="C3i^1"; sporder=6
1741  case(148)
1742    brvsb="R"; intsb="-3"; schsb="C3i^2"
1743    if (spgorig==1) then
1744      intsbl="-3 _H" ; sporder=9
1745    else if (spgorig==2) then
1746      intsbl="-3 _R" ; sporder=3
1747    else
1748      intsbl="intsbl to be determined"
1749    end if
1750  case(149)
1751    brvsb="P"; intsb="3 1 2"; schsb="D3^1"; sporder=6
1752  case(150)
1753    brvsb="P"; intsb="3 2 1"; schsb="D3^2"; sporder=6
1754  case(151)
1755    brvsb="P"; intsb="3_1 1 2"; schsb="D3^3"; sporder=6
1756  case(152)
1757    brvsb="P"; intsb="3_1 2 1"; schsb="D3^4"; sporder=6
1758  case(153)
1759    brvsb="P"; intsb="3_2 1 2"; schsb="D3^5"; sporder=6
1760  case(154)
1761    brvsb="P"; intsb="3_2 2 1"; schsb="D3^6"; sporder=6
1762  case(155)
1763    brvsb="R"; intsb="3 2"; schsb="D3^7"
1764    if (spgorig==1) then
1765      intsbl="3 2 _H" ; sporder=18
1766    else if (spgorig==2) then
1767      intsbl="3 2 _R" ; sporder=6
1768    else
1769      intsbl="intsbl to be determined"
1770    end if
1771  case(156)
1772    brvsb="P"; intsb="3 m 1"; schsb="C3v^1"; sporder=6
1773  case(157)
1774    brvsb="P"; intsb="3 1 m"; schsb="C3v^2"; sporder=6
1775  case(158)
1776    brvsb="P"; intsb="3 c 1"; schsb="C3v^3"; sporder=6
1777  case(159)
1778    brvsb="P"; intsb="3 1 c"; schsb="C3v^4"; sporder=6
1779  case(160)
1780    brvsb="R"; intsb="3 m"; schsb="C3v^5"
1781    if (spgorig==1) then
1782      intsbl="3 m _H" ; sporder=18
1783    else if (spgorig==2) then
1784      intsbl="3 m _R" ; sporder=6
1785    else
1786      intsbl="intsbl to be determined"
1787    end if
1788  case(161)
1789    brvsb="R"; intsb="3 c"; schsb="C3v^6"
1790    if (spgorig==1) then
1791      intsbl="3 m _H" ; sporder=18
1792    else if (spgorig==2)then
1793      intsbl="3 m _R" ; sporder=6
1794    else
1795      intsbl="intsbl to be determined"
1796    end if
1797  case(162)
1798    brvsb="P"; intsb="-3 1 m"; schsb="D3d^1"; sporder=12
1799  case(163)
1800    brvsb="P"; intsb="-3 1 c"; schsb="D3d^2"; sporder=12
1801  case(164)
1802    brvsb="P"; intsb="-3 m 1"; schsb="D3d^3"; sporder=12
1803  case(165)
1804    brvsb="P"; intsb="-3 c 1"; schsb="D3d^4"; sporder=12
1805  case(166)
1806    brvsb="R"; intsb="-3 m"; schsb="D3d^5"
1807    if (spgorig==1) then
1808      intsbl="3 m _H"; sporder=18
1809    else if (spgorig==2) then
1810      intsbl="3 m _R"; sporder=6
1811    else
1812      intsbl="intsbl to be determined"
1813    end if
1814  case(167)
1815    brvsb="R"; intsb="-3 c"; schsb="D3d^6"
1816    if (spgorig==1) then
1817      intsbl="-3 c _H"; sporder=36
1818    else if (spgorig==2) then
1819      intsbl="-3 c _R"; sporder=12
1820    else
1821      intsbl="intsbl to be determined"
1822      sporder=-1
1823    end if
1824  case(168)
1825    brvsb="P"; intsb="6"; schsb="C6^1"; sporder=6
1826  case(169)
1827    brvsb="P"; intsb="6_1"; schsb="C6^2"; sporder=6
1828  case(170)
1829    brvsb="P"; intsb="6_5"; schsb="C6^3"; sporder=6
1830  case(171)
1831    brvsb="P"; intsb="6_2"; schsb="C6^4"; sporder=6
1832  case(172)
1833    brvsb="P"; intsb="6_4"; schsb="C6^5"; sporder=6
1834  case(173)
1835    brvsb="P"; intsb="6_3"; schsb="C6^6"; sporder=6
1836  case(174)
1837    brvsb="P"; intsb="-6"; schsb="C3h^1"; sporder=6
1838  case(175)
1839    brvsb="P"; intsb="6/m"; schsb="C6h^1"; sporder=12
1840  case(176)
1841    brvsb="P"; intsb="6_3/m"; schsb="C6h^2"; sporder=12
1842  case(177)
1843    brvsb="P"; intsb="6 2 2"; schsb="D6^1"; sporder=12
1844  case(178)
1845    brvsb="P"; intsb="6_1 2 2"; schsb="D6^2"; sporder=12
1846  case(179)
1847    brvsb="P"; intsb="6_5 2 2"; schsb="D6^3"; sporder=12
1848  case(180)
1849    brvsb="P"; intsb="6_2 2 2"; schsb="D6^4"; sporder=12
1850  case(181)
1851    brvsb="P"; intsb="6_4 2 2"; schsb="D6^5"; sporder=12
1852  case(182)
1853    brvsb="P"; intsb="6_3 2 2"; schsb="D6^6"; sporder=12
1854  case(183)
1855    brvsb="P"; intsb="6 m m"; schsb="C6v^1"; sporder=12
1856  case(184)
1857    brvsb="P"; intsb="6 c c"; schsb="C6v^2"; sporder=12
1858  case(185)
1859    brvsb="P"; intsb="6_3 c m"; schsb="C6v^3"; sporder=12
1860  case(186)
1861    brvsb="P"; intsb="6_3 m c"; schsb="C6v^4"; sporder=12
1862  case(187)
1863    brvsb="P"; intsb="-6 m 2"; schsb="D3h^1"; sporder=12
1864  case(188)
1865    brvsb="P"; intsb="-6 c 2"; schsb="D3h^2"; sporder=12
1866  case(189)
1867    brvsb="P"; intsb="-6 2 m"; schsb="D3h^3"; sporder=12
1868  case(190)
1869    brvsb="P"; intsb="-6 2 c"; schsb="D3h^4"; sporder=12
1870  case(191)
1871    brvsb="P"; intsb="6/m m m"; schsb="D6h^1"; sporder=24
1872  case(192)
1873    brvsb="P"; intsb="6/m c c"; schsb="D6h^2"; sporder=24
1874  case(193)
1875    brvsb="P"; intsb="6_3/m c m"; schsb="D6h^3"; sporder=24
1876  case(194)
1877    brvsb="P"; intsb="6_3/m m c"; schsb="D6h^4"; sporder=24
1878  case(195)
1879    brvsb="P"; intsb="2 3"; schsb="T^1"; sporder=12
1880  case(196)
1881    brvsb="F"; intsb="2 3"; schsb="T^2"; sporder=48
1882  case(197)
1883    brvsb="I"; intsb="2 3"; schsb="T^3"; sporder=24
1884  case(198)
1885    brvsb="P"; intsb="2_1 3"; schsb="T^4"; sporder=12
1886  case(199)
1887    brvsb="I"; intsb="2_1 3"; schsb="T^5"; sporder=24
1888  case(200)
1889    brvsb="P"; intsb="m -3"; schsb="Th^1"; sporder=24
1890  case(201)
1891    brvsb="P"; intsb="n -3"; schsb="Th^2"; sporder=24
1892    if (spgorig==1) then
1893      intsbl="n -3 _1"
1894    else if (spgorig==2)then
1895      intsbl="n -3 _2"
1896    else
1897      intsbl="intsbl to be determined"
1898    end if
1899  case(202)
1900    brvsb="F"; intsb="m -3"; schsb="Th^3"; sporder=96
1901  case(203)
1902    brvsb="F"; intsb="d -3"; schsb="Th^4"; sporder=96
1903    if (spgorig==1) then
1904      intsbl="d -3 _1"
1905    else if (spgorig==2) then
1906      intsbl="d -3 _2"
1907    else
1908      intsbl="intsbl to be determined"
1909    end if
1910  case(204)
1911    brvsb="I"; intsb="m -3"; schsb="Th^5"; sporder=48
1912  case(205)
1913    brvsb="P"; intsb="a -3"; schsb="Th^6"; sporder=24
1914  case(206)
1915    brvsb="I"; intsb="a -3"; schsb="Th^7"; sporder=48
1916  case(207)
1917    brvsb="P"; intsb="4 3 2"; schsb="O^1"; sporder=24
1918  case(208)
1919    brvsb="P"; intsb="4_2 3 2"; schsb="O^2"; sporder=24
1920  case(209)
1921    brvsb="F"; intsb="4 3 2"; schsb="O^3"; sporder=96
1922  case(210)
1923    brvsb="F"; intsb="4_1 3 2"; schsb="O^4"; sporder=96
1924  case(211)
1925    brvsb="I"; intsb="4 3 2"; schsb="O^5"; sporder=48
1926  case(212)
1927    brvsb="P"; intsb="4_3 3 2"; schsb="O^6"; sporder=24
1928  case(213)
1929    brvsb="P"; intsb="4_1 3 2"; schsb="O^7"; sporder=24
1930  case(214)
1931    brvsb="I"; intsb="4_1 3 2"; schsb="O^8"; sporder=48
1932  case(215)
1933    brvsb="P"; intsb="-4 3 m"; schsb="Td^1"; sporder=24
1934  case(216)
1935    brvsb="F"; intsb="-4 3 m"; schsb="Td^2"; sporder=96
1936  case(217)
1937    brvsb="I"; intsb="-4 3 m"; schsb="Td^3"; sporder=48
1938  case(218)
1939    brvsb="P"; intsb="-4 3 n"; schsb="Td^4"; sporder=24
1940  case(219)
1941    brvsb="F"; intsb="-4 3 c"; schsb="Td^5"; sporder=96
1942  case(220)
1943    brvsb="I"; intsb="-4 3 d"; schsb="Td^6"; sporder=48
1944  case(221)
1945    brvsb="P"; intsb="m -3 m"; schsb="Oh^1"; sporder=48
1946  case(222)
1947    brvsb="P"; intsb="n -3 n"; schsb="Oh^2"; sporder=48
1948    if (spgorig==1) then
1949      intsbl="n -3 n _1"
1950    else if (spgorig==2) then
1951      intsbl="n -3 n _2"
1952    else
1953      intsbl="intsbl to be determined"
1954    end if
1955  case(223)
1956    brvsb="P"; intsb="m -3 n"; schsb="Oh^3"; sporder=48
1957  case(224)
1958    brvsb="P"; intsb="n -3 m"; schsb="Oh^4"; sporder=48
1959    if (spgorig==1) then
1960      intsbl="n -3 m _1"
1961    else if (spgorig==2)then
1962      intsbl="n -3 m _2"
1963    else
1964      intsbl="intsbl to be determined"
1965    end if
1966  case(225)
1967    brvsb="F"; intsb="m -3 m"; schsb="Oh^5"; sporder=192
1968  case(226)
1969    brvsb="F"; intsb="m -3 c"; schsb="Oh^6"; sporder=192
1970  case(227)
1971    brvsb="F"; intsb="d -3 m"; schsb="Oh^7"; sporder=192
1972    if (spgorig==1) then
1973      intsbl="d -3 m _1"
1974    else if (spgorig==2) then
1975      intsbl="d -3 m _2"
1976    else
1977      intsbl="intsbl to be determined"
1978    end if
1979  case(228)
1980    brvsb="F"; intsb="d -3 c"; schsb="Oh^8"; sporder=192
1981    if (spgorig==1) then
1982      intsbl="d -3 c _1"
1983    else if (spgorig==2) then
1984      intsbl="d -3 c _2"
1985    else
1986      intsbl="intsbl to be determined"
1987    end if
1988  case(229)
1989    brvsb="I"; intsb="m -3 m"; schsb="Oh^9"; sporder=96
1990  case(230)
1991    brvsb="I"; intsb="a -3 d"; schsb="Oh^10"; sporder=96
1992  end select
1993 
1994  if(trim(intsbl)=="same")intsbl=intsb
1995 
1996 !Assignment of the point group number
1997  if(spgroup<=2)then  ! Triclinic system
1998    select case(spgroup)
1999    case (1)
2000      ptintsb="1"; ptschsb="C1"
2001    case (2)
2002      ptintsb="-1"; ptschsb="Ci"
2003    end select
2004  else if(spgroup<=15)then  ! Monoclinic system
2005    select case(spgroup)
2006    case (3:5)
2007      ptintsb="2"; ptschsb="C2"
2008    case (6:9)
2009      ptintsb="m"; ptschsb="Cs = C1h "
2010    case (10:15)
2011      ptintsb="2/m"; ptschsb="C2h"
2012    end select
2013  else if(spgroup<=74)then  ! Orthorhombic system
2014    select case(spgroup)
2015    case (16:24)
2016      ptintsb="2 2 2"; ptschsb="D2"
2017    case (25:46)
2018      ptintsb="m m 2"; ptschsb="C2v"
2019    case (47:74)
2020      ptintsb="m m m"; ptschsb="D2h"
2021    end select
2022  else if(spgroup<=142)then  ! Tetragonal system
2023    select case(spgroup)
2024    case (75:80)
2025      ptintsb="4"; ptschsb="C4"
2026    case (81,82)
2027      ptintsb="-4"; ptschsb="S4"
2028    case (83:88)
2029      ptintsb="4/m"; ptschsb="C4h"
2030    case (89:98)
2031      ptintsb="4 2 2"; ptschsb="D4"
2032    case (99:110)
2033      ptintsb="4 m m"; ptschsb="C4v"
2034    case (111:114,121,122)
2035      ptintsb="-4 2 m"; ptschsb="D2d^1"
2036    case (115:120)
2037      ptintsb="-4 m 2"; ptschsb="D2h^2"
2038    case (123:142)
2039      ptintsb="4/m m m"
2040      ptschsb="D4h"
2041    end select
2042  else if(spgroup<=167)then  ! Trigonal system
2043    select case(spgroup)
2044    case (143:146)
2045      ptintsb="3"; ptschsb="C3"
2046    case (147,148)
2047      ptintsb="-3"; ptschsb="C3i"
2048    case (149,151,153)
2049      ptintsb="3 1 2"; ptschsb="D3^1"
2050    case (150,152,154,155)
2051      ptintsb="3 2 1"; ptschsb="D3^2"
2052    case (156,158,160,161)
2053      ptintsb="3 m 1"; ptschsb="C3v^1"
2054    case (157,159)
2055      ptintsb="3 1 m"; ptschsb="C3v^2"
2056    case (162,163)
2057      ptintsb="-3 1 m"; ptschsb="D3d^1"
2058    case (164:167)
2059      ptintsb="-3 m 1"; ptschsb="D3d^2"
2060    end select
2061  else if(spgroup<=194)then  ! Hexagonal system
2062    select case(spgroup)
2063    case (168:173)
2064      ptintsb="6"; ptschsb="C6"
2065    case (174)
2066      ptintsb="-6"; ptschsb="C3h"
2067    case (175,176)
2068      ptintsb="6/m"; ptschsb="C6h"
2069    case (177:182)
2070      ptintsb="6 2 2"; ptschsb="D6"
2071    case (183:186)
2072      ptintsb="6 m m"; ptschsb="C6v"
2073    case (187,188)
2074      ptintsb="-6 m 2"; ptschsb="D3h^1"
2075    case (189,190)
2076      ptintsb="-6 2 m"; ptschsb="D3h^2"
2077    case (191:194)
2078      ptintsb="6/m m m"; ptschsb="D6h"
2079    end select
2080  else                        ! Cubic system
2081    select case(spgroup)
2082    case (195:199)
2083      ptintsb="2 3"; ptschsb="T"
2084    case (200:206)
2085      ptintsb="m 3"; ptschsb="Th"
2086    case (207:214)
2087      ptintsb="4 3 2"; ptschsb="O"
2088    case (215:220)
2089      ptintsb="4 3 m"; ptschsb="Td"
2090    case (221:230)
2091      ptintsb="m -3 m"; ptschsb="Oh"
2092    end select
2093  end if
2094 
2095 end subroutine spgdata

m_spgdata/symptgroup [ Functions ]

[ Top ] [ m_spgdata ] [ Functions ]

NAME

 symptgroup

FUNCTION

 Derive the name of the point group (+holohedry), from symrel.
 Warning: might have to change the holohedry hR to hP, if hexagonal axes

INPUTS

 nsym=actual number of symmetries
 symrel(3,3,nsym)=nsym symmetry operations in real space in terms of primitive translations

OUTPUT

 iholohedry=holohedry number
 ptgroup=symmetry point group

SOURCE

2407 subroutine symptgroup(iholohedry,nsym,ptgroup,symrel)
2408 
2409 !Arguments ------------------------------------
2410 !scalars
2411  integer,intent(in) :: nsym
2412  integer,intent(out) :: iholohedry
2413  character(len=5),intent(out) :: ptgroup
2414 !arrays
2415  integer,intent(in) :: symrel(3,3,nsym)
2416 
2417 !Local variables-------------------------------
2418 !scalars
2419  integer :: inversion,iorder,isym
2420  character(len=500) :: message
2421 !arrays
2422  integer :: identity(3,3),matrix(3,3),n_axes(-6:6),trial(3,3)
2423  integer,allocatable :: determinant(:),order(:),root_invers(:)
2424  character(len=2),allocatable :: ptsym(:)
2425 
2426 !**************************************************************************
2427 
2428 !DEBUG
2429 !write(std_out,*)' symptgroup : enter'
2430 !do isym=1,nsym
2431 !write(std_out,'(i3,2x,9i3)' )isym,symrel(:,:,isym)
2432 !end do
2433 !ENDDEBUG
2434 
2435  identity(:,:)=0
2436  identity(1,1)=1 ; identity(2,2)=1 ; identity(3,3)=1
2437  n_axes(:)=0
2438 
2439  ABI_MALLOC(determinant,(nsym))
2440  ABI_MALLOC(order,(nsym))
2441  ABI_MALLOC(ptsym,(nsym))
2442  ABI_MALLOC(root_invers,(nsym))
2443 
2444 !Get the determinant
2445  call symdet(determinant,nsym,symrel)
2446 
2447 !Get the order of each the symmetry operation, as well as the maximal order
2448 !Also, examine whether each symmetry operation is the inversion, or a root
2449 !of the inversion (like -3)
2450 !Finally, decide which kind of point symmetry operation it is
2451  do isym=1,nsym
2452 
2453    trial(:,:)=identity(:,:)
2454    matrix(:,:)=symrel(:,:,isym)
2455    order(isym)=0
2456    root_invers(isym)=0
2457    do iorder=1,6
2458      trial=matmul(matrix,trial)
2459      if(sum((trial-identity)**2)==0)then
2460        order(isym)=iorder
2461        exit
2462      end if
2463      if(sum((trial+identity)**2)==0)then
2464        root_invers(isym)=iorder
2465        if(iorder==1)inversion=isym
2466      end if
2467    end do
2468    if(order(isym)==0)then
2469      write(message, '(a,i0,a)' )' The symmetry operation number',isym,' is not a root of unity'
2470      ABI_BUG(message)
2471    end if
2472 
2473 !  determinant, order and root_invers are enough to determine the
2474 !  kind of symmetry operation
2475    ptsym(isym)='no'
2476    select case(order(isym))
2477    case(1)
2478      ptsym(isym)=' 1' ; n_axes(1)=n_axes(1)+1
2479    case(2)
2480      if(determinant(isym)== 1)then
2481        ptsym(isym)=' 2' ; n_axes(2)=n_axes(2)+1
2482      else if(determinant(isym)==-1 .and. root_invers(isym)==1)then
2483        ptsym(isym)='-1' ; n_axes(-1)=n_axes(-1)+1
2484      else if(determinant(isym)==-1 .and. root_invers(isym)==0)then
2485        ptsym(isym)='-2' ; n_axes(-2)=n_axes(-2)+1
2486      end if
2487    case(3)
2488      ptsym(isym)=' 3' ; n_axes(3)=n_axes(3)+1
2489    case(4)
2490      if(determinant(isym)== 1)then
2491        ptsym(isym)=' 4' ; n_axes(4)=n_axes(4)+1
2492      else if(determinant(isym)==-1)then
2493        ptsym(isym)='-4' ; n_axes(-4)=n_axes(-4)+1
2494      end if
2495    case(6)
2496      if(determinant(isym)== 1)then
2497        ptsym(isym)=' 6' ; n_axes(6)=n_axes(6)+1
2498      else if(determinant(isym)==-1 .and. root_invers(isym)==3)then
2499        ptsym(isym)='-3' ; n_axes(-3)=n_axes(-3)+1
2500      else if(determinant(isym)==-1 .and. root_invers(isym)==0)then
2501        ptsym(isym)='-6' ; n_axes(-6)=n_axes(-6)+1
2502      end if
2503    end select
2504 
2505    if(ptsym(isym)=='no')then
2506      write(message,'(a,i4,a,a,a,i4,a,a,i4,a,a,i4)' )&
2507 &     'The symmetry operation number',isym,' could not be identified',ch10,&
2508 &     'order(isym)      =',order(isym),ch10,&
2509 &     'determinant(isym)=',determinant(isym),ch10,&
2510 &     'root_invers(isym)=',root_invers(isym)
2511      ABI_BUG(message)
2512    end if
2513 
2514  end do
2515 
2516  iholohedry=0
2517  if     (sum((n_axes-(/0,0,0,0,0,0, 0 ,1,0,0,0,0,0/))**2)==0)then
2518    ptgroup='    1' ; iholohedry=1
2519  else if(sum((n_axes-(/0,0,0,0,0,1, 0 ,1,0,0,0,0,0/))**2)==0)then
2520    ptgroup='   -1' ; iholohedry=1
2521 
2522  else if(sum((n_axes-(/0,0,0,0,0,0, 0 ,1,1,0,0,0,0/))**2)==0)then
2523    ptgroup='    2' ; iholohedry=2
2524  else if(sum((n_axes-(/0,0,0,0,1,0, 0 ,1,0,0,0,0,0/))**2)==0)then
2525    ptgroup='   -2' ; iholohedry=2
2526  else if(sum((n_axes-(/0,0,0,0,1,1, 0 ,1,1,0,0,0,0/))**2)==0)then
2527    ptgroup='  2/m' ; iholohedry=2
2528 
2529  else if(sum((n_axes-(/0,0,0,0,0,0, 0 ,1,3,0,0,0,0/))**2)==0)then
2530    ptgroup='  222' ; iholohedry=3
2531  else if(sum((n_axes-(/0,0,0,0,2,0, 0 ,1,1,0,0,0,0/))**2)==0)then
2532    ptgroup='  mm2' ; iholohedry=3
2533  else if(sum((n_axes-(/0,0,0,0,3,1, 0 ,1,3,0,0,0,0/))**2)==0)then
2534    ptgroup='  mmm' ; iholohedry=3
2535 
2536  else if(sum((n_axes-(/0,0,0,0,0,0, 0 ,1,1,0,2,0,0/))**2)==0)then
2537    ptgroup='    4' ; iholohedry=4
2538  else if(sum((n_axes-(/0,0,2,0,0,0, 0 ,1,1,0,0,0,0/))**2)==0)then
2539    ptgroup='   -4' ; iholohedry=4
2540  else if(sum((n_axes-(/0,0,2,0,1,1, 0 ,1,1,0,2,0,0/))**2)==0)then
2541    ptgroup='  4/m' ; iholohedry=4
2542  else if(sum((n_axes-(/0,0,0,0,0,0, 0 ,1,5,0,2,0,0/))**2)==0)then
2543    ptgroup='  422' ; iholohedry=4
2544  else if(sum((n_axes-(/0,0,0,0,4,0, 0 ,1,1,0,2,0,0/))**2)==0)then
2545    ptgroup='  4mm' ; iholohedry=4
2546  else if(sum((n_axes-(/0,0,2,0,2,0, 0 ,1,3,0,0,0,0/))**2)==0)then
2547    ptgroup=' -42m' ; iholohedry=4
2548  else if(sum((n_axes-(/0,0,2,0,5,1, 0 ,1,5,0,2,0,0/))**2)==0)then
2549    ptgroup='4/mmm' ; iholohedry=4
2550 
2551  else if(sum((n_axes-(/0,0,0,0,0,0, 0 ,1,0,2,0,0,0/))**2)==0)then
2552    ptgroup='    3' ; iholohedry=5
2553  else if(sum((n_axes-(/0,0,0,2,0,1, 0 ,1,0,2,0,0,0/))**2)==0)then
2554    ptgroup='   -3' ; iholohedry=5
2555  else if(sum((n_axes-(/0,0,0,0,0,0, 0 ,1,3,2,0,0,0/))**2)==0)then
2556    ptgroup='   32' ; iholohedry=5
2557  else if(sum((n_axes-(/0,0,0,0,3,0, 0 ,1,0,2,0,0,0/))**2)==0)then
2558    ptgroup='   3m' ; iholohedry=5
2559  else if(sum((n_axes-(/0,0,0,2,3,1, 0 ,1,3,2,0,0,0/))**2)==0)then
2560    ptgroup='  -3m' ; iholohedry=5
2561 
2562  else if(sum((n_axes-(/0,0,0,0,0,0, 0 ,1,1,2,0,0,2/))**2)==0)then
2563    ptgroup='    6' ; iholohedry=6
2564  else if(sum((n_axes-(/2,0,0,0,1,0, 0 ,1,0,2,0,0,0/))**2)==0)then
2565    ptgroup='   -6' ; iholohedry=6
2566  else if(sum((n_axes-(/2,0,0,2,1,1, 0 ,1,1,2,0,0,2/))**2)==0)then
2567    ptgroup='  6/m' ; iholohedry=6
2568  else if(sum((n_axes-(/0,0,0,0,0,0, 0 ,1,7,2,0,0,2/))**2)==0)then
2569    ptgroup='  622' ; iholohedry=6
2570  else if(sum((n_axes-(/0,0,0,0,6,0, 0 ,1,1,2,0,0,2/))**2)==0)then
2571    ptgroup='  6mm' ; iholohedry=6
2572  else if(sum((n_axes-(/2,0,0,0,4,0, 0 ,1,3,2,0,0,0/))**2)==0)then
2573    ptgroup=' -62m' ; iholohedry=6
2574  else if(sum((n_axes-(/2,0,0,2,7,1, 0 ,1,7,2,0,0,2/))**2)==0)then
2575    ptgroup='6/mmm' ; iholohedry=6
2576 
2577  else if(sum((n_axes-(/0,0,0,0,0,0, 0 ,1,3,8,0,0,0/))**2)==0)then
2578    ptgroup='   23' ; iholohedry=7
2579  else if(sum((n_axes-(/0,0,0,8,3,1, 0 ,1,3,8,0,0,0/))**2)==0)then
2580    ptgroup='  m-3' ; iholohedry=7
2581  else if(sum((n_axes-(/0,0,0,0,0,0, 0 ,1,9,8,6,0,0/))**2)==0)then
2582    ptgroup='  432' ; iholohedry=7
2583  else if(sum((n_axes-(/0,0,6,0,6,0, 0 ,1,3,8,0,0,0/))**2)==0)then
2584    ptgroup=' -43m' ; iholohedry=7
2585  else if(sum((n_axes-(/0,0,6,8,9,1, 0 ,1,9,8,6,0,0/))**2)==0)then
2586    ptgroup=' m-3m' ; iholohedry=7
2587 
2588  end if
2589 
2590  if(iholohedry==0)then
2591    ABI_ERROR_CLASS('Could not find the point group', "TolSymError")
2592  end if
2593 
2594 !DEBUG
2595 !do isym=1,nsym
2596 !write(std_out,'(a,3i5)' )&
2597 !&  ' symptgroup : isym,determinant,order=',isym,determinant(isym),order(isym)
2598 !end do
2599 
2600 !write(std_out,'(a,13i3)' )' symptgroup : n_axes(-6:6)=',n_axes(-6:6)
2601 !write(std_out,*)' iholohedry, ptgroup=',iholohedry,',',ptgroup
2602 !ENDDEBUG
2603 
2604  ABI_FREE(determinant)
2605  ABI_FREE(order)
2606  ABI_FREE(ptsym)
2607  ABI_FREE(root_invers)
2608 
2609 end subroutine symptgroup