1c
2c  subroutine spgen. contains the data necessary to produce the generators
3c  for the 230 crystallographic space groups and the 46 molecular point
4c  groups found in appendix III of "chemical applications of group theory"
5c  by F.A. Cotton, Wiley Interscience, isbn: 0 471 17570 6
6c
7c  detailed data on the space groups can be found in the International
8c  Tables for Crystallograpy Vol. A, Space Group Symmetry
9c
10c                                           A.C. Hess and D.G. Clerc
11c
12c***********************************************************************
13      subroutine spgen(itype,numgrp,numset,symops,cntvec,numgen,numvec,
14     $     group_name,max_gen,s_vec,oprint)
15c
16c--->Note: array "gens" in gensym.f = arrray "symops" in spgen.f
17C$Id$
18      implicit real*8 (a-h,o-z)
19#include "errquit.fh"
20      character*10 spgnam(230),lyrnam(80),linenam(99),molname(46)
21      dimension tranv(46,3),roto(3,4,30)
22      dimension igen(1:230,40)
23      dimension ilgen(1:80,40)
24      dimension ipgen(1:99,40)
25      dimension imgen(1:46,40)
26      dimension cntvec(3,3),symops(18,4),vec(3),igenstr(40)
27      character*(*) group_name
28      logical oprint
29c
30c-->s_vec contains the offset vectors for the generators.
31      integer max_gen
32      double precision s_vec(max_gen,3)
33c
34c--> equivs.
35      double precision tranvl(46*3)
36      equivalence (tranvl, tranv)
37c
38      double precision rotol(3*4*30)
39      equivalence (rotol, roto)
40c
41      integer igenl(230*40)
42      equivalence (igenl, igen)
43c
44      integer ilgenl(80*40)
45      equivalence (ilgenl, ilgen)
46c
47      integer ipgenl(99*40)
48      equivalence (ipgenl, ipgen)
49c
50      integer imgenl(46*40)
51      equivalence (imgenl, imgen)
52c
53c--> names of the 3-dimensional space groups
54c
55      data (spgnam(i),i=1,95) /
56     &'        P1','       P-1','        P2','      P2_1','        C2',
57     &'        Pm','        Pc','        Cm','        Cc','      P2/m',
58     &'    P2_1/m','      C2/m','      P2/c','    P2_1/c','      C2/c',
59     &'      P222','    P222_1','  P2_12_12','P2_12_12_1','    C222_1',
60     &'      C222','      F222','      I222','I2_12_12_1','      Pmm2',
61     &'    Pmc2_1','      Pcc2','      Pma2','    Pca2_1','      Pnc2',
62     &'    Pmn2_1','      Pba2','    Pna2_1','      Pnn2','      Cmm2',
63     &'    Cmc2_1','      Ccc2','      Amm2','      Abm2','      Ama2',
64     &'      Aba2','      Fmm2','      Fdd2','      Imm2','      Iba2',
65     &'      Ima2','      Pmmm','      Pnnn','      Pccm','      Pban',
66     &'      Pmma','      Pnna','      Pmna','      Pcca','      Pbam',
67     &'      Pccn','      Pbcm','      Pnnm','      Pmmn','      Pbcn',
68     &'      Pbca','      Pnma','      Cmcm','      Cmca','      Cmmm',
69     &'      Cccm','      Cmma','      Ccca','      Fmmm','      Fddd',
70     &'      Immm','      Ibam','      Ibca','      Imma','        P4',
71     &'      P4_1','      P4_2','      P4_3','        I4','      I4_1',
72     &'       P-4','       I-4','      P4/m','    P4_2/m','      P4/n',
73     &'    P4_2/n','      I4/m','    I4_1/a','      P422','    P42_12',
74     &'    P4_122','  P4_12_12','    P4_222','  P4_22_12','    P4_322'/
75      data (spgnam(i),i=96,190) /
76     &'  P4_32_12','      I422','    I4_122','      P4mm','      P4bm',
77     &'    P4_2cm','    P4_2nm','      P4cc','      P4nc','    P4_2mc',
78     &'    P4_2bc','      I4mm','      I4cm','    I4_1md','    I4_1cd',
79     &'     P-42m','     P-42c','   P-42_1m','   P-42_1c','     P-4m2',
80     &'     P-4c2','     P-4b2','     P-4n2','     I-4m2','     I-4c2',
81     &'     I-42m','     I-42d','    P4/mmm','    P4/mcc','    P4/nbm',
82     &'    P4/nnc','    P4/mbm','    P4/mnc','    P4/nmm','    P4/ncc',
83     &'  P4_2/mmc','  P4_2/mcm','  P4_2/nbc','  P4_2/nnm','  P4_2/mbc',
84     &'  P4_2/mnm','  P4_2/nmc','  P4_2/ncm','    I4/mmm','    I4/mcm',
85     &'  I4_1/amd','  I4_1/acd','        P3','      P3_1','      P3_2',
86     &'        R3','       P-3','       R-3','      P312','      P321',
87     &'    P3_112','    P3_121','    P3_212','    P3_221','       R32',
88     &'      P3m1','      P31m','      P3c1','      P31c','       R3m',
89     &'       R3c','     P-31m','     P-31c','     P-3m1','     P-3c1',
90     &'      R-3m','      R-3c','        P6','      P6_1','      P6_5',
91     &'      P6_2','      P6_4','      P6_3','       P-6','      P6/m',
92     &'    P6_3/m','      P622','    P6_122','    P6_522','    P6_222',
93     &'    P6_422','    P6_322','      P6mm','      P6cc','    P6_3cm',
94     &'    P6_3mc','     P-6m2','     P-6c2','     P-62m','     P-62c'/
95      data (spgnam(i),i=191,230) /
96     &'    P6/mmm','    P6/mcc','  P6_3/mcm','  P6_3/mmc','       P23',
97     &'       F23','       I23','     P2_13','     I2_13','      Pm-3',
98     &'      Pn-3','      Fm-3','      Fd-3','      Im-3','      Pa-3',
99     &'      Ia-3','      P432','    P4_232','      F432','    F4_132',
100     &'      I432','    P4_332','    P4_132','    I4_132','     P-43m',
101     &'     F-43m','     I-43m','     P-43n','     F-43c','     I-43d',
102     &'     Pm-3m','     Pn-3n','     Pm-3n','     Pn-3m','     Fm-3m',
103     &'     Fm-3c','     Fd-3m','     Fd-3c','     Im-3m','     Ia-3d'/
104c
105cdgc---> names of the 80 layer groups
106c
107      data (lyrnam(i),i=1,80) /
108     &'        P1','       P-1','      P112','      P11m','      P11a',
109     &'    P112/m','    P112/a','      P211','    P2_111','      C211',
110     &'      Pm11','      Pb11','      Cm11','    P2/m11','  P2_1/m11',
111     &'    C2/m11','    P2/b11','  P2_1/b11','      P222','    P2_122',
112     &'  P2_12_12','      C222','      Pmm2','      Pma2','      Pba2',
113     &'      Cmm2','      P2mm','    P2_1am','    P2_1ma','      P2mb',
114     &'    P2_1mn','      P2aa','    P2_1ab','      P2an','      C2mm',
115     &'      C2mb','      Pmmm','      Pmam','      Pmma','      Pmmn',
116     &'      Pbam','      Pmaa','      Pman','      Pbma','      Pbaa',
117     &'      Pban','      Cmmm','      Cmma','        P4','       P-4',
118     &'      P4/m','      P4/n','      P422','    P42_12','      P4mm',
119     &'      P4bm','     P-42m','   P-42_1m','     P-4m2','     P-4b2',
120     &'    P4/mmm','    P4/nbm','    P4/mbm','    P4/nmm','        P3',
121     &'       P-3','      P312','      P321','      P3m1','      P31m',
122     &'     P-31m','     P-3m1','        P6','       P-6','      P6/m',
123     &'      P622','      P6mm','     P-6m2','     P-62m','    P6/mmm'/
124c
125cdgc--> names of the 1-dimensional line groups (z direction)
126c
127      data (linenam(i),i=1,99) /
128     &'        P1','       P-1','      P112','    P112_1',
129     &'      P121','      P111','      P11m','      P1m1',
130     &'      P1c1','      Pm11','      Pc11','    P112/m',
131     &'  P112_1/m','    P12/m1','    P12/c1','    P2/m11',
132     &'    P2/c11','      P222','    P222_1','      Pmm2',
133     &'    Pmc2_1','    Pcm2_1','      Pcc2','      Pm2m',
134     &'      Pc2m','      P2mm','      P2cm','      Pmmm',
135     &'      Pccm','      Pcmm','      Pmcm','        P4',
136     &'      P4_1','      P4_2','      P4_3','       P-4',
137     &'      P4/m','    P4_2/m','      P422','    P4_122',
138     &'    P4_222','    P4_322','      P4mm','    P4_2cm',
139     &'      P4cc','    P4_2mc','     P-42m','     P-42c',
140     &'     P-4m2','     P-4c2','    P4/mmm','    P4/mcc',
141     &'  P4_2/mmc','  P4_2/mcm','        P3','      P3_1',
142     &'      P3_2','       P-3','      P312','    P3_112',
143     &'    P3_212','      P321','    P3_121','    P3_221',
144     &'      P3m1','      P3c1','      P31m','      P31c',
145     &'     P-31m','     P-31c','     P-3m1','     P-3c1',
146     &'        P6','      P6_1','      P6_5','      P6_2',
147     &'      P6_4','      P6_3','       P-6','      P6/m',
148     &'    P6_3/m','      P622','    P6_122','    P6_522',
149     &'    P6_222','    P6_422','    P6_322','      P6mm',
150     &'      P6cc','    P6_3cm','    P6_3mc','     P-6m2',
151     &'     P-6c2','     P-62m','     P-62c','    P6/mmm',
152     &'    P6/mcc','  P6_3/mcm','  P6_3/mmc'/
153c
154cdgc--> names of the molecular point groups
155c
156      data molname/
157     &'C1        ','Cs        ','Ci        ','C2        ','C3        ',
158     &'C4        ','C5        ','C6        ','C7        ','C8        ',
159     &'D2        ','D3        ','D4        ','D5        ','D6        ',
160     &'C2v       ','C3v       ','C4v       ','C5v       ','C6v       ',
161     &'C2h       ','C3h       ','C4h       ','C5h       ','C6h       ',
162     &'D2h       ','D3h       ','D4h       ','D5h       ','D6h       ',
163     &'D8h       ','D2d       ','D3d       ','D4d       ','D5d       ',
164     &'D6d       ',' S4       ',' S6       ',' S8       ','  T       ',
165     &' Th       ',' Td       ','  O       ',' Oh       ','  I       ',
166     &' Ih       '/
167c
168c--> fundamental generating translation vectors (46 of them)
169c
170      data (tranvl(i), i=   1,  57)/
171     & 0.5000000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
172     & 0.5000000000000000d0, 0.5000000000000000d0, 0.0000000000000000d0,
173     & 0.5000000000000000d0, 0.2500000000000000d0, 0.0000000000000000d0,
174     & 0.0000000000000000d0, 0.2500000000000000d0, 0.2500000000000000d0,
175     & 0.0000000000000000d0, 0.2500000000000000d0, 0.0000000000000000d0,
176     & 0.0000000000000000d0, 0.1250000000000000d0, 0.1250000000000000d0,
177     & 0.1250000000000000d0, 0.3750000000000000d0, 0.3750000000000000d0,
178     & 0.3750000000000000d0, 0.0000000000000000d0, 0.7500000000000000d0,
179     & 0.0000000000000000d0,-0.2500000000000000d0, 0.0000000000000000d0,
180     & 0.2500000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
181     & 0.0000000000000000d0, 0.2500000000000000d0,-0.2500000000000000d0,
182     & 0.2500000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
183     & 0.3750000000000000d0, 0.3750000000000000d0, 0.1250000000000000d0,
184     & 0.1250000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
185     & 0.0000000000000000d0,-0.3333333333333333d0, 0.6666666666666666d0,
186     & 0.3333333333333333d0, 0.0000000000000000d0, 0.5000000000000000d0,
187     & 0.0000000000000000d0, 0.5000000000000000d0, 0.0000000000000000d0,
188     & 0.5000000000000000d0, 0.5000000000000000d0, 0.0000000000000000d0,
189     & 0.2500000000000000d0, 0.0000000000000000d0, 0.2500000000000000d0/
190      data (tranvl(i), i=  58, 114)/
191     & 0.0000000000000000d0, 0.2500000000000000d0, 0.2500000000000000d0,
192     & 0.1250000000000000d0, 0.0000000000000000d0, 0.1250000000000000d0,
193     & 0.0000000000000000d0, 0.1250000000000000d0, 0.3750000000000000d0,
194     & 0.0000000000000000d0, 0.3750000000000000d0, 0.0000000000000000d0,
195     & 0.7500000000000000d0,-0.2500000000000000d0, 0.2500000000000000d0,
196     &-0.2500000000000000d0, 0.0000000000000000d0, 0.2500000000000000d0,
197     &-0.2500000000000000d0, 0.5000000000000000d0, 0.5000000000000000d0,
198     & 0.5000000000000000d0, 0.0000000000000000d0, 0.2500000000000000d0,
199     &-0.2500000000000000d0, 0.1250000000000000d0, 0.0000000000000000d0,
200     & 0.3750000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
201     & 0.0000000000000000d0, 0.0000000000000000d0,-0.1666666666666667d0,
202     & 0.3333333333333333d0, 0.6666666666666666d0, 0.0000000000000000d0,
203     & 0.0000000000000000d0, 0.5000000000000000d0, 0.0000000000000000d0,
204     & 0.5000000000000000d0, 0.5000000000000000d0, 0.5000000000000000d0,
205     & 0.0000000000000000d0, 0.0000000000000000d0, 0.2500000000000000d0,
206     & 0.0000000000000000d0, 0.2500000000000000d0, 0.2500000000000000d0,
207     & 0.2500000000000000d0, 0.0000000000000000d0, 0.1250000000000000d0,
208     & 0.0000000000000000d0, 0.1250000000000000d0, 0.1250000000000000d0,
209     & 0.0000000000000000d0, 0.3750000000000000d0, 0.3750000000000000d0/
210      data (tranvl(i),i= 115, 138)/
211     & 0.7500000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
212     & 0.0000000000000000d0, 0.2500000000000000d0, 0.1250000000000000d0,
213     & 0.1250000000000000d0, 0.1250000000000000d0, 0.2500000000000000d0,
214     & 0.0000000000000000d0, 0.0000000000000000d0, 0.3750000000000000d0,
215     & 0.3750000000000000d0, 0.3750000000000000d0, 0.0000000000000000d0,
216     & 0.1250000000000000d0, 0.0000000000000000d0, 0.3750000000000000d0,
217     & 0.3333333333333333d0, 0.6666666666666666d0, 0.1666666666666667d0,
218     & 0.0000000000000000d0, 0.3333333333333333d0, 0.6666666666666666d0/
219c      write(*,*) (i,tranvl(i),i=1,138)
220c      do 1220 i=1,46
221c         write(*,1221) i,(tranv(i,j),j=1,3)
222c1220  continue
223c1221  format('tranv(',i2,',1-3)=',3(f8.5,1x))
224c
225c--> fundamental generating rotoinversion operators (13) total
226c     contains information for both molecules and 3-dim solids
227c
228      data (rotol(i),i=   1,  57)/
229     & 1.0000000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
230     & 0.0000000000000000d0, 1.0000000000000000d0, 0.0000000000000000d0,
231     & 0.0000000000000000d0, 0.0000000000000000d0, 1.0000000000000000d0,
232     & 0.0000000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
233     &-1.0000000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
234     & 0.0000000000000000d0,-1.0000000000000000d0, 0.0000000000000000d0,
235     & 0.0000000000000000d0, 0.0000000000000000d0,-1.0000000000000000d0,
236     & 0.0000000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
237     &-1.0000000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
238     & 0.0000000000000000d0, 1.0000000000000000d0, 0.0000000000000000d0,
239     & 0.0000000000000000d0, 0.0000000000000000d0,-1.0000000000000000d0,
240     & 0.0000000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
241     &-1.0000000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
242     & 0.0000000000000000d0,-1.0000000000000000d0, 0.0000000000000000d0,
243     & 0.0000000000000000d0, 0.0000000000000000d0, 1.0000000000000000d0,
244     & 0.0000000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
245     & 1.0000000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
246     & 0.0000000000000000d0, 1.0000000000000000d0, 0.0000000000000000d0,
247     & 0.0000000000000000d0, 0.0000000000000000d0,-1.0000000000000000d0/
248      data (rotol(i),i=  58, 114)/
249     & 0.0000000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
250     & 1.0000000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
251     & 0.0000000000000000d0,-1.0000000000000000d0, 0.0000000000000000d0,
252     & 0.0000000000000000d0, 0.0000000000000000d0, 1.0000000000000000d0,
253     & 0.0000000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
254     & 0.0000000000000000d0, 1.0000000000000000d0, 0.0000000000000000d0,
255     &-1.0000000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
256     & 0.0000000000000000d0, 0.0000000000000000d0, 1.0000000000000000d0,
257     & 0.0000000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
258     & 0.0000000000000000d0,-1.0000000000000000d0, 0.0000000000000000d0,
259     & 1.0000000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
260     & 0.0000000000000000d0, 0.0000000000000000d0,-1.0000000000000000d0,
261     & 0.0000000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
262     & 0.0000000000000000d0, 1.0000000000000000d0, 0.0000000000000000d0,
263     &-1.0000000000000000d0,-1.0000000000000000d0, 0.0000000000000000d0,
264     & 0.0000000000000000d0, 0.0000000000000000d0, 1.0000000000000000d0,
265     & 0.0000000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
266     & 0.0000000000000000d0, 1.0000000000000000d0, 0.0000000000000000d0,
267     & 0.0000000000000000d0, 0.0000000000000000d0, 1.0000000000000000d0/
268      data (rotol(i),i= 115, 171)/
269     & 1.0000000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
270     & 0.0000000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
271     & 0.0000000000000000d0,-1.0000000000000000d0, 0.0000000000000000d0,
272     &-1.0000000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
273     & 0.0000000000000000d0, 0.0000000000000000d0,-1.0000000000000000d0,
274     & 0.0000000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
275     & 0.0000000000000000d0, 1.0000000000000000d0, 0.0000000000000000d0,
276     & 1.0000000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
277     & 0.0000000000000000d0, 0.0000000000000000d0,-1.0000000000000000d0,
278     & 0.0000000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
279     & 0.0000000000000000d0,-1.0000000000000000d0, 0.0000000000000000d0,
280     &-1.0000000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
281     & 0.0000000000000000d0, 0.0000000000000000d0, 1.0000000000000000d0,
282     & 0.0000000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
283     & 0.0000000000000000d0, 1.0000000000000000d0, 0.0000000000000000d0,
284     & 1.0000000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
285     & 0.0000000000000000d0, 0.0000000000000000d0, 1.0000000000000000d0,
286     & 0.0000000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
287     & 0.3090169943749475d0, 0.9510565162951536d0, 0.0000000000000000d0/
288      data (rotol(i),i= 172, 228)/
289     &-0.9510565162951536d0, 0.3090169943749475d0, 0.0000000000000000d0,
290     & 0.0000000000000000d0, 0.0000000000000000d0, 1.0000000000000000d0,
291     & 0.0000000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
292     &-0.8090169943749475d0,-0.5877852522924731d0, 0.0000000000000000d0,
293     & 0.5877852522924731d0,-0.8090169943749475d0, 0.0000000000000000d0,
294     & 0.0000000000000000d0, 0.0000000000000000d0, 1.0000000000000000d0,
295     & 0.0000000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
296     & 0.6234898018587335d0, 0.7818314824680298d0, 0.0000000000000000d0,
297     &-0.7818314824680298d0, 0.6234898018587335d0, 0.0000000000000000d0,
298     & 0.0000000000000000d0, 0.0000000000000000d0, 1.0000000000000000d0,
299     & 0.0000000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
300     &-0.9009688679024191d0, 0.4338837391175581d0, 0.0000000000000000d0,
301     &-0.4338837391175581d0,-0.9009688679024191d0, 0.0000000000000000d0,
302     & 0.0000000000000000d0, 0.0000000000000000d0, 1.0000000000000000d0,
303     & 0.0000000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
304     & 0.7071067811865475d0, 0.7071067811865475d0, 0.0000000000000000d0,
305     &-0.7071067811865475d0, 0.7071067811865475d0, 0.0000000000000000d0,
306     & 0.0000000000000000d0, 0.0000000000000000d0, 1.0000000000000000d0,
307     & 0.0000000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0/
308      data (rotol(i),i= 229, 285)/
309     &-0.7071067811865475d0, 0.7071067811865475d0, 0.0000000000000000d0,
310     &-0.7071067811865475d0,-0.7071067811865475d0, 0.0000000000000000d0,
311     & 0.0000000000000000d0, 0.0000000000000000d0, 1.0000000000000000d0,
312     & 0.0000000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
313     & 0.7071067811865475d0, 0.7071067811865475d0, 0.0000000000000000d0,
314     &-0.7071067811865475d0, 0.7071067811865475d0, 0.0000000000000000d0,
315     & 0.0000000000000000d0, 0.0000000000000000d0,-1.0000000000000000d0,
316     & 0.0000000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
317     &-0.7071067811865475d0, 0.7071067811865475d0, 0.0000000000000000d0,
318     &-0.7071067811865475d0,-0.7071067811865475d0, 0.0000000000000000d0,
319     & 0.0000000000000000d0, 0.0000000000000000d0,-1.0000000000000000d0,
320     & 0.0000000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
321     & 0.8660254037844386d0, 0.5000000000000000d0, 0.0000000000000000d0,
322     &-0.5000000000000000d0, 0.8660254037844386d0, 0.0000000000000000d0,
323     & 0.0000000000000000d0, 0.0000000000000000d0,-1.0000000000000000d0,
324     & 0.0000000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
325     & 0.0000000000000000d0, 1.0000000000000000d0, 0.0000000000000000d0,
326     &-1.0000000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
327     & 0.0000000000000000d0, 0.0000000000000000d0,-1.0000000000000000d0/
328      data (rotol(i),i= 286, 342)/
329     & 0.0000000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
330     & 0.6708203932499370d0, 0.6881909602355868d0,-0.2763932022500210d0,
331     &-0.1624598481164533d0, 0.5000000000000000d0, 0.8506508083520400d0,
332     & 0.7236067977499789d0,-0.5257311121191337d0, 0.4472135954999580d0,
333     & 0.0000000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
334     & 1.0000000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
335     & 0.0000000000000000d0,-1.0000000000000000d0, 0.0000000000000000d0,
336     & 0.0000000000000000d0, 0.0000000000000000d0,-1.0000000000000000d0,
337     & 0.0000000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
338     &-0.0527864045000420d0, 0.6881909602355868d0,-0.7236067977499789d0,
339     & 0.6881909602355869d0,-0.5000000000000000d0,-0.5257311121191336d0,
340     &-0.7236067977499790d0,-0.5257311121191337d0,-0.4472135954999580d0,
341     & 0.0000000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
342     &-0.1381966011250104d0,-0.4253254041760200d0,-0.8944271909999160d0,
343     & 0.9510565162951536d0,-0.3090169943749475d0, 0.0000000000000000d0,
344     &-0.2763932022500212d0,-0.8506508083520401d0, 0.4472135954999581d0,
345     & 0.0000000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
346     &-0.5000000000000000d0, 0.8660254037844386d0, 0.0000000000000000d0,
347     &-0.8660254037844386d0,-0.5000000000000000d0, 0.0000000000000000d0/
348      data (rotol(i),i= 343, 360)/
349     & 0.0000000000000000d0, 0.0000000000000000d0, 1.0000000000000000d0,
350     & 0.0000000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
351     &-1.0000000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0,
352     & 0.0000000000000000d0, 1.0000000000000000d0, 0.0000000000000000d0,
353     & 0.0000000000000000d0, 0.0000000000000000d0, 1.0000000000000000d0,
354     & 0.0000000000000000d0, 0.0000000000000000d0, 0.0000000000000000d0/
355c
356c      write(*,*) (i,rotol(i),i=1,348)
357c      do 1320 k=1,29
358c         do 1319 i=1,3
359c            write(*,1321) i,k,(roto(i,j,k),j=1,4)
360c1319     continue
361c      write(*,*) ' '
362c1320  continue
363c1321  format('roto(',i2,',1-4,',i2,')=',4(f8.5,1x))
364c
365c--> pointer arrays for the 230 space groups, stored in groups of
366c    25. see file space_group_generators and makedat.f for a defn.
367c    of this pointer structure
368      data (igenl(i),i=   1, 380)/
369     & 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1,
370     & 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
371     & 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1,
372     & 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
373     & 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
374     & 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
375     & 1, 1, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1,
376     & 2, 2, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2,
377     & 2, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
378     & 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
379     & 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
380     & 1, 2, 1, 2, 1, 1, 2, 2, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0,
381     & 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 3, 1, 1, 0, 0, 0, 0, 0, 0,
382     & 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 3, 3, 1, 1, 1, 0, 0, 0, 0,
383     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 3, 3,
384     & 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0,
385     & 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
386     & 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
387     & 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 2, 0, 2, 0, 0/
388      data (igenl(i),i= 381, 760)/
389     & 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 2, 2, 0, 0, 0,
390     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
391     & 0, 0, 0, 0, 0, 3, 1, 0, 1, 0, 0, 3, 3, 1, 0, 1, 0, 0, 3, 3,
392     & 1, 0, 0, 1, 0, 3, 1, 0, 3, 1, 0, 0, 0, 0, 3, 3, 3, 3, 1, 1,
393     & 0, 0, 0, 0, 4, 0, 0, 4, 4, 0, 0, 4, 0, 0, 4, 0, 0, 0, 0, 4,
394     & 4, 6, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 6, 6, 6,
395     & 6, 6, 6, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
396     & 0, 0, 4, 4, 4, 4, 4, 4, 6, 6, 7, 7, 7, 7, 0, 0, 0, 0, 7, 7,
397     & 0, 7, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0,
398     & 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7,
399     & 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7,
400     & 7, 7, 0, 0, 0,45, 0,45, 0, 0, 0, 0, 0, 0,45, 0, 0, 0, 0,45,
401     &45, 0, 0, 0, 0,45,45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
402     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 0, 7, 0,
403     & 0, 6, 6, 7, 0, 7, 0, 0, 6, 6, 7, 0, 0, 7, 0, 6, 7, 0, 6, 7,
404     & 0, 0, 0, 0, 6, 6, 6, 6, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
405     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0,
406     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 0, 0, 0, 0, 0, 0, 0,
407     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5/
408      data (igenl(i),i= 761,1140)/
409     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
410     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
411     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
412     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,46, 0,46, 0, 0,
413     & 0, 0, 0, 0,46, 0, 0, 0, 0,46,46, 0, 0, 0, 0,46,46, 0, 0, 0,
414     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
415     & 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 5, 5, 0, 0, 0, 0, 0, 5, 5,
416     & 0, 0, 0, 0, 0, 5, 0, 0, 5, 0, 0, 0, 0, 0, 5, 5, 5, 5, 0, 0,
417     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
418     & 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
419     & 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
420     & 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
421     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
422     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
423     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
424     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
425     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
426     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0,
427     & 0, 4, 4, 0, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 4, 0, 0, 4, 0/
428      data (igenl(i),i=1141,1520)/
429     & 0, 0, 0, 0, 4, 4, 4, 4, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
430     & 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
431     & 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3,
432     & 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
433     & 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3,
434     & 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
435     & 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4,
436     & 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 2, 2, 2, 2,
437     & 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 2, 2, 2,
438     & 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
439     & 4, 4, 4, 4, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
440     & 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
441     & 0, 0, 0, 2, 0, 0, 3, 0, 3, 0, 2, 0, 0, 2, 0, 0, 3, 0, 3, 3,
442     & 0, 0, 0, 3, 0, 3, 0, 0, 3, 0, 3, 0, 3, 0, 0, 3, 0, 0, 0, 0,
443     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 3,
444     & 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 3, 0, 3, 0, 3,
445     & 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 3, 3, 0, 0, 3, 3, 0, 3, 0, 0,
446     & 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
447     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0/
448      data (igenl(i),i=1521,1900)/
449     & 3, 3, 0,41,42, 0, 0, 0, 0, 0,41,41,42,42, 0, 0, 0, 0, 0, 0,
450     & 0, 0, 0, 0, 0, 0, 0, 0,41,42,42,41, 0, 0, 0, 0, 0,41,42,42,
451     &41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0,
452     & 0, 0, 0, 0, 3, 3, 0, 0, 0, 3, 0, 3, 3, 3, 0, 0, 0, 0, 0, 3,
453     & 0, 0, 0, 0, 0, 0, 3, 3, 0, 3, 1, 2, 3, 3, 3, 6, 6, 6, 6, 3,
454     & 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
455     & 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
456     & 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
457     & 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
458     & 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
459     & 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
460     & 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 9, 9, 9, 9, 9, 9, 9, 9,
461     & 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
462     & 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
463     & 9, 9, 9, 9, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
464     & 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
465     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,10,10, 0, 0, 0, 8, 0,
466     & 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
467     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8, 0,11, 0, 0, 0,11/
468      data (igenl(i),i=1901,2280)/
469     & 8, 8, 0, 9, 0, 0, 9,11, 0, 0, 0, 0, 8, 9, 0, 0, 0, 0, 0,11,
470     & 0, 0, 0, 0, 0, 0, 0,11, 0, 0, 0, 0, 0, 0, 0, 0, 0,11, 0, 0,
471     & 0, 0, 0, 0, 0, 0, 0, 0,11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
472     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
473     &11,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
474     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
475     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0,
476     & 0, 0, 0, 0, 8, 8, 0, 0, 0, 9, 0, 8, 8, 8, 0, 0, 0, 0, 0, 8,
477     & 0, 0, 0, 0, 0, 0, 9, 9, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
478     & 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 2, 0, 3, 3, 1, 1, 3,
479     & 5, 1, 1, 5, 0, 3, 3, 0, 0, 1, 1, 0,12, 0, 1, 1, 0, 0, 0, 0,
480     & 0, 2, 0, 0, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 0, 0, 2, 0, 0, 0,
481     & 0, 2, 2, 2, 0,10, 3,23, 0,10, 0, 0, 0, 3, 0, 3, 0,10, 0, 0,
482     &10,10, 3, 3,23,23, 0,10, 0, 0, 3, 3, 0, 0, 3, 3, 0, 0,10,10,
483     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
484     & 3, 3, 3, 3, 3, 3, 3, 3, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0,
485     & 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 3,
486     & 0, 0, 3, 0, 0, 3, 0, 3, 3, 0, 0, 3, 0, 0, 3, 3, 0, 0, 0, 0,
487     & 0, 0, 3, 3, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 2/
488      data (igenl(i),i=2281,2660)/
489     & 0, 2, 2, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2,
490     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3,
491     & 3, 3, 3, 3, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
492     & 6, 6, 6, 6, 6, 6, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
493     & 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 7, 7, 7, 7, 7, 7,
494     & 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
495     & 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
496     & 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
497     & 7, 7, 0, 0, 0, 0, 2, 2,11,12,11,12,11,12,12,13,14,13,14,13,
498     &13,11,11,12,12,12,12, 4, 4, 4, 4, 4, 4, 5, 4, 4, 4, 4, 4, 4,
499     & 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3,
500     & 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
501     & 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
502     & 0, 0, 0, 0, 0, 0,10, 8,10,10, 0, 0, 0,10, 0, 0, 0, 0, 0, 9,
503     & 0, 9, 9, 9, 0, 0, 0, 0, 9, 0, 9, 0,15, 0, 9, 0, 0, 0,10, 0,
504     & 0,12,12,10, 8,10,10,12, 8,10,10, 0,10,10, 0,10, 0, 0, 0, 0,
505     & 0, 8,10, 0, 0, 0, 0, 0, 0,26, 0, 0, 0, 0, 2, 2, 0,26, 0, 2,
506     & 0, 2, 0, 2, 0, 2, 0,26, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,26,26,
507     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2/
508      data (igenl(i),i=2661,3040)/
509     & 0, 0, 2, 2, 0, 2, 2, 2, 0, 0,26,26, 0, 0, 0, 0, 0, 0, 0, 0,
510     &41, 0,43, 0, 0, 0, 0, 0, 0, 0, 0, 0,10, 0,10, 0,10, 0, 0, 0,
511     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10, 0,10,
512     & 0, 0, 0, 0, 0, 0, 0,10,10, 0, 0, 0, 0, 0,10,10, 0, 0, 0, 8,
513     & 0,10,10,10, 0, 0, 0, 0, 0,10, 0, 0, 0, 0, 0, 0, 8, 8, 0,10,
514     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
515     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
516     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
517     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
518     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 2, 0, 2, 0, 0, 0, 1,
519     & 3, 5, 3, 5, 0, 1, 0, 3, 0, 3, 0, 0, 2, 2, 0, 3, 1, 5, 0, 3,
520     & 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0,
521     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
522     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
523     & 0, 0, 0, 3, 3, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
524     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
525     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
526     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
527     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2/
528      data (igenl(i),i=3041,3420)/
529     & 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
530     & 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 3, 3,
531     & 3, 3, 3, 3, 3, 3, 3, 3, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
532     & 3, 3, 3, 3, 6, 6, 6, 6, 6, 6, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
533     & 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0,
534     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0,
535     & 0, 0, 0, 0, 2, 2,12,12,12,12,12,12,13,13,13,13,13,13,12,12,
536     &12,12,12,12,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
537     &10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
538     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
539     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
540     & 0, 0, 0, 0, 0, 0, 0,14, 0,11, 0, 0, 0, 0, 0, 0, 0, 0,11, 0,
541     & 0, 0, 0, 0, 0, 0, 0,13, 0,19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
542     & 0, 0, 0, 0,11,14, 0,29, 0, 8, 0,28, 0,12, 0,34, 0,34, 0, 9,
543     & 0, 9, 0, 9, 0, 9, 0, 0, 0, 0, 0,10, 8,12, 0, 0, 9, 9, 0, 0,
544     & 0,34, 0,10, 0, 0, 8,12, 8,12, 0,10,10, 0, 8,12,12, 8, 0,10,
545     &34,28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
546     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,43,41,41,
547     &43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0/
548      data (igenl(i),i=3421,3800)/
549     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
550     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
551     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
552     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
553     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
554     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
555     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
556     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
557     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
558     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
559     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
560     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 4,
561     & 0, 4, 4, 4, 0, 0, 0, 7, 7,14, 0, 0, 4, 4, 0, 4, 4, 4, 0, 4,
562     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
563     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
564     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
565     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
566     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
567     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0/
568      data (igenl(i),i=3801,4180)/
569     & 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
570     & 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
571     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
572     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2,
573     & 2, 2, 2, 2, 2, 2,12,12,12,12,12,12,12,12,14,14,14,14,14,14,
574     &12,12,12,12,12,12,12,12,12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
575     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
576     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
577     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
578     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
579     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
580     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,14, 0, 0,11,11,
581     & 0, 0,14,14, 0, 0,14,14, 0, 0,29,29, 0, 0, 0, 0, 0, 0, 0, 0,
582     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
583     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
584     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,14, 0,19, 0, 0, 0, 0,10, 0,36,
585     & 0,35,30,30, 0, 0, 0, 0, 0, 0, 0, 0,10,10, 0,10,36,36, 0,30,
586     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
587     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0/
588      data (igenl(i),i=4181,4560)/
589     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
590     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
591     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
592     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
593     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
594     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
595     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
596     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
597     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
598     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
599     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
600     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
601     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
602     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
603     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
604     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
605     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
606     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
607     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0/
608      data (igenl(i),i=4561,4940)/
609     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
610     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
611     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
612     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
613     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
614     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
615     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
616     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
617     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
618     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
619     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
620     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
621     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
622     & 0,14, 0,14, 0, 0,19,22, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0,
623     & 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
624     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
625     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3,
626     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
627     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0/
628      data (igenl(i),i=4941,5320)/
629     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
630     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
631     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
632     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
633     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,
634     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0,
635     & 0, 0, 0, 0, 6, 0, 0, 6, 6, 0, 0, 6, 0, 0, 6, 0, 0, 0, 0, 0,
636     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
637     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
638     & 0, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
639     & 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
640     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
641     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
642     & 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
643     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
644     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
645     & 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
646     & 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
647     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0/
648      data (igenl(i),i=5321,5700)/
649     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
650     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
651     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
652     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
653     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
654     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
655     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
656     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
657     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,
658     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 0, 0,
659     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
660     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
661     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
662     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
663     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
664     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
665     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
666     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
667     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0/
668      data (igenl(i),i=5701,6080)/
669     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
670     & 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
671     & 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 3, 0, 0, 1, 0, 1, 0,
672     & 3, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
673     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
674     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
675     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0,
676     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
677     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
678     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0,
679     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
680     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
681     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
682     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0,
683     & 0, 0, 4, 4, 4, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0,
684     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
685     & 0, 0, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0,
686     & 0, 0, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
687     & 0, 0, 0, 0, 4, 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0/
688      data (igenl(i),i=6081,6460)/
689     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
690     & 0, 0, 0, 0, 4, 4, 0, 0, 4, 4, 0, 0, 4, 4, 0, 0, 4, 4, 0, 0,
691     & 4, 4, 0, 0, 0,10, 0,10, 0, 0, 0, 0, 0, 0,10, 0, 0, 0, 0,10,
692     &10, 0, 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
693     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
694     & 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
695     & 0, 4, 0, 4, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
696     & 0, 0, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
697     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,11, 0,11,
698     & 0, 0, 0, 0, 0, 0, 0, 0,11, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0,20,
699     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11, 0, 8, 0, 0,
700     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
701     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,11, 0, 0,11,11,
702     & 0, 0,11,11, 0, 0,11,11, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0,
703     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
704     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
705     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,11, 0,17, 0, 0, 0, 0, 0, 0, 0,
706     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,11, 0,11, 0, 0,37,39, 0, 0,
707     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0/
708      data (igenl(i),i=6461,6840)/
709     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
710     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0,
711     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
712     & 0, 0, 0, 0, 0, 3, 0,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
713     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
714     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 3, 3, 0, 0,
715     &10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
716     & 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
717     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
718     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
719     & 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,
720     & 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
721     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3,
722     & 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3,
723     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 7, 0, 0,
724     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
725     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 7, 7,
726     & 0, 0, 7, 7, 0, 0, 7, 7, 0, 0, 7, 7, 0, 0, 0, 0, 0, 2, 0, 0,
727     & 0, 0, 0, 0,11, 0, 0, 0, 0,14,14, 0, 0, 0, 0,11,11, 0, 0, 0/
728      data (igenl(i),i=6841,7220)/
729     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
730     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 0, 0, 0, 0, 0, 0, 0,
731     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 0, 0, 3, 3, 0, 0,
732     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
733     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
734     & 0, 0, 0, 0, 0, 0, 0,12, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
735     & 0, 0, 0, 0, 0, 0, 0,10, 0,21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
736     & 0, 0, 0, 0,11,26, 0,32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
737     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
738     & 0, 0, 0, 0,11,11, 0, 0,11,11, 0, 0,11,11, 0, 0,11,11, 0, 0,
739     &33,33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
740     & 0, 0, 0, 0, 0, 0,31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
741     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
742     &12, 0,18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
743     & 0,12, 0,12, 0, 0,40,38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
744     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
745     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
746     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
747     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0/
748      data (igenl(i),i=7221,7600)/
749     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
750     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2,
751     & 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
752     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
753     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
754     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
755     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
756     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
757     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
758     & 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0,
759     & 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
760     & 0, 0, 0, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
761     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
762     & 0, 0, 0, 0, 3, 3, 0, 0, 3, 3, 0, 0, 3, 3, 0, 0, 3, 3, 0, 0,
763     & 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
764     & 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
765     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
766     &10, 0,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
767     & 0,10, 0,10, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0/
768      data (igenl(i),i=7601,7980)/
769     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
770     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
771     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
772     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
773     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
774     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,12, 0, 0, 0,10,
775     & 0, 0, 8,12, 0, 0, 0,10, 0, 0,12, 8, 0, 0, 0, 0, 0, 0, 0, 0,
776     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
777     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
778     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
779     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
780     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
781     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
782     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
783     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
784     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
785     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
786     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
787     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0/
788      data (igenl(i),i=7981,8360)/
789     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
790     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
791     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
792     & 0, 0, 0, 4, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
793     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
794     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
795     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
796     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
797     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
798     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2,
799     & 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0,
800     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
801     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
802     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0,
803     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,12, 0,12, 0, 0,12,12, 0, 0,
804     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
805     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
806     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
807     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0/
808      data (igenl(i),i=8361,8740)/
809     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
810     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
811     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
812     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
813     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
814     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
815     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
816     & 0,10, 0, 0, 0, 0,27,25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
817     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
818     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
819     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
820     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
821     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
822     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
823     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
824     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
825     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
826     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
827     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0/
828      data (igenl(i),i=8741,9120)/
829     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
830     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
831     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
832     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
833     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
834     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
835     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
836     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
837     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
838     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
839     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
840     & 0, 2, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
841     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
842     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
843     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
844     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
845     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
846     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
847     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0/
848      data (igenl(i),i=9121,9200)/
849     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
850     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
851     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
852     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0/
853c
854cdgc--> pointer block for layers
855c
856      data (ilgenl(i),i=   1, 380)/
857     & 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
858     & 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
859     & 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
860     & 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
861     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
862     & 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
863     & 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
864     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
865     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 4, 0, 0, 4, 0, 0, 0, 0,
866     & 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0,
867     & 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
868     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
869     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
870     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
871     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
872     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
873     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
874     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
875     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0/
876      data (ilgenl(i),i= 381, 760)/
877     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
878     & 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2,
879     & 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3,
880     & 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
881     & 4, 4, 4, 4, 1, 2, 2, 2, 2, 2, 3, 3, 2, 2, 3, 3, 3, 3, 3, 4,
882     & 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 2, 0, 0, 1, 0, 0, 1, 0, 1,
883     & 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0,
884     & 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
885     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
886     & 1, 2, 4, 5, 5, 4, 4,26,26,26,30,30,30,26,26,26,26,26, 4,26,
887     & 4, 4, 4, 4, 4, 4,26,26,26,26,26,26,26,26,26,26, 4, 3, 4, 4,
888     & 4,26, 3, 3,26, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
889     & 4, 4, 4, 4, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
890     & 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0,
891     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 8, 8, 0,
892     & 0, 0, 8, 0, 9, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
893     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
894     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
895     & 2, 0, 0, 1, 1, 0, 0, 1, 0, 2, 4, 1, 1, 1, 0, 0, 0, 0, 0, 2/
896      data (ilgenl(i),i= 761,1140)/
897     & 2, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
898     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
899     & 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 3, 3,
900     & 3, 3, 6, 6, 6, 6, 6, 6, 6, 5, 5, 6, 6, 6, 6, 6, 3, 4, 3, 3,
901     & 3, 3, 4,26, 4, 3, 3, 3, 7, 8, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8,
902     & 7, 7, 7, 7, 0, 2,11,12,13,14,11,12, 4, 5, 4, 4, 4, 5, 5, 4,
903     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,
904     & 8, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 9, 0, 0, 0, 8,
905     & 8, 8,11, 9, 8, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0,
906     & 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
907     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
908     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
909     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 2, 0, 1,
910     & 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
911     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
912     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2,
913     & 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 3, 3, 6, 6, 3, 3, 6, 6,
914     & 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2,12,13,13,12,12,
915     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0/
916      data (ilgenl(i),i=1141,1520)/
917     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,
918     & 0, 0, 0, 0, 0,11, 0, 0, 0, 0, 0,11, 0, 8, 0, 9, 0, 8, 0, 9,
919     & 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
920     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
921     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
922     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
923     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
924     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
925     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
926     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
927     & 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,
928     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
929     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
930     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
931     & 0,11, 0,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
932     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
933     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
934     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
935     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0/
936      data (ilgenl(i),i=1521,1900)/
937     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
938     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
939     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
940     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
941     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
942     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
943     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
944     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
945     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
946     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
947     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
948     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
949     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
950     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
951     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
952     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
953     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
954     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
955     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0/
956      data (ilgenl(i),i=1901,2280)/
957     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
958     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
959     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
960     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
961     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
962     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
963     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
964     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
965     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
966     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
967     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4,
968     & 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0,
969     & 0, 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
970     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
971     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,11,
972     & 0, 0, 0, 0, 0,11, 0, 0, 0, 0, 0,11, 0, 0, 0, 0, 0, 0, 0, 0,
973     & 0,11, 0,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
974     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
975     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2/
976      data (ilgenl(i),i=2281,2660)/
977     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
978     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
979     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
980     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,
981     & 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0,
982     & 0, 7, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
983     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
984     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
985     & 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0,11, 0, 0, 0, 0, 0, 0, 0, 0,
986     & 0,11, 0,11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
987     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
988     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
989     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
990     & 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
991     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
992     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,
993     & 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0,
994     & 0, 3, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
995     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0/
996      data (ilgenl(i),i=2661,3040)/
997     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
998     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
999     & 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1000     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1001     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1002     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1003     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1004     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1005     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1006     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1007     & 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1008     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1009     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1010     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1011     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1012     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1013     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1014     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1015     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0/
1016      data (ilgenl(i),i=3041,3200)/
1017     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1018     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1019     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1020     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1021     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1022     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1023     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1024     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0/
1025c
1026cdgc--> pointer block for line groups (z direction)
1027c
1028      data (ipgenl(i),i=   1, 380)/
1029     & 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1030     & 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1031     & 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1032     & 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1033     & 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
1034     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1035     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1036     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1037     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1038     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1039     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1040     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1041     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1042     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1043     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1044     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1045     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1046     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1047     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0/
1048      data (ipgenl(i),i= 381, 760)/
1049     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1050     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1051     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1052     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1053     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1054     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1,
1055     & 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1056     & 2, 2, 3, 3, 3, 3, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1057     & 3, 3, 3, 3, 3, 4, 4, 4, 4, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2,
1058     & 2, 2, 2, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3,
1059     & 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 0, 0, 0, 3, 0, 0,
1060     & 0, 0, 3, 0, 3, 0, 3, 0, 0, 0, 0, 0, 3, 0, 3, 3, 0, 0, 0, 0,
1061     & 0, 0, 0, 0, 0, 0, 3, 0, 3, 0, 0, 0, 0, 3, 0, 3, 0, 0, 0, 0,
1062     & 0, 0, 0, 0, 0, 0, 0, 0, 0,41,42, 0, 0,41,42, 0,41,42, 0, 0,
1063     & 0, 0, 0, 0, 0, 0, 0,41,42,42,41, 0, 0, 0, 0, 0,41,42,42,41,
1064     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 4, 4, 3,26, 5,
1065     & 6, 6,30,30, 4, 4, 3, 3,26,26, 4, 4, 4, 4, 4, 4, 3, 3,26,26,
1066     & 4, 4,26,26, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1067     & 4, 4, 4, 4, 4, 4, 4, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9/
1068      data (ipgenl(i),i= 761,1140)/
1069     & 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
1070     & 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0,
1071     & 0, 0, 0, 0, 0, 0,10, 0,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1072     & 0,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1073     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1074     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1075     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1076     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 3, 0, 3, 0, 0,
1077     & 0, 0, 0,10, 3,23, 0, 0, 3, 0,10, 3,23, 0, 3, 0, 3, 0, 0, 0,
1078     & 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 0,
1079     & 0, 0, 0, 0, 3, 3, 0, 0, 3, 0, 0, 3, 0, 3, 3, 0, 0, 3, 0, 0,
1080     & 3, 3, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1081     & 0, 2, 2, 2, 2, 2, 2, 3, 3, 6, 6,30, 6,30,30, 6, 6, 3, 3, 3,
1082     & 3, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8,
1083     & 7, 7, 7, 7, 0, 0, 0, 2,11,11,11,12,12,12,13,13,14,14,11,11,
1084     &12,12, 4, 4, 4, 4, 4, 4, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1085     & 4, 5, 5, 5, 5, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1086     & 0, 0, 0, 0, 0, 0, 0,10, 0, 0, 0, 0, 0, 0, 0, 0, 0,10, 0,10,
1087     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0/
1088      data (ipgenl(i),i=1141,1520)/
1089     & 0, 0, 0, 0, 0, 0, 0, 0,41,43, 0, 0, 0, 0, 0, 0, 0, 0,10, 0,
1090     &10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1091     & 0,10, 0,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1092     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1093     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 3, 0, 0,
1094     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1095     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0,
1096     & 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1097     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0,
1098     & 0, 0, 0, 2, 2, 3, 3, 3, 3, 6, 6, 6, 6, 3, 3, 6, 6, 3, 3, 3,
1099     & 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0,
1100     & 0, 0, 0, 0, 0, 0, 2, 2,12,12,12,12,12,12,13,13,13,13,13,13,
1101     &12,12,12,12,12,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1102     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1103     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10, 0, 0, 0,10, 0,10,
1104     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1105     & 0, 0, 0, 0, 0, 0, 0, 0,43,41,41,43, 0, 0, 0, 0, 0, 0, 0, 0,
1106     & 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1107     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0/
1108      data (ipgenl(i),i=1521,1900)/
1109     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1110     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1111     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1112     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1113     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1114     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0,
1115     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1116     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,
1117     & 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1118     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1119     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1120     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1121     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1122     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1123     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1124     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1125     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1126     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1127     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0/
1128      data (ipgenl(i),i=1901,2280)/
1129     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1130     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1131     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1132     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1133     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1134     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1135     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1136     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1137     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1138     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1139     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1140     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1141     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1142     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1143     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1144     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1145     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1146     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1147     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0/
1148      data (ipgenl(i),i=2281,2660)/
1149     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1150     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1151     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1152     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1153     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1154     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1155     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1156     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1157     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1158     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1159     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1160     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1161     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1162     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1163     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1164     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1165     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1166     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1167     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0/
1168      data (ipgenl(i),i=2661,3040)/
1169     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1170     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1171     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1172     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1173     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1174     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1175     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1176     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1177     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1178     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1179     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1180     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1181     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1182     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1183     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1184     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1185     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1186     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1187     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0/
1188      data (ipgenl(i),i=3041,3420)/
1189     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1190     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1191     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1192     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1193     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1194     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1195     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1196     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1197     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1198     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1199     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1200     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1201     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1202     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1203     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1204     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1205     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1206     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1207     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0/
1208      data (ipgenl(i),i=3421,3800)/
1209     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1210     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1211     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1212     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1213     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1214     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1215     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1216     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1217     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1218     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1219     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1220     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1221     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1222     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1223     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1224     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1225     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1226     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1227     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0/
1228      data (ipgenl(i),i=3801,3960)/
1229     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1230     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1231     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1232     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1233     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1234     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1235     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1236     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0/
1237c
1238cdgc--> pointer block for molecules
1239c
1240      data (imgenl(i),i=   1, 380)/
1241     & 1, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 1, 1, 2,
1242     & 1, 2, 1, 1, 2, 1, 2, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1,
1243     & 1, 1, 1, 1, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1244     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1245     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1246     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1247     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1248     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1249     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1250     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1251     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1252     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2,
1253     & 2, 2, 3, 3, 3, 2, 2, 3, 3, 3, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4,
1254     & 4, 3, 3, 3, 4, 4, 2, 2, 2, 3, 4, 4, 4, 5, 5, 5, 0, 0, 0, 0,
1255     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1256     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1257     & 0, 0, 1, 5, 2, 4,29, 4,15,29,17,19, 4,29, 4,15,29, 4,29, 4,
1258     &15,29, 4,29, 4,15,29, 4,29, 4,15,29,19, 4,29,21,15,23, 4,29,
1259     &21, 4, 4, 4, 4, 4,15,15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0/
1260      data (imgenl(i),i= 381, 760)/
1261     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1262     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1263     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1264     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1265     & 0, 0, 0, 0, 0, 7,16, 4,18,20, 3,12, 7,16, 4, 6,14, 7,16, 4,
1266     & 2, 5, 7,16, 4, 3, 5, 7,16, 4,20, 8,12,22,16, 4, 8, 2,22, 3,
1267     & 3, 3, 3, 3,16,16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1268     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1269     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1270     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1271     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1272     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3,12, 0, 0, 6, 6,13, 0, 0,
1273     & 2, 5, 2, 2,12, 3, 5,12,12, 3, 2, 6,26,24, 0, 0, 0,10,10,10,
1274     &10,10,25,25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1275     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1276     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1277     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1278     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1279     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0/
1280      data (imgenl(i),i= 761,1140)/
1281     & 0, 0, 0, 2, 3, 2, 2, 0, 0, 0, 2, 6, 0, 0, 0, 0, 2,14,12,12,
1282     &27,27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1283     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1284     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1285     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1286     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1287     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1288     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,28,28,
1289     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1290     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1291     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1292     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1293     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1294     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1295     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1296     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1297     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1298     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1299     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0/
1300      data (imgenl(i),i=1141,1520)/
1301     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1302     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1303     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1304     & 9, 0, 0, 9, 0, 0, 0, 9, 0, 0, 9, 0, 9, 0, 0, 9, 0, 9, 0, 0,
1305     & 9, 0, 9, 0, 0, 9, 0, 0, 9, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0,
1306     & 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1307     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1308     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1309     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1310     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1311     & 0, 4, 0, 0, 0,12, 0, 0, 4, 0,14, 0, 0, 4, 0, 5, 0, 0, 4, 0,
1312     & 5, 0, 0, 4, 0, 0,12, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0,
1313     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1314     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1315     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1316     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1317     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1318     & 0, 0, 0, 0, 0, 0,12, 0, 0, 0, 0,13, 0, 0, 0, 0, 2, 0,12, 0,
1319     & 0,12, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0/
1320      data (imgenl(i),i=1521,1840)/
1321     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1322     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1323     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1324     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1325     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1326     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,
1327     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1328     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1329     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1330     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1331     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1332     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1333     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1334     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1335     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1336     & 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0/
1337#ifdef SOLARIS
1338c     needed with -stackvar option
1339      save tranv, roto, igen, imgen
1340#endif
1341c
1342c     determine name of requested group
1343c
1344      if(itype.eq.3) then
1345         group_name = spgnam(numgrp)
1346         if (oprint) write(*,11) numgrp, spgnam(numgrp)
134711       format(5x,'3-DIMENSIONAL GROUP NUMBER =',i3,5x,'INTERNATIONAL
1348     &    SYMBOL = ',a10)
1349c
1350      elseif(itype.eq.2) then
1351         group_name = lyrnam(numgrp)
1352         if (oprint) write(*,13) numgrp,lyrnam(numgrp)
1353         if (oprint) write(*,15)
135413       format(5x,'2-DIMENSIONAL GROUP NUMBER =',i3,5x,'INTERNATIONAL
1355     &    SYMBOL = ',a10)
135615       format(20x,'SURFACE TRANSLATES IN XY (AB) PLANE')
1357c
1358      elseif(itype.eq.1) then
1359         group_name = linenam(numgrp)
1360         if (oprint) write(*,14) numgrp,linenam(numgrp)
1361         if (oprint) write(*,16)
136214       format(5x,'1-DIMENSIONAL GROUP NUMBER =',i3,5x,'INTERNATIONAL
1363     &    SYMBOL = ',a10)
1364 16      format(20x,'POLYMER TRANSLATES IN Z (C) DIRECTION')
1365c
1366      elseif(itype.eq.0) then
1367         group_name = molname(numgrp)
1368         if (oprint) write(*,12) numgrp,group_name
136912       format(5x,'MOLECULAR POINT GROUP NUMBER =',i3,5x, 'SCHOENFLIES
1370     &SYMBOL = ',a10)
1371c
1372      endif
1373c
1374c--> begin code to assemble matrix reps. of the generators
1375c
1376c--> get the right row of pointer information for the group
1377c    requested
1378c
1379      iflag_Ih=0
1380      if(itype.eq.3) then
1381            do 250 i=1,40
1382               igenstr(i)=igen(numgrp,i)
1383250         continue
1384c
1385      elseif(itype.eq.2) then
1386         do 808 i=1,40
1387            igenstr(i)=ilgen(numgrp,i)
1388808      continue
1389c
1390      elseif(itype.eq.1) then
1391         do 809 i=1,40
1392            igenstr(i)=ipgen(numgrp,i)
1393809      continue
1394c
1395      elseif(itype.eq.0) then
1396         do 800 i=1,40
1397            igenstr(i)=imgen(numgrp,i)
1398800      continue
1399c
1400c--> Add next line to detect Point group 46 (Ih). Since its 6th
1401c    generator pointer is in the 2nd setting section of igenstr(),
1402c    the flag igenstr(1)=3 is used to screen for Ih.
1403c                                                DGC 3/9/94
1404            iflag_Ih=igenstr(1)
1405      else
1406         write(*,*) 'Bad group identification number = ',numgrp
1407         write(*,*) 'and/or Bad system type for the group number ',itype
1408         call errquit('spgen: symmetry input error', 0, INPUT_ERR)
1409      endif
1410c
1411c--> start to build operators, number of generators in group in genstr(6)
1412c     find offset for setting requested (offset points at the number of centering
1413c     vectors for the given setting)
1414c
1415      numgen=igenstr(6)
1416      if(numset.le.1) then
1417         ioffset=2
1418      else
1419         ioffset=22
1420      endif
1421c
1422c--> get and save the centering vectors 2nd col. of genstr=number vectors
1423c    for the first setting, pointers to the vectors are in cells 3,4,5
1424c    For the second setting number cntr. vecotors storedin genstr(22)
1425c    vector pointers are then in 23,24,25.
1426c
1427      numvec=igenstr(ioffset)
1428      do 300 i=1,numvec
1429         iv=igenstr(ioffset+i)
1430         do 310 j=1,3
1431            cntvec(i,j)=tranv(iv,j)
1432310      continue
1433300   continue
1434
1435c
1436c--> get the start of the correct setting, each offset (for either the 1st or
1437c    2nd setting) points to the first vector of the genertor triples ie, v1i
1438c    or v1j where i and j denote settings
1439c
1440      if(numset.le.1) then
1441         ioffset=7
1442      else
1443         ioffset=26
1444      endif
1445c
1446c--> assemble generators, if third pointer of generator triple (ie, s) is non-zero
1447c    then the matrix rep. of the generator must be evaluated for an origin that
1448c    differs from (0,0,0) by the vector s. That is, a new translational component for
1449c    the operator must be evaluted by, {R2|v2}={R1|v1-R1s+s}. Since R1=R2, ie there
1450c    is no effect of such a shift on the rotational part of the operator, the equation
1451c--> becomes: v2=v1-R1s+s, where R1s implies a matrix vector multiplication.
1452c
1453c--->If grp=#46(Ih), then set increment numgen by 1 (i.e. set numgen=6)   DGC 112294
1454      if(iflag_Ih.eq.3) then
1455         numgen=numgen+1
1456      endif
1457c
1458      do 350 i=1,numgen
1459c
1460c--->All space & point groups have <= 5 generators except for #46(Ih), which has 6.
1461c    The 1st 5 generators of #46 are obtained as for any other group, and the 6th is obtained
1462c    by resetting the pointer k to the 2nd section of the igenstr() list.  DGC 112294
1463c
1464       if(iflag_Ih.eq.3.and.i.eq.6) then
1465          k=26
1466       else
1467         k=ioffset+(i-1)*3
1468       endif
1469         ivpnt=igenstr(k)
1470         irpnt=igenstr(k+1)
1471         ispnt=igenstr(k+2)
1472c
1473c-->save generator offset vector s   DGC  5/17/96   (See note below.)
1474         if(ispnt.gt.1) then
1475            do 20 j=1,3
1476               s_vec(i,j)=tranv(ispnt,j)
147720          continue
1478         else
1479            do 21 j=1,3
1480               s_vec(i,j)=0.00d+00
148121          continue
1482         endif
1483c
1484c--> fill in rotoinversion (3x3) piece of the operator
1485c
1486         kkl=0
1487         istrt=(i-1)*3+1
1488         do 360 is=istrt,istrt+2
1489            kkl=kkl+1
1490            do 370 is2=1,4
1491               symops(is,is2)=roto(kkl,is2,irpnt)
1492370         continue
1493360      continue
1494c
1495c--> check to see if operator is at an origin other than (0,0,0), if so compute
1496c    new shift vector v2 (computing v-Rs+s, s=offset)
1497c
1498c-->Note: ispnt = 0 means offset = 0. Would screening out ispnt=1 (.5,0,0) cause
1499c         problems if ispnt=1 were used as an offset vector?   DGC  5/17/96
1500c
1501         if(ispnt.gt.1) then
1502            jvec=0
1503            do 380 j=istrt,istrt+2
1504               jvec=jvec+1
1505               sum=0.0d+00
1506               do 390 jj=1,3
1507                  sum=sum+symops(j,jj)*tranv(ispnt,jj)
1508390            continue
1509               vec(jvec)=sum
1510380         continue
1511            if(ivpnt.ne.0) then
1512               do 420 j=1,3
1513                  jj=istrt+(j-1)
1514                  symops(jj,4)=tranv(ivpnt,j)-vec(j)+tranv(ispnt,j)
1515420            continue
1516            else
1517               do 480 j=1,3
1518                  jj=istrt+(j-1)
1519                  symops(jj,4)=-vec(j)+tranv(ispnt,j)
1520480            continue
1521            endif
1522         elseif(ivpnt.ne.0) then
1523            do 430 j=1,3
1524               jj=istrt+(j-1)
1525               symops(jj,4)=tranv(ivpnt,j)
1526430         continue
1527         endif
1528350   continue
1529c
1530c--> clean up translational components (put in standard convention)
1531c
1532551   do 550 j=1,numgen*3
1533         if(symops(j,4).lt.0.0d+00) then
1534            symops(j,4)=symops(j,4)+1.0d+00
1535         elseif(symops(j,4).gt.1.0d+00) then
1536            symops(j,4)=symops(j,4)-1.0d+00
1537         endif
1538c        Not even sure if this is possible, but check anyway
1539         if(symops(j,4).lt.0.0d+00 .or. symops(j,4).gt.1.0d+00) goto 551
1540c
1541c---> Set translation components 1/3 and 2/3 of the generator
1542c      products to double precision.
1543c      Otherwise get 1/3=0.33333334 and 2/3=0.66666666.
1544c      (A similar loop for generator products appears in "gensymt.f")
1545c
1546         if(symops(j,4).le..3334.and.symops(j,4).ge..3333) then
1547            symops(j,4)=1.0d+00/3.0d+00
1548         elseif(symops(j,4).le..6667.and.symops(j,4).ge..6666) then
1549            symops(j,4)=2.0d+00/3.0d+00
1550         endif
1551550   continue
1552c
1553c--> write out symops
1554c
1555c      ista=1
1556c      istp=3
1557c      do 440 i=1,numgen
1558c         write(*,31) i
1559c         do 442 j=ista,istp
1560c            write(*,30) (symops(j,k), k=1,4)
1561c442      continue
1562c         ista=istp+1
1563c         istp=istp+3
1564c440   continue
156530    format(4(f9.6,2x))
156631    format(/,'Generator Number ',i2)
1567c
1568c------------------------> printing statements for debugging
1569
1570c--> write out tranv
1571c
1572c      do 100 i=1,46
1573c         write(*,10) (tranv(i,j), j=1,3)
1574c         write(*,*) ' '
1575c100   continue
1576c10    format(5x,3(f11.8,2x))
1577c
1578c--> write out roto
1579c
1580c      do 500 i=1,14
1581c         do 502 j=1,3
1582c            write(*,20) (roto(j,k,i), k=1,4)
1583c502      continue
1584c         write(*,*)
1585c500   continue
1586c20    format(5x,4(f9.6,2x))
1587c
1588c--> write out 3-d pointer table
1589c
1590c      do 400 i=1,230
1591c         write(40,25) (igen(i,j),j=1,40)
1592c400   continue
1593c25    format(40(i2,1x))
1594      return
1595      end
1596
1597
1598
1599
1600
1601