summaryrefslogtreecommitdiff
path: root/Donjon/data/rep1300_reflector_sp1.x2m
blob: 140d3faa02f1773b79afb2bc2a49fa139fe20a87 (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_sp1.x2m
*  Type          : DONJON CLE2000 procedure
*  Author        : Alain Hebert
*
*  Compute the reflector parameters using a 26-group reference
*  solution and a sequence of 2-group SP1 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 ;
INTEGER   itype ;
REAL REFVALUE DELTA ;
DOUBLE Fobj ;
SEQ_ASCII _ASaphyb :: FILE 'referenceSaphybCalculation.sap' ;
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 ;
  
  UTL: MACRO :: STEP UP GROUP STEP AT 1 DUMP ;
*----
* 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
      SPN 1 SCAT 2 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.421035E-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_sp1 completed" ;
END: ;
QUIT "LIST" .