С. Д. Алгазин
Препринт № 725
Москва 2003 г.
Аннотация.
Рассматривается трёхмерная кинетика ядерного реактора с
учётом обратных связей по температуре топлива. Алгоритм устроен
таким образом, что громоздкие вычисления табулированы в
таблицах небольшого объёма, что позволяет опубликовать
компактные программы на Фортране.
The summary.
2
Введение.
∂N
(I.1) l ∞ = M 2 ∆N + (1 − β )r∞ N + λl ∞ C − N , r ∈ Ω,
∂t
∂C
(I.2) l ∞ = βr∞ N − λl ∞ C ,
∂t
(I.3) C t =0 = C 0 (r ), N t =0 = N0 (r ),
4
∂N
(I.4) + DN = 0, D > 0
∂n ∂Ω
∂C
(I.8) = cr∞ N − dC.
∂t
d2
(I.9) ∆ = ∆ ρ ,ϕ + ,
dz 2
6
(I.11) μ и ν - точные собственные значения соответствующих
операторов, а v и w-точные значения в узлах сетки соответствующих
собственных форм. Рассмотрим матрицу
(I.12) H = IL ⊗ h + B⊗ IR,
N a 11 a 12 0 N R( N )
d
(I.14) C = a 21 − a 12 0 C + 0 ,
dt
T a 31 0 a 33 T Tb l
τ
7
a11(Т), a21 = a21(Т) то есть матрицы зависят от решения. Остальные
матрицы от решения не зависят. Причем a11 - разреженная матрица,
а остальные матрицы - диагональные. Погрешность дискретизации
R=R(N) зависит от решения N. Получить для погрешности
дискретизации R конкретное выражение, можно разложив решение в
ряд по собственным функциям оператора Лапласа и оценив, исходя
из соотношения (I.13), погрешность определения собственных
функций. Практически решение N "почти" первая собственная
форма оператора Лапласа и поэтому приближается хорошо на
достаточно редкой сетке.
Отбросив погрешность дискретизации R(N) получим
приближенную конечную задачу.
Результаты расчетов. Конкретные расчеты производились для
кругового цилиндра с реальными ядерно-физическими константами
на сетке из 60 узлов. Причем по высоте выбиралось четыре сечения,
а в каждом сечении выбиралось 15 точек (3 окружности по 5 точек).
Дискретизация плоского оператора Лапласа производилась по
методике, описанной в [8]. Дискретизация по z также производилась
по методике, описанной в главе [8]. Счет по времени проводился
неявным методом. Проведенные расчеты показали высокую
эффективность описанной дискретизации.
Программа для описанной задачи реализована так, что использует
в качестве начальных данных небольшие массивы (матрицы
плоского и одномерного дискретных операторов Лапласа).
Следовательно, если расчеты проводятся на постоянной сетке, то
громоздкие вычисления по построению дискретного оператора
Лапласа можно затабулировать.
Например, для сетки из 4 х 3 х 5 = 60 узлов требуется два массива
8
по 9 чисел и один массив из 16 чисел, то есть всего требуется
хранить 34 числа. Написанную для этой задачи программу можно
рассматривать как расшифровывающий алгоритм. Если имеется
достаточно эффективная программа для счета по времени [9,11], то
расчеты можно производить на PC. Время счета сравнимо с
временем реального процесса. Таким образом, можно утверждать,
что решена задача табулирования решения трехмерных уравнений
кинетики ядерного реактора.
PROGRAM FREZI2
C
CL TPEXMEPHAЯ KИHETИKA ЯEPHOГO PEAKTOPA C УЧЕТОМ ОБРАТНЫХ СВЯЗЕИ
ПО
CL ТОПЛИВУ ( ВЕРСИЯ ОТ 30.06.89 )
C
IMPLICIT REAL*8 (A-H,O-Z)
CHARACTER FORM*14
DIMENSION Y(189)
COMMON /COMPHY/ A,B,C,DD,DM,E,ALFAT
COMMON /COMDAT/ HM,BA,U0,NT,NS
DIMENSION HM(2445),BA(90),DV(45),SV(30),U0(63)
COMMON /DAT0/ WB,RK0,W0(63)
COMMON/RRN/ RRN(63)
C
CL ЗAДАНИЕ CTAHДAPTHOГO BAPИAHTA ( ФИЗИKA )
C
CL ДИAMETP PEAKTOPA ( CM )
D = 400.D0
D = 355.D0
CL BЫCOTA PEAKTOPA ( CM )
H = 355.D0
CL CPEДHEE BPEMЯ ЖИЗHИ HEИTPOHA ( CEK )
RL = 1.D-3
CL ПЛОЩAДБ MИГPAЦИИ ( CM ** 2 )
RM2 = 62.D0
CL ДOЛЯ ЗAПAЗДЫBAЮЩИX HEИTPOHOB
BE = 0.005D0
CL BPEMЯ ЖИЗHИ ЗAПAЗДЫBAЮЩИX HEИTPOHOB ( CEK**(-1))
RLB = 1.D0/13.D0
CL НАЧАЛЬНАЯ ТЕМПЕРАТУРА ТОПЛИВА
TT0=1200.D0 CL
CL ТЕМПЕРАТУРА ВОДЫ
9
TB=300.D0
CL KOHCTAHTА В УРАВНЕНИИ ТЕПЛОПРОВОДНОСТИ ( СЕК )
TAU = 6.D0
C
CL XAPAKTEPHЫE BEЛИЧИHЫ
C
T = RL
DL = H
TEMP = TT0
C
CL ПEPEXOД K БEЗPAЗMEPHЫM BEЛИЧИHAM
C
D = D/DL
H = H/DL
WB = TB/TEMP C
CL БEЗPAЗMEPHЫE KOHCTAHTЫ C
B = T/RL A=(RM2/DL/DL)*B
C = BE*B
DD = RLB*T
ALFAT = TEMP*2.2D-5
E=T/TAU
RM2=RM2/DL/DL
C
CL PACЧET KOHCTAHTЫ B ГPAHИЧHOM УCЛOBИИ C
DM = 20.D0/D
DM = 17.75D0
WRITE(*,*) 'DM = ?', DM
C
NOUT = 4
OPEN (UNIT=4,FILE='NOUT')
WRITE(NOUT,*) 'DM = ', DM
C
CL CПEЦИФИKAЦИЯ ФOPMATA ДЛЯ BЫBOДA ДAHHЫX HA ПEЧATЬ
FORM='(1X,7G11.4)'
C
NSTURM = 1
OPEN (UNIT=1,FILE='NSTURM')
READ(NSTURM,*) DM1
IF (DM.NE.DM1) THEN
WRITE(*,*) 'UNIT NSTURM ? '
STOP
ENDIF
READ(1,*) NS
WRITE(*,*) 'NS = ',NS
N2=NS*NS
READ(1,*) (BA(I),I=1,N2)
NLAP3 = 2
OPEN(UNIT=2,FILE='NLAP3')
READ(NLAP3,*) DM1
IF (DM.NE.DM1) THEN
WRITE(*,*) 'UNIT NLAP3 ? '
STOP
ENDIF
READ(2,*) M,N
WRITE(*,*) 'M = ',M,'N = ',N
NT = M*N
NT2 = NT*NT
READ(2,*) (HM(I),I=1,NT2)
CL НАЧАЛЬНЫЕ ДАННЫЕ
10
READ(2,*) DLAMDA
READ(2,*) (DV(I),I=1,NT)
READ(1,*) SLAMDA
READ(1,*) (SV(I),I=1,NS)
RMU=-DLAMDA-SLAMDA
RK0=1.D0+RMU*RM2
WRITE (*,*) 'RK0 = ',RK0
WRITE (*,*) 'RL = ',RL
WRITE (*,*) 'RLB = ',RLB
NQ = NT * NS
NEQ = 3 * NQ
P=0.D0
IKL=1
DO 1 K=1,NS
DO 1 L=1,NT
Y(IKL)=DV(L)*SV(K)
U0(IKL)=Y(IKL)
P=P+U0(IKL)
Y(NQ+IKL)=U0(IKL)*BE*RK0/(RL*RLB)
1 IKL=IKL+1
P=P/NQ
DO 2 K=1,NQ
Y(2*NQ+K)=WB+(1200.D0/TEMP-WB)*P 2
W0(K)=Y(2*NQ+K)
WRITE(*,*) 'Начальные данные '
WRITE(*,FORM) Y(1),Y(10),Y(19),Y(28),Y(37),Y(46),Y(55),
* Y(64),Y(73),Y(82),Y(91),Y(100),Y(109),Y(118),
* Y(127),Y(136),Y(145),Y(154),Y(163),Y(172),Y(181)
C WRITE(*,*) 'RRN = ? '
C READ(*,*) (RRN(K),K=1,NQ)
WRITE (*,*) 'W = ?'
READ (*,*) W
DO K=1,NQ
RRN(K)=W
ENDDO
CALL STEP2 ( NEQ,Y )
WRITE (*,*) 'STEP2'
STOP
END
11
SUBROUTINE FEX (NEQ,T,Y,YDOT)
IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION Y(1),YDOT(1)
COMMON /COMDAT/ H,BA,U0,NT,N
DIMENSION H(2445),BA(90),U0(63),W0(63)
COMMON/COMPHY/ A,B,C,DD,DM,E,ALFAT
COMMON/DAT0/ WB,RK0,W0
EXTERNAL RN
CALL DIVKRC (H,BA,NT,N,Y,YDOT)
NQ=NT*N
DO 1 K=1,NQ
P=RK(Y(2*NQ+K),RN,T,K)
YDOT(K)=A*YDOT(K)+(B*(P-1.D0)-C*P)*Y(K)+DD*Y(NQ+K)
YDOT(NQ+K)=C*P*Y(K)-DD*Y(NQ+K)
1 YDOT(2*NQ+K)=E*((W0(K)-WB)/U0(K))*Y(K)-Y(2*NQ+K)*E+E*WB
RETURN
END
SUBROUTINE JEX(NEQ,T,Y,J,IAN,JAN,PDJ)
IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION Y(1),IAN(1),JAN(1),PDJ(1)
COMMON/COMPHY/ A,B,C,DD,DM,E,ALFAT
COMMON/DAT0/ WB,RK0,W0
COMMON /COMDAT/ H,BA,U0,NT,N
DIMENSION H(2445),BA(90),U0(63),W0(63)
EXTERNAL RN
DO 100 I=1,NEQ 100 PDJ(I)=0.D0
NQ=NT*N
IF (J.GT.NQ) GO TO 20
JL=J/NT
IF(JL*NT.NE.J) JL=JL+1
JN=J-(JL-1)*NT
IL=0
C
P=RK(Y(2*NQ+J),RN,T,J)
DO 1 L=1,N
LL = (L-1)*NT
IF(L.EQ.JL) GO TO 10
PDJ(LL+JN)=A*BA((JL-1)*N+L)
GO TO 1 10 CONTINUE
DO 11 I=1,NT
PDJ(LL+I)=A*H((JN-1)*NT+I)
IF(I.NE.JN) GO TO 11
PDJ(LL+I)=PDJ(LL+I)+A*BA((JL-1)*N+JL)+(B-C)*P-B
C
11 CONTINUE
1 CONTINUE
PDJ(NQ+J)=C*P
PDJ(2*NQ+J)=E*(W0(J)-WB)/U0(J)
RETURN 20 CONTINUE
NQ2=NQ+NQ
IF(J.GT.NQ2) GO TO 30
PDJ(J)=DD
PDJ(NQ+J)=-DD
RETURN 30 CONTINUE
PDJ(J)=(B-C)*ALFAT*Y(J)
PDJ(NQ+J)=C*ALFAT*Y(J)
PDJ(2*NQ+J)=-E
12
RETURN
END
13
90 FORMAT(///22H ERROR HALT.. ISTATE =,I3)
RETURN
END
15