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
|
*DECK TAVGEX
SUBROUTINE TAVGEX(IPMAP,IPPOW,NCH,NCOMB,NX,NY,NZ,IMPX)
*
*-----------------------------------------------------------------------
*
*Purpose:
* Compute the core-average exit burnup and channel refuelling rates.
*
*Copyright:
* Copyright (C) 2007 Ecole Polytechnique de Montreal.
*
*Author(s):
* D. Sekki
*
*Parameters: input/output
* IPMAP pointer to fuel-map information.
* IPPOW pointer to power information.
* NCH number of reactor channels.
* NCOMB number of combustion zones.
* NX number of elements along x-axis in fuel map.
* NY number of elements along y-axis in fuel map.
* NZ number of elements along z-axis in fuel map.
* IMPX printing index (=0 for no print).
*
*-----------------------------------------------------------------------
*
USE GANLIB
*----
* SUBROUTINE ARGUMENTS
*----
TYPE(C_PTR) IPMAP,IPPOW
INTEGER NCH,NCOMB,NX,NY,NZ,IMPX
*----
* LOCAL VARIABLES
*----
PARAMETER(IOUT=6)
INTEGER MIX(NX*NY*NZ),BZONE(NCH),NSCH(NCH),NAMX(NX),NAMY(NY)
REAL BVAL(NCOMB),RATE(NCH),POWC(NCH)
DOUBLE PRECISION SUMR,SUMB
CHARACTER TEXT*12,CHANX*2,CHANY*2
*----
* RECOVER INFORMATION
*----
MIX(:NX*NY*NZ)=0
CALL LCMGET(IPMAP,'BMIX',MIX)
* CHANNEL POWERS
POWC(:NCH)=0.0
CALL LCMGET(IPPOW,'POWER-CHAN',POWC)
* REFUELLING SCHEME
NSCH(:NCH)=0
CALL LCMGET(IPMAP,'REF-SCHEME',NSCH)
* AVERAGE EXIT BURNUPS
BVAL(:NCOMB)=0.0
CALL LCMGET(IPMAP,'BURN-AVG',BVAL)
* COMBUSTION-ZONE INDEX
BZONE(:NCH)=0
CALL LCMGET(IPMAP,'B-ZONE',BZONE)
* CHANNEL NAMES
NAMX(:NX)=0
CALL LCMGET(IPMAP,'XNAME',NAMX)
NAMY(:NY)=0
CALL LCMGET(IPMAP,'YNAME',NAMY)
*----
* CALCULATION OVER EACH CHANNEL
*----
IF(IMPX.GT.0)WRITE(IOUT,1000)
RATE(:NCH)=0.0
IEL=0
ICH=0
SUMR=0.0D0
SUMB=0.0D0
DO 15 J=1,NY
DO 10 I=1,NX
IEL=IEL+1
IF(MIX(IEL).EQ.0)GOTO 10
ICH=ICH+1
* REFUELLING RATE
RATE(ICH)=POWC(ICH)/BVAL(BZONE(ICH))
SUMR=SUMR+RATE(ICH)
SUMB=SUMB+BVAL(BZONE(ICH))*RATE(ICH)
IF(IMPX.LT.4)GOTO 10
* PRINT RATE
WRITE(TEXT,'(A9,I3.3)')'CHANNEL #',ICH
WRITE(CHANX,'(A2)') (NAMX(I))
WRITE(CHANY,'(A2)') (NAMY(J))
WRITE(IOUT,1001)TEXT,CHANY,CHANX,NSCH(ICH),RATE(ICH)
10 CONTINUE
15 CONTINUE
* EXIT BURNUP
BEXIT=REAL(SUMB/SUMR)
IF(IMPX.EQ.0)GOTO 20
IF(BEXIT.LT.10000.)THEN
WRITE(IOUT,1002)BEXIT
ELSE
WRITE(IOUT,1003)BEXIT
ENDIF
20 CALL LCMPUT(IPMAP,'B-EXIT',1,2,BEXIT)
CALL LCMPUT(IPMAP,'REF-RATE',NCH,2,RATE)
RETURN
*
1000 FORMAT(/1X,'**',1X,'COMPUTING CHANNEL',
1 1X,'REFUELLING',1X,'RATES',1X,'**'/)
1001 FORMAT(5X,A12,5X,'NAME:',1X,A2,A2,5X,'RE',
1 'F-SCHEME:',1X,I2,5X,'REF-RATE: ',F6.4/)
1002 FORMAT(/1X,'CORE-AVERAGE EXIT BURNUP',
1 1X,'=',1X,F7.2,1X,'MW*DAY/T'/)
1003 FORMAT(/1X,'CORE-AVERAGE EXIT BURNUP',
1 1X,'=',1X,F8.2,1X,'MW*DAY/T'/)
END
|