blob: d252b1692f0a9193a7ee6415caa57ad0e3d5dad2 (
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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
*----
* Name : rep1300_reflector.x2m
* Type : DONJON CLE2000 procedure
* Author : Alain Hebert
*
* Compute the reflector parameters using a 26-group reference
* solution and a sequence of 2-group macro-calculations.
*
*----
* STRUCTURES, MODULES and PROCEDURES definitions
*----
MODULE GEO: UTL: GREP: SCR: TRIVAT: EDI: DELETE: ABORT: END: ;
LINKED_LIST SAPOBJ MACRO MACRO2 EDIT2 MACROGEOM TRACK MACRO3 OPTIM
EDIOUT ;
INTEGER itype ;
REAL REFVALUE DELTA ;
DOUBLE Fobj ;
SEQ_ASCII _ASaphyb :: FILE 'referenceSaphybCalculation.sap' ;
XSM_FILE SAPFIL :: FILE 'SAPFIL' ;
PROCEDURE reflectorOpt ;
*----
* Check the Saphyb signature. Add one if missing. Extract MACRO.
*----
SAPOBJ := _ASaphyb ;
GREP: SAPOBJ :: TYPE 'SIGNATURE' >>itype<< ;
ECHO "type signature=" itype ;
IF itype 99 = THEN
SAPOBJ := UTL: SAPOBJ
:: CREA 'SIGNATURE' 3 = 'L_SA' 'PHYB' ' ' ;
ENDIF ;
MACRO := SCR: SAPOBJ :: EDIT 2 NMIX 55 SAPHYB SAPOBJ
MIX 1 USE SET 'BURN' 0.0 ENDMIX MIX 2 USE SET 'BURN' 0.0 ENDMIX
MIX 3 USE SET 'BURN' 0.0 ENDMIX MIX 4 USE SET 'BURN' 0.0 ENDMIX
MIX 5 USE SET 'BURN' 0.0 ENDMIX MIX 6 USE SET 'BURN' 0.0 ENDMIX
MIX 7 USE SET 'BURN' 0.0 ENDMIX MIX 8 USE SET 'BURN' 0.0 ENDMIX
MIX 9 USE SET 'BURN' 0.0 ENDMIX MIX 10 USE SET 'BURN' 0.0 ENDMIX
MIX 11 USE SET 'BURN' 0.0 ENDMIX MIX 12 USE SET 'BURN' 0.0 ENDMIX
MIX 13 USE SET 'BURN' 0.0 ENDMIX MIX 14 USE SET 'BURN' 0.0 ENDMIX
MIX 15 USE SET 'BURN' 0.0 ENDMIX MIX 16 USE SET 'BURN' 0.0 ENDMIX
MIX 17 USE SET 'BURN' 0.0 ENDMIX MIX 18 USE SET 'BURN' 0.0 ENDMIX
MIX 19 USE SET 'BURN' 0.0 ENDMIX MIX 20 USE SET 'BURN' 0.0 ENDMIX
MIX 21 USE SET 'BURN' 0.0 ENDMIX MIX 22 USE SET 'BURN' 0.0 ENDMIX
MIX 23 USE SET 'BURN' 0.0 ENDMIX MIX 24 USE SET 'BURN' 0.0 ENDMIX
MIX 25 USE SET 'BURN' 0.0 ENDMIX MIX 26 USE SET 'BURN' 0.0 ENDMIX
MIX 27 USE SET 'BURN' 0.0 ENDMIX MIX 28 USE SET 'BURN' 0.0 ENDMIX
MIX 29 USE SET 'BURN' 0.0 ENDMIX MIX 30 USE SET 'BURN' 0.0 ENDMIX
MIX 31 USE SET 'BURN' 0.0 ENDMIX MIX 32 USE SET 'BURN' 0.0 ENDMIX
MIX 33 USE SET 'BURN' 0.0 ENDMIX MIX 34 USE SET 'BURN' 0.0 ENDMIX
MIX 35 USE SET 'BURN' 0.0 ENDMIX MIX 36 USE SET 'BURN' 0.0 ENDMIX
MIX 37 USE SET 'BURN' 0.0 ENDMIX MIX 38 USE SET 'BURN' 0.0 ENDMIX
MIX 39 USE SET 'BURN' 0.0 ENDMIX MIX 40 USE SET 'BURN' 0.0 ENDMIX
MIX 41 USE SET 'BURN' 0.0 ENDMIX MIX 42 USE SET 'BURN' 0.0 ENDMIX
MIX 43 USE SET 'BURN' 0.0 ENDMIX MIX 44 USE SET 'BURN' 0.0 ENDMIX
MIX 45 USE SET 'BURN' 0.0 ENDMIX MIX 46 USE SET 'BURN' 0.0 ENDMIX
MIX 47 USE SET 'BURN' 0.0 ENDMIX MIX 48 USE SET 'BURN' 0.0 ENDMIX
MIX 49 USE SET 'BURN' 0.0 ENDMIX MIX 50 USE SET 'BURN' 0.0 ENDMIX
MIX 51 USE SET 'BURN' 0.0 ENDMIX MIX 52 USE SET 'BURN' 0.0 ENDMIX
MIX 53 USE SET 'BURN' 0.0 ENDMIX MIX 54 USE SET 'BURN' 0.0 ENDMIX
MIX 55 USE SET 'BURN' 0.0 ENDMIX ;
*----
* Define the macro geometry (MACROGEOM)
*----
MACROGEOM := GEO: :: CAR2D 11 11 (*EIGHTH OF A REP1300 REACTOR*)
X- DIAG X+ VOID
Y- SYME Y+ DIAG
MIX 1 2 3 4 5 6 7 8 9 34 34
10 11 12 13 14 15 16 17 34 34
18 19 20 21 22 23 34 34 34
24 25 26 27 28 34 34 34
29 30 31 34 34 34 0
32 33 34 34 34 0
34 34 34 0 0
34 34 0 0
0 0 0
0 0
0
MESHX 0.0 21.611253 43.222506 64.833759 86.445012 108.056265
129.667518 151.278771 172.890024 194.501277 216.112530
237.723783
MESHY 0.0 21.611253 43.222506 64.833759 86.445012 108.056265
129.667518 151.278771 172.890024 194.501277 216.112530
237.723783
SPLITX 2 2 2 2 2 2 2 2 2 2 2
SPLITY 2 2 2 2 2 2 2 2 2 2 2
;
TRACK := TRIVAT: MACROGEOM :: DUAL (*IELEM=*) 3 (*ICOL=*) 3
MAXR 500 ;
*----
* Define the 26-group reference macrolib (MACRO)
*----
EDIT2 := EDI: MACRO :: EDIT 3
MERG MIX 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 34 34 34 34 34 34 34 34
34 34 34 34 34 34 34 34 34 34 34 34 0 SAVE ;
MACRO := DELETE: MACRO ;
MACRO := EDIT2 :: STEP UP 'REF-CASE0001' STEP UP MACROLIB ;
EDIT2 := DELETE: EDIT2 ;
*----
* Define the 2-group reference macrolib (MACRO2)
*----
EDIT2 := EDI: MACRO :: EDIT 3
COND 19 26
MERG MIX 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 SAVE ;
MACRO := DELETE: MACRO ;
MACRO2 := EDIT2 :: STEP UP 'REF-CASE0001' STEP UP MACROLIB ;
*----
* Compute optimal reflector
*----
MACRO3 OPTIM := reflectorOpt MACRO2 MACROGEOM TRACK
:: 33 34 0.5 1.5 1.0E-4 ;
*----
* Edit some output results
*----
ECHO "control variables at convergence" ;
UTL: OPTIM :: IMPR 'VAR-VALUE' * ;
GREP: OPTIM :: GETVAL 'FOBJ-CST-VAL' 1 >>Fobj<< ;
ECHO "optimal objective function=" Fobj ;
EVALUATE REFVALUE := 2.554216E-05 ;
EVALUATE DELTA := Fobj D_TO_R REFVALUE - REFVALUE / ABS ;
IF DELTA 5.0E-4 < THEN
PRINT "TEST SUCCESSFUL; DELTA=" DELTA ;
ELSE
PRINT "------------" ;
PRINT "TEST FAILURE" ;
PRINT "------------" ;
PRINT "REFERENCE=" REFVALUE " CALCULATED=" Fobj ;
ABORT: ;
ENDIF ;
ECHO "test rep1300_reflector completed" ;
END: ;
QUIT "LIST" .
|