blob: acddbe20310c238d39bbe9a8d6a77313b04bf230 (
plain)
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
|
*DECK EvolRef.c2m
*----
* Name : EvolRef.c2m
* Type : Procedure
* Usage : Burnup calculation with DRAGON
* Author : G. Marleau
* Date : 2004/11/22
* Updated : a) E. Varin 2005/04/03
* b) E. Varin 2005/06/01
* c) A. Hebert 2007/01/31
*
* Procedure called as:
*
* CompoDS ConcIso Flux := EvoRef MicLib TrackingS TrackingF
* IntlineS IntlineF ::
* <<BExit>> <<Power>> <<NbSteps>> ;
* Output structures :
* CompoDS : Multiparameter compo data structure.
* ConcIso : Burnup data structure.
* Flux : Last flux computed.
* Input structures :
* MicLib : Microscopic cross section library.
* TrackingS : Tracking data structures for self shielding.
* TrackingF : Tracking data structures for flux solution.
* IntlineS : File with integration lines for self shielding.
* IntlineF : File with integration lines for flux solution.
* Input variables :
* BExit : Average exit burnup (MWd/T).
* Power : Burnup power (kw/kg) .
* NbSteps : Number of burnup steps.
*
*----
* Definition of data structures for procedure
*
PARAMETER CompoDS ConcIso Flux MicLib
TrackingS TrackingF IntlineS IntlineF ::
::: XSM_FILE CompoDS ConcIso ;
::: LINKED_LIST MicLib Flux TrackingS TrackingF ;
::: SEQ_BINARY IntlineS IntlineF ; ;
*----
* Get input parameters
*----
REAL Bexit Power ;
INTEGER NbSteps ;
:: >>Bexit<< >>Power<< >>NbSteps<< ;
ECHO "Specific burnup power = " Power "kw/kg" ;
*----
* Local modules, data structures
*----
MODULE SHI: ASM: FLU: EDI: EVO: COMPO: DELETE: ;
LINKED_LIST PIJ EditDS ;
REAL keff ;
INTEGER Istep ;
REAL NbPt R TimeO ;
REAL Delt Timef := 1.0 0.0 ;
REAL Tfinal := Bexit Power / ;
*----
* Burnup steps set in arithmetic progression
*----
EVALUATE NbPt := NbSteps I_TO_R ;
EVALUATE R := Tfinal LN NbPt 1. - / EXP ;
ECHO "Burnup from " 0.0 " to " Tfinal " days using " NbSteps " steps" ;
*
*----
* First flux calculation
* a) resonance self-shielding
* b) compute Pij matrix
* c) solve for the flux
* d) define edit parameters and edit
* e) clean up Pij
*----
MicLib := SHI: MicLib TrackingS IntlineS :: EDIT 0 NOLJ ;
PIJ := ASM: MicLib TrackingF IntlineF :: EDIT 0 ;
Flux := FLU: PIJ MicLib TrackingF :: TYPE B B1 PNL ;
EditDS := EDI: Flux MicLib TrackingF ::
COND 0.625 MERG COMP MICR 1 Xe135 SAVE ON 'fuel' ;
PIJ := DELETE: PIJ ;
*----------
* Burnup loop
*----------
EVALUATE Istep := 0 ;
WHILE Istep NbSteps < DO
ECHO " Burning for " Delt " until " Timef ;
IF Timef 0.0 = THEN
ConcIso MicLib := EVO: MicLib Flux TrackingF ::
DEPL <<Delt>> DAY POWR <<Power>> ;
ELSE
ConcIso MicLib := EVO: ConcIso MicLib Flux TrackingF ::
DEPL <<Delt>> DAY POWR <<Power>> ;
ENDIF ;
CompoDS := COMPO: CompoDS EditDS ConcIso MicLib ::
EDIT 3
STEP UP *
SET <<Timef>> DAY
;
*----
* Flux calculation after each burnup steps
* a) resonance self-shielding
* b) compute Pij matrix
* c) solve for the flux
* d) edit
* e) clean up Pij
*----
MicLib := SHI: MicLib TrackingS IntlineS :: EDIT 0 NOLJ ;
PIJ := ASM: MicLib TrackingF IntlineF :: EDIT 0 ;
Flux := FLU: Flux PIJ MicLib TrackingF :: TYPE B B1 PNL ;
EditDS := EDI: EditDS Flux MicLib TrackingF :: SAVE ON 'fuel' ;
PIJ := DELETE: PIJ ;
*----
* Select next burnup interval
*----
EVALUATE Timef := Timef Delt + ;
EVALUATE Delt := Timef R 1. - * ;
EVALUATE Istep := Istep 1 + ;
ENDWHILE ;
*----
* Clean up
*----
EditDS := DELETE: EditDS ;
QUIT .
|