5 * Revision 1.1.1.1 1995/10/24 10:21:57 cernlib
9 #include "geant321/pilot.h"
10 *CMZ : 3.21/04 23/02/95 14.46.01 by S.Giani
13 C************************************************************
15 C setup cross-section tables for MICAP
19 C INPUT: MICAP element IDs in KE = LD(LFP11)
20 C element densities in RHO = D (LFP12)
24 C See USER's GUIDE TO MICAP ORNL/TM-10340
25 C for details and pointer description (MPOINT)
27 C************************************************************
28 #include "geant321/mmicap.inc"
29 #include "geant321/minput.inc"
30 #include "geant321/mpoint.inc"
31 #include "geant321/mconst.inc"
32 #include "geant321/cmagic.inc"
42 C CALCULATE THE NUMBER OF ELEMENTS (NNUC)
43 C AND GENERATE THE ISOTOPE NUMBER ARRAY (IN(NMIX))
49 C INITIALIZE THE NUMBER OF ELEMENTS (NNUC)
52 IF(LD(LFP16+I-1).GT.0)GO TO 30
56 IF(LD(LFP11+I-1).NE.LD(LFP11+J-1))GO TO 20
60 C get number of isoptopes from xsection file(s)
65 READ(NUNIT,'(I10)') NIS
70 C allocate needed memory for x-section
71 NW = 2*NII+13*NNUC+2*NNR*NNUC+4*NGR*NNUC+3*NQ*NNUC+26*MEDIA + 2
74 CALL CHKZEB(NW,IXCONS)
75 CALL MZBOOK(IXCONS,LMOX1,0,2,'MOX1',0,0,NW,0,-1)
76 C SET UP THE B CONTROL BLOCK LOCATION NUMBER ARRAY ICOM(NNUC)
77 C LFP170 points to length of x-section data
83 C SET UP THE ARRAY (IREC(NII))
84 CALL XSECN1(NII,D(LFP11),D(LFP16),D(LFP17),
85 + D(LFP18),D(LFP18A),D(LFP170),D(LFP19),
86 + D(LFP20),D(LFP20),INEL)
87 C check if all isotopes have been found in the x-section file(s)
90 IF(LD(LFP19+I-1).EQ.0) THEN
91 WRITE(IOUT,10100)LD(LFP19+I-1)
92 10000 FORMAT(' MICAP: Could not find x-section of element ',I8)
97 PRINT '('' CALOR : Neutron x-section not found ===> STOP '')'
101 C store xs accuracy at LFP210 (used for thinning in XSECN3)
102 LFP210 = LFP21 + NNUC
117 LFP36=LFP35+3*NQ*NNUC
118 C CLEAR THE STORAGE LOCATIONS FOR THE DICTIONARIES, ETC.
119 CALL CLEAR(D,LFP20,LFP36-1)
120 C ESTABLISH THE RANDOM WALK STORAGE LOCATIONS
127 NW = NW + LD(LFP170+INUC-1)
131 CALL CHKZEB(NW,IXCONS)
132 CALL MZBOOK(IXCONS,LMOX2,0,2,'MOX2',0,0,NW,0,-1)
136 C PLACE THE MICROSCOPIC CROSS SECTION DATA INTO THE CORE
137 CALL XSECN2(D(LFP17),D(LFP18),D(LFP18A),
138 + D(LFP20),D(LFP21),D(LFP210),D(LFP22),D(LFP23),
139 + D(LFP24),D(LFP25),D(LFP26),D(LFP27),D(LFP28),
140 + D(LFP29),D(LFP30),D(LFP31),D(LFP34),D(LFP35),
141 + D(LFP35+NQ*NNUC),D(LFP35+2*NQ*NNUC),
142 + D(LFP43),D(LFP43),MAXD,LAST,INEL)
143 C determine length needed for macroscopic xs and mixing
149 IF(LD(LFP10+IN-1).NE.IM) GOTO 70
152 LZ = MAX0(LD(LFP27+NNR*(II-1)),LZ)
153 C LZ = MAX0(LDICT(1,II),LZ)
155 IF(NM.GT.1) LZ = 4*LZ
157 IF(LD(LFP10+J-1).NE.IM) GOTO 80
164 CALL CHKZEB(NW,IXCONS)
165 CALL MZBOOK(IXCONS,LMOX3,0,2,'MOX3',0,0,NW,0,-1)
169 C SET, MIX AND THIN THE TOTAL CROSS SECTIONS
170 C ACCORDING TO THE MIXING TABLE
171 CALL XSECN3(D(LFP10),D(LFP11),D(LFP12),D(LFP16),D(LFP26),
172 + D(LFP27),D(LFP32),D(LFP33),D(LFP44),D(LFP44),
174 C ESTABLISH THE PHOTON TOTAL CROSS SECTION DATA DICTIONARY
176 C determine number of words needed for photon production xs
179 DO 100 J=1,LD(LFP28+I-1)
180 LZ = LD(LFP31 + 2*J - 1 + NGR*(I-1))
185 NW = NW + 2*NGR*NNUC+2
186 NWTOT = NWTOT + NW + 1
187 CALL CHKZEB(NW,IXCONS)
188 CALL MZBOOK(IXCONS,LMOX4,0,2,'MOX4',0,0,NW,0,-1)
192 LFP46 = LFP45 + NGR*NNUC
193 LFP47 = LFP46 + NGR*NNUC
196 C CLEAR THE STORAGE LOCATIONS FOR THE PHOTON DICTIONARIES
197 C OF THE TOTAL PHOTON PRODUCTION CROSS SECTIONS
198 CALL CLEAR(D,LFP45,LFP47-1)
199 C SUM THE PHOTON PARTIAL DISTRIBUTIONS OF THE ENDF/B-V
200 C FILE 12 AND FILE 13 DATA (BY MT NUMBER) AND PLACE THESE
201 C MICROSCOPIC MULTIPLICITIES TIMES CROSS SECTIONS IN CORE
202 CALL XSECN5(D(LFP28),D(LFP30),D(LFP31),D(LFP45),D(LFP46),
203 + D(LFP47),D(LFP47),D,D,MAXD,LAST)
205 C print out media to print unit IOUT
207 10100 FORMAT(23X,'MICAP Material Parameters',/,
208 + 23X,'-------------------------',/)
210 10200 FORMAT(8X,'GEANT Material Parameters',10X,
211 + 6X,'MICAP Material Parameters',/,
212 + 8X,25('-'),10X,6X,25('-'))
214 10300 FORMAT(1X,'Material',16X,'No/Iso',4X,'A',5X,'Z',2X,'|',
215 + 4X,'A',5X,'Z',3X,'Density',
216 + 3X,'Coll.Len',/,44('-'),'+',33('-'))
221 C get GEANT name of material
223 IF(LD(LFP11+I)/1000.NE.LD(LFP13+I)) THEN
228 LS1 = LD(LFP26+NNR*K1)+LMOX2
229 LEN = LD(LFP27+NNR*K1)/2
231 CALL TBSPLT(D(LS1),EN,LEN,XSEC)
232 XSEC = 1./XSEC/D(LFP12+I)
233 IF(LD(LFP140+I).NE.0.) THEN
234 WRITE(CGEANT,'(F6.1,I5)') D(LFP140+I),LD(LFP13+I)
236 WRITE(CGEANT,'(A11)') ' - -'
238 IF(KMED.NE.LD(LFP10+I)) THEN
240 CALL GFMATE(LD(LGE2MO+LD(LFP10+I)),MATNAM,AA,ZZ,DENS,
242 NBLK = LNBLNK(MATNAM)
244 WRITE(MATNAM(JC:JC),'(A1)') '.'
246 WRITE(MARK(2:3),'(I2)') NISO
247 WRITE(IOUT,10400) MATNAM,LD(LGE2MO+LD(LFP10+I)),MARK,
249 + D(LFP34+LD(LFP16+I)-1)*1.008665,
250 + LD(LFP11+I)/1000,D(LFP12+I),XSEC
253 WRITE(MARK(2:3),'(I2)') NISO
254 WRITE(IOUT,10500) LD(LGE2MO+LD(LFP10+I)),MARK,CGEANT,
255 + D(LFP34+LD(LFP16+I)-1)*1.008665,
256 + LD(LFP11+I)/1000,D(LFP12+I),XSEC
258 10400 FORMAT(1X,A20,I6,A4,A11,' |',F6.1,I5,1X,E11.4,1X,E9.3)
259 10500 FORMAT(1X,20X,I6,A4,A11,' |',F6.1,I5,1X,E11.4,1X,E9.3)
260 LD(LFP13+I) = LD(LFP11+I)/1000
263 WRITE(IOUT,'(78(''-''),/,48X,''Density in (Atoms/barn/cm)'')')
265 + ''Collision Length for 1 MeV neutron in (cm)'',/)')
266 IF(MFLAG.EQ.1) WRITE(IOUT,'(/,
267 + 15X,''*******************************************'',/,
268 + 15X,''* W A R N I N G *'',/,
269 + 15X,''* Marked isotopes (*) not found in the *'',/,
270 + 15X,''* cross-section file(s) *'',/,
271 + 15X,''* Cross-sections of the isotope with *'',/,
272 + 15X,''* the closest Z will be used instead *'',/,
273 + 15X,''*******************************************'',/)')
274 C which x-section files have been used?
280 C first check if x-section file has been used!
281 NUNIT = IQ(LT+NTUNIT)
284 MISO = LD(LFP17+KISO-1)
285 IF(NUNIT.EQ.LD(LFP18A+MISO-1)) GOTO 160
290 C search for comments for selected isotopes
297 CALL UHTOC(IQ(LCI+K+2),4,CCOMM,70)
300 IA = NINT(D(LFP34+KISO-1)*1.008665)
301 IZ = LD(LFP11+I)/1000
302 MISO = LD(LFP17+KISO-1)
303 C print the comment, if the isotope is correct and has been read from
304 C the current x-section file
305 IF(IA.EQ.JA .AND. IZ.EQ.JZ .AND.
306 + NUNIT.EQ.LD(LFP18A+MISO-1)) THEN
308 WRITE(IOUT,'(/,23X,''COMMENTS ABOUT ISOTOPE DATA'')')
309 WRITE(IOUT,'( 23X,''---------------------------'',/)')
313 WRITE(IOUT,'(I4,'') '',A70)') LC,CCOMM
320 IF(LT.GT.0.AND.LCI.GT.0) GOTO 140
321 C print the x-section file names and comments
322 WRITE(IOUT,'(/,20X,''USED NEUTRON CROSS-SECTION FILES'')')
323 WRITE(IOUT,'( 20X,''--------------------------------'',/)')
326 C first check if x-section file has been used!
327 NUNIT = IQ(LT+NTUNIT)
330 MISO = LD(LFP17+KISO-1)
331 IF(NUNIT.EQ.LD(LFP18A+MISO-1)) GOTO 220
336 C get file name of x-section file
340 CALL UHTOC(IQ(LT+NTNAME+1),4,XSFILE,IQ(LT+NTNAME))
341 CALL UHTOC(IQ(LT+NTCOMM+1),4,COMMEN,IQ(LT+NTCOMM))
342 CALL UHTOC(IQ(LT+NTDATS+1),4,DATSTR,IQ(LT+NTDATS))
343 WRITE(IOUT,'('' File : '',A66)') XSFILE
344 WRITE(IOUT,'('' Generated : '',A24,/,
345 + '' Comment : '',A66,/)') DATSTR,COMMEN
348 WRITE(IOUT,'(/,'' MICAP :'',I10,
349 + '' words used in GCBANK for neutron x-section tables''/)') NWTOT