Математическая модель тепловыделяющего элемента ядерного реактора

в 20:56, , рубрики: python, Алгоритмы, Анализ и проектирование систем, вложенные функции, математика, разработка под windows, распределение температуры, тепловыделяющий элемент, теплопроводность, ядерный реактор

Математическая модель тепловыделяющего элемента ядерного реактора - 1

Введение

Тепловыделяющий элемент (ТВЭЛ) — главный конструктивный элемент активной зоны гетерогенного ядерного реактора, содержащий ядерное топливо [1].

В ТВЭЛах происходит деление тяжелых ядер урана 235 или плутония 239, сопровождающееся выделением тепловой энергии, которая затем передаётся теплоносителю.

ТВЭЛ должен обеспечить отвод тепла от топлива к теплоносителю и препятствовать распространению радиоактивных продуктов из топлива в теплоноситель.

Поэтому расчёт температурных полей в ТВЭЛах является важной задачей проектирования ядерного реактора.

В данной публикации приведена методика расчета распределения температуры для стержневого осесимметричного твэла, набранного из таблеток оксида урана.

Конструкция осесимметричного ТВЭЛА (схематично)

Ядерное топливо заключено в защитную оболочку из циркониевого сплава – материала, слабо поглощающего тепловые нейтроны.

Между топливным стержнем и оболочкой имеется зазор – тонкая газовая прослойка, заполненная химически нейтральным и высокотеплопроводным гелием [2].

Математическая модель тепловыделяющего элемента ядерного реактора - 2

Мощность внутренних источников теплоты в твэлах достигает Математическая модель тепловыделяющего элемента ядерного реактора - 3, а теплонапряженность охлаждаемой поверхности, т.е. плотность теплового потока на поверхности оболочки – Математическая модель тепловыделяющего элемента ядерного реактора - 4

Необходимо обеспечить эффективное охлаждение, чтобы уровень температур был приемлемым для имеющихся материалов.

В наиболее распространенных гражданских реакторах типа ВВЭР охлаждение осуществляется водой под давлением 15 MПа.

Температура насыщения при этом давлении 342ºC, а температура теплоносителя (воды) – примерно 300ºC, т.е. твэлы охлаждаются некипящей, недогретой до температуры насыщения водой. Коэффициент теплоотдачи составляет примерно 30000 Вт/(м 2 ºC).

Для оксида урана, относящегося к типу керамического ядерного топлива, температура может быть очень высокой, поскольку температура плавления UO2 составляет 2800ºC.

Однако, допустимая температура циркониевых оболочек гораздо ниже – около 400ºС. Если этот предел превышен, то в контакте с водой быстро развивается разрушительная коррозия.

При проектировании твэла необходимо проверить, не превышают ли температуры ядерного топлива и защитной оболочки допустимых значений.

Расчет проводится при заданной мощности внутренних источников qv и заданных условиях охлаждения: температуре воды tf и коэффициенте теплоотдачи α.

В конструкции твэла можно выделить две области:
• Цилиндрический стержень с внутренними источниками
• Зазор и оболочку без внутренних источников.

Модель топливного стержня – цилиндр с внутренними источниками тепла

Тепловой баланс для цилиндрического топливного стержня запишем в виде:

Математическая модель тепловыделяющего элемента ядерного реактора - 5

Правая часть этого выражения — есть внутреннее тепловыделение в сплошном цилиндре с текущим радиусом r, 0 ≤ r ≤ r1. Левая часть – тепловой поток через поверхность F®.

После подстановки в приведенное соотношение выражения Математическая модель тепловыделяющего элемента ядерного реактора - 6 получим уравнение:

Математическая модель тепловыделяющего элемента ядерного реактора - 7. (1)

Согласно (1), линейная плотность теплового потока увеличивается по радиусу твэла благодаря действию внутренних источников теплоты.

С учетом выражения для плотности теплового потока,Математическая модель тепловыделяющего элемента ядерного реактора - 8 из уравнения сохранения (1) получается следующее дифференциальное уравнение для температурного поля:

Математическая модель тепловыделяющего элемента ядерного реактора - 9 (2)

