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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
|
*DECK RESINI
SUBROUTINE RESINI(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
*
*-----------------------------------------------------------------------
*
*Purpose:
* Construct or modify a fuel-map object.
*
*Copyright:
* Copyright (C) 2007 Ecole Polytechnique de Montreal.
*
*Author(s):
* D. Sekki and V. Descotes
*
*Parameters: input
* NENTRY number of data structures transfered to this module.
* HENTRY name of the data structures.
* IENTRY data structure type where:
* IENTRY=1 for LCM memory object;
* IENTRY=2 for XSM file;
* IENTRY=3 for sequential binary file;
* IENTRY=4 for sequential ASCII file.
* JENTRY access permission for the data structure where:
* JENTRY=0 for a data structure in creation mode;
* JENTRY=1 for a data structure in modifications mode;
* JENTRY=2 for a data structure in read-only mode.
* KENTRY data structure pointer.
*
*Comments:
* The RESINI: module specifications are:
* Option 1
* FLMAP MATEX := RESINI: MATEX [COMPO] :: (descresini1) ;
* Option 2
* FLMAP := RESINI: FLMAP [FLMAP2] :: (descresini2) ;
* where
* FLMAP : name of the \emph{resini} object that will contain the fuel-lattice
* information. If FLMAP appears on both LHS and RHS, it will be updated;
* otherwise, it is created.
*
* MATEX : name of the \emph{matex} object specified in the modification mode.
* MATEX is required only when FLMAP is created.
* COMPO : name of the \emph{multicompo} data structure (L\_COMPO signature)
* where the detailed subregion geometry at assembly level is stored.
* FLMAP2 : name of the \emph{resini} object that contains the fuel-lattice
* information to recover from.
* (descresini1) : structure describing the main input data to
* the RESINI: module. Note that this input data is mandatory and
* must be specified only when FLMAP is created.
* (descresini2) : structure describing the input data for global and local
* parameters. This data is permitted to be modified in the subsequent calls
* to the RESINI: module.
*
*-----------------------------------------------------------------------
*
USE GANLIB
*----
* SUBROUTINE ARGUMENTS
*----
INTEGER NENTRY,IENTRY(NENTRY),JENTRY(NENTRY)
TYPE(C_PTR) KENTRY(NENTRY)
CHARACTER HENTRY(NENTRY)*12
*----
* LOCAL VARIABLES
*----
PARAMETER(NSTATE=40,IOUT=6)
CHARACTER TEXT*12,HSIGN*12,HSIGN2*12
INTEGER ISTATE(NSTATE),IGST(NSTATE)
LOGICAL LNEW,LCPO,LMAP2
TYPE(C_PTR) IPMTX,IPMAP,JPMAP,IPCPO,IPMP2
*----
* PARAMETER VALIDATION
*----
IF(NENTRY.GT.3)CALL XABORT('@RESINI: 2 or 3 PARAMETERS ALLOWED.')
LCPO=.FALSE.
IPCPO=C_NULL_PTR
IPMP2=C_NULL_PTR
IF(IENTRY(1).GT.2) CALL XABORT('@RESINI: INVALID FIRST PARAMETER'
1 //' TYPE.')
LNEW=.TRUE.
LMAP2=.FALSE.
HSIGN2=' '
IF(NENTRY.GE.2) CALL LCMGTC(KENTRY(2),'SIGNATURE',12,HSIGN2)
IF((NENTRY.EQ.1).OR.(HSIGN2.EQ.'L_MAP'))THEN
IF(JENTRY(1).NE.1) CALL XABORT('@RESINI: OBJECT IN MODIFICATIO'
1 //'N MODE EXPECTED.')
CALL LCMGTC(KENTRY(1),'SIGNATURE',12,HSIGN)
IF(HSIGN.NE.'L_MAP')THEN
TEXT=HENTRY(1)
CALL XABORT('@RESINI: SIGNATURE OF '//TEXT//' IS '//HSIGN//
1 '. L_MAP EXPECTED.')
ENDIF
IF(JENTRY(1).NE.1)CALL XABORT('@RESINI: MODIFICATION MODE EX'
1 //'PECTED FOR THE FUEL-MAP OBJECT.')
LNEW=.FALSE.
IF(HSIGN2.EQ.'L_MAP') THEN
LMAP2=.TRUE.
IPMP2=KENTRY(2)
ENDIF
ELSE
IF(HSIGN2.NE.'L_MATEX')THEN
TEXT=HENTRY(2)
CALL XABORT('@RESINI: SIGNATURE OF '//TEXT//' IS '//HSIGN2//
1 '. L_MATEX EXPECTED.')
ENDIF
IF(JENTRY(2).NE.1)CALL XABORT('@RESINI: MODIFICATION MODE EX'
1 //'PECTED FOR THE MATEX OBJECT.')
HSIGN='L_MAP'
CALL LCMPTC(KENTRY(1),'SIGNATURE',12,HSIGN)
IPMTX=KENTRY(2)
IF(NENTRY.EQ.3) THEN
LCPO=.TRUE.
CALL LCMGTC(KENTRY(3),'SIGNATURE',12,HSIGN)
IF(HSIGN.NE.'L_MULTICOMPO')THEN
TEXT=HENTRY(3)
CALL XABORT('@RESINI: SIGNATURE OF '//TEXT//' IS '//HSIGN//
1 '. L_MULTICOMPO EXPECTED.')
ENDIF
IPCPO=KENTRY(3)
ENDIF
ENDIF
IPMAP=KENTRY(1)
*----
* RECOVER INFORMATION
*----
IMPX=1
ISTATE(:NSTATE)=0
IF(LNEW)THEN
NPARM=0
CALL LCMGET(IPMTX,'STATE-VECTOR',ISTATE)
IGEO=ISTATE(6)
IF((IGEO.NE.7).AND.(IGEO.NE.9))CALL XABORT('@RESINI: ONLY'
1 //' 3D-CARTESIAN OR 3D-HEXAGONAL GEOMETRY ALLOWED.')
NGRP=ISTATE(1)
NFUEL=ISTATE(4)
LX=ISTATE(8)
LY=ISTATE(9)
LZ=ISTATE(10)
* MAIN INPUT
CALL RESDRV(IPMAP,IPMTX,NFUEL,LX,LY,LZ,IMPX,IGEO,NCH,NB,NTOT,
1 NCOMB,NSIMS,NASB,NAX,NAY,NIS,IPCPO)
ISTATE(:NSTATE)=0
ISTATE(1)=NB
ISTATE(2)=NCH
ISTATE(3)=NCOMB
ISTATE(4)=NGRP
ISTATE(12)=IGEO
ISTATE(7)=NFUEL
ISTATE(8)=NPARM
ISTATE(9)=NTOT
ISTATE(13)=NSIMS
ISTATE(14)=NASB
ISTATE(15)=NAX
ISTATE(16)=NAY
ISTATE(18)=NIS
ELSE
CALL LCMGET(IPMAP,'STATE-VECTOR',ISTATE)
NB=ISTATE(1)
NCH=ISTATE(2)
NCOMB=ISTATE(3)
IGEO=ISTATE(12)
NFUEL=ISTATE(7)
NPARM=ISTATE(8)
NTOT=ISTATE(9)
NSIMS=ISTATE(13)
NASB=ISTATE(14)
NAX=ISTATE(15)
NAY=ISTATE(16)
NIS=ISTATE(18)
ENDIF
IGST(:NSTATE)=0
JPMAP=LCMGID(IPMAP,'GEOMAP')
CALL LCMGET(JPMAP,'STATE-VECTOR',IGST)
NX=IGST(3)
NY=IGST(4)
NZ=IGST(5)
IF(IGEO.EQ.9) NY=1
* INPUT OF PARAMETERS
CALL RESPAR(IPMAP,NCH,NB,NFUEL,NCOMB,NPARM,NX,NY,NZ,NSTATE,
1 ISTATE,IMPX,NASB,LMAP2,IPMP2)
CALL LCMPUT(IPMAP,'STATE-VECTOR',NSTATE,1,ISTATE)
IF(IMPX.GT.0)WRITE(IOUT,100) IMPX,(ISTATE(I),I=1,9),ISTATE(12),
1 ISTATE(13),ISTATE(18)
IF(IMPX.GT.5)CALL LCMLIB(IPMAP)
RETURN
*
100 FORMAT(/8H OPTIONS/8H -------/
1 7H IMPX ,I6,30H (0=NO PRINT/1=SHORT/2=MORE)/
2 7H NB ,I6,39H (NUMBER OF FUEL BUNDLES PER CHANNEL)/
3 7H NCH ,I6,28H (NUMBER OF FUEL CHANNELS)/
4 7H NCOMB ,I6,31H (NUMBER OF COMBUSTION ZONES)/
5 7H NGRP ,I6,28H (NUMBER OF ENERGY GROUPS)/
6 7H INTER ,I6,26H (TYPE OF INTERPOLATION)/
7 7H ISHIFT,I6,28H (NUMBER OF BUNDLE SHIFTS)/
8 7H NFUEL ,I6,25H (NUMBER OF FUEL TYPES)/
9 7H NPARM ,I6,25H (NUMBER OF PARAMETERS)/
1 7H NTOT ,I6,33H (TOTAL NUMBER OF FUEL BUNDLES)/
2 7H IGEO ,I6,28H (7=CARTESIAN/9=HEXAGONAL)/
3 7H NSIMS ,I6,35H (ASSEMBLY LAYOUT IN SIM: MODULE)/
4 7H NIS ,I6,38H (NUMBER OF PARTICULARIZED ISOTOPES))
END
|