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
|
*DECK MOVCHK
SUBROUTINE MOVCHK(IMPX,IMODE,NPART,IAXIS,ITOP,DELH,LENG,RODPOS)
*
*-----------------------------------------------------------------------
*
*Purpose:
* Compute and set the new rod position and insertion level for the
* fading or moving rod.
*
*Copyright:
* Copyright (C) 2007 Ecole Polytechnique de Montreal.
*
*Author(s):
* D. Sekki and A. Hebert
*
*Parameters: input
* IMPX printing index (=0 for no print).
* IMODE type of displacement: =1 for FADE; =2 for MOVE (DONJON3-type
* movement).
* NPART number of parts in the control rod.
* IAXIS axis of rod movement: =1 for X; =2 for Y; =3 for Z.
* ITOP rod insertion: = +1 from the top; = -1 from the bottom.
* DELH rod displacement along the IAXIS of movement if FADE; position
* of moving end in core if MOVE.
* LENG fully-inserted complete rod position.
* RODPOS fully inserted rod position.
*
*Parameters: output
* RODPOS new rod position.
*
*-----------------------------------------------------------------------
*
*----
* SUBROUTINE ARGUMENTS
*----
INTEGER IMPX,IMODE,NPART,IAXIS,ITOP
REAL DELH,RODPOS(6,NPART),LENG(2),LIMINF
*
PARAMETER(IOUT=6)
*----
* X-AXIS MOVEMENT
*----
IF(IMPX.GT.1) WRITE(IOUT,1000) DELH
SUP=DELH
DO 10 IPART=1,NPART
IF(IAXIS.EQ.1) THEN
IF((ITOP.EQ.1).AND.(IMODE.EQ.1)) THEN
RODPOS(1,IPART)=MAX(RODPOS(1,IPART),LENG(2)-DELH)
RODPOS(1,IPART)=MIN(RODPOS(1,IPART),RODPOS(2,IPART))
ELSE IF((ITOP.EQ.-1).AND.(IMODE.EQ.1)) THEN
RODPOS(2,IPART)=MIN(RODPOS(2,IPART),LENG(1)+DELH)
RODPOS(2,IPART)=MAX(RODPOS(1,IPART),RODPOS(2,IPART))
ELSE IF((ITOP.EQ.1).AND.(IMODE.EQ.2)) THEN
DELTA=RODPOS(2,IPART)-RODPOS(1,IPART)
RODPOS(1,IPART)=SUP
RODPOS(2,IPART)=SUP+DELTA
SUP=RODPOS(2,IPART)
ELSE IF((ITOP.EQ.-1).AND.(IMODE.EQ.2)) THEN
DELTA=RODPOS(2,IPART)-RODPOS(1,IPART)
RODPOS(2,IPART)=SUP
RODPOS(1,IPART)=SUP-DELTA
SUP=RODPOS(1,IPART)
ENDIF
*----
* Y-AXIS MOVEMENT
*----
ELSE IF(IAXIS.EQ.2) THEN
IF((ITOP.EQ.1).AND.(IMODE.EQ.1)) THEN
RODPOS(3,IPART)=MAX(RODPOS(3,IPART),LENG(2)-DELH)
RODPOS(3,IPART)=MIN(RODPOS(3,IPART),RODPOS(4,IPART))
ELSE IF((ITOP.EQ.-1).AND.(IMODE.EQ.1)) THEN
RODPOS(4,IPART)=MIN(RODPOS(4,IPART),LENG(1)+DELH)
RODPOS(4,IPART)=MAX(RODPOS(3,IPART),RODPOS(4,IPART))
ELSE IF((ITOP.EQ.1).AND.(IMODE.EQ.2)) THEN
DELTA=RODPOS(4,IPART)-RODPOS(3,IPART)
RODPOS(3,IPART)=SUP
RODPOS(4,IPART)=SUP+DELTA
SUP=RODPOS(4,IPART)
ELSE IF((ITOP.EQ.-1).AND.(IMODE.EQ.2)) THEN
DELTA=RODPOS(4,IPART)-RODPOS(3,IPART)
RODPOS(4,IPART)=SUP
RODPOS(3,IPART)=SUP-DELTA
SUP=RODPOS(3,IPART)
ENDIF
*----
* Z-AXIS MOVEMENT
*----
ELSE IF(IAXIS.EQ.3) THEN
IF((ITOP.EQ.1).AND.(IMODE.EQ.1)) THEN
RODPOS(5,IPART)=MAX(RODPOS(5,IPART),LENG(2)-DELH)
RODPOS(5,IPART)=MIN(RODPOS(5,IPART),RODPOS(6,IPART))
ELSE IF((ITOP.EQ.-1).AND.(IMODE.EQ.1)) THEN
RODPOS(6,IPART)=MIN(RODPOS(6,IPART),LENG(1)+DELH)
RODPOS(6,IPART)=MAX(RODPOS(5,IPART),RODPOS(6,IPART))
ELSE IF((ITOP.EQ.1).AND.(IMODE.EQ.2)) THEN
DELTA=RODPOS(6,IPART)-RODPOS(5,IPART)
RODPOS(5,IPART)=SUP
RODPOS(6,IPART)=SUP+DELTA
SUP=RODPOS(6,IPART)
ELSE IF((ITOP.EQ.-1).AND.(IMODE.EQ.2)) THEN
DELTA=RODPOS(6,IPART)-RODPOS(5,IPART)
RODPOS(6,IPART)=SUP
RODPOS(5,IPART)=SUP-DELTA
SUP=RODPOS(5,IPART)
ENDIF
ENDIF
*----
* PRINT NEW POSITION
*----
IF(IMPX.GT.1) THEN
WRITE(IOUT,1001) IPART,RODPOS(1,IPART),RODPOS(3,IPART),
1 RODPOS(5,IPART),RODPOS(2,IPART),RODPOS(4,IPART),
2 RODPOS(6,IPART)
ENDIF
10 CONTINUE
*----
* CONSISTENCY CHECK
*----
LIMINF=0
IF(IMODE.EQ.2) THEN
IF(ITOP.EQ.-1) THEN
LIMINF=DELH-(LENG(2)-LENG(1))
ELSE IF(ITOP.EQ.1) THEN
LIMINF=DELH+(LENG(2)-LENG(1))
ENDIF
IF(ABS(SUP-LIMINF).GT.1.E-3) CALL XABORT('@MOVCHK: WRONG LENG'
1 //'TH OF ADJUSTER')
ENDIF
RETURN
*
1000 FORMAT(/5X,'MOVCHK: MOVE A ROD BY',F10.4)
1001 FORMAT(
1 /5X,'MOVCHK: PART =',I5/
2 5X,'NEW ROD POSITION :'/
3 5X,'X-',F10.4,5X,'Y-',F10.4,5X,'Z-',F10.4/
4 5X,'X+',F10.4,5X,'Y+',F10.4,5X,'Z+',F10.4)
END
|