Переменные в этом уравнении разделяются. Проведем интегрирование на полном интервале:

Математическая модель тепловыделяющего элемента ядерного реактора - 10

Вводя величину среднеинтегрального коэффициента теплопроводности, можно записать расчетное соотношение для перепада температуры внутри твэла в следующей компактной форме:

Математическая модель тепловыделяющего элемента ядерного реактора - 11 (3)

Теплопроводность UO2 [3]:

Математическая модель тепловыделяющего элемента ядерного реактора - 12 (4)

График теплопроводности UO2

# -*- coding: utf8 -*-    
import numpy as np
import matplotlib.pyplot as plt 
def Luo2(t):         
         return 8.706+(-9.11*(10**-3))*t+(3.992*(10**-6))*(t**2)+(-5.004*(10**-10))*(t**3)
x= np.arange(0.0,2500.0,100.0)
plt.title(' Теплопроводность оксида урана (Вт/м °С)  n в зависимости от температуры (°С)')
plt.xlabel('t°С ')
plt.ylabel('$lambda(t)$ -Вт/м °C')
plt.plot(x,Luo2(x), color='b')
plt.grid(True)
plt.show()

Математическая модель тепловыделяющего элемента ядерного реактора - 13

Заметим, что формула (3) дает точное решение дифференциального уравнения (2) в квадратурах. Числовые погрешности могут возникнуть при приближенном вычислении интеграла.

Если принять λ = сonst, то из (3) следует квадратичный закон изменения температуры по радиусу. Чтобы увидеть это, зафиксируйте в Δt ≡ t 0 — t1 величину t0 и рассматривайте t1 как функцию от радиуса r1.

В действительности теплопроводность оксида урана сильно зависит от температуры (4) и эту зависимость необходимо учитывать при практических расчетах.

Задаём мощность тепловыделения qv и температуру поверхности топливного стержня t1. Требуется найти температуру в центре t0 (это максимальное значение температуры в твэле).

Для таких вычислений потребовалось разработать программу на Python:

# -*- coding: utf8 -*-    
import numpy as np
from scipy.optimize import *
from scipy.integrate import quad
import matplotlib.pyplot as plt 
def Luo2(t):# функция теплопроводности оксида урана от температуры        
         return 8.706+(-9.11*(10**-3))*t+(3.992*(10**-6))*(t**2)+(-5.004*(10**-10))*(t**3)
x= np.arange(0.0,2500.0,100.0)
qv=10**9# мощность источника
r1=0.0038# радиус топливного стержня
def LLuo2(t1,t2):#функция для определения среднего интегрального значения теплопроводности оксида урана
         if abs(t1-t2)<0.001:
                  z=Luo2(t1)
         else:
                  z=(1/(t2-t1))*(quad(lambda t: Luo2(t), t1,t2)[0])
         return z
t1=942.413# заданное значение температуры поверхности топливного стержня
t0=round(fsolve(lambda t0:t0-t1-(qv*r1**2)/(4*LLuo2(t1,t0)) ,t1)[0],1)
print(' Температура t0 в центре топливного стержня - %s °С '%t0)  

Получим:

Температура t0 в центре топливного стержня -2359.2 °С

Итак, чтобы воспользоваться точным решением (3) задачи о разработке математической модели твэла, потребовалось специальное использование модулей Python –fsolve и quad, а также “вложенных” функций.

Заметим, что это самый простой способ решения, если необходимо правильно учесть влияние температурной зависимости коэффициента теплопроводности ядерного топлива.

Расчет теплопередачи через зазор заполненный гелием и циркониевую защитную оболочку

Теплота, выделившаяся в активном стержне, далее передается через газовый зазор и циркониевую оболочку к охлаждающей воде.

Поскольку в этой области внутренних источников тепла нет, величина линейного потока qL сохраняется постоянной, а из (1) следует:

Математическая модель тепловыделяющего элемента ядерного реактора - 14

Теплопроводность гелия в газовой прослойке существенно зависит от температуры:

Математическая модель тепловыделяющего элемента ядерного реактора - 15 (5)

График теплопроводности He

