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
|
*DECK CVRUSR
SUBROUTINE CVRUSR(IPMAP,NCH,NB,NFUEL,NX,NY,NZ,NVOID,NAMXV,NAMYV,
1 NPARM,PNAME,PVALUE,VCOOL,LCOOL,IMPX)
*
*-----------------------------------------------------------------------
*
*Purpose:
* Modify channels data according to the user-defined voiding pattern.
*
*Copyright:
* Copyright (C) 2007 Ecole Polytechnique de Montreal.
*
*Author(s):
* D. Sekki
*
*Parameters: input/output
* IPMAP pointer to fuel-map information.
* 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.
* NVOID total number of voided channels.
* NAMXV names of voided channels along x-axis.
* NAMYV names of voided channels along y-axis.
* 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,NVOID,NPARM,IMPX,NAMXV(NVOID),
1 NAMYV(NVOID)
REAL PVALUE(NCH,NB),VCOOL
CHARACTER PNAME*12
LOGICAL LCOOL
*----
* LOCAL VARIABLES
*----
PARAMETER(IOUT=6)
INTEGER MIX(NX*NY*NZ),FLMIX(NCH,NB),NAMX(NX),NAMY(NY),INAME(3)
CHARACTER TEXT*12,CHANX*2,CHANY*2
TYPE(C_PTR) JPMAP,KPMAP
INTEGER, ALLOCATABLE, DIMENSION(:) :: CNANV
*----
* SCRATCH STORAGE ALLOCATION
*----
ALLOCATE(CNANV(NVOID))
*----
* RECOVER INFORMATION
*----
MIX(:NX*NY*NZ)=0
FLMIX(:NCH,NB)=0
NAMX(:NX)=0
NAMY(:NY)=0
CALL LCMGET(IPMAP,'BMIX',MIX)
CALL LCMGET(IPMAP,'FLMIX',FLMIX)
* CHANNEL NAMES
CALL LCMGET(IPMAP,'XNAME',NAMX)
CALL LCMGET(IPMAP,'YNAME',NAMY)
TEXT='USER-DEFINED'
IF(IMPX.GT.0)WRITE(IOUT,1000)TEXT,NVOID
*----
* CHECK VOIDED CHANNELS
*----
DO 20 IVD=1,NVOID
IEL=0
ICH=0
DO 15 J=1,NY
DO 10 I=1,NX
IEL=IEL+1
IF(MIX(IEL).EQ.0)GOTO 10
ICH=ICH+1
IF(NAMXV(IVD).NE.NAMX(I))GOTO 10
IF(NAMYV(IVD).NE.NAMY(J))GOTO 10
CNANV(IVD)=ICH
GOTO 20
10 CONTINUE
15 CONTINUE
WRITE(CHANX,'(A2)') (NAMXV(IVD))
WRITE(CHANY,'(A2)') (NAMYV(IVD))
WRITE(IOUT,1001)CHANY,CHANX
CALL XABORT('@CVRUSR: INVALID INPUT DATA.')
20 CONTINUE
*----
* 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 IVD=1,NVOID
ICH=CNANV(IVD)
DO 30 IB=1,NB
IF(FLMIX(ICH,IB).NE.MIXF)GOTO 30
FLMIX(ICH,IB)=MIXV
IF(LCOOL) PVALUE(ICH,IB)=VCOOL
ITOT=ITOT+1
30 CONTINUE
ENDDO
ENDDO
IF(IMPX.GT.0)WRITE(IOUT,1002)ITOT
IF(IMPX.LT.2)GOTO 40
* PRINTING
CALL CVRPRN(IPMAP,NCH,NB,NX,NY,NZ,FLMIX,PVALUE,LCOOL,IMPX)
* STORE NEW DATA
40 CALL LCMPUT(IPMAP,'FLMIX',NCH*NB,1,FLMIX)
IF(.NOT.LCOOL)GOTO 50
JPMAP=LCMGID(IPMAP,'PARAM')
DO IPAR=1,NPARM
KPMAP=LCMGIL(JPMAP,IPAR)
CALL LCMGET(KPMAP,'P-NAME',INAME)
WRITE(TEXT,'(3A4)') (INAME(I),I=1,3)
IF(PNAME.EQ.TEXT)THEN
CALL LCMPUT(KPMAP,'P-VALUE',NCH*NB,2,PVALUE)
GOTO 50
ENDIF
ENDDO
*----
* SCRATCH STORAGE DEALLOCATION
*----
50 DEALLOCATE(CNANV)
RETURN
*
1000 FORMAT(/2X,'SELECTED VOIDING PATTERN',2X,'=>',2X,A20
1 //2X,'TOTAL NUMBER OF VOIDED CHANNELS =',1X,I3/)
1001 FORMAT(/1X,'@CVRUSR: UNABLE TO FIND THE CHANN',
1 'EL NAME:',1X,A2,A2)
1002 FORMAT(2X,'TOTAL NUMBER OF MODIFIED VALUES :',1X,I4/)
END
|