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
139
140
141
142
143
144
145
|
*DECK D2PREF
SUBROUTINE D2PREF( IPDAT, NVAR, CRDINF, NCRD, GRID, PKIDX,
> PKNAM, IPRINT )
*
*-----------------------------------------------------------------------
*
*Purpose:
* Select the reference state. This routine determine the reference state
* for all cases of meshing
*
*Author(s):
* J. Taforeau
*
*Parameters: input
* IPDAT address of info data block
* NVAR number of state variables
* CRDINF control rod compostition array
* NCRD number of crontrol rod comosition
* GRID type of griddind for branching calculation
*
*Parameters:
*
*-----------------------------------------------------------------------
*
USE GANLIB
*----
* SUBROUTINE ARGUMENTS
*----
TYPE(C_PTR) IPDAT
INTEGER NVAR,NBR,NCRD,GRID
INTEGER CRDINF(NCRD)
INTEGER PKIDX(NVAR)
CHARACTER*12 PKNAM(6)
*----
* LOCAL VARIABLES
*----
INTEGER ITYLCM,i,IDX
INTEGER :: IP = 2
INTEGER STAIDX(NVAR),REFIDX(NVAR)
INTEGER NVALPA(NVAR)
REAL STATE(NVAR) ,REFSTA(NVAR-1),HSTSTA(NVAR-1)
REAL VALPAR(NVAR,100)
CHARACTER(LEN=12) PKEY(NVAR),BARNAM
CHARACTER*12,DIMENSION(6) :: PKREF
DATA PKREF/ "BARR","DMOD","CBOR","TCOM","TMOD","BURN"/
! RECOVER INFORMATION FROM INFO DATA BLOCK
CALL LCMSIX(IPDAT,' ',0)
CALL LCMSIX(IPDAT,'SAPHYB_INFO',1)
CALL LCMGTC(IPDAT,'STATE_VAR',12,NVAR,PKEY)
!INITIALIZATION OF THE NUMBER OF BRANCHES TO BE CALCULATED
VALPAR(:NVAR,:100)=0.0
NBR=1
DO i=1, NVAR
IF (PKIDX(i).EQ.-1) THEN
IDX=1
ELSE
IDX=PKIDX(i)
ENDIF
CALL LCMLEN(IPDAT,PKREF(IDX),NVALPA(i),ITYLCM)
CALL LCMGET(IPDAT,PKREF(IDX),VALPAR(i,1:NVALPA(i)))
ENDDO
DO i=1, NVAR
IF (PKIDX(i).EQ.-1) THEN
IDX=1
ELSE
IDX=PKIDX(i)
ENDIF
! ATTRIBUTION OF VALUES FOR THE BARR PARAMETERS
IF (PKREF(IDX)==PKREF(1)) THEN
BARNAM=PKNAM(1)
REFSTA(1)= CRDINF(1)
HSTSTA(1)= CRDINF(1)
REFIDX(1)=1 ! INITIALIZATION OF BARR REFERENCE INDEX
STATE(1)=CRDINF(1) ! ATTRIBUTION OF CONTROL ROD COMPOSITION
STAIDX(1)=1 ! ATTRIBUTION OF CONTROL ROD COMPOSITION INDEX
NBR=NBR*NVALPA(i) ! CALCULATION OF NUMBER OF BRANCHES
! IDEM FOR BURN PARAMETERS
ELSE IF (PKREF(IDX)==PKREF(6)) THEN
STATE(NVAR)=VALPAR(i,1)
STAIDX(NVAR)=1
REFIDX(NVAR)=1
!IDEM FOR OTHER PARAMETERS
! EXIT
ELSE
! THE REFERENCE STATES IS SET TO THE MIDDLE VALUE IN THE LIST
REFSTA(IP)=VALPAR(i,NINT(NVALPA(i)/2.0))
HSTSTA(IP)= VALPAR(i,NINT(NVALPA(i)/2.0))
REFIDX(IP)=NINT(NVALPA(i)/2.0)
STATE(IP)=REFSTA(IP)
STAIDX(IP)=NINT(NVALPA(i)/2.0)
NBR=NBR*NVALPA(i)
IP=IP+1
ENDIF
ENDDO
CALL LCMSIX(IPDAT,' ',0)
CALL LCMSIX(IPDAT,'BRANCH_INFO',1)
CALL LCMPUT(IPDAT,'PRINT',1,1,1)
IF((NBR>9999).OR.(GRID==0)) THEN
! IN THE CASE WHERE THE NUMBER OF BRANCHES EXCEED 999, A
! DEFAULT BANCHING CALCULATION IS CALLED
GRID = 0
CALL D2PDEF( IPDAT, PKEY, VALPAR, NVALPA, STAIDX, REFIDX,
> REFSTA,HSTSTA, STATE, CRDINF, NCRD, NVAR,
> PKIDX ,IPRINT )
ELSE
! UPDATE THE INFO DATA BLOCK
! WITH THE INITIAL MESHING FROMSAPHYB
CALL LCMSIX(IPDAT,' ',0)
CALL LCMSIX(IPDAT,'BRANCH_INFO',1)
CALL LCMPTC(IPDAT,'BRANCH',12,BARNAM)
CALL LCMPUT(IPDAT,'BRANCH_IT',1,1,1)
CALL LCMPUT(IPDAT,'REF_STATE',NVAR-1,2,REFSTA)
CALL LCMPUT(IPDAT,'HST_STATE',NVAR-1,2,REFSTA)
CALL LCMPUT(IPDAT,'REF_INDEX',NVAR,1,REFIDX)
CALL LCMPUT(IPDAT,'BRANCH_NB',1,1,NBR)
CALL LCMPUT(IPDAT,'STATE',NVAR,2,STATE)
CALL LCMPUT(IPDAT,'STATE_INDEX',NVAR,1,STAIDX)
CALL LCMPUT(IPDAT,'BRANCH_INDEX',1,1,1)
CALL LCMPUT(IPDAT,'REWIND',1,1,1)
CALL LCMPUT(IPDAT,'STOP',1,1,0)
IF(IPRINT > 1) THEN
WRITE(6,*)
WRITE(6,*) "*** INFORMATION ABOUT BRANCHING CALCULATION ***"
WRITE(6,*)
WRITE(6,*) "DEFAULT MESHING (Y/N) : N"
IF(GRID==4) WRITE(6,*) "MESHING: NEW GRID WITH ADDITIONAL PTS"
IF(GRID==3) WRITE(6,*) "MESHING: SAP/MCO WITH ADDITIONAL PTS"
IF(GRID==2) WRITE(6,*) "MESHING: USER DEFINED "
IF(GRID==1) WRITE(6,*) "MESHING: SAP/MCO "
WRITE(6,*) "STATE PARAMETERS : ",PKEY(1:NVAR)
WRITE(6,*) "REFERENCE STATES VALUES :", REFSTA
WRITE(6,*) "INITIAL STATES VALUES :", STATE
WRITE(6,*) "INITIAL STATES INDEX VALUES :", STAIDX
ENDIF
ENDIF
END
|