# -*- coding: utf8 -*-    
import numpy as np
import matplotlib.pyplot as plt 
def Lhe(t):
         return 0.146+3.339*(10**-4)*t-4.219*(10**-8)*t**2
plt.title(' Теплопроводность газообразного гелия (Вт/м °С)  n в зависимости от температуры  (°С) ')
x= np.arange(0.0,2500.0,100.0)
plt.xlabel('t°С ')
plt.ylabel('$lambda(t)$ -Вт/м °C')
plt.plot(x,Lhe(x), color='b')
plt.grid(True)
plt.show()

Математическая модель тепловыделяющего элемента ядерного реактора - 16

Учтем, что теплопроводность гелия в газовой прослойке существенно зависит от температуры, в то же время теплопроводность циркониевого сплава можно считать постоянной:

Математическая модель тепловыделяющего элемента ядерного реактора - 17

где:

Математическая модель тепловыделяющего элемента ядерного реактора - 18

Теплоотдачу на поверхности оболочки опишем уравнением Ньютона Рихмана:Математическая модель тепловыделяющего элемента ядерного реактора - 19 преобразованным для линейной плотности теплового потока:

Математическая модель тепловыделяющего элемента ядерного реактора - 20,

где: RL,α называется линейное сопротивление теплоотдачи.

Линейные термические сопротивления гелиевого зазора, оболочки и теплоотдачи на наружной поверхности образуют последовательную цепь сопротивлений, через которые проходит одинаковый (линейный) тепловой поток qL:

Математическая модель тепловыделяющего элемента ядерного реактора - 21 (6)

Математическая модель тепловыделяющего элемента ядерного реактора - 22

Вычисления будут элементарными, если сопротивления независимы от температуры. Однако, во многих задачах теплопередачи это не так.

Сейчас мы имеем дело с самым простым примером нелинейного сопротивления, вследствие сильной температурной зависимости коэффициента теплопроводности гелия в зазоре.

Более сложными являются задачи с зависящими от температуры сопротивлениями теплоотдачи (как при кипении или конденсации, при свободной конвекции или радиационном теплообмене).

Поскольку проблема является достаточно общей, покажем, как организовать расчеты теплопередачи в таких случаях:

• Следует задать температурные зависимости материалов в виде функций, к которым могут обратиться другие блоки программы
• Следует записать термические сопротивления с учетом температурной зависимости
• Следует сформировать для последовательной цепи систему уравнений, таких как (6), содержащих неизвестные температуры t1, t2, t3.

Для таких сложных вычислений потребовалось разработать программу на Python, содержащую цепь вложенных функций:

# -*- coding: utf8 -*-    
import numpy as np
from scipy.optimize import *
from scipy.integrate import quad
import matplotlib.pyplot as plt 
def Luo2(t):# функция теплопроводности оксида урана от температуры        
         return 8.706+(-9.11*(10**-3))*t+(3.992*(10**-6))*(t**2)+(-5.004*(10**-10))*(t**3)
x= np.arange(0.0,2500.0,100.0)
qv=10**9# мощность источника
r1=0.0038# радиус топливного стержня
def LLuo2(t1,t2):#функция для определения среднего интегрального значения теплопроводности оксида урана
         if abs(t1-t2)<0.001:
                  z=Luo2(t1)
         else:
                  z=(1/(t2-t1))*(quad(lambda t: Luo2(t), t1,t2)[0])
         return z
t1=942.413# заданное значение температуры поверхности топливного стержня
t0=round(fsolve(lambda t0:t0-t1-(qv*r1**2)/(4*LLuo2(t1,t0)) ,t1)[0],1)
print(' Температура t0 в центре топливного стержня в °С  -%s'%t0)
def Lhe(t):# функция теплопроводности  гелия от температуры    
         return 0.146+3.339*(10**-4)*t-4.219*(10**-8)*t**2
def LLhe(t1,t2):#функция для определения среднего интегрального значения теплопроводности гелия
         if abs(t1-t2)<0.001:
                  z=Lhe(t1)
         else:
                  z=(1/(t2-t1))*(quad(lambda t: Lhe(t), t1,t2)[0])
         return z
