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
|
*DECK SIMOUT
SUBROUTINE SIMOUT(IPMAP,IMPX,BURNINS,IZONE,NCH,NB,LX,LY,HHX,IHY,
> STATE)
*
*-----------------------------------------------------------------------
*
*Purpose:
* Print burnup distribution (3D), radial averages or axial averages
*
*Copyright:
* Copyright (C) 2013 Ecole Polytechnique de Montreal
*
*Author(s):
* V. Salino
*
*Parameters: input
* IPMAP fuel map object.
* IMPX print parameter.
* BURNINS instantaneous burnups.
* IZONE default assembly or quart-of-assembly names as defined in
* the fuel map.
* NCH number of assemblies or number of quart-of-assemblies.
* NB number of axial burnup subdivisions in an assembly.
* LX number of assemblies along the X axis.
* LY number of assemblies along the Y axis.
* LXMIN coordinates on X axis of the first assembly.
* LYMIN coordinates on Y axis of the first assembly.
* HHX naval battle indices along X axis.
* IHY naval battle indices along Y axis.
* STATE flag indicating whether it is a beginning-of-stage print
* or a end-of-stage print.
*
*-----------------------------------------------------------------------
*
USE GANLIB
*----
* SUBROUTINE ARGUMENTS
*----
TYPE(C_PTR) IPMAP
INTEGER IMPX,IHY(LY),NCH,NB,LX,LY
CHARACTER HHX(LX)*1,IZONE(NCH)*4,STATE*5
REAL BURNINS(NCH,NB)
*----
* LOCAL VARIABLES
*----
INTEGER INTG2,INTG2B
REAL MEANR
CHARACTER TEXT4*4,TEXT1*1,TEXT1B*1
*----
* ALLOCATABLE ARRAYS
*----
REAL, ALLOCATABLE, DIMENSION(:) :: MEAN
*
IF(STATE.EQ.'BEGIN')THEN
CALL LCMGET(IPMAP,'BURN-INST',BURNINS)
ENDIF
*----
* RADIALLY-AVERAGED BURNUP MAP
*----
IF((STATE.EQ.'BEGIN'.AND.IMPX.GE.8).OR.
> (STATE.EQ.'END '.AND.IMPX.GE.3)) THEN
IF(STATE.EQ.'BEGIN')THEN
WRITE(6,100)
ELSE
WRITE(6,105)
ENDIF
WRITE(6,110) (HHX(I),I=1,LX)
ICH=1
DO I=1,LY
TEXT4=IZONE(ICH)
READ(TEXT4,'(A1,I2)') TEXT1,INTG2
NFULL=0
DO J=1,LX+1
NFULL=J
IF(ICH.EQ.(NCH+1))GO TO 10
TEXT4=IZONE(ICH)
READ(TEXT4,'(A1,I2)') TEXT1B,INTG2B
IF(INTG2.NE.INTG2B)GO TO 10
ICH=ICH+1
ENDDO
CALL XABORT('@SIMOUT: INCOHERENCE IN BASIC ASSEMBLY '
> //'LAYOUT GIVEN IN RESINI:.')
10 CONTINUE
NFULL=NFULL-1
NEMPTY=(LX-NFULL)/2
ALLOCATE(MEAN(NFULL))
MEAN(:NFULL)=0.0
DO K=1,NFULL
DO IB=1,NB
MEAN(K)=MEAN(K)+BURNINS(ICH-1-NFULL+K,IB)/NB
ENDDO
ENDDO
WRITE(6,115,ADVANCE='NO') IHY(I)
DO K=1,NEMPTY
WRITE(6,120,ADVANCE='NO')
ENDDO
WRITE(6,125) (NINT(MEAN(K)),K=1,NFULL)
DEALLOCATE(MEAN)
ENDDO
ENDIF
*----
* AXIALLY-AVERAGED BURNUP MAP
*----
IF((STATE.EQ.'BEGIN'.AND.IMPX.GE.9).OR.
> (STATE.EQ.'END '.AND.IMPX.GE.4))THEN
IF(STATE.EQ.'BEGIN')THEN
WRITE(6,130)
ELSE
WRITE(6,135)
ENDIF
DO IB=1,NB
MEANR=0.0
DO ICH=1,NCH
MEANR=MEANR+BURNINS(ICH,IB)/NCH
ENDDO
WRITE(6,140) NINT(MEANR)
ENDDO
ENDIF
*----
* PER-ASSEMBLY 3D BURNUP MAP
*----
IF((STATE.EQ.'BEGIN'.AND.IMPX.GE.10).OR.
> (STATE.EQ.'END '.AND.IMPX.GE.5))THEN
IF(STATE.EQ.'BEGIN')THEN
WRITE(6,150)
ELSE
WRITE(6,155)
ENDIF
DO ICH=1,NCH
WRITE(6,160) IZONE(ICH)
WRITE(6,170) (BURNINS(ICH,IB),IB=1,NB)
ENDDO
ENDIF
*
IF(STATE.EQ.'BEGIN') BURNINS(:NCH,:NB)=0.0
RETURN
*
100 FORMAT(' SIM: BEGINNING-OF-STAGE BURNUP MAP (MW*D/TONNE), ',
> 'RADIAL VIEW :')
105 FORMAT(' SIM: END-OF-STAGE BURNUP MAP (MW*D/TONNE), ',
> 'RADIAL VIEW :')
110 FORMAT(1X,20(5X,1A1))
115 FORMAT(1X,I2)
120 FORMAT(6X)
125 FORMAT(21I6)
130 FORMAT(/,' SIM: BEGINNING-OF-STAGE BURNUP MAP (MW*D/TONNE), ',
> 'AXIAL VIEW :')
135 FORMAT(/,' SIM: END-OF-STAGE BURNUP MAP (MW*D/TONNE), ',
> 'AXIAL VIEW :')
140 FORMAT(1X,I5.1)
150 FORMAT(/,' SIM: BEGINNING-OF-STAGE 3D BURNUP MAP (MW*D/TONNE) :')
155 FORMAT(/,' SIM: END-OF-STAGE 3D BURNUP MAP (MW*D/TONNE) :')
160 FORMAT(' Assembly ',A)
170 FORMAT(3X,16(1X,F7.1))
END
|