]> SALOME platform Git repositories - samples/dsccode.git/blob - src/NEUTRO/neutro.f
Salome HOME
Synchronize adm files
[samples/dsccode.git] / src / NEUTRO / neutro.f
1       subroutine transit(compo,dt0)
2       include "calcium.hf"
3       dimension q(24),temp(24)
4       double precision dt0
5       integer compo
6       integer topo(20)
7
8       dt=dt0
9
10       ti=0.
11
12       do j=1,6
13       npt=j*4
14       q(npt)=0.
15       enddo
16
17       pos=1.
18       do i=1,3
19       do j=1,6
20       npt=i+(j-1)*4
21       haut=float(j)/6.
22         if(haut.gt.pos)then
23         q(npt)=0.
24         else
25         q(npt)=100.
26         endif
27       enddo
28       enddo
29
30       do i=1,20
31         topo(i)=i
32       enddo
33 c
34 c  initialisation puissance a t=0
35 c
36       call cpeen(compo,CP_TEMPS,ti,1,"topo",20,topo,info)
37       CALL cpeRE(compo,CP_TEMPS, ti, 1, 'puissance', 24,
38      &            q , info)
39       IF( info.NE. CPOK  )GO TO 9000
40
41       do while( .TRUE. )
42 c     do while( ti.lT.100. )
43
44       tf=ti+dt
45 c
46 c  lecture de la temperature combustible entre ti et tf
47 c
48       CALL cplRE(compo,CP_TEMPS, ti,tf, npas, 'temperature', 24,
49      &      nval, temp , info)
50       IF( info.NE. CPOK  )GO TO 9000
51
52       do j=1,6
53       npt=j*4
54       q(npt)=0.
55       enddo
56 c
57 c  calcul de la puissance degagee en fonction de la position
58 c    des barres et de la temperature
59 c
60       do i=1,3
61       do j=1,6
62       npt=i+(j-1)*4
63       haut=float(j)/6.
64         if(haut.gt.pos)then
65         q(npt)=0.
66         else
67         q(npt)=100.*(1.-0.0001*(temp(npt)-1000.))
68         endif
69       enddo
70       enddo
71       write(6,*)"NEUTRO:","temps=",tf
72 c
73 c  ecriture de la puissance a tf
74 c
75       call cpeen(compo,CP_TEMPS,ti,1,"topo",20,topo,info)
76       CALL cpeRE(compo,CP_TEMPS, tf, npas+1, 'puissance', 24,
77      &            q , info)
78             IF( info.NE. CPOK  )GO TO 9000
79       ti=tf
80
81       enddo
82 9000  continue
83             CALL cpfin(compo,CP_ARRET, info)
84       end
85
86       subroutine perma(compo)
87       include "calcium.hf"
88       dimension q(24),temp(24)
89       integer compo
90  
91       do j=1,6
92       npt=j*4
93       q(npt)=0.
94       enddo
95  
96       pos=1.
97       do i=1,3
98       do j=1,6
99       npt=i+(j-1)*4
100       haut=float(j)/6.
101         if(haut.gt.pos)then
102         q(npt)=0.
103         else
104         q(npt)=100.
105         endif
106       enddo
107       enddo
108
109       iter=0
110       iconv=0
111 c
112 c  initialisation puissance a iter=0
113 c
114       CALL cpeRE(compo,CP_ITERATION, ti, iter, 'puissi', 24,
115      &            q , info)
116       IF( info.NE. CPOK  )GO TO 9000
117  
118       do while( iconv .eq. 0)
119 c
120 c  lecture de la temperature combustible a iter        
121 c
122       CALL cplRE(compo,CP_ITERATION, ti,tf, iter, 'tempi', 24,
123      &      nval, temp , info)
124       IF( info.NE. CPOK  )GO TO 9000
125  
126       do j=1,6
127       npt=j*4
128       q(npt)=0.
129       enddo
130
131 c
132 c  calcul de la puissance degagee en fonction de la position
133 c    des barres et de la temperature
134 c
135       do i=1,3
136       do j=1,6
137       npt=i+(j-1)*4
138       haut=float(j)/6.
139         if(haut.gt.pos)then
140         q(npt)=0.
141         else
142         q(npt)=100.*(1.-0.0001*(temp(npt)-1000.))
143         endif
144       enddo
145       enddo
146 c
147 c  ecriture de la puissance a iter+1
148 c
149       iter=iter+1
150       CALL cpeRE(compo,CP_ITERATION, ti, iter, 'puissi', 24,
151      &            q , info)
152       IF( info.NE. CPOK  )GO TO 9000
153 c
154 c   lecture du flag de convergence iconv
155 c
156       CALL cplEN(compo,CP_ITERATION,ti, tf, iter  , 'iconv', 1,
157      &      nval, iconv  , info)
158       write(6,*)"info:",info
159       write(6,*)"NEUTRO:",iter,iconv
160       CALL FLUSH(6)
161       IF( info.NE. CPOK  )GO TO 9000
162  
163       if(iconv.eq.1)go to 9000
164
165       enddo
166
167 9000  continue
168       CALL cpfin(compo,CP_ARRET, info)
169       end