dzr=0.00065# толщина защитной оболочки из циркония
dhe=0.0001#толщина кольцевого слоя, заполненного гелием
r2=r1+dhe#внутренний радиус защитной оболочки из циркония
r3=r2+dzr#наружный радиус защитной оболочки из циркония
Lzr=20#длина твэла
tf=300# температура охлаждающей воды
alf=30000#коэффициент теплоотдачи
RL_alf=1/(alf*2*np.pi*r3)#  сопротивление теплоотдачи твэла
RL_Zr=(1/(2*np.pi*Lzr)*np.log(r3/r2))# сопротивление теплоотдачи гелия
def RL_He(t1,t2):#функция теплоотдачи гелия
       return (1/(2*np.pi*LLhe(t1,t2))*np.log(r2/r1))
ql=qv*np.pi*r1**2#величина линейного теплового потока от стержня из оксида урана
def fun(t1,t2,t3): #функция для определения температур на поверхности стержня из диоксида урана             
         z=(t1-tf-ql*(RL_He(t1,t2)+RL_Zr+RL_alf))
         return z
t3=tf+ql*RL_alf
t2=t3+ql*RL_Zr
tt0=400#начальное значение для поиска t1
t1=fsolve(lambda t1:fun(t1,t2,t3),tt0)[0]# определение t1
print('Температура t1 поверхности топливного стержня из оксида урана-%s  °С'%round(t1,1))
print('Температура t2 внутренней поверхности оболочки из циркония -%s  °С'%round(t2,1))
print('Температура t3 наружной поверхности оболочки из циркония -%s  °С'%round(t3,1))

Получим:

Температура t0 в центре топливного стержня — 2359.2 °С
Температура t1 поверхности топливного стержня из оксида урана-942.4 °С
Температура t2 внутренней поверхности оболочки из циркония -408.5 °С
Температура t3 наружной поверхности оболочки из циркония -352.9 °С

Распределение температуры в твэле

# -*- coding: utf8 -*-    
import numpy as np
from scipy.optimize import *
from scipy.integrate import quad
import matplotlib.pyplot as plt 
def Luo2(t):# функция теплопроводности оксида урана от температуры        
         return 8.706+(-9.11*(10**-3))*t+(3.992*(10**-6))*(t**2)+(-5.004*(10**-10))*(t**3)
x= np.arange(0.0,2500.0,100.0)
qv=10**9# мощность источника
r1=0.0038# радиус топливного стержня
def LLuo2(t1,t2):#функция для определения среднего интегрального значения теплопроводности оксида урана
         if abs(t1-t2)<0.001:
                  z=Luo2(t1)
         else:
                  z=(1/(t2-t1))*(quad(lambda t: Luo2(t), t1,t2)[0])
         return z
t1=942.413# заданное значение температуры поверхности топливного стержня
t0=round(fsolve(lambda t0:t0-t1-(qv*r1**2)/(4*LLuo2(t1,t0)) ,t1)[0],1)
print(' Температура t0 в центре топливного стержня - %s  °С'%t0)
def Lhe(t):# функция теплопроводности  гелия от температуры    
         return 0.146+3.339*(10**-4)*t-4.219*(10**-8)*t**2
def LLhe(t1,t2):#функция для определения среднего интегрального значения теплопроводности гелия
         if abs(t1-t2)<0.001:
                  z=Lhe(t1)
         else:
                  z=(1/(t2-t1))*(quad(lambda t: Lhe(t), t1,t2)[0])
         return z
dzr=0.00065# толщина защитной оболочки из циркония
dhe=0.0001#толщина кольцевого слоя, заполненного гелием
r2=r1+dhe#внутренний радиус защитной оболочки из циркония
r3=r2+dzr#наружный радиус защитной оболочки из циркония
Lzr=20#длина твэла
tf=300# температура охлаждающей воды
alf=30000#коэффициент теплоотдачи
RL_alf=1/(alf*2*np.pi*r3)#  сопротивление теплоотдачи твэла
RL_Zr=(1/(2*np.pi*Lzr)*np.log(r3/r2))# сопротивление теплоотдачи гелия
def RL_He(t1,t2):#функция теплоотдачи гелия
       return (1/(2*np.pi*LLhe(t1,t2))*np.log(r2/r1))
