summaryrefslogtreecommitdiff
path: root/Dragon/data/tdraglib_proc/EvolRef.c2m
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 .