EngCruz commited on
Commit
f553444
1 Parent(s): eacef97

Upload 2 files

Browse files
bibliotecasnecessarias.txt ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ gradio
2
+ pandas
3
+ matplotlib
4
+ scipy
5
+ numpy
dinamica_dos_fluidos_rev2.py ADDED
@@ -0,0 +1,110 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import math
2
+ import pandas as pd
3
+ import matplotlib.pyplot as plt
4
+ import numpy as np
5
+ from scipy.optimize import fsolve
6
+ import gradio as gr
7
+
8
+ def mach_from_area_ratio(area_ratio, gama) -> float:
9
+ def equation(M):
10
+ return (1 / M) * ((2 / (gama + 1)) * (1 + (gama - 1) / 2 * M ** 2)) ** ((gama + 1) / (2 * (gama - 1))) - area_ratio
11
+ M_initial_guess = 1.3
12
+ M_solution, = fsolve(equation, M_initial_guess)
13
+ return M_solution
14
+
15
+ def calculate_and_plot(gama, R, p, T, rt, raio_garganta, raio_saida, v):
16
+ # Área da garganta e da saída
17
+ A_star = math.pi * raio_garganta ** 2
18
+ A_saida = math.pi * raio_saida ** 2
19
+
20
+ max_area_ratio = A_saida / A_star
21
+ area_ratios = list(np.linspace(1.0, max_area_ratio, num=50))
22
+
23
+ # Condições totais
24
+ Tt = T * (1 + ((gama - 1) / 2))
25
+ pt = p * (1 + (gama - 1) / 2) ** (gama / (gama - 1))
26
+
27
+ # Calculo da velocidade do som e Mach na entrada
28
+ a = math.sqrt(gama * R * T)
29
+ M1 = v / a
30
+
31
+ # Relações após onda de choque
32
+ P1 = p
33
+ P2 = P1 * ((gama + 1) / (2 * M1 ** 2)) / (1 + (gama - 1) / (2 * M1 ** 2))
34
+ T2 = T * (1 + (gama - 1) / (2 * M1 ** 2)) / (1 + (gama - 1) / 2)
35
+ ro2 = rt * (P2 / P1) ** (1 / gama)
36
+ v2 = math.sqrt(2 * R * (Tt - T2))
37
+
38
+ # Cálculo na seção divergente
39
+ mach_numbers = []
40
+ pressures = []
41
+ temperatures = []
42
+ densities = []
43
+ velocities = []
44
+
45
+ for area_ratio in area_ratios:
46
+ M = mach_from_area_ratio(area_ratio, gama)
47
+ T = Tt / (1 + (gama - 1) / 2 * M ** 2)
48
+ p = pt / (1 + (gama - 1) / 2 * M ** 2) ** (gama / (gama - 1))
49
+ rho = p / (R * T)
50
+ v = M * math.sqrt(gama * R * T)
51
+
52
+ mach_numbers.append(M)
53
+ pressures.append(p)
54
+ temperatures.append(T)
55
+ densities.append(rho)
56
+ velocities.append(v)
57
+
58
+ # Cria DataFrame para armazenar resultados na seção divergente
59
+ df_divergente = pd.DataFrame({
60
+ "Área Relativa (A/A*)": area_ratios,
61
+ "Mach": mach_numbers,
62
+ "Pressão (Pa)": pressures,
63
+ "Temperatura (K)": temperatures,
64
+ "Densidade (kg/m³)": densities,
65
+ "Velocidade (m/s)": velocities
66
+ })
67
+
68
+ # Plotando os resultados na seção divergente
69
+ fig, axs = plt.subplots(3, 2, figsize=(10, 12))
70
+ fig.suptitle("Parâmetros do Escoamento na Seção Divergente com Relação de Área")
71
+
72
+ parameters = ["Mach", "Pressão (Pa)", "Temperatura (K)", "Densidade (kg/m³)", "Velocidade (m/s)"]
73
+ for i, param in enumerate(parameters):
74
+ ax = axs[i // 2, i % 2]
75
+ ax.plot(df_divergente["Área Relativa (A/A*)"], df_divergente[param], label=param)
76
+ ax.set_xlabel("Área Relativa (A/A*)")
77
+ ax.set_ylabel(param)
78
+ ax.set_ylim(df_divergente[param].min() * 0.95, df_divergente[param].max() * 1.05)
79
+ ax.legend()
80
+
81
+ plt.tight_layout(rect=[0, 0.03, 1, 0.95])
82
+
83
+ return fig, P2, T2, ro2, v2
84
+
85
+ # Definir a interface do Gradio com as novas sintaxes de inputs e outputs
86
+ interface = gr.Interface(
87
+ fn=calculate_and_plot,
88
+ inputs=[
89
+ gr.Number(label="Gama"),
90
+ gr.Number(label="R (Constante do gás)"),
91
+ gr.Number(label="Pressão inicial (Pa)"),
92
+ gr.Number(label="Temperatura inicial (K)"),
93
+ gr.Number(label="Densidade inicial (kg/m³)"),
94
+ gr.Number(label="Raio da garganta (m)"),
95
+ gr.Number(label="Raio da saída (m)"),
96
+ gr.Number(label="Velocidade inicial (m/s)")
97
+ ],
98
+ outputs=[
99
+ gr.Plot(label="Gráficos dos Parâmetros na Seção Divergente"),
100
+ gr.Textbox(label="Pressão após a onda de choque (Pa)"),
101
+ gr.Textbox(label="Temperatura após a onda de choque (K)"),
102
+ gr.Textbox(label="Densidade após a onda de choque (kg/m³)"),
103
+ gr.Textbox(label="Velocidade na saída (m/s)")
104
+ ],
105
+ title="Análise de Escoamento em Tubeira",
106
+ description="Digite os valores dos parâmetros iniciais para calcular os parâmetros na seção divergente de uma tubeira padrão."
107
+ )
108
+
109
+ interface.launch()
110
+ interface.launch(share=True)