summaryrefslogtreecommitdiff
path: root/Dragon/src/EDIPRR.f
blob: 40c5fea336488ceef35d6bbd771d31fdcff3b1c7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
*DECK EDIPRR
      SUBROUTINE EDIPRR(IPRINT,NL,ITRANC,NGCOND,NMERGE,ILEAKS,NW,NTAUXT,
     >                  B2,VOLMER,NENER,WENERG,RATECM,FLUXCM,SCATTD)
*
*-----------------------------------------------------------------------
*
*Purpose:
* Print reaction rates.
*
*Copyright:
* Copyright (C) 2002 Ecole Polytechnique de Montreal
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version
*
*Author(s): G. Marleau
*
*Parameters: input
* IPRINT  print level;
*         = 0 no print;
*         = 1 print fluxes;
*         = 2 1+print reaction rates;
*         = 3 2+print homogenized cross sections.
* NL      number of Legendre orders.
* ITRANC  type of transport correction.
* NGCOND  number of condensed groups.
* NMERGE  number of merged regions.
* ILEAKS  type of leakage calculation:
*         = 0 no leakage;
*         = 1 homogeneous leakage (Diffon);
*         = 2 isotropic streaming (Ecco);
*         = 3 anisotropic streaming (Tibere);
*         = 10 isotropic diffusion coefficients recovered from input
*           macrolib;
*         = 11 anisotropic diffusion coefficients recovered from input
*           macrolib.
* NW      type of weighting for PN cross section info (=0 P0; =1 P1).
* NTAUXT  number of reaction rate edits.
* B2      square buckling:
*         for ILEAKS=1,2: B2(4) is homogeneous;
*         for ILEAKS=3: B2(1),B2(2),B2(3) are directional heterogeneous
*         and B2(4) is homogeneous.
* VOLMER  volume of region merged.
* NENER   number of energy groups limits.
* WENERG  energy group limits.
* RATECM  averaged region/group cross sections:
*         = RATECM(*,1) = total P0;
*         = RATECM(*,2) = total P1;
*         = RATECM(*,NW+2) = absorption;
*         = RATECM(*,NW+3) = fission;
*         = RATECM(*,NW+4) = fixed sources / productions;
*         = RATECM(*,NW+5) = leakage;
*         = RATECM(*,NW+6) = total out of group scattering;
*         = RATECM(*,NW+7) = diagonal scattering x-s;
*         = RATECM(*,NW+8) = chi;
*         = RATECM(*,NW+9) = wims type transport correction;
*         = RATECM(*,NW+10) = x-directed leakage;
*         = RATECM(*,NW+11) = y-directed leakage;
*         = RATECM(*,NW+12) = z-directed leakage;
*         = RATECM(*,NW+13) = nu-sigf for delayed neutrons;
*         = RATECM(*,NW+13+NDEL) = fission spectra for delayed neutrons.
* FLUXCM  integrated region/group fluxes:
*         = FLUXCM(*,1) = fluxes P0;
*         = FLUXCM(*,2) = fluxes P1.
* SCATTD  scattering rates.
*
*-----------------------------------------------------------------------
*
*----
*  SUBROUTINE ARGUMENTS
*----
      INTEGER    IPRINT,NL,ITRANC,NGCOND,NMERGE,ILEAKS,NW,NTAUXT,NENER
      REAL       B2(4),VOLMER(NMERGE),WENERG(NGCOND+1),
     >           RATECM(NMERGE,NGCOND,NTAUXT),FLUXCM(NMERGE,NGCOND,NW+1)
      DOUBLE PRECISION SCATTD(NMERGE,NGCOND,NGCOND,NL)
*----
*  LOCAL VARIABLES
*----
      CHARACTER   APG*3
      PARAMETER  (IUNOUT=6,APG=' > ')
      DOUBLE PRECISION SCATWG,SCATTN
      REAL, ALLOCATABLE, DIMENSION(:,:) :: FLDMC
*----
*  SCRATCH STORAGE ALLOCATION
*   FLDMC   flux merged and condensed.
*----
      ALLOCATE(FLDMC(NMERGE,NGCOND))
*----
*  COMPUTE AVERAGE FLUX
*----
      DO 224 IGRC=1,NGCOND
        DO 225 IKK=1,NMERGE
          FLDMC(IKK,IGRC)=FLUXCM(IKK,IGRC,1)/VOLMER(IKK)
 225    CONTINUE
 224  CONTINUE
*----
*  PRINT REACTION RATES
*----
      WRITE(IUNOUT,6000)
      WRITE(IUNOUT,6001) (JJ,VOLMER(JJ),JJ=1,NMERGE)
      IF( (NENER.GT.0) .AND. (IPRINT.GT.1) ) THEN
        WRITE(IUNOUT,6002) (WENERG(IG),APG,IG,APG,IG=1,NGCOND),
     >                        WENERG(NGCOND+1)
      ENDIF
      WRITE(IUNOUT,6003)
      DO 154 IGR=1,NGCOND
        IF(IPRINT.EQ.1) THEN
          WRITE(IUNOUT,6010) IGR
          WRITE(IUNOUT,6012) (FLUXCM(IKK,IGR,1),IKK=1,NMERGE)
          WRITE(IUNOUT,6011)
          WRITE(IUNOUT,6012) (FLDMC(IKK,IGR),IKK=1,NMERGE)
          GO TO 154
        ENDIF
        IF((ILEAKS.EQ.1).OR.(ILEAKS.EQ.2).OR.(ILEAKS.EQ.10)) THEN
          WRITE(IUNOUT,6013) IGR
        ELSE
          WRITE(IUNOUT,6014) IGR
        ENDIF
        DO 155 IKK=1,NMERGE
          IF(VOLMER(IKK).EQ.0.0) GO TO 155
