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
|
*DECK FLPFLX
SUBROUTINE FLPFLX(NGRP,NEL,LX,LY,LZ,MAT,VOL,FLUX,FXYZ,RATIO,VTOT,
1 IMPX,LFLX,LRAT)
*
*-----------------------------------------------------------------------
*
*Purpose:
* Compute the flux distributions and ratios over the whole reactor core;
* print the normalized fluxes on files.
*
*Copyright:
* Copyright (C) 2007 Ecole Polytechnique de Montreal.
*
*Author(s):
* D. Sekki
*
*Parameters: input
* NGRP total number of energy groups.
* NEL total number of finite elements.
* LX number of elements along x-axis.
* LY number of elements along y-axis.
* LZ number of elements along z-axis.
* MAT index-number of mixture assigned to each volume.
* VOL element-ordered mesh-splitted volumes.
* FLUX normalized fluxes associated with each volume.
* IMPX screen printing index (=0 for no print).
* LFLX fluxes printing flag: =.true. print on files.
* LRAT ratios printing flag: =.true. print on files.
*
*Parameters: output
* FXYZ mesh-ordered fluxes.
* RATIO fluxes ratios with respect to thermal fluxes.
* VTOT total reactor-core volume.
*
*-----------------------------------------------------------------------
*
*----
* SUBROUTINE ARGUMENTS
*----
INTEGER NGRP,NEL,LX,LY,LZ,MAT(NEL),IMPX
REAL FXYZ(LX,LY,LZ,NGRP),FLUX(NEL,NGRP),
1 RATIO(LX,LY,LZ,NGRP-1),VOL(NEL)
DOUBLE PRECISION VTOT
LOGICAL LFLX,LRAT
*----
* LOCAL VARIABLES
*----
PARAMETER(IOUT=6,INIT=1)
CHARACTER TEXT*12
DOUBLE PRECISION FAVG(NGRP)
*----
* PERFORM CALCULATION
*----
IF(IMPX.GT.0)WRITE(IOUT,1010)
FMAX=0.
IM=0
KM=0
MGR=0
VTOT=0.0D0
FAVG(:NGRP)=0.0D0
FXYZ(:LX,:LY,:LZ,:NGRP)=0.0
IEL=0
DO 12 K=1,LZ
DO 11 J=1,LY
DO 10 I=1,LX
IEL=IEL+1
IF(MAT(IEL).EQ.0)GOTO 10
VTOT=VTOT+VOL(IEL)
DO JGR=1,NGRP
FXYZ(I,J,K,JGR)=FLUX(IEL,JGR)
IF(ABS(FXYZ(I,J,K,JGR)).GT.FMAX)THEN
FMAX=FXYZ(I,J,K,JGR)
IM=I
JM=J
KM=K
MGR=JGR
ENDIF
FAVG(JGR)=FAVG(JGR)+FXYZ(I,J,K,JGR)*VOL(IEL)
ENDDO
10 CONTINUE
11 CONTINUE
12 CONTINUE
* MAX AND CORE-AVERAGE FLUXES
IF(IMPX.GT.0)WRITE(IOUT,1000)FMAX,IM,JM,KM,MGR
DO JGR=1,NGRP
FAVG(JGR)=FAVG(JGR)/VTOT
IF(IMPX.GT.0)WRITE(IOUT,1001)FAVG(JGR),JGR
ENDDO
IF(MGR.EQ.0) CALL XABORT('FLPFLX: FLUX NORMALIZATION FAILURE.')
FACT=REAL(FAVG(MGR))/FMAX
FACT2=1./FACT
IF(IMPX.GT.0)WRITE(IOUT,1002)MGR,FACT,FACT2,VTOT
* FLUXES RATIOS
RATIO(:LX,:LY,:LZ,:NGRP-1)=0.0
DO 32 K=1,LZ
DO 31 J=1,LY
DO 30 I=1,LX
IF(FXYZ(I,J,K,NGRP).EQ.0.)GOTO 30
DO 20 JGR=1,NGRP-1
RATIO(I,J,K,JGR)=FXYZ(I,J,K,JGR)/FXYZ(I,J,K,NGRP)
20 CONTINUE
30 CONTINUE
31 CONTINUE
32 CONTINUE
IF(.NOT.LFLX)GOTO 60
*----
* PRINTING
*----
IF(IMPX.GT.0)WRITE(IOUT,1006)
* FLUXES
DO 50 JGR=1,NGRP
WRITE(TEXT,'(A4,I2.2,A4)')'Flux',JGR,'.res'
OPEN(UNIT=INIT,FILE=TEXT,STATUS='UNKNOWN')
WRITE(INIT,1011)LX,LY,LZ,JGR
DO 40 K=1,LZ
DO J=1,LY
WRITE(INIT,1009)J,K
WRITE(INIT,1005) (FXYZ(I,J,K,JGR),I=1,LX)
ENDDO
40 CONTINUE
CLOSE(UNIT=INIT)
IF(IMPX.GT.0)WRITE(IOUT,1003)JGR,TEXT
50 CONTINUE
*
60 IF(.NOT.LRAT)GOTO 90
IF(IMPX.GT.0)WRITE(IOUT,1007)
* RATIOS
DO 80 JGR=1,NGRP-1
WRITE(TEXT,'(A4,I2.2,A4)')'Rati',JGR,'.res'
OPEN(UNIT=INIT,FILE=TEXT,STATUS='UNKNOWN')
WRITE(INIT,1012)JGR,NGRP,LX,LY,LZ
DO 70 K=1,LZ
DO J=1,LY
WRITE(INIT,1009)J,K
WRITE(INIT,1008) (RATIO(I,J,K,JGR),I=1,LX)
ENDDO
70 CONTINUE
CLOSE(UNIT=INIT)
IF(IMPX.GT.0)WRITE(IOUT,1004)JGR,NGRP,TEXT
80 CONTINUE
90 RETURN
*
1000 FORMAT(1X,'MAX FLUX =',1P,E13.6,4X,'AT COORD :',1X,
1 'I =',I3,2X,'J =',I3,2X,'K =',I3,2X,'GROUP #',I2.2/)
1001 FORMAT(1X,'CORE-AVERAGE FLUX =',1P,E13.6,
1 2X,'=>',2X,'GROUP #',I2.2)
1002 FORMAT(/1X,'OVERALL FLUX-FORM FACTOR FOR GROUP #',I2.2,
1 2X,'=>',2X,'AVG/MAX =',1X,F8.4,2X,'(MAX/AVG = ',F8.4,
2 ')'/1X,'TOTAL CORE VOLUME =',1P,E13.6,1X,'CM3'/)
1003 FORMAT(1X,'FLUXES',2X,'=>',2X,'GROUP #',I2.2,2X,
1 '=>',2X,'FILE NAME: <',A10,'>',2X,'=>',2X,'DONE.')
1004 FORMAT(1X,'FLUX RATIOS',2X,'=>',2X,'GR.#',I2.2,
1 '/GR.#',I2.2,2X,'=>',2X,'FILE NAME: <',A10,'>',
1 2X,'=>',2X,'DONE.')
1005 FORMAT(1X,1P,6E16.8)
1006 FORMAT(/15X,'** PRINTING OF FLUXES ON FILES **'/)
1007 FORMAT(/15X,'** PRINTING OF RATIOS ON FILES **'/)
1008 FORMAT(1X,1P,6E14.6)
1009 FORMAT(//3X,'PLANE-Y #',I2.2,5X,'PLANE-Z #',I2.2/)
1010 FORMAT(/1X,'** COMPUTING FLUX-DISTRIBUTION',
1 1X,'OVER THE REACTOR CORE **'/)
1011 FORMAT(/10X,5('*'),3X,'FLUX-DISTRIBUTION OVER THE',
1 1X,'REACTOR CORE',3X,5('*')//21X,'NX=',I2,',',2X,
2 'NY=',I2,',',2X,'NZ=',I2,',',2X,'GROUP #',I2.2)
1012 FORMAT(/10X,5('*'),3X,'FLUXES RATIO',1X,'#',I2.2,
1 '/#',I2.2,1X,'OVER THE REACTOR CORE',3X,5('*')//
2 25X,'NX=',I2,',',2X,'NY=',I2,',',2X,'NZ=',I2)
END
|