]> git.uio.no Git - u/mrichter/AliRoot.git/blame - GEANT321/neutron/xsecn5.F
stdlib.h included to define exit()
[u/mrichter/AliRoot.git] / GEANT321 / neutron / xsecn5.F
CommitLineData
fe4da5cc 1*
2* $Id$
3*
4* $Log$
5* Revision 1.1.1.1 1995/10/24 10:22:00 cernlib
6* Geant
7*
8*
9#include "geant321/pilot.h"
10*CMZ : 3.21/02 29/03/94 15.41.48 by S.Giani
11*-- Author :
12 SUBROUTINE XSECN5(NTX,IGCBS,LGCB,IGCBS2,LGCB2,BUF,IBUF,D,LD,
13 +LIM,LAST)
14C THIS ROUTINE READS THE PHOTON PARTIAL DISTRIBUTIONS FOR EACH
15C REACTION LISTED IN THE GCB ARRAYS AND SUMS THEM UP TO
16C CREATE A TOTAL MULTIPLICITY * CROSS SECTION ARRAY FOR
17C EACH REACTION AND STORES THIS CROSS SECTION DATA IN CORE
18#include "geant321/minput.inc"
19#include "geant321/mconst.inc"
20#include "geant321/mmicab.inc"
21 DIMENSION NTX(NNUC),IGCBS(NGR,NNUC),LGCB(NGR,NNUC),
22 +IGCBS2(NGR,NNUC),LGCB2(NGR,NNUC),BUF(*),IBUF(*),D(*),LD(*)
23C ASSIGN THE DEFAULT VALUES
24 LEN=0
25C INITIALIZE THE COUNTERS FOR THE LOOP
26C LAST EQUALS THE LAST CORE POSITION USED IN THE CALLING
27CROUTINE (INPUT1)
28C LST EQUALS THE LAST POSITION USED IN THE BUF ARRAY
29C (I.E. (BUF(LST) = D(LAST)))
30 LST=0
31 DO 70 I=1,NNUC
32 NNTX=NTX(I)
33 L=2*NNTX
34 IF(L.EQ.0)GO TO 70
35 DO 60 I2=1,NNTX
36 LZ=LGCB(2*I2,I)
37 IF(LZ.EQ.0)GO TO 60
38 LEN=LIM-LAST
39 IF(LEN.LT.LZ)GO TO 80
40C EQUATE THE MT NUMBERS IN THE GCB AND GCB2 DICTIONARIES
41 IGCBS2(2*I2-1,I)=IGCBS(2*I2-1,I)
42 LGCB2(2*I2-1,I)=LGCB(2*I2-1,I)
43C SET THE STARTING LOCATION FOR THE PHOTON TOTAL CROSS SECTION
44 IGCBS2(2*I2,I)=LAST+1-LMOX4
45C OBTAIN THE STARTING LOCATION OF THE PARTIAL DISTRIBUTIONS
46 IST=IGCBS(2*I2,I)+LMOX2
47 NK=LD(IST)
48 NP=LD(IST+1)
49 NP2=2*NP
50 LGCB2(2*I2,I)=NP2
51C ZERO OUT THE CORE AREA TO STORE THE TOTAL PHOTON
52C MULTIPLICITY * CROSS SECTION ARRAYS
53 DO 10 IP=1,NP2
54 BUF(LST+IP)=0.0
55 10 CONTINUE
56C SET UP THE ENERGY BOUNDARIES FOR THE (E,XS) TABLE
57 DO 20 J=1,NP
58 BUF(LST+2*J-1)=D(IST+J+2-1)
59 20 CONTINUE
60 II=NP+2
61 AWRI=D(IST+II+3-1)
62C SUM THE PARTIAL DISTRIBUTIONS TO OBTAIN THE TOTAL
63C MULTIPLICITY * CROSS SECTION ARRAY AND STORE IN THE
64C ENERGY,CROSS SECTION TABLE
65 DO 40 J=1,NK
66 II=II+4
67 DO 30 K=1,NP
68 BUF(LST+2*K)=BUF(LST+2*K)+D(IST+II+K-1)
69 30 CONTINUE
70 II=II+NP
71 40 CONTINUE
72 50 CONTINUE
73C UPDATE CORE LOCATION POINTERS
74 LAST=LAST+NP2
75 LST=LST+NP2
76 60 CONTINUE
77 70 CONTINUE
78 RETURN
79 80 WRITE(IOUT,10000)LZ,LEN
8010000 FORMAT(' MICAP: NOT ENOUGH SPACE TO READ IN RECORD',/,5X,
81 +'LENGTH OF RECORD=',I10,/,5X,'SPACE AVAILABLE=',I10)
82 PRINT '('' CALOR: ERROR in XSECN5 ====> STOP '')'
83 STOP
84 END