*----
*  UNCOMMENT THE 2 LINES TO PERFORM TRANSPORT CORRECTION
*----
          TOTAL=RATECM(IKK,IGR,1)
          SCATWG=SCATTD(IKK,IGR,IGR,1)
          IF(ITRANC.NE.0) THEN
*           TOTAL=TOTAL-RATECM(IKK,IGR,NW+9)
*           SCATWG=SCATWG-RATECM(IKK,IGR,NW+9)
          ENDIF
*
          SCATTN=0.0D0
          DO 153 JGR=1,NGCOND
            IF(JGR.NE.IGR) SCATTN=SCATTN+SCATTD(IKK,JGR,IGR,1)
 153      CONTINUE
          IF((ILEAKS.EQ.1).OR.(ILEAKS.EQ.2).OR.(ILEAKS.EQ.10)) THEN
            WRITE(IUNOUT,6020) IKK,FLDMC(IKK,IGR),FLUXCM(IKK,IGR,1),
     >        TOTAL,RATECM(IKK,IGR,NW+2),RATECM(IKK,IGR,NW+3),
     >        RATECM(IKK,IGR,NW+5)*B2(4),RATECM(IKK,IGR,NW+4),SCATWG,
     >        SCATTN
          ELSE
            WRITE(IUNOUT,6021) IKK, FLDMC(IKK,IGR),FLUXCM(IKK,IGR,1),
     >        TOTAL,RATECM(IKK,IGR,NW+2),RATECM(IKK,IGR,NW+3),
     >        RATECM(IKK,IGR,NW+4),SCATWG,SCATTN
          ENDIF
 155    CONTINUE
        IF((ILEAKS.EQ.3).OR.(ILEAKS.EQ.11)) THEN
          WRITE(IUNOUT,6022)
          DO 156 IKK=1,NMERGE
            IF(VOLMER(IKK).EQ.0.0) GO TO 156
            WRITE(IUNOUT,6023) IKK,RATECM(IKK,IGR,NW+10)*B2(1)+
     >      RATECM(IKK,IGR,NW+11)*B2(2)+RATECM(IKK,IGR,NW+12)*B2(3),
     >      RATECM(IKK,IGR,NW+10)*B2(1),RATECM(IKK,IGR,NW+11)*B2(2),
     >      RATECM(IKK,IGR,NW+12)*B2(3),RATECM(IKK,IGR,NW+5)*B2(4)
 156      CONTINUE
        ENDIF
 154  CONTINUE
*----
*  SCRATCH STORAGE DEALLOCATION
*----
      DEALLOCATE(FLDMC)
      RETURN
*----
*  FORMAT
*----
 6000 FORMAT(////5(5X,'REGION',6X,'VOLUME  '))
 6001 FORMAT(1P,5(5X,I4,4X,E12.5))
 6002 FORMAT(/' E N E R G Y   L I M I T S   (EV)'/1P,
     >6(E12.4,A3,I3,A3))
 6003 FORMAT(/' F L U X E S   A N D    R E A C T I O N    R A T E S'/
     >1X,51(1H-))
 6010 FORMAT(/' G R O U P   :',I4/' REGION INTEGRATED FLUX')
 6011 FORMAT(' AVERAGED REGIONAL FLUX')
 6012 FORMAT(1P,7(3X,E15.7))
 6013 FORMAT(/14H G R O U P   :,I4/7H REGION,3X,7HAVERAGE,5X,3HINT,
     > 7HEGRATED,5X,9HCOLLISION,4X,10HABSORPTION,4X,10HNU*FISSION,6X,
     > 7HLEAKAGE,5X,10HPRODUCTION,8X,16HSCATTERING RATES/11X,4HFLUX,
     > 10X,4HFLUX,10X,4HRATE,10X,4HRATE,10X,4HRATE,10X,4HRATE,10X,
     > 4HRATE,6X,26HWITHIN GROUP  OUT OF GROUP)
 6014 FORMAT(/14H G R O U P   :,I4/7H REGION,3X,7HAVERAGE,5X,3HINT,
     > 7HEGRATED,5X,9HCOLLISION,4X,10HABSORPTION,4X,10HNU*FISSION,
     > 4X,10HPRODUCTION,8X,16HSCATTERING RATES/11X,4HFLUX,
     > 10X,4HFLUX,10X,4HRATE,10X,4HRATE,10X,4HRATE,10X,
     > 4HRATE,6X,26HWITHIN GROUP  OUT OF GROUP)
 6020 FORMAT(1X,I4,1P,9E14.5)
 6021 FORMAT(1X,I4,1P,8E14.5,3E14.5)
 6022 FORMAT(/' REGION  TOTAL LEAKAGE     X-LEAKAGE',
     >        '     Y-LEAKAGE     Z-LEAKAGE   HOMOGENEOUS'/
     >        '              RATE           RATE   ',
     >        '       RATE          RATE     LEAKAGE RATE')
 6023 FORMAT(1X,I6,1X,1P,5E14.5)
      END