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
|
*DECK CVRCOR
SUBROUTINE CVRCOR(IPMAP,NCH,NB,NFUEL,NX,NY,NZ,IVOID,NVOID,NPARM,
1 PNAME,PVALUE,VCOOL,LCOOL,IMPX)
*
*-----------------------------------------------------------------------
*
*Purpose:
* Modify channels data according to the specified core-voiding pattern.
*
*Copyright:
* Copyright (C) 2007 Ecole Polytechnique de Montreal.
*
*Author(s):
* D. Sekki
*
*Parameters: input/output
* IPMAP pointer to the perturbed fuel-map.
* NCH number of reactor channels.
* NB number of fuel bundles per channel.
* NFUEL number of fuel types.
* 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.
* IVOID index associated with the core-voiding pattern:
* =1 full-core; =2 half-core; =3 quarter-core;
* =4 checkerboard-full; =5 checkerboard-half;
* =6 checkerboard-quarter.
* NVOID total number of voided channels.
* NPARM total number of recorded parameters.
* PNAME recorded parameter name for the coolant density.
* PVALUE structure containing the coolant density values
* throughout the reactor core.
* VCOOL coolant density value for voided channels.
* LCOOL flag with respect to the coolant densities:
* =.true. to modify these values;
* =.false. coolant densities not provided.
* IMPX printing index (=0 for no print).
*
*-----------------------------------------------------------------------
*
USE GANLIB
*----
* SUBROUTINE ARGUMENTS
*----
TYPE(C_PTR) IPMAP
INTEGER NCH,NB,NFUEL,NX,NY,NZ,IVOID,NVOID,NPARM,IMPX
REAL PVALUE(NCH,NB),VCOOL
CHARACTER PNAME*12
LOGICAL LCOOL
*----
* LOCAL VARIABLES
*----
PARAMETER(IOUT=6)
INTEGER FLMIX(NCH,NB),NSCH(NCH),INAME(3)
CHARACTER TEXT*20,TEXT12*12
LOGICAL LCHK
TYPE(C_PTR) JPMAP,KPMAP
*----
* RECOVER INFORMATION
*----
FLMIX(:NCH,:NB)=0
NSCH(:NCH)=0
LCHK=.FALSE.
CALL LCMGET(IPMAP,'FLMIX',FLMIX)
CALL LCMLEN(IPMAP,'REF-SCHEME',LENGT,ITYP)
IF(LENGT.EQ.0)CALL XABORT('@CVRCOR: MISSI'
1 //'NG REF-SCHEME DATA IN FUEL-MAP.')
CALL LCMGET(IPMAP,'REF-SCHEME',NSCH)
IF(IVOID.EQ.1)THEN
TEXT='FULL-CORE'
ELSEIF(IVOID.EQ.2)THEN
TEXT='HALF-CORE'
ELSEIF(IVOID.EQ.3)THEN
TEXT='QUARTER-CORE'
ELSEIF(IVOID.EQ.4)THEN
TEXT='CHECKERBOARD-FULL'
LCHK=.TRUE.
ELSEIF(IVOID.EQ.5)THEN
TEXT='CHECKERBOARD-HALF'
LCHK=.TRUE.
ELSEIF(IVOID.EQ.6)THEN
TEXT='CHECKERBOARD-QUARTER'
LCHK=.TRUE.
ENDIF
IF(IMPX.GT.0)WRITE(IOUT,1000)TEXT,NVOID
*----
* MODIFY CHANNEL DATA
*----
ITOT=0
JPMAP=LCMGID(IPMAP,'FUEL')
DO IFUEL=1,NFUEL
KPMAP=LCMGIL(JPMAP,IFUEL)
CALL LCMGET(KPMAP,'MIX',MIXF)
CALL LCMGET(KPMAP,'MIX-VOID',MIXV)
DO 20 ICH=1,NVOID
IF(LCHK)THEN
IF(NSCH(ICH).LT.0)GOTO 20
* POSITIVE DIRECTION ONLY
ENDIF
DO 10 IB=1,NB
IF(FLMIX(ICH,IB).NE.MIXF)GOTO 10
FLMIX(ICH,IB)=MIXV
IF(LCOOL) PVALUE(ICH,IB)=VCOOL
ITOT=ITOT+1
10 CONTINUE
20 CONTINUE
ENDDO
IF(IMPX.GT.0)WRITE(IOUT,1001)ITOT
IF(IMPX.LT.2)GOTO 30
* PRINTING
CALL CVRPRN(IPMAP,NCH,NB,NX,NY,NZ,FLMIX,PVALUE,LCOOL,IMPX)
* STORE NEW DATA
30 CALL LCMPUT(IPMAP,'FLMIX',NCH*NB,1,FLMIX)
IF(.NOT.LCOOL)GOTO 40
JPMAP=LCMGID(IPMAP,'PARAM')
DO IPAR=1,NPARM
KPMAP=LCMGIL(JPMAP,IPAR)
CALL LCMGET(KPMAP,'P-NAME',INAME)
WRITE(TEXT12,'(3A4)') (INAME(I),I=1,3)
IF(PNAME.EQ.TEXT12)THEN
CALL LCMPUT(KPMAP,'P-VALUE',NCH*NB,2,PVALUE)
GOTO 40
ENDIF
ENDDO
40 RETURN
*
1000 FORMAT(/2X,'SELECTED VOIDING PATTERN',2X,'=>',2X,A20
1 //2X,'TOTAL NUMBER OF VOIDED CHANNELS =',1X,I3/)
1001 FORMAT(2X,'TOTAL NUMBER OF MODIFIED VALUES :',1X,I4/)
END
|