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



    Введение


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

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

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

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

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

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


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

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



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

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

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

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

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

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

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

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

    В конструкции твэла можно выделить две области:

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

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


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



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

    После подстановки в приведенное соотношение выражения получим уравнение:

    . (1)

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

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

    (2)

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



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

    (3)

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

    (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()




    Заметим, что формула (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) следует:



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

    (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()




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



    где:



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

    ,

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

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

    (6)



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

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

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

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

    • следует задать температурные зависимости материалов в виде функций, к которым могут обратиться другие блоки программы
    • следует записать термические сопротивления с учетом температурной зависимости
    • следует сформировать для последовательной цепи систему уравнений, таких как (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()
    

    Получим:



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

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

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

    Выводы


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

    Ссылки


    1. Тепловыделяющий_элемент.
    2. Тепломассообмен в энергетических установках.
    3. Свойства оксида урана, КТР закиси-окиси.
    • +14
    • 10,1k
    • 5
    Поделиться публикацией
    Ой, у вас баннер убежал!

    Ну, и что?
    Реклама
    Комментарии 5
    • +4
      Температура t0 в центре топливного стержня -2359.2 °С

      Не пишите так. Визуально невозможно различить положительную и отрицательную температуру. В первый момент вообще показалось, что у Вас температура минус 2300 градусов.
      • +1
        Спасибо!
        Исправил
        • 0
          Что за высокотеплопроводный гелий? Чем отличается от обычного кроме бешенной теплопроводности?
          • +3
            Газообразный гелий имеет высокую теплоемкость, теплопроводность и малую плотность. Благодаря этим свойствам и нейтральности он является превосходным теплоносителем.
            Теплопроводность гелия растет с ростом температуры, в реакторе он работает в диапазоне высоких температур и согласно этого свойства по тексту статьи используется определение
            высокотеплопроводный гелий.
            Спасибо за вопрос!
          • +1
            А статья торт, между прочим! Люблю я матан, и здесь он выступает инструментом моделирования интереснейших процессов. Scorobey, спасибо Вам за статью!

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

            Самое читаемое