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
|
*DECK CREGET
SUBROUTINE CREGET(IPMAP,NCH,NB,IBTYP,IMPX,BRN0,BRN1,FMIX,ZONEDP,
1 IVARTY,VARVAL)
*
*-----------------------------------------------------------------------
*
*Purpose:
* recover the necessary information from the fuel-map object.
*
*Copyright:
* Copyright (C) 2007 Ecole Polytechnique de Montreal.
*
*Author(s): D. Sekki, A. Hebert
*
*Parameters: input
* IPMAP pointer to the fuel-map information.
* NCH number of reactor channels.
* NB number of fuel bundles per channel.
* IBTYP type of interpolation:
* =0 not provided;
* =1 time-average;
* =2 instantaneous;
* =3 derivative with respect to a single exit burnup.
* IMPX printing index (=0 for no print).
* IVARTY index of the exit burnup used to compute derivatives;
* used if IBTYP=3.
*
*Parameters: output
* FMIX fuel mixture indices per fuel bundle.
* BRN0 contains either low burnup integration limits or
* instantaneous burnups per fuel bundle.
* BRN1 upper burnup integration limits per fuel bundle.
* VARVAL single exit burnup; used if IBTYP=3.
* ZONEDP switch related to Chambon formula.
*
*-----------------------------------------------------------------------
*
USE GANLIB
*----
* SUBROUTINE ARGUMENTS
*----
TYPE(C_PTR) IPMAP
INTEGER NCH,NB,IBTYP,IMPX,FMIX(NCH,NB),ZONEDP(NCH,NB),IVARTY
REAL BRN0(NCH,NB),BRN1(NCH,NB),VARVAL
*----
* LOCAL VARIABLES
*----
PARAMETER(IOUT=6,NSTATE=40)
INTEGER ISTATE(NSTATE)
INTEGER, ALLOCATABLE, DIMENSION(:) :: IZONE
REAL, ALLOCATABLE, DIMENSION(:) :: VARC
*----
* SCRATCH STORAGE ALLOCATION
*----
ALLOCATE(IZONE(NCH))
*
FMIX(:NCH,:NB)=0
BRN0(:NCH,:NB)=0.0
BRN1(:NCH,:NB)=0.0
CALL LCMGET(IPMAP,'FLMIX',FMIX)
IF(IBTYP.EQ.0) THEN
CALL LCMGET(IPMAP,'STATE-VECTOR',ISTATE)
IBTYP=ISTATE(5)
ENDIF
*----
* TIME-AVERAGE
*----
IF(IBTYP.EQ.1)THEN
* LOW BURNUP LIMITS
CALL LCMLEN(IPMAP,'BURN-BEG',LENGT,ITYP)
IF(LENGT.EQ.0)CALL XABORT('@CREGET: MISSI'
1 //'NG BURN-BEG VALUES IN FUEL MAP.')
CALL LCMGET(IPMAP,'BURN-BEG',BRN0)
* UPPER BURNUP LIMITS
CALL LCMLEN(IPMAP,'BURN-END',LENGT,ITYP)
IF(LENGT.EQ.0)CALL XABORT('@CREGET: MISSI'
1 //'NG BURN-END VALUES IN FUEL MAP.')
CALL LCMGET(IPMAP,'BURN-END',BRN1)
IF(IMPX.GT.0)WRITE(IOUT,1000)
*----
* INSTANTANEOUS
*----
ELSEIF(IBTYP.EQ.2)THEN
CALL LCMLEN(IPMAP,'BURN-INST',LENGT,ITYP)
IF(LENGT.EQ.0)CALL XABORT('@CREGET: MISSI'
1 //'NG BURN-INST VALUES IN FUEL MAP.')
CALL LCMGET(IPMAP,'BURN-INST',BRN0)
IF(IMPX.GT.0)WRITE(IOUT,1001)
*----
* SINGLE EXIT BURNUP
*----
ELSEIF(IBTYP.EQ.3)THEN
IF(IVARTY.EQ.0)CALL XABORT('@CREGET: IVARTY NOT SET.')
* LOW BURNUP LIMITS
CALL LCMLEN(IPMAP,'BURN-BEG',LENGT,ITYP)
IF(LENGT.EQ.0)CALL XABORT('@CREGET: MISSI'
1 //'NG BRN0 VALUES IN FUEL MAP.')
CALL LCMGET(IPMAP,'BURN-BEG',BRN0)
* UPPER BURNUP LIMITS
CALL LCMLEN(IPMAP,'BURN-END',LENGT,ITYP)
IF(LENGT.EQ.0)CALL XABORT('@CREGET: MISSI'
1 //'NG BRN1 VALUES IN FUEL MAP.')
CALL LCMGET(IPMAP,'BURN-END',BRN1)
IF(IMPX.GT.0)WRITE(IOUT,1000)
CALL LCMGET(IPMAP,'B-ZONE',IZONE)
DO 35 ICH=1,NCH
DO 30 IB=1,NB
IF(IZONE(ICH).EQ.IVARTY)THEN
ZONEDP(ICH,IB)=1
ELSE
ZONEDP(ICH,IB)=0
ENDIF
30 CONTINUE
35 CONTINUE
CALL LCMLEN(IPMAP,'BURN-AVG',ILONG,ITYP)
IF (ILONG.EQ.0)CALL XABORT('@CREGET: NO SAVED VA'
1 //'LUES FOR THIS TYPE OF VARIABLE IN FUEL MAP')
ALLOCATE(VARC(ILONG))
CALL LCMGET(IPMAP,'BURN-AVG',VARC)
VARVAL=VARC(IVARTY)
DEALLOCATE(VARC)
ELSE
CALL XABORT('@CREGET: INVALID OPTION IBTYP.')
ENDIF
*----
* SCRATCH STORAGE DEALLOCATION
*----
DEALLOCATE(IZONE)
RETURN
*
1000 FORMAT(/1X,'** PERFORMING THE TIME-AVERAGE',
1 1X,'INTEGRATION OVER THE FUEL LATTICE **'/)
1001 FORMAT(/1X,'** PERFORMING THE INSTANTANEOU',
1'S INTERPOLATION OVER THE FUEL LATTICE **'/)
END
|