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
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
|
*DECK DONDRV
INTEGER FUNCTION DONDRV(HMODUL,NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
*
*-----------------------------------------------------------------------
*
*Purpose:
* Module-dependent driver for DONJON.
*
*Copyright:
* Copyright (C) 2007 Ecole Polytechnique de Montreal
*
*Author(s):
* D. Sekki
*
*Parameters: input/output
* HMODUL name of module to process.
* 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;
* IENTRY=6 for HDF5 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.
*
*Parameters: output
* DONDRV completion flag: =0 module exists; =1 does not exists.
*
*-----------------------------------------------------------------------
*
USE GANLIB
*----
* SUBROUTINE ARGUMENTS
*----
CHARACTER HMODUL*(*),HENTRY(NENTRY)*12
INTEGER IENTRY(NENTRY),JENTRY(NENTRY)
TYPE(C_PTR) KENTRY(NENTRY)
*----
* LOCAL VARIABLES
*----
PARAMETER(IOUT=6)
REAL TBEG,TEND
DOUBLE PRECISION DMEMB,DMEMD
CHARACTER DSR*72,NAM*72,COD*12
LOGICAL :: DONMOD
*
DONDRV=0
DONMOD=.TRUE.
CALL KDRCPU(TBEG)
CALL KDRMEM(DMEMB)
*----
* CALL MODULE AND PRINT CREDITS
*----
IF(HMODUL.EQ.'NCR:')THEN
COD='DRAGON'
DSR='ACCESS MULTI-PARAMETER REACTOR COMPOSITION DATABASE'
NAM='A. HEBERT'
WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
CALL NCR(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
ELSEIF(HMODUL.EQ.'CRE:')THEN
COD='DONJON'
DSR='ACCESS MONO-PARAMETER REACTOR COMPOSITION DATABASE'
NAM='A. HEBERT, D. SEKKI'
WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
CALL CRE(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
ELSEIF(HMODUL.EQ.'USPLIT:')THEN
COD='DONJON'
DSR='LINK MATERIAL INDEX AND REACTOR GEOMETRY'
NAM='J. KOCLAS, D. SEKKI'
WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
CALL USPLIT(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
ELSEIF(HMODUL.EQ.'MACINI:')THEN
COD='DONJON'
DSR='EXPAND MACROLIB OVER THE REACTOR GEOMETRY'
NAM='J. KOCLAS, E. VARIN, D. SEKKI'
WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
CALL MACINI(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
ELSEIF(HMODUL.EQ.'RESINI:')THEN
COD='DONJON'
DSR='FUEL LATTICE GEOMETRY AND PROPERTIES'
NAM='E. VARIN, D. SEKKI, R. CHAMBON'
WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
CALL RESINI(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
ELSEIF(HMODUL.EQ.'FLPOW:')THEN
COD='DONJON'
DSR='COMPUTE FLUXES AND POWERS'
NAM='D. SEKKI'
WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
CALL FLPOW(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
ELSEIF(HMODUL.EQ.'DEVINI:')THEN
COD='DONJON'
DSR='MODELING OF ROD-DEVICES IN THE REACTOR CORE'
NAM='D. SEKKI '
WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
CALL DEVINI(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
ELSEIF(HMODUL.EQ.'DSET:')THEN
COD='DONJON'
DSR='UPDATE DEVICES PARAMETERS'
NAM='D. SEKKI'
WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
CALL DSET(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
ELSEIF(HMODUL.EQ.'MOVDEV:')THEN
COD='DONJON'
DSR='MOVE DEVICES IN THE REACTOR CORE'
NAM='D. SEKKI'
WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
CALL MOVDEV(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
ELSEIF(HMODUL.EQ.'NEWMAC:')THEN
COD='DONJON'
DSR='UPDATE MACROLIB FOR DEVICES PROPERTIES'
NAM='J. KOCLAS, D. SEKKI'
WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
CALL NEWMAC(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
ELSEIF(HMODUL.EQ.'DETINI:')THEN
COD='DONJON'
DSR='CONSTRUCT 2D AND 3D DETECTORS IN THE CORE'
NAM='J. KOCLAS, E. VARIN, M. GUYOT'
WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
CALL DETINI(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
ELSEIF(HMODUL.EQ.'DETECT:')THEN
COD='DONJON'
DSR='COMPUTE DETECTORS READING'
NAM='J. KOCLAS, M. GUYOT'
WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
CALL DETECT(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
ELSEIF(HMODUL.EQ.'TAVG:')THEN
COD='DONJON'
DSR='TIME-AVERAGE CALCULATION'
NAM='D. SEKKI'
WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
CALL TAVG(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
ELSEIF(HMODUL.EQ.'TINST:')THEN
COD='DONJON'
DSR='INSTANTANEOUS CALCULATION'
NAM='B. TOUEG'
WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
CALL TINST(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
ELSEIF(HMODUL.EQ.'CVR:')THEN
COD='DONJON'
DSR='UPDATE DATA FOR VOIDING SIMULATION'
NAM='D. SEKKI'
WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
CALL CVR(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
ELSEIF(HMODUL.EQ.'LZC:')THEN
COD='DONJON'
DSR='MODELING OF LIQUID ZONE CONTROLLERS'
NAM='D. SEKKI'
WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
CALL LZC(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
ELSEIF(HMODUL.EQ.'HST:')THEN
COD='DONJON'
DSR='HISTORY BASED CALCULATION SUPPORT'
NAM='G. MARLEAU AND E. VARIN'
WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
CALL HST(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
ELSEIF(HMODUL.EQ.'XENON:')THEN
COD='DONJON'
DSR='COMPUTE THE XENON DISTRIBUTION'
NAM='M. GUYOT'
WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
CALL XENON(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
ELSEIF(HMODUL.EQ.'AFM:')THEN
COD='DONJON'
DSR='MULTI-PARAMETER FEEDBACK MODEL'
NAM='T. SISSAOUI'
WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
CALL AFM(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
ELSE IF(HMODUL.EQ.'NCR:') THEN
COD='DONJON'
DSR='ACCESS MULTI-PARAMETER REACTOR COMPOSITION DATABASE'
NAM='A. HEBERT'
WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
CALL NCR(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
ELSE IF(HMODUL.EQ.'SCR:') THEN
COD='DONJON'
DSR='ACCESS MULTI-PARAMETER REACTOR SAPHYB DATABASE'
NAM='A. HEBERT'
WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
CALL SCR(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
#if defined(HDF5_LIB)
ELSE IF(HMODUL.EQ.'ACR:') THEN
COD='DONJON'
DSR='ACCESS MULTI-PARAMETER REACTOR APEX DATABASE'
NAM='A. HEBERT'
WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
CALL ACR(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
ELSE IF(HMODUL.EQ.'MCR:') THEN
COD='DONJON'
DSR='ACCESS MULTI-PARAMETER REACTOR MPO DATABASE'
NAM='A. HEBERT'
WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
CALL MCR(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
#endif /* defined(HDF5_LIB) */
ELSE IF(HMODUL.EQ.'PCR:') THEN
COD='DONJON'
DSR='ACCESS MULTI-PARAMETER REACTOR PMAXS DATABASE'
NAM='A. HEBERT'
WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
CALL PCR(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
ELSE IF(HMODUL.EQ.'T16CPO:') THEN
COD='DONJON'
DSR='INTERFACE FOR WIMS-AECL'
NAM='G. MARLEAU'
WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
CALL T16CPO(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
ELSE IF(HMODUL.EQ.'THM:') THEN
COD='DONJON'
DSR='SIMPLIFIED THERMAL-HYDRAULICS CALCULATION'
NAM='A. HEBERT'
WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
CALL THM(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
ELSE IF(HMODUL.EQ.'DLEAK:') THEN
COD='DONJON'
DSR='COMPUTE A DELTA MACROLIB RELATIVE TO LEAKAGE INFORMATION'
NAM='A. HEBERT'
WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
CALL DLEAK(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
ELSE IF(HMODUL.EQ.'DSPH:') THEN
COD='DONJON'
DSR='COMPUTE A DELTA MACROLIB RELATIVE TO SPH FACTORS'
NAM='A. HEBERT'
WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
CALL DSPH(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
ELSE IF(HMODUL.EQ.'DREF:') THEN
COD='DONJON'
DSR='SET THE GPT ADJOINT SOURCES FOR RMS REACTION RATE ERRORS'
NAM='A. HEBERT'
WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
CALL DREF(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
ELSE IF(HMODUL.EQ.'GRAD:') THEN
COD='DONJON'
DSR='COMPUTE GRADIENTS OF SYSTEM CHARACTERISTICS'
NAM='A. HEBERT'
WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
CALL GRAD(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
ELSE IF(HMODUL.EQ.'PLQ:') THEN
COD='DONJON'
DSR='LINEAR OPTIMIZATION PROBLEM WITH A QUADRATIC CONSTRAINT'
NAM='A. HEBERT AND R. CHAMBON'
WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
CALL PLQ(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
ELSE IF(HMODUL.EQ.'LNSR:') THEN
COD='DONJON'
DSR='LINE OPTIMIZATION OF THE OBJECTIVE FUNCTION'
NAM='A. HEBERT'
WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
CALL LNSR(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
ELSE IF(HMODUL.EQ.'SIM:') THEN
COD='DONJON'
DSR='PWR FUELLING SIMULATOR'
NAM='A. HEBERT AND V. SALINO'
WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
CALL SIM(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
ELSE IF(HMODUL.EQ.'MCC:') THEN
COD='DONJON'
DSR='FUEL MAP MODIFICATION'
NAM='M. CORDIEZ'
WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
CALL MCC(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
ELSE IF(HMODUL.EQ.'NAP:') THEN
COD='DONJON'
DSR='PIN POWER RECONSTRUCTION AND ENRICHED L_COMPO CONSTRUCTION'
NAM='R. CHAMBON'
WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
CALL NAP(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
ELSE IF(HMODUL.EQ.'D2P:') THEN
COD='DONJON'
DSR='PMAXS INTERFACE FILE GENERATION'
NAM='J. TAFOREAU'
WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
CALL D2P(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
ELSE IF(HMODUL.EQ.'ROD:') THEN
COD='DONJON'
DSR='CONTROL ROD INSERTION MANAGEMENT FOR PWR'
NAM='G. TIXIER'
WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
CALL ROD(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
ELSE IF(HMODUL.EQ.'PKINI:') THEN
COD='DONJON'
DSR='POINT KINETIC INITIALIZATION MODULE'
NAM='A. HEBERT'
WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
CALL PKINI(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
ELSE IF(HMODUL.EQ.'PKINS:') THEN
COD='DONJON'
DSR='POINT KINETIC SOLUTION AND GLOBAL FEEDBACK'
NAM='A. HEBERT'
WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
CALL PKINS(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
ELSE IF(HMODUL.EQ.'IDET:') THEN
COD='DONJON'
DSR='DETECTOR INTEGRATED RESPONSE EVALUATION'
NAM='A. HEBERT'
WRITE(IOUT,1000)HMODUL,COD,DSR,NAM
CALL IDET(NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
ELSE
DONMOD=.FALSE.
DONDRV=KDRDRV(HMODUL,NENTRY,HENTRY,IENTRY,JENTRY,KENTRY)
ENDIF
IF(DONMOD)THEN
WRITE(IOUT,1001)HMODUL
CALL KDRCPU(TEND)
CALL KDRMEM(DMEMD)
WRITE(IOUT,1002) HMODUL,(TEND-TBEG),REAL(DMEMD-DMEMB)
ENDIF
RETURN
*
1000 FORMAT(/1X,15('~')/
1 1X,'@BEGIN MODULE -> ',A12/
2 1X,'@FROM CODE -> ',A12/
3 1X,'@DESCRIPTION -> ',A72/
4 1X,'@CREDITS -> ',A72/
5 1X,'@COPYRIGHTS -> ECOLE POLYTECHNIQUE DE MONTREAL'/
6 18X,'GNU LESSER GENERAL PUBLIC LICENSE'/1X,15('~')/)
1001 FORMAT(1X,'@END MODULE -> ',A12)
1002 FORMAT('-->>MODULE ',A12,': TIME SPENT=',F13.3,' MEMORY USAGE=',
1 1P,E10.3)
END
|