Escolar Documentos
Profissional Documentos
Cultura Documentos
ILHÉUS – BAHIA
2023
1
ERIK DE SOUZA LAGO
ILHÉUS – BAHIA
2023
2
ERIK DE SOUZA LAGO
3
Resumo da tese apresentada à PPGMC/UESC como parte dos requisitos
necessários para a obtenção do grau de Mestre em Modelagem Computacional em
Ciência e Tecnologia.
Março/2023
4
reator. A simulação multífisica, considerando a interação entre os fenômenos
neutrônicos e térmicos, oferece uma visão aprimorada da operação do reator.
5
Abstract thesis presented to PPGMC/UESC as part of the modeling requirements for
obtaining the degree of Computational Master in Science and Technology.
March/2023
The study of nuclear energy using computational codes has been widely
explored by nuclear engineering researchers through various calculations over the
years, especially neutronic and thermo-hydraulic calculations. The International
Atomic Energy Agency (IAEA) aims to ensure that studies developed in nuclear energy
are not military, but related to activities that seek the development and advancement
of energy in the form of technological cooperation. The need to design a reactor model
that produced a large amount of energy with lower cost by MWH showed the
importance of SMR (Small Modular Reactor) reactors. The present work aims to
conduct a study related to the coupling of two computational codes, SERPENT and
ANSYS FLUENT, using as a model reactor reactor B&W Generation, called
MPOWER, studied primarily in the United States. The geometry modeling of an
MPOWER reactor PIN was performed and subjected to neutronic and thermo-
hydraulic (FLUENT) code, building a coupling algorithm between the two simulation
tools to automate the operating conditions process in the effective operation of the
reactor. The multiphysical simulation, considering the interaction between neutronic
and thermal phenomena, offers an enhanced view of the reactor operation.of obtaining
ideal conditions for the effective operation of the reactor.
6
LISTA DE FIGURAS
7
Figura 18 – Comparativo das distribuições de potência obtidas nas simulações
neutrônicas (a) Simulação neutrônica passo 1 (b) Simulação neutrônica passo
2..................................................................................................................................59
8
LISTA DE TABELAS
Tabela 4 – Temperatura média das regiões materiais do pin após a primeira simulação
termo-hidráulica..........................................................................................................58
Tabela 8 – Erro relativo da temperatura média nas regiões materiais do pin a cada
iteração do acoplamento com a ferramenta em Python..............................................67
9
LISTA DE SIGLAS
CC Condições de Contorno
10
SUMÁRIO
1. INTRODUÇÃO.......................................................................................................13
2. REVISÃO BIBLIOGRÁFICA..................................................................................17
3. MODELAGEM MATEMÁTICA...............................................................................32
4. MODELAGEM COMPUTACIONAL.......................................................................40
5. RESULTADOS E DISCUSSÃO..............................................................................54
7. REFERÊNCIAS......................................................................................................70
11
ANEXOS....................................................................................................................63
12
1. INTRODUÇÃO
Harvey (2020) afirma que a maioria das fontes renováveis são de natureza
intermitente, ou seja, não conseguem atender a demanda sem interrupção e, sob
certas condições, não são controláveis. Nesse sentido, as energias solares e eólicas
precisam de fontes complementares de energia e a nuclear pode ser uma solução,
13
pois pode produzir energia 24 horas por dia e 7 dias por semana de forma ininterrupta.
Assim, a energia nuclear, além de ser de baixo carbono, traz segurança energética.
14
nucleares. Observando isso o governo federal investe no término da construção da
usina de Angra 3 atualmente, com 65% de construção e previsão de finalização em
2027.
Busca da sustentabilidade;
Melhora dos indicadores econômicos;
Aumento da segurança e confiabilidade;
Redução dos riscos de proliferação de armas nucleares.
15
Tendo em vista o projeto do iPWR, o foco nesse trabalho envolve a simulação
multifísica de reatores SMR considerando o acoplamento das simulações neutrônicas
e termo-hidráulicas observando os fenômenos físicos e térmicos.
16
2. REVISÃO BIBLIOGRÁFICA
17
Figura 1 - Representação da reação de fissão em cadeia autossustentável que ocorre dentro do
núcleo do reator (CARDOSO, 2012).
As usinas nucleares são usinas que produzem energia elétrica sem o auxílio
de combustíveis fósseis como fonte primária de calor, mas sim a energia procedente
da fissão de elementos pesados como o urânio. No interior dos reatores nucleares
refrigerados a água, o combustível nuclear é disposto em centenas de varetas
contendo isótopos de urânio e outros átomos físseis que podem ser fissionados, a
energia cinética dos fragmentos de fissão é liberada em forma calor. O calor liberado
no núcleo do reator é extraído pelo fluido refrigerante e utilizado para produzir vapor
que é encaminhado a uma turbina para produzir energia elétrica (CARDOSO, 2012).
18
Figura 2 – Principais componentes de uma usina nuclear refrigerada à água (Adaptada de
AREASEG, 2020).
19
Gerador elétrico: é o componente que realiza a conversão de energia mecânica
que vem da turbina em energia elétrica;
Gerador de vapor: é responsável por converter a água que circula pelo circuito
primário do reator nuclear em vapor, que em seguida é utilizado para
movimentar as turbinas geradoras de energia elétrica.
Condensador ou torre de resfriamento: é um circuito de recirculação de água,
geralmente é um grande reservatório como um lago ou o mar, com a finalidade
de resfriar o vapor aquecido que vem da turbina e retornando ao mesmo estado
liquido para ser bombeado novamente ao circuito secundário.
O reator PWR foi fabricado para ser utilizado na área de engenharia naval em
submarinos nucleares. Eles utilizam como combustível, o urânio levemente
enriquecido. Esse modelo de reator pode ser classificado como um reator de água
leve ou água pesada.
20
Neste ciclo, o PWR converte a energia nuclear gerada pela fissão do urânio em
energia elétrica. A partir disso, o ciclo se repete: o vapor residual é convertido em água
líquida novamente através do condensador, e este coloca a água para o circuito
secundário em contato com um terceiro circuito, no qual faz a troca térmica com a
água do meio externo, uma vez realizada a conversão, ele retorna ao gerador de
vapor.
O Reator de Água Pesada é um tipo de reator nuclear que utiliza água pesada
(D2O) como moderador de nêutrons e como refrigerante. O moderador é uma
substância que desacelera os nêutrons produzidos pela fissão nuclear, permitindo que
eles possam ser capturados pelos núcleos dos átomos de urânio e manter a reação
em cadeia. O refrigerante é uma substância que retira o calor gerado pela fissão
nuclear e o transfere para um sistema de produção de energia elétrica.
Outra vantagem do HWR é que ele pode utilizar urânio natural como
combustível, dispensando a necessidade de enriquecimento. Além disso, o HWR
apresenta uma maior eficiência na utilização do combustível nuclear em comparação
com outros tipos de reatores, o que reduz a quantidade de resíduos nucleares
produzidos.
21
torna o reator mais complexo e requer mais manutenção do que outros tipos de
reatores.
O HWR é um tipo de reator nuclear que utiliza água pesada como moderador
e refrigerante, apresentando vantagens como maior segurança e eficiência na
utilização do combustível, mas com a desvantagem de ser mais complexo e caro de
construir e operar. No entanto, seu uso tem sido amplamente difundido em diversos
países, como Canadá, Argentina, Coréia do Sul, entre outros.
Esse reator modular pequeno tem esse nome porque ele pode fornecer a
quantidade desejada de vapor aquecido usado como fonte primária de energia a
fissão nuclear, sendo sua unidade construída com um ou mais submódulos. Esses
módulos podem ser ajustados e sequenciados de acordo com a necessidade,
podendo ser utilizado conforme a necessidade econômica industrial. Embora a
construção em módulo não seja uma particularidade dessa classe de reatores, eles
são mais fáceis de serem construídos devido ao seu pequeno porte.
22
Ao redor do mundo existem cerca de 50 projetos de reatores SMRs em
andamento com diferentes objetivos e perspectivas (IAEA, 2020). Sendo três em
estado de finalização, um na Argentina (CAREM) de água pressurizada, outro na
China (HTR-PM), do modelo de leito de bolas resfriado a gás de alta temperatura e o
último na Rússia (KLT40s), do tipo usina flutuante. Os demais ainda estão em fases
iniciais ou intermediárias de projeto e construção.
23
em uma única passagem dentro do vaso do reator. Este reator teve seu
desenvolvimento interrompido devido ao surgimento do SIR (Safe Integral Reactor),
que surge ao final dos anos 80 e continua em desenvolvimento ao redor do mundo,
em países como Rússia, Argentina, Coréia e China (CARELLI; INGERSOLLI, 2015).
24
Figura 3 – Principais elementos do vaso de pressão de reator PWR (LAMARSH e BARATTA, 2001).
25
Como um campo interdisciplinar, a simulação multifísica pode abranger muitas
disciplinas da ciência e da engenharia. Os métodos de simulação normalmente
incluem análise numérica, equações diferenciais parciais e análise tensorial.
A implementação de uma simulação mutifísica segue uma série de etapas, tais
como a identificação de vários aspectos do sistema a ser simulado, o que inclui
processos físicos, condições de inicialização e de acoplamento ou limite entre os
processos. Deve-se criar modelos matemáticos discretos do sistema, resolver esse
modelo numericamente e processar os dados resultantes.
O modelo matemático usado em uma simulação multifísica geralmente é um
conjunto de equações acopladas. As equações podem ser divididas em três
categorias de acordo com sua natureza e função pretendida: equações governantes,
equações auxiliares e condições de contorno iniciais. As equações governantes
descrevem um mecanismo ou processo físico importante. As simulações multifísicas
usam métodos de discretização para computação numérica, como elementos finitos,
diferenças finitas ou métodos de volume finito (BAGWELL et al., 2017).
De um modo geral, a simulação multifísica é muito mais difícil do que todos os
aspectos individuais do processo físico. A principal questão adicional é como combinar
os múltiplos aspectos do processo e lidar adequadamente com as interações entre
eles. Este problema torna-se bastante difícil quando diferentes tipos de métodos
numéricos são usados para modelar um único aspecto físico.
26
escoamento bifásico e propriedades térmicas de seus componentes. Para simulação
neutrônica são usados códigos probabilísticos, como o MCNPX, Geant4 ou
SERPENT, ou códigos determinísticos baseados em modelos de balanço de nêutrons
como a equação de transporte, equação de difusão ou equações da cinética. Nas
simulações podem ser usados modelos geométricos unidimensionais ou
multidimensionais (2D ou 3D), o que influi fortemente na complexidade e custo
computacional do problema. Esses códigos são amplamente utilizados não apenas
durante a fase de projeto de instalações nucleares, mas também ao longo de sua vida
útil em diversos modelos, destinados tanto para análise de segurança quanto para
situações de teste.
A utilização desses códigos exige muito esforço computacional e
conhecimento, principalmente no que diz respeito ao processamento das informações
necessárias para a simulação, ou seja, parâmetros de entrada, além da interpretação
de seus resultados (HOUSIADAS, 2002). Por outro lado, nas últimas décadas, tem-se
observado um grande esforço no desenvolvimento de ferramentas computacionais
simples para simular o comportamento de reatores em condições transientes reais ou
hipotéticas, como destaca KAZEMINEJAD (2012), principalmente em termos de
modelagem de reatores de pesquisa.
Além disso, há o fato de que muitos códigos utilizados para análise de
transientes em reatores de potência não são adequados para reatores de pesquisa e,
embora alguns tenham sido adaptados para esse fim, o uso de modelos simples é
suficiente na maioria dos casos (GAHEEN et. al., 2007).
HOUSIADAS (2000) desenvolveu um modelo para determinar os limites de
estabilidade do escoamento bifásico em função das condições iniciais do reator, uma
vez que a instabilidade do escoamento é o mecanismo básico que causa danos para
o núcleo neste tipo de transiente. Portanto, usou o código PARET (termo-hidráulico
unidimensional) acoplado com cálculos cinéticos para modelar o reator de pesquisa
grego GRR-1. A pesquisa contribuiu para um melhor entendimento dos mecanismos
de risco de perda de vazão, podendo ser utilizada como referência na avaliação de
segurança de eventos deste tipo, incluindo a especificação de limites de segurança.
Um modelo simplificado para estudar o comportamento de um reator de
pesquisa foi desenvolvido por HOUSIADAS (2002). O modelo unidimensional utilizou
parâmetros termo-hidráulicos e neutrônicos concentrados para o acoplamento,
27
levando em consideração os efeitos de realimentação contínua devido às
temperaturas do combustível e do refrigerante. O modelo numérico foi implementado
e validado contra resultados analíticos conhecidos, além de ser aplicado a diferentes
condições de reatividade. Ele provou ser moderadamente preciso no cálculo, desde
que a temperatura do núcleo esteja abaixo da temperatura de saturação do
refrigerante.
FARHADI et al. (2007) estudaram o comportamento da bomba de refrigeração
durante a condição de partida desenvolvendo um modelo baseado nas equações de
vazão do fluido na tubulação e no movimento das partes rotativas da bomba. O modelo
foi utilizado na análise de segurança do reator de pesquisa TRR (Tehran Research
Reactor) e os valores obtidos foram verificados experimentalmente comparando-os
com as curvas características da bomba do reator, o que destaca a importância de
observar a avaliação de transientes gerados durante a partida da bomba.
O acoplamento termo-hidráulico e neutrônico foi estudado por KHATER et al.
(2007) cujo objetivo era desenvolver o código para um reator egípcio ETRR-2 para
pesquisa e simulação dos riscos de reatividade no reator. O modelo considerou a
presença de dois canais: quente e médio. O canal foi dividido ao longo do eixo
longitudinal e a equação de transporte de energia da água foi resolvida
numericamente usando o método das diferenças finitas. O código desenvolvido,
ETRR2-RIA, foi validado contra o benchmark do reator IAEA MTR 10 MW, mostrando
boa concordância. Em seguida, diferentes transientes da reatividade foram analisados
no reator ETRR-2, mostrando que o código foi capaz de prever o comportamento do
reator com precisão satisfatória. Em seguida, ABOU-EL-MAATY (2008) utilizou esse
mesmo código, ETRR2-RIA, para avaliar o risco de remoção descontrolada das barras
de controle do sistema de desligamento de emergência do reator desativado.
ZARE et al. (2010) usaram os códigos neutrônicos WIMS & CITATION e código
termo-hidráulico COBRA-EM acoplados pelo Fortran 90 para obter distribuições
precisas de potência e temperatura no núcleo do reator de pesquisa VVR-S. Os
valores obtidos na simulação são comparados com os resultados experimentais que
validam o modelo proposto.
BARATI e SETAYESHI (2013) desenvolveram um modelo para estudar o reator
de pesquisa, levando em consideração os principais fatores físicos que controlam o
núcleo, incluindo os efeitos de realimentação devido às temperaturas do combustível
28
e do refrigerante, coeficientes de reatividade variáveis, de xenônio, samário e -boro,
queima de combustível, além da termo-hidráulica. Eles usaram os códigos WIMS e
CITIVAP para encontrar as seções de choque e realizar o cálculo do fluxo inical de
nêutrons, para tornar o modelo o mais próximo possível da realidade. Os valores
obtidos pelo modelo foram comparados com os resultados de experimentos,
simulações de reatividade transiente e estado estacionário relatados na literatura de
reator de pesquisa TRR. Embora o código não permita simular todo o comportamento
do reator, ele rapidamente fornece uma boa aproximação do comportamento cinético
que ocorre com a combustão do combustível.
CHATZIDAKIS et al. (2013) utilizaram o código RELAP5/MOD3.3 para simular
a resposta do sistema às perdas transitórias de vazão nos reatores de pesquisa da
Indonésia, RSG-GAS e Egito, ETRR-2, para analisar, por meio de modelagem
detalhada, a resposta do código e comparar com os resultados de testes realizados
em condições de perda de fluxo semelhantes. Como resultado, verificaram o
desempenho do RELAP5/MOD3.3 na análise de cenários de perda de vazão.
Um estudo sobre o reator de pesquisa grego GRR-1 para a investigação
fenomenológica do comportamento termo-hidráulico durante o acidente de perda de
refrigerante - LOCA (Loss of Coolant Accident) foi realizado por CHATZIDAKIS e
IKONOMOPOULOS (2013) usando o código RELAP5/MOD3.3. Confirmaram a
importância da localização do ponto de fratura e a severidade, uma vez que foram
observadas diferentes condições termo-hidráulicas para a ruptura das tubulações de
entrada e saída, e neste caso não foi observado o desenvolvimento da circulação
natural. Com os resultados de diferentes cenários LOCA, eles propuseram um mapa
termo-hidráulico para facilitar o entendimento da evolução do perigo em termos de
tamanho e tempo de erupção.
EL-KHATIB et al. (2013) produziram um modelo termo-hidráulico de um reator
de pesquisa padrão, incluindo o núcleo, um trocador de calor e uma torre de
resfriamento. O modelo foi validado com um código PARET de estado estacionário e
dados de um reator de estado transitório, para que pudesse ser usado para simular
perdas secundárias de resfriamento. O modelo previu ações de redução de energia e
desligamentos do sistema de segurança. Eles observaram que as altas temperaturas
alcançadas na estação quente têm um limite seguro contra saturação, ebulição
nucleada e danos ao revestimento.
29
Os eventos que ocasionam a perca de vasão – LOFA (Loss of Flow Accident)
de RMB foram analisados por SOARES et al. (2014) usando RELAP5. Três cenários
de perda de fluxo foram simulados no sistema de resfriamento primário. As simulações
do RELAP5 mostram que, após os eventos iniciais, o reator atinge um novo estado
estacionário seguro, que mantém a integridade e segurança do núcleo.
KHATER et al. (2015) usaram o CFD (Computational Fluid Dynamics) FLUENT
acoplado com as equações de cinéticas pontual para simular o risco de perda de fluxo
de refrigerante sem desligamento de emergência (SCRAM) no reator de pesquisa
MTR, que é utilizado para avaliação de segurança, com a finalidade de determinar os
limites de estabilidade do escoamento bifásico em função das condições iniciais do
reator. O código integrado é utilizado até que o reator atinja o ponto de ebulição
nucleado (ONB), quando o código PARET é utilizado na sequência de simulação não
apenas para completar a análise durante a ebulição a frio, mas também para validar
o modelo CFD. Com este modelo foi possível prever o ponto de ebulição nucleado e
o ponto de instabilidade do escoamento (OFI).
RAIS et al. (2015) realizaram acoplamento termo-hidráulico e de neutrônico
para o reator de pesquisa CROCUS. Eles usaram o código SERPENT 2 para gerar
parâmetros neutrônicos de grupo que foram usados no código PARCS. O modelo
neutrônico foi então integrado ao código termo-hidráulico TRACE para análises
transientes.
CASTRO, FRANÇOIS e GARCÍA (2020) apresentam uma análise acoplada
Monte Carlo-CFD de fenômenos de transferência de calor em um conjunto de
combustível de um reator de água supercrítica. Os autores utilizam uma metodologia
que combina o código Monte Carlo MCNP5 com o software de CFD ANSYS FLUENT
para simular o comportamento do fluxo de calor no conjunto de combustível em
condições supercríticas de água. Os resultados obtidos mostram que a metodologia
proposta é capaz de prever com precisão os padrões de fluxo de calor no conjunto de
combustível e as temperaturas locais de pico, o que é fundamental para o projeto e
operação segura de reatores de água supercrítica.
Este presente trabalho visa o acoplamento termo-hidráulico e neutrônico para
o reator de pesquisa mPower, onde, para análise dos fenômenos neutrônicos, está
sendo utilizado o software SERPENT-2, o qual se baseia em códigos que utilizam
bibliotecas de seção transversal de formato ACE baseada em bibliotecas de dados
30
nucleares JEF-2.2, JEFF-3.1, JEFF-3.1.1, ENDF/B-VI.8 e ENDFB/B-VII (SERPENT,
2019). Os dados das bibliotecas estão disponíveis para 432 núcleos diferentes em 6
níveis de temperatura, entre 300 e 1800K. Para análise dos fenômenos termo-
hidráulicos está sendo utilizado o software CFD FLUENT, que utiliza um método
computacional para analisar sistemas envolvendo escoamento de fluidos,
transferência de calor e fenômenos relacionados, como reações químicas, combustão
e mudanças de fase. O método transforma uma equação diferencial (definida em um
domínio contínuo) em um sistema de equações algébricas em um domínio dividido
por um número finito de subdomínios que formam uma malha de pequenos elementos
(volumes de controle), a fim de encontrar uma solução discreta (PALMIEIRI et al.,
2013).
31
3. MODELAGEM MATEMÁTICA
32
Segundo ROBERT e CASELLA (2010), o método de Monte Carlo funciona por
meio da geração de um grande número de valores aleatórios que são utilizados para
simular o comportamento de um sistema. Esses valores são então utilizados para
calcular estatísticas do sistema, como a média e a variância. Quanto mais valores
aleatórios são gerados, mais precisos são os resultados obtidos. O método de Monte
Carlo tem sido utilizado em diversas áreas, como finanças, para simular o
comportamento de preços de ativos financeiros, e em física, para simular o
comportamento de partículas em experimentos.
𝑆𝑥̅ (1)
𝑅=
𝑥̅
onde:
R: precisão estatística;
x: quantidade de amostras.
34
aplicações. Enquanto reatores e ciclos de combustível existentes continuam a ser as
áreas de aplicação essenciais da biblioteca de dados nucleares, conceitos inovadores
de reatores (sistemas Gen-IV), transmutação de resíduos radioativos, fusão,
aplicações industriais, e várias aplicações industriais não relacionadas à energia são
agora também consideradas como áreas de aplicação científica que farão uso dos
dados do JEFF (KONING et al., 2006).
35
conceitos inovadores, bem como dados básicos de física nuclear e padrões (KONING
et al., 2006).
36
hidrodinâmico de um fluido newtoniano incompressível incluem as equações de
Navier-Stokes e a equação de conservação de massa e são descritas por
𝜕𝑣 (2)
𝜌 + 𝜌𝑣 ∗ ∇𝑣 − µ∆𝑣 + 𝛻𝑝 = 𝑓
𝜕𝑡
(3)
𝛻 · 𝑣 = 0
v: velocidade do fluído;
ρ: densidade;
t: tempo;
p: pressão;
37
v e w, expressões adequadas para as tensões devem ser obtidas em termos de
velocidade e pressão.
𝜕𝑢 𝜕𝑣 𝜕𝑤 (7)
+ + =0
𝜕𝑥 𝜕𝑦 𝜕𝑧
39
4. MODELAGEM COMPUTACIONAL
40
Tabela 1 – Dados do pin do conjunto combustível do reator mPower usado como modelo geométrico
de simulação (Próprio autor, 2022).
41
Zircalloy
Hélio
Dióxido de Urânio
Figura 6 – Disposição dos materiais e geometria do pin do conjunto combustível do reator mPower
(Próprio Autor, 2022)
42
A condição de contorno escolhida foi a reflexiva; nessa condição, toda vez que
uma partícula atinge uma superfície, ela é refletida de volta para dentro da geometria
com uma energia e direção opostas àquelas com que atingiu a superfície. A condição
de contorno reflexiva é uma aproximação razoável para superfícies altamente
refletoras, como espelhos de nêutrons, e bastante aplicada para simular refletores em
torno de um reator.
43
existe uma maior distribuição de temperatura e requerem maior refinamento a fim de
alcançar uma malha aceitável para obter resultados consistentes.
Figura 8 – Malha produzida para o pin do reator mPower com elementos hexaédricos (Próprio autor,
2022).
44
A Figura 8a mostra a distribuição de elementos na entrada do pin (inlet), a
Figura 8b mostra a distribuição na saída (outlet), e a Figura 8c demonstra a
distribuição de elementos hexaédricos ao longo do pin. O pin possui 4563772 nós e
4177375 elementos e a métrica usada para analisar a qualidade da malha foi o
Skewness, onde segundo ANSYS (2021), valores inferiores a 0.5 sugerem elementos
de boa qualidade. Os resultados do parâmetro de qualidade da malha Skewness são
mostrados na Figura 9.
Figura 9 – Parâmetros de qualidade de malha para a malha construída (Próprio autor, 2022).
Podemos perceber que essa malha possui elementos com Skewness entre 0 e
0,50, com os piores elementos localizados em alguns pontos ao redor na malha e
poucos no centro do domínio, onde foi necessário um tratamento mais detalhado. Os
valores aceitáveis de Skewness variam de acordo com a aplicação e com o software
utilizado. No entanto, como regra geral, os valores de Skewness devem estar
próximos de zero ou negativos, preferencialmente abaixo de 0,5 ou 0,7 para
elementos tetraédricos. Para elementos hexaédricos, os valores aceitáveis devem
estar abaixo de 0,9 (GONZÁLEZ-FERNÁNDEZ et al., 2018).
A qualidade ortogonal da malha é uma medida de quão perpendicular as
arestas da malha são em relação à superfície da geometria e também definem o quão
excelente a malha pode ser. Em outras palavras, quanto mais próximas as arestas da
malha estiverem de serem perpendiculares à superfície da geometria, melhor será a
qualidade ortogonal da malha. A qualidade ortogonal da malha é importante em muitas
aplicações de simulação numérica, pois afeta a precisão e a estabilidade das soluções
(ANSYS, 2021). A qualidade ortogonal da malha em estudo pode ser analisada na
Figura 10.
45
Figura 10 – Parâmetros de qualidade ortogonal de malha referente a malha construída (Próprio autor,
2022).
Tabela 2 – Propriedades físicas dos materiais que compõem o domínio computacional (Próprio autor,
2022).
46
As constantes C indicadas são valores que provenientes de equações
semiempirícas fornecidas por ÇENGEL (2015). Algumas propriedades são
consideradas constantes e outras variam conforme ocorrem mudanças de
temperatura ÇENGEL (2014) no reator, é necessário desenvolver funções que
implementem esse comportamento, e o FLUENT permite a união com código em
linguagem C para especificar essas propriedades (o desenvolvimento das funções são
mostradas no anexo I). Sendo assim, podemos apresentar na Tabela 3 as equações
que descrevem cada uma dessas propriedades em função da temperatura.
Material Zircaloy
Densidade
Se T<= 1080K, 𝜌 = (6595,2 − 0,1417𝑇)
(kg/m³)
Se T<= 1800K, 𝜌 = (6690 − 0,1855𝑇)
(𝑇−1183)2
4 2 −( )
Se T<=1293K, 𝑐𝑝 = (634,6 − 0,4𝑇 + 1,6 ∗ 10 𝑇 + 530𝑒 2390 )
(W/m*K)
Material Dióxido de Urânio
47
Densidade Se T<= 923K, 𝜌 = (10,250 ∗ (0,99734 + 9,802 ∗ 10−6 𝑇 − 2,705 ∗
10−10 𝑇 2 + 4,291 ∗ 10−13 𝑇 3 )−3 )
(kg/m³)
Se T<=3120K, 𝜌 = (10,250 ∗ (0,99672 + 1,179 ∗ 10−5 𝑇 − 2,429 ∗
10−9 𝑇 2 + 1,219 ∗ 10−12 𝑇 3 )−3 ∗ 10,250)
Calor 𝑇 𝑇 2
𝑐𝑝 = (52,1743 + 87,951 ∗ − 84,2411 ∗ ( ) + 31,542
específico 1000 1000
3 4
𝑇 𝑇
(J/kg*K) ∗( ) − 2,6334 ∗ ( ) + 0,71391
1000 1000
𝑇 −2
∗( ) )/270,03
1000
Condutividade 100
𝑘=( )
térmica 7,5408 + 17,692 ∗ 0,001 ∗ 𝑇 + 3,6142 ∗ (0,001𝑇)2
(W/m*K)
6400
+( 16,35 )
5/2 −
0,001𝑇 ∗ 𝑒 0,001𝑇
48
Figura 11 – Representação da distribuição de potência do pin em função da altura z (Próprio
autor, 2022).
50
épsilon). A simulação foi proposta com 1000 iterações, chegando a convergência em
cerca de 265 iterações e alcançando os resíduos pré-estabelecidos.
51
1: Iniciar a simulação no SERPENT: Potência (P), s0, ∅𝟎
Os valores iniciais e as variáveis de entrada são definidos nesta linha (Arquivo
entrada do SERPENT). O valor de P representa a potência total necessária do reator.
O valor inicial s0 é o tamanho da amostra. A distribuição inicial de fluxo de nêutrons
(ou potência) ∅0 deve ser normalizada para que a potência total correspondente seja
igual a P.
𝑇0 ; 𝜌0 → 𝑃0
A distribuição inicial da densidade de potência é obtida com um cálculo de
criticidade:
For n=1,2,3...
2: Ler a distribuição de potência obtida no SERPENT
Abrir arquivo de saída file_core0.m
𝑃𝑛−1 = [ … ]
3: Executar o ajuste polinomial de grau n da distribuição de potência
4: 𝑭𝒍𝒖𝒆𝒏𝒕(𝑷𝒑𝒐𝒍𝒚 𝒏−𝟏 ) → 𝑻𝒏 ; 𝝆𝒏
52
automação interativa entre diversos softwares de forma autônoma. O software
escolhido para realizar o desenvolvimento do código foi o VSCode (Visual Studio
Code), o qual permite a integração de qualquer linguagem. Para realizar a captura de
telas e automatizar as tarefas em outros softwares, foi utilizado a ferramenta Python
denominada de BotStudio, ao qual permite através de capturas de telas realizar
execução de tarefas.
Foi produzido uma tela interativa para facilitar a inicialização da simulação e
observar os resultados gerados a cada iteração, conforme a Figura 13.
53
5. RESULTADOS E DISCUSSÃO
54
Figura 14 – Distribuição de temperatura no pin (Próprio autor, 2022).
55
Figura 15 – Distribuição de temperatura do refrigerante na entrada do pin (Próprio autor, 2022).
(a) (b)
Figura 16 – Distribuição de temperatura na saída do pin (a) Temperatura na região superior esquerda
em azul escuro do pin (b) Temperatura na região superior central em azul claro do pin (Próprio autor,
2022).
Figura 17 – Distribuição de temperatura dos materiais ao longo da altura z no pin simulado (Próprio
autor, 2022).
57
5.3. Acoplamento manual
Tabela 4 – Temperatura média das regiões materiais do pin após a primeira simulação termo-
hidráulica (Próprio autor, 2022).
58
(a) (b)
Figura 18 – Comparativo das distribuições de potência obtidas nas simulações neutrônicas (a)
Simulação neutrônica passo 1 (b) Simulação neutrônica passo 2 (Próprio autor, 2022).
∑100
1 𝛿 (10)
𝛿𝑚é𝑑𝑖𝑜 =
100
(11)
𝛿𝑚é𝑑𝑖𝑜 = 2,68%
59
(a) (b)
Tabela 5 – Comparativo da temperatura média das regiões materiais do pin na iteração 1 e 2 (Próprio
autor, 2022).
Iteração 1 Iteração 2
Material Temperatura (K) 𝛿(%)
Dióxido de Urânio 803,26 803,21 0,006
Helio 622,61 622,47 0,071
Zircaloy-4 601,51 601,36 0,025
Água 578,41 578,26 0,026
60
Foi realizada a terceira e última iteração para validar o acoplamento manual e
iniciar o desenvolvimento do processo automatizado. Aplicando na simulação
neutrônica as temperaturas encontradas através da última simulação termo-
hidráulica, podemos fazer o comparativo entre as duas últimas simulações
neutrônicas, conforme a Figura 20.
(a) (b)
Figura 20 – Comparativo das distribuições de potência gerada nas simulações neutrônicas (a)
Simulação neutrônica iteração 2 (b) Simulação neutrônica iteração 3 (Próprio autor, 2022).
61
(a) (b)
Tabela 6 – Comparativo das temperaturas médias das regiões materiais do pin na iteração 2 e 3
(Próprio autor, 2022).
Iteração 2 Iteração 3
Material Temperatura (K) 𝛿(%)
Dióxido de Urânio 803,21 801,69 0,189
Helio 622,47 621,89 0,093
Zircaloy 601,36 600,91 0,074
Água 578,26 578,94 0,11
62
5.4. Acoplamento automatizado com Python
63
Figura 22 – Interface gráfica de usuário do acoplamento automatizado (Próprio Autor, 2023).
64
Figura 23 – Resultados da primeira iteração utilizando automação em Python (Próprio autor, 2023)
65
Figura 24 – Distribuição de potência ao longo do pin na ferramenta de acoplamento (Próprio autor,
2023).
66
Observando a Tabela 7 pode-se verificar que as temperaturas ao longo das 10
iterações mostram valores que convergem para uma região de estabilidade,
apresentando um erro relativo pequeno, conforme mostra a Tabela 8.
Tabela 8 – Erro relativo da temperatura média nas regiões materiais do pin a cada iteração do
acoplamento com a ferramenta em Python (Próprio autor, 2023).
67
6. CONCLUSÕES E TRABALHOS FUTUROS
68
O acoplamento automatizado em Python pode ser explorado de forma mais
profunda, realizando simulação multifísica (neutrônica e termo-hidráulica) de um
núcleo do reator completo e não apenas de um pin, utilizando o erro relativo como
critério para deter o método.
69
7. REFERÊNCIAS
BAGWELL, S., LEDGER, P. D., GIL, A. J., MALLETT, M., KRUIP, M. "Uma estrutura
de elementos finitos hp linearizada para acoplamento acústico-magneto-
mecânico em scanners de ressonância magnética axissimétricos". Revista
Internacional de Métodos Numéricos em Engenharia. 112 (10): 1323-1352. doi :
10.1002/nme.5559, 2017.
BARATI, R., & SETAYESHI, S., A model for nuclear research reactor dynamics.
Nuclear Engineering and Design, 262, 251–263, 2013.
70
CARDOSO, E. M., A energia nuclear - 3.ed.- Rio de Janeiro: CNEN, 2012. (Apostila
educativa), 52 p.
CASTRO, L., FRANÇOIS, J.-L., & GARCÍA, C., Coupled Monte Carlo-CFD analysis
of heat transfer phenomena in a supercritical water reactor fuel assembly. Annals
of Nuclear Energy, 141, 107312, 2020.
ÇENGEL, YUNUS A.; CIMBALA, JOHN M.. Mecânica dos fluídos: fundamentos e
aplicações. 3. ed. ed. Porto Alegre: AMGH, 2015.
CHATZIS, I. (2020). Small Reactos, Great Potential. IAEA Bulletin – Nuclear Power
and the Clean Energy Transition, vol 61 (3). Setembro de 2020.
COLLINGS, B. J., & SOBOL, I. M. (1997). A Primer for the Monte Carlo Method.
Journal of the American Statistical Association, 92(440), 1648.
71
D. S. SIQUEIRA, J. A. MEYSTRE, M. Q. HILÁRIO, D. H. D. ROCHA, G. J. MENON,
AND R. J. SILVA, “Current Perspectives on Nuclear Energy as a Global Climate
Change Mitigation Option,” Mitigation and Adaptation Strategies for Global Change,
vol. 24, no. 5, pp. 749–777, 2019.
FARHADI, K., BOUSBIA-SALAH, A., & D’AURIA, F., A model for the analysis of
pump start-up transients in Tehran Research Reactor. Progress in Nuclear Energy,
49(7), 499–510, 2007.
GAHEEN, M. A., ELARABY, S., NAGUIB ALY, M., & NAGY, M. S., Simulation and
analysis of IAEA benchmark transients. Progress in Nuclear Energy, 49(3), 217–
229, 2007.
HARVEY, S. (2020). Smart, Stable, Reliable. IAEA Bulletin – Nuclear Power and the
Clean Energy Transition, vol 61 (3). Setembro de 2020.
HEALTH AND SAFETY EXECUTIVE - HSE, “The Tolerability of Risk from Nuclear
Power Stations”, Londres, 1992.
72
HOUSIADAS, C., Lumped parameters analysis of coupled kinetics and thermal-
hydraulics for small reactors, Annals of Nuclear Energy, v. 29, n. 11, pp. 1315-1325,
2002.
73
KONING, A., FORREST, R., KELLETT, M., MILLS, R., HENRIKSSON, H., RUGAMA,
Y., The JEFF-3.1 Nuclear Data Library, NUCLEAR ENERGY AGENCY, 2006.
KROESE, D. P., TAIMRE, T., & BOTEV, Z. I. Handbook of Monte Carlo methods.
John Wiley & Sons. 2014.
LIU, X., ZHANG, Y., & YU, G. Orthogonal quality-based adaptive mesh refinement
for discontinuous Galerkin method. Journal of Computational Physics, 414, 109429.
2020.
LIU, ZHEN (2018). Multifísica em Materiais Porosos. Cham, Suíça: Springer. ISBN
978-3-319-93028-2. OCLC 1044733613.
74
ORGANIZAÇÃO MUNDIAL DE SAÚDE - OMS, “Nuclear Power, The Environment
and Man”, 1982.
RAIS, A., SIEFMAN, D., GIRARDIN, G., HURSIN, M., & PAUTZ, A., Methods and
Models for the Coupled Neutronics and Thermal-Hydraulics Analysis of the
CROCUS Reactor at EFPL. Science and Technology of Nuclear Installations, 2015,
1–9.
REIS, P. A. L., COSTA, A. L., PEREIRA, C., VELOSO, M. A. F., & MESQUITA, A. Z.,
Simulation of a TRIGA Reactor Core Blockage Using RELAP5 Code. Science and
Technology of Nuclear Installations, 2015, 1–10.
ROBERT, C. P., & CASELLA, G. Monte Carlo statistical methods. Springer Science
& Business Media. 2010.
SOARES, H. V., ARONNE, I. D., COSTA, A. L., PEREIRA, C., & VELOSO, M. A. F.,
Analysis of Loss of Flow Events on Brazilian Multipurpose Reactor Using the
Relap5 Code. International Journal of Nuclear Energy, 2014, 1–12, 2014.
Z.-Y. HUNG, Y.-M. FERNG, W.-S. HSU, B.-S. PEI, AND Y.-S. CHEN, “Analysis of
AP1000 Containment Passive Cooling System during a Loss-of-Coolant
Accident,” Annals of Nuclear Energy, vol. 85, pp. 717–724, 2015.
ZARE, N., FADAEI, A. H., RAHGOSHAY, M., FADAEI, M. M., & KIA, S., Introducing
and validating a new method for coupling neutronic and thermal-hydraulic
calculations. Nuclear Engineering and Design, 240(11), 3727–3739, 2010.
76
ANEXOS
ANEXO I – Propriedades físicas dos materiais que variam com a temperatura no pin
do reator
Material Zircaloy
Densidade #include "udf.h"
(kg/m³) DEFINE_PROPERTY(cell_densidad_zirlo, cell, thread){
real densidad_zirlo;
real T = C_T(cell, thread);
if(T<=1080){
(6595.2-0.1417*T);
}
if(T<=1800){
(6690-0.1855*T);
}
if(T>1800){
(6595.2-0.1417*T);
}
return densidad_zirlo;
}
Calor #include "udf.h"
específico #include "math.h"
(J/kg*K) DEFINE_SPECIFIC_HEAT(cell_cp_zirlo, T, Tref, h, yi){
real cp_zirlo;
real cp_z1;
real cp_z2;
real cp_z3;
real cp_z4;
real F1, F2;
F1 = 565*exp(-pow((T-1163),2)/1100);
F2 = 530*exp(-pow((T-1183),2)/2390);
cp_z1 = (260.85+0.1371*T);
cp_z2 = (260.85+0.1371*T+F1);
77
cp_z3 = (634.6-0.4*T+1.6*pow(10,-4)*pow(T,2)+F2);
cp_z4 = (634.6-0.4*T+1.6*pow(10,-4)*pow(T,2));
if(T<=1093){
cp_zirlo = cp_z1;
}
if(T<=1173){
cp_zirlo = cp_z2;
}
if(T<=1293){
cp_zirlo = cp_z3;
}
if(T<=2000){
cp_zirlo = cp_z4;
}
if(T>2000){
cp_zirlo = cp_z1;
}
return cp_zirlo;
}
Condutividad #include "udf.h"
e térmica #include "math.h"
(W/m*K) DEFINE_PROPERTY(cell_k_zirlo, cell, thread){
real k_zirlo;
real T = C_T(cell,thread);
k_zirlo = (12.767-5.4348*pow(10,-4)*T+8.9818*pow(10,-
6)*pow(T,2));
return k_zirlo;
}
Material Hélio
Condutividad #include "udf.h"
e térmica #include "math.h"
(W/m*K) DEFINE_PROPERTY(cell_k_he, cell, thread){
real k_he;
78
real T = C_T(cell,thread);
k_he = (2.517*pow(10,-3)*pow(T,0.72));
return k_he;
}
Material Dióxido de Urânio
Densidade #include "udf.h"
(kg/m³)
DEFINE_PROPERTY(cell_densidad_uo2, cell, thread){
real densidad_uo2;
real T = C_T(cell, thread);
real L1, L2;
if(T<=923){
L1 = 1/(((0.99734 + 0.000009802*T) -
(0.0000000002705*T*T) +
(0.0000000000004291*T*T*T))*((0.99734 + 0.000009802*T) -
(0.0000000002705*T*T) +
(0.0000000000004291*T*T*T))*((0.99734 + 0.000009802*T) -
(0.0000000002705*T*T) + (0.0000000000004291*T*T*T)));
densidad_uo2 = 0.935*10.963*L1;
}
if(T<=3120){
L2 = 1/(((0.99672+0.00001179*T) - (0.000000002459*T*T) +
(0.000000000001219*T*T*T))*((0.99672+0.00001179*T) -
(0.000000002459*T*T) +
(0.000000000001219*T*T*T))*((0.99672+0.00001179*T) -
(0.000000002459*T*T) + (0.000000000001219*T*T*T)));
densidad_uo2 = 0.935*10.963*L2;
}
if(T>3120){
densidad_uo2 = 0.935*10.963;
}
return densidad_uo2;
79
}
Calor #include "udf.h"
específico
(J/kg*K) DEFINE_SPECIFIC_HEAT(cell_cp_uo2, T, Tref, h, yi){
real cp_uo2;
cp_uo2 = (52.1743 + 87.951*(T/1000) -
84.2411*(T/1000)*(T/1000) + 31.542*(T/1000)*(T/1000)*(T/1000) -
2.6334*(T/1000)*(T/1000)*(T/1000)*(T/1000) +
0.71391/((T/1000)*(T/1000)))/270.03;
return cp_uo2;
}
Condutividad #include "udf.h"
e térmica #include "math.h"
(W/m*K) DEFINE_PROPERTY(cell_K_uo2, cell, thread){
real k_uo2;
real T = C_T(cell,thread);
real T1 = T/1000;
k_uo2 =
(100/(7.5408+17.692*T1+3.6142*pow(T1,2))+(6400/pow(T1,(5/2)))*
exp(-16.35/T1));
return k_uo2;
}
80
ANEXO II - Código SERPENT do pin do reator mPower
% U235
mat fuel -10.1 vol 126.43 tmp 950 rgb 255 255 150 burn 1
92235.06c -0.02644492
92238.06c -0.85505247
8016.06c -0.11850261
2004.06c 1
mat zirlo -6.56000E+00 vol 170.03 tmp 650 rgb 200 200 200
8016.06c -1.19276E-03
24050.06c -4.16117E-05
24052.06c -8.34483E-04
24053.06c -9.64457E-05
24054.06c -2.44600E-05
26054.06c -1.12572E-04
26056.06c -1.83252E-03
26057.06c -4.30778E-05
81
26058.06c -5.83334E-06
40090.06c -4.97862E-01
40091.06c -1.09780E-01
40092.06c -1.69646E-01
40094.06c -1.75665E-01
40096.06c -2.89038E-02
50112.06c -1.27604E-04
50114.06c -8.83732E-05
50115.06c -4.59255E-05
50116.06c -1.98105E-03
50117.06c -1.05543E-03
50118.06c -3.35688E-03
50119.06c -1.20069E-03
50120.06c -4.59220E-03
50122.06c -6.63497E-04
50124.06c -8.43355E-04
mat water -0.709 tmp 580 moder lwtr 1001 rgb 0 200 255
O-16.03c 1
H-1.03c 2
82
/**************************
* Definição da Geometria *
**************************/
pin p1
fuel 0.4096
helio 0.4180
zirlo 0.4750
water
% --- A célula c2 pertence ao universo base 0, é definida como uma célula "externa"
cell c2 0 outside s1
83
/**************************
* Parâmetros de execução *
**************************/
% --- População de nêutrons: 50.000 nêutrons por ciclo, 200 ciclos ativos / 30 inativos
set bc 2
% Parâmetros de potência
% --- O primeiro gráfico tem 700 por 700 pixels e cobre toda a geometria: -0,63 < (x,y)
< 0,63
84
% --- O segundo gráfico é de 700 por 700 pixels, da altura axial z = 0,0
% e abrange mais do que toda a geometria: -1,89 < (x,y) < 1,89
% --- Malha de 200 por 200 pixels que cobre toda a geometria: -0.63 < (x,y) < 0.63
85
ANEXO III – Algoritmo de produção da expressão da potência em grau 6
clear all
clc
% Dados de Entrada
x =
[0.024,0.048,0.072,0.096,0.12,0.144,0.168,0.192,0.216,0.24,0.264,0.288,0.312,0.33
6,0.36,0.384,0.408,0.432,0.456,0.48,0.504,0.528,0.552,0.576,0.6,0.624,0.648,0.672,
0.696,0.72,0.744,0.768,0.792,0.816,0.84,0.864,0.888,0.912,0.936,0.96,0.984,1.008,
1.032,1.056,1.08,1.104,1.128,1.152,1.176,1.2,1.224,1.248,1.272,1.296,1.32,1.344,1.
368,1.392,1.416,1.44,1.464,1.488,1.512,1.536,1.56,1.584,1.608,1.632,1.656,1.68,1.
704,1.728,1.752,1.776,1.8,1.824,1.848,1.872,1.896,1.92,1.944,1.968,1.992,2.016,2.
04,2.064,2.088,2.112,2.136,2.16,2.184,2.208,2.232,2.256,2.28,2.304,2.328,2.352,2.
376,2.4];
y=y1';
V = (3.141592654*0.004096^2*2.4);
for i =1:1:100
P = y/V;
end
p6 = polyfit(x,P,6);
plot(x,P,'r.')
86
hold on
plot(x,polyval(p6,x),'k-')
xlabel('z(m)')
ylabel('Power(W/m³)')
87
ANEXO IV – Código do acoplamento automatizado com Python
n=0
def diretorio():
dirpath = filedialog.askopenfilename(initialdir=r"C:\Program Files\ANSYS
Inc\v212\fluent\ntbin\win64")
return dirpath
def ubuntu():
dirpath = filedialog.askopenfilename(initialdir=r"C:\Program
Files\WindowsApps\CanonicalGroupLimited.Ubuntu_2004.4.4.0_x64__79rhkp1fndgsc")
dir_ubuntu = dirpath
return dir_ubuntu
def det0():
dirpath =
filedialog.askopenfilename(initialdir=r"C:\Users\erikl\AppData\Local\Packages\
CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc\LocalState\rootfs\home")
det0_ubuntu = dirpath
return det0_ubuntu
def iteracao():
n = entrada.get()
return int(n)
def simulacao():
class Bot(DesktopBot):
def action(self, execution=None):
# Uncomment to silence Maestro errors when disconnected
# if self.maestro:
# self.maestro.RAISE_NOT_CONNECTED = False
88
#Exclusão dos Arquivos de Saída da Simulação Termohidráulica para Executar uma
nova Simulação:
n = iteracao()
messagebox.showinfo('Orientação 1', 'Entre com o arquivo .cas')
simulacao_termo = diretorio()[0:100]
simulacao_termohidraulica = simulacao_termo[0:100]
caminho_procura = simulacao_termo[0:50]
termo_procura = 'pin_results'
termo_procura1 = 'report-press-outlet-rfile'
termo_procura2 = 'report-temp-inlet-rfile'
termo_procura3 = 'temp_med_fuel-rfile'
termo_procura4 = 'temp_med_helio-rfile'
termo_procura5 = 'temp_med_water-rfile'
termo_procura6 = 'temp_med_zirlo-rfile'
for raiz, diretorios, arquivos in os.walk(caminho_procura):
for arquivos in arquivos:
if termo_procura in arquivos:
os.remove(caminho_procura+"\\pin_results.dat.h5")
if termo_procura1 in arquivos:
os.remove(caminho_procura+"\\report-press-outlet-
rfile.out")
if termo_procura2 in arquivos:
os.remove(caminho_procura+"\\report-temp-inlet-
rfile.out")
if termo_procura3 in arquivos:
os.remove(caminho_procura+"\\temp_med_fuel-rfile.out")
if termo_procura4 in arquivos:
os.remove(caminho_procura+"\\temp_med_helio-
rfile.out")
if termo_procura5 in arquivos:
os.remove(caminho_procura+"\\temp_med_water-
rfile.out")
if termo_procura6 in arquivos:
os.remove(caminho_procura+"\\temp_med_zirlo-
rfile.out")
#Execução da Simulação Neutrônica:
messagebox.showinfo('Orientação 2', 'Insira o arquivo executável
do Ubuntu para iniciar a Simulação Neutrônica')
num_iteracao["text"] = "Iteração nº: 1"
status_simulacao["background"] = "red"
status_simulacao["text"] = "Simulação Neutrônica em Andamento"
v_ubuntu = ubuntu()[0:100]
var_ubuntu = v_ubuntu[0:100]
self.execute(var_ubuntu)
if not self.find( "clickUbuntu", matching=0.97,
waiting_time=27000000):
self.not_found("clickUbuntu")
self.click()
89
self.kb_type("cd reactor")
self.enter()
self.kb_type("chmod 777 -R pin")
self.enter()
self.kb_type("dos2unix pin")
self.enter()
self.kb_type("sss2 pin")
self.enter()
if not self.find( "end_simulation_neutronic", matching=0.97,
waiting_time=27000000):
self.not_found("end_simulation_neutronic")
self.click()
self.kb_type("exit")
self.enter()
90
parcela5 = str(mod_linear[4])
parcela6 = str(mod_linear[5])
parcela7 = str(mod_linear[6])
if(mod_linear[0]>0):
parcela1 = "+"+parcela1[0:14]
else:
parcela1 = parcela1[0:15]
if(mod_linear[1]>0):
parcela2 = "+"+parcela2[0:14]
else:
parcela2 = parcela2[0:15]
if(mod_linear[2]>0):
parcela3 = "+"+parcela3[0:14]
else:
parcela3 = parcela3[0:15]
if(mod_linear[3]>0):
parcela4 = "+"+parcela4[0:14]
else:
parcela4 = parcela4[0:15]
if(mod_linear[4]>0):
parcela5 = "+"+parcela5[0:14]
else:
parcela5 = parcela5[0:15]
if(mod_linear[5]>0):
parcela6 = "+"+parcela6[0:14]
else:
parcela6 = parcela6[0:15]
if(mod_linear[6]>0):
parcela7 = "+"+parcela7[0:14]
else:
parcela7 = parcela7[0:15]
Pot =(parcela1+"[W m^-9]*z^6"+parcela2+"[W m^-8]*z^5"+parcela3+"[W
m^-7]*z^4"+parcela4+"[W m^-6]*z^3"+parcela5+"[W m^-5]*z^2"+parcela6+"[W m^-
4]*z"+parcela7+"[W m^-3]")
Pot_legenda =
(parcela1+"z^6"+parcela2+"z^5"+parcela3+"z^4"+parcela4+"z^3"+parcela5+"z^2"+pa
rcela6+"z"+parcela7)
texto_potencia["text"] = Pot
print(Pot)
fig, ax = plt.subplots(figsize = (10, 5))
plt.title('Distribuição de Potência')
ax.set_xlabel('Z(m)\n'+Pot_legenda, color = 'r')
ax.set_ylabel('Potência(W/m³)', color = 'r')
ax.plot(x, P, "go", color = 'g')
ax.plot(x, P, color = 'r')
plt.show()
pyperclip.copy(Pot)
status_simulacao["background"] = "green"
91
status_simulacao["text"] = "Simulação Neutrônica Finalizada"
#Atribuição da Potência ao Arquivo .cas.h5:
self.execute(simulacao_termohidraulica)
if not self.find( "select_pot", matching=0.97,
waiting_time=10000):
self.not_found("select_pot")
self.click()
for a in range(8):
pyautogui.press('right')
for b in range(183):
pyautogui.press('delete')
pyautogui.hotkey('ctrl', 'v')
for c in range(237):
pyautogui.press('left')
pyautogui.hotkey('ctrl', 's')
time.sleep(5)
pyautogui.hotkey('alt', 'f4')
#Execução da Simulação Termohidráulica:
status_simulacao["background"] = "red"
status_simulacao["text"] = "Sim. Termohidráulica em Andamento"
os.startfile("cmd")
if not self.find( "select_CFD", matching=0.97,
waiting_time=10000):
self.not_found("select_CFD")
self.click()
92
last_line = file_lines[len(file_lines) - 1]
temp_fuel = last_line[4:15]
texto_fuel["text"] = temp_fuel
print(temp_fuel)
with open(r'C:\\Program Files\ANSYS
Inc\\v212\\fluent\\ntbin\win64\\temp_med_helio-rfile.out') as arquivo:
file_lines = arquivo.readlines()
arquivo.close()
last_line = file_lines[len(file_lines) - 1]
print(last_line[4:15])
with open(r'C:\\Program Files\ANSYS
Inc\\v212\\fluent\\ntbin\win64\\temp_med_zirlo-rfile.out') as arquivo:
file_lines = arquivo.readlines()
arquivo.close()
last_line = file_lines[len(file_lines) - 1]
temp_zirlo = last_line[4:15]
texto_zircaloy["text"] = temp_zirlo
print(temp_zirlo)
with open(r'C:\\Program Files\ANSYS
Inc\\v212\\fluent\\ntbin\win64\\temp_med_water-rfile.out') as arquivo:
file_lines = arquivo.readlines()
arquivo.close()
last_line = file_lines[len(file_lines) - 1]
temp_water = last_line[4:15]
texto_water["text"] = temp_water
print(temp_water)
with
open('C:\\Users\\erikl\\AppData\\Local\\Packages\\CanonicalGroupLimited.Ubuntu
_79rhkp1fndgsc\\LocalState\\rootfs\\home\\eslago\\reactor\\pin', 'r',
encoding='utf-8') as file:
data = file.readlines()
data[3] = "mat fuel -10.1 vol 126.43 tmp "+temp_fuel+" rgb
255 255 150 burn 1\n"
data[13] = "mat zirlo -6.56000E+00 vol 170.03 tmp
"+temp_zirlo+" rgb 200 200 200\n"
data[39] = "mat water -0.709 tmp "+temp_water+" moder lwtr
1001 rgb 0 200 255\n"
data[43] = "therm lwtr "+temp_water+" lwj3.11t lwj3.13t\n"
with
open('C:\\Users\\erikl\\AppData\\Local\\Packages\\CanonicalGroupLimited.Ubuntu
_79rhkp1fndgsc\\LocalState\\rootfs\\home\\eslago\\reactor\\pin', 'w',
encoding='utf-8') as file:
file.writelines(data)
#Segunda iteração sem inserção dos diretórios
#Exclusão dos Arquivos de Saída da Simulação Termohidráulica para Executar uma
nova Simulação:
time.sleep(180)
i=0
93
while i<(n-1):
numero = str(i+2)
num_iteracao["text"] = "Iteração nº: "+numero
termo_procura = 'pin_results'
termo_procura1 = 'report-press-outlet-rfile'
termo_procura2 = 'report-temp-inlet-rfile'
termo_procura3 = 'temp_med_fuel-rfile'
termo_procura4 = 'temp_med_helio-rfile'
termo_procura5 = 'temp_med_water-rfile'
termo_procura6 = 'temp_med_zirlo-rfile'
for raiz, diretorios, arquivos in os.walk(caminho_procura):
for arquivos in arquivos:
if termo_procura in arquivos:
os.remove(caminho_procura+"\\pin_results.dat.h5")
if termo_procura1 in arquivos:
inicio = open(caminho_procura+'\\report-press-
outlet-rfile.out', 'r')
inicio.close()
os.remove(caminho_procura+"\\report-press-outlet-
rfile.out")
if termo_procura2 in arquivos:
inicio = open(caminho_procura+'\\report-temp-
inlet-rfile.out', 'r')
inicio.close()
os.remove(caminho_procura+"\\report-temp-inlet-
rfile.out")
if termo_procura3 in arquivos:
inicio = open(caminho_procura+'\\temp_med_fuel-
rfile.out', 'r')
inicio.close()
os.remove(caminho_procura+"\\temp_med_fuel-
rfile.out")
if termo_procura4 in arquivos:
inicio = open(caminho_procura+'\\temp_med_helio-
rfile.out', 'r')
inicio.close()
os.remove(caminho_procura+"\\temp_med_helio-
rfile.out")
if termo_procura5 in arquivos:
inicio = open(caminho_procura+'\\temp_med_water-
rfile.out', 'r')
inicio.close()
os.remove(caminho_procura+"\\temp_med_water-
rfile.out")
if termo_procura6 in arquivos:
inicio = open(caminho_procura+'\\temp_med_zirlo-
rfile.out', 'r')
inicio.close()
94
os.remove(caminho_procura+"\\temp_med_zirlo-
rfile.out")
#Execução da Simulação Neutrônica:
status_simulacao["background"] = "red"
status_simulacao["text"] = "Simulação Neutrônica em Andamento"
self.execute(var_ubuntu)
if not self.find( "clickUbuntu", matching=0.97,
waiting_time=27000000):
self.not_found("clickUbuntu")
self.click()
self.kb_type("cd reactor")
self.enter()
self.kb_type("chmod 777 -R pin")
self.enter()
self.kb_type("dos2unix pin")
self.enter()
self.kb_type("sss2 pin")
self.enter()
if not self.find( "end_simulation_neutronic", matching=0.97,
waiting_time=27000000):
self.not_found("end_simulation_neutronic")
self.click()
self.kb_type("exit")
self.enter()
#Geração da Potência de ordem 6:
with open(var_det0) as arquivo:
V: float = (3.141592654*0.0004096*0.0004096*2.4)
P = []
linhas = arquivo.readlines()
for l in range(2,102,1):
string = (linhas[l])
valor = (string[52:63])
y = float(valor)/V
P.append(y)
x = [0.024, 0.048, 0.072, 0.096, 0.12, 0.144, 0.168, 0.192,
0.216, 0.24, 0.264, 0.288, 0.312, 0.336, 0.36,
0.384, 0.408, 0.432, 0.456, 0.48, 0.504, 0.528, 0.552,
0.576, 0.6, 0.624, 0.648, 0.672, 0.696, 0.72,
0.744, 0.768, 0.792, 0.816, 0.84, 0.864, 0.888, 0.912,
0.936, 0.96, 0.984, 1.008, 1.032, 1.056, 1.08,
1.104, 1.128, 1.152, 1.176, 1.2, 1.224, 1.248, 1.272,
1.296, 1.32, 1.344, 1.368, 1.392, 1.416, 1.44,
1.464, 1.488, 1.512, 1.536, 1.56, 1.584, 1.608, 1.632,
1.656, 1.68, 1.704, 1.728, 1.752, 1.776, 1.8,
1.824, 1.848, 1.872, 1.896, 1.92, 1.944, 1.968, 1.992,
2.016, 2.04, 2.064, 2.088, 2.112, 2.136, 2.16,
2.184, 2.208, 2.232, 2.256, 2.28, 2.304, 2.328, 2.352,
2.376, 2.4]
95
mod_linear = np.polyfit(x,P,6)
parcela1 = str(mod_linear[0])
parcela2 = str(mod_linear[1])
parcela3 = str(mod_linear[2])
parcela4 = str(mod_linear[3])
parcela5 = str(mod_linear[4])
parcela6 = str(mod_linear[5])
parcela7 = str(mod_linear[6])
if(mod_linear[0]>0):
parcela1 = "+"+parcela1[0:14]
else:
parcela1 = parcela1[0:15]
if(mod_linear[1]>0):
parcela2 = "+"+parcela2[0:14]
else:
parcela2 = parcela2[0:15]
if(mod_linear[2]>0):
parcela3 = "+"+parcela3[0:14]
else:
parcela3 = parcela3[0:15]
if(mod_linear[3]>0):
parcela4 = "+"+parcela4[0:14]
else:
parcela4 = parcela4[0:15]
if(mod_linear[4]>0):
parcela5 = "+"+parcela5[0:14]
else:
parcela5 = parcela5[0:15]
if(mod_linear[5]>0):
parcela6 = "+"+parcela6[0:14]
else:
parcela6 = parcela6[0:15]
if(mod_linear[6]>0):
parcela7 = "+"+parcela7[0:14]
else:
parcela7 = parcela7[0:15]
Pot =(parcela1+"[W m^-9]*z^6"+parcela2+"[W m^-
8]*z^5"+parcela3+"[W m^-7]*z^4"+parcela4+"[W m^-6]*z^3"+parcela5+"[W m^-
5]*z^2"+parcela6+"[W m^-4]*z"+parcela7+"[W m^-3]")
Pot_legenda =
(parcela1+"z^6"+parcela2+"z^5"+parcela3+"z^4"+parcela4+"z^3"+parcela5+"z^2"+pa
rcela6+"z"+parcela7)
texto_potencia["text"] = Pot
print(Pot)
pyperclip.copy(Pot)
status_simulacao["background"] = "green"
status_simulacao["text"] = "Simulação Neutrônica Finalizada"
96
#Atribuição da Potência ao Arquivo .cas.h5:
self.execute(simulacao_termohidraulica)
if not self.find( "select_pot", matching=0.97,
waiting_time=10000):
self.not_found("select_pot")
self.click()
for a in range(8):
pyautogui.press('right')
for b in range(183):
pyautogui.press('delete')
pyautogui.hotkey('ctrl', 'v')
for c in range(237):
pyautogui.press('left')
pyautogui.hotkey('ctrl', 's')
time.sleep(5)
pyautogui.hotkey('alt', 'f4')
#Execução da Simulação Termohidráulica:
status_simulacao["background"] = "red"
status_simulacao["text"] = "Sim. Termohidráulica em Andamento"
os.startfile("cmd")
if not self.find( "select_CFD", matching=0.97,
waiting_time=10000):
self.not_found("select_CFD")
self.click()
self.kb_type("cd /d C:\Program Files\ANSYS
Inc\\v212\\fluent\\ntbin\win64")
self.enter()
if not self.find( "executeCFD", matching=0.97,
waiting_time=10000):
self.not_found("executeCFD")
self.click()
self.kb_type("fluent 3ddp -g -t4 -i pin")
self.enter()
if not self.find( "exit_fluent", matching=0.97,
waiting_time=7200000):
self.not_found("exit_fluent")
self.click()
self.kb_type("exit")
self.enter()
status_simulacao["background"] = "green"
status_simulacao["text"] = "Sim. Termohidráulica Finalizada"
#Substituição das Temperaturas no Arquivo pin em Serpent:
with open(r'C:\\Program Files\ANSYS
Inc\\v212\\fluent\\ntbin\win64\\temp_med_fuel-rfile.out') as arquivo:
file_lines = arquivo.readlines()
arquivo.close()
last_line = file_lines[len(file_lines) - 1]
97
temp_fuel = last_line[4:15]
texto_fuel["text"] = temp_fuel
print(temp_fuel)
with open(r'C:\\Program Files\ANSYS
Inc\\v212\\fluent\\ntbin\win64\\temp_med_helio-rfile.out') as arquivo:
file_lines = arquivo.readlines()
arquivo.close()
last_line = file_lines[len(file_lines) - 1]
print(last_line[4:15])
with open(r'C:\\Program Files\ANSYS
Inc\\v212\\fluent\\ntbin\win64\\temp_med_zirlo-rfile.out') as arquivo:
file_lines = arquivo.readlines()
arquivo.close()
last_line = file_lines[len(file_lines) - 1]
temp_zirlo = last_line[4:15]
texto_zircaloy["text"] = temp_zirlo
print(temp_zirlo)
with open(r'C:\\Program Files\ANSYS
Inc\\v212\\fluent\\ntbin\win64\\temp_med_water-rfile.out') as arquivo:
file_lines = arquivo.readlines()
arquivo.close()
last_line = file_lines[len(file_lines) - 1]
temp_water = last_line[4:15]
texto_water["text"] = temp_water
print(temp_water)
with
open('C:\\Users\\erikl\\AppData\\Local\\Packages\\CanonicalGroupLimited.Ubuntu
_79rhkp1fndgsc\\LocalState\\rootfs\\home\\eslago\\reactor\\pin', 'r',
encoding='utf-8') as file:
data = file.readlines()
data[3] = "mat fuel -10.1 vol 126.43 tmp "+temp_fuel+"
rgb 255 255 150 burn 1\n"
data[13] = "mat zirlo -6.56000E+00 vol 170.03 tmp
"+temp_zirlo+" rgb 200 200 200\n"
data[39] = "mat water -0.709 tmp "+temp_water+" moder lwtr
1001 rgb 0 200 255\n"
data[43] = "therm lwtr "+temp_water+" lwj3.11t lwj3.13t\n"
with
open('C:\\Users\\erikl\\AppData\\Local\\Packages\\CanonicalGroupLimited.Ubuntu
_79rhkp1fndgsc\\LocalState\\rootfs\\home\\eslago\\reactor\\pin', 'w',
encoding='utf-8') as file:
file.writelines(data)
i+=1
if __name__ == '__main__':
98
Bot.main()
janela = Tk()
janela.title("Acoplamento Neutrônico-Termohidráulico PPGMC")
janela.geometry("580x600")
janela.minsize(1366, 768)
janela.maxsize(1366, 768)
image=PhotoImage(file=".\\resources\\reator_ipwr.png")
image=image.subsample(1,1)
labelimage=Label(image=image)
labelimage.place(x=0,y=0, relwidth=1.0, relheight=1.0)
entrada = Entry(janela)
entrada.grid(column=0, row=2, padx=10, pady=10)
99
texto_orientacao4.grid(column=0, row=9, padx=10, pady=10)
janela.mainloop()
100
ANEXO V – Manual de utilização da GUI
101
Após digitar o número de iterações desejada, pode-se clicar no botão “Clique
aqui para iniciar a simulação”. Surgirá uma caixa de mensagem conforme a Figura
abaixo:
Após isso, outra caixa de mensagem surgirá, indicando que o usuário deve
buscar a ferramenta de execução da simulação neutrônica.
102
O usuário deve realizar a busca e selecionar o executável. Após isso, a
simulação neutrônica será inicializada com um aviso em tela informando o número
atual da iteração e status da simulação atual.
103
Ao final da simulação neutrônica, a janela do Ubuntu será fechada
automaticamente e uma caixa de mensagem surgirá solicitando ao usuário a
localização do arquivo resultado de potência .det0.m.
104
Nesse momento, a distribuição de potência irá surgir, apresentando-se em tela
de forma gráfica e em expressão.
105
Em seguida, a expressão de distribuição de potência é inserida no arquivo .cas
ou .cas.h5, ao qual abrirá uma janela no Notepad fazendo a substituição na devida
linha.
106
A janela do ANSYS é inicializada durante a execução da simulação
termohidráulica e ao final fechada de forma automática, realizando alteração no status
da simulação e surgimento das temperaturas em cada elemento do pin.
Dessa forma, inicializará uma nova iteração até chegar ao final da simulação
multifísica completa.
107