ql=qv*np.pi*r1**2#величина линейного теплового потока от стержня из оксида урана
def fun(t1,t2,t3): #функция для определения температур на поверхности стержня из диоксида урана             
         z=(t1-tf-ql*(RL_He(t1,t2)+RL_Zr+RL_alf))
         return z
t3=tf+ql*RL_alf
t2=t3+ql*RL_Zr
tt0=400#начальное значение для поиска t1
t1=fsolve(lambda t1:fun(t1,t2,t3),tt0)[0]# определение t1
print('Температура t1 поверхности топливного стержня из оксида урана-%s  °С'%round(t1,1))
print('Температура t2 внутренней поверхности оболочки из циркония -%s  °С'%round(t2,1))
print('Температура t3 наружной поверхности оболочки из циркония -%s  °С'%round(t3,1))
def eq(t,r):# вспомогательная функция для определения распределения температуры вдоль радиуса топливного стержня
                return t0-t-qv*r**2/(4*LLuo2(t,t0))
def  t_tuel(r):#функция для определения распределения температуры вдоль радиуса топливного стержня
                return fsolve(lambda t:eq(t,r) ,t0)[0]
def t_out(r):#функция для определения распределения температуры от радиуса топливного стержня за наружную оболочку
                if r2<r<=r3:
                                z=t2+(t3-t2)*np.log(r/r2)/np.log(r3/r2)
                elif  r1<=r<=r2:
                                z=t1+(t2-t1)*np.log(r/r1)/np.log(r2/r1)
                elif r>r3:
                                z=tf                                
                return z                
tt1=[t_tuel(r) for r in np.arange(0.0,r1+0.0001,0.0001)]
rr1=np.arange(0.0,r1+0.0001,0.0001)
tt2=[t_out(r) for r in np.arange(r1,r3+0.001,0.0001)]
rr2=np.arange(r1,r3+0.001,0.0001)
plt.title('Температурное поле в твэле ядерного реактора')
plt.plot(rr1,tt1, color='r',linewidth=2, label='  0<=r<=r1')
plt.plot(rr2,tt2, color='b',linewidth=2, label='r1<r<=r3+0.001 ')
plt.plot(0,t0,'o',label='t0=%s°С '%t0)
plt.plot(r1, t_tuel(r1),'o',label='t1=%s °С'%round(t_tuel(r1),1))
plt.plot(r2, t_out(r2),'o',label='t2=%s °С'%round(t_out(r2),1))
plt.plot(r3, t_out(r3),'o',label='t3=%s °С'%round(t_out(r3),1))
plt.plot(r3+0.001, t_out(r3+0.001),'o',label='tf=%s °С'%round(t_out(r3+0.001),1))
plt.xlabel("r в м.")
plt.ylabel("t в °С")
plt.grid(True)
plt.legend(loc='best')
plt.show()

Получим:

Математическая модель тепловыделяющего элемента ядерного реактора - 23

Результаты расчета твэла представлены на графике как распределение температуры по радиусу. Основное внимание при оценке результатов должно быть уделено двум значениям:

1. максимальной температуре ядерного топлива t0. Максимальное предельное значение можно оценить, как температуру плавления оксида урана, примерно 2800°С,

2. температуре поверхности защитной оболочки t3, где происходит контакт с водой. Допустимая температура оболочек из циркониевых сплавов – около 400ºС. При более высокой температуре в контакте с водой быстро развивается разрушительная коррозия.

Таким образом, рассмотренный температурный режим близок к предельному по теплонапряженности.

Выводы:

Средствами свободно распространяемого языка программирования Python с использованием модулей quad, fsole и системы вложенных функций разработана математическая модель для осесимметричного твэла ядерного реактора.

Ссылки:

1. Тепловыделяющий_элемент.
2. Тепломассообмен в энергетических установках.
3. Свойства оксида урана, КТР закиси-окиси.

Автор: Юрий Тараненко

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js