Diferencia entre revisiones de «Torres de enfriamiento hiperbólicas (Grupo 18)»

De MateWiki
Saltar a: navegación, buscar
Línea 327: Línea 327:
 
==.-Superficies isotermas.==
 
==.-Superficies isotermas.==
 
Una superficie isoterma, es aquella que tiene una temperatura constante en todos los puntos de la misma. Para visualizarlo, hemos tomado varias temperaturas para ver dichas superficies. Estas, vendrán acompañadas de su gradiente.
 
Una superficie isoterma, es aquella que tiene una temperatura constante en todos los puntos de la misma. Para visualizarlo, hemos tomado varias temperaturas para ver dichas superficies. Estas, vendrán acompañadas de su gradiente.
[[File:tercer_intento_isotermo.gif|right|300px|Superficies isotérmicas de la torre con gradientes de temperatura.]]
+
[[File:tercer_intento_isotermo.gif|right|600px|Animación de las superficies isotérmicas de la torre con gradientes de temperatura.]]
 
<syntaxhighlight lang="matlab">
 
<syntaxhighlight lang="matlab">
 
% Parámetros de la torre  
 
% Parámetros de la torre  

Revisión del 01:17 5 dic 2024


Trabajo realizado por estudiantes
Título Torres de enfriamiento hiperbólicas (Grupo 18)
Asignatura Teoría de Campos
Curso 2024-25
Autores
  • Héctor Mora Losana
  • Iván Rodríguez Lozano
  • Javier Araña García
  • Francisco Alonso Sánchez
  • Carlos Fernández Alonso
  • Javier Ruiz Sáenz de Jubera
Este artículo ha sido escrito por estudiantes como parte de su evaluación en la asignatura
Torres de enfriamiento hiperbólicas.

Las torres de enfriamiento hiperbólicas son estructuras icónicas en la ingeniería moderna, utilizadas principalmente en centrales termoeléctricas y nucleares para la disipación de calor residual. Estas torres, caracterizadas por su forma hiperbólica, no solo destacan por su eficiencia térmica, sino también por su diseño estructural optimizado, que combina funcionalidad y resistencia frente a las fuerzas externas como el viento.
Consideremos una torre de enfriamiento hiperbólica, caracterizada por su altura total H, su radio máximo en la base Rmax, y su radio mínimo Rmin alcanzado a [math]\dfrac{\scriptsize 2}{\scriptsize 3}[/math] de la altura H de la torre. La superficie de la torre sigue la forma de un hiperboloide hiperbólico con centro a la altura [math]\dfrac{\scriptsize 2}{\scriptsize 3}H[/math] , el cual, en coordenadas cartesianas, tiene la siguiente forma:

[math]\dfrac{x^2}{a^2} + \dfrac{y^2}{b^2} - \dfrac{(z - z_0)^2}{c^2} = 1[/math]

Para los siguientes datos, podemos suponer:

[math]Rmax=50m,\qquad Rmin=50m,\qquad H=120m[/math]

Uno de los factores a tener en cuenta, es el viento. Este, ejerce una presión lateral que varía en función de la altura. La velocidad escalar del viento la podemos describir con la siguiente función:

[math]V(z) = V_0 \left( \dfrac{z}{z_0} \right)^\alpha[/math]

Con base en esta velocidad del viento, la presión ejercida por el viento sobre la superficie de la torre puede expresarse de la siguiente manera:

[math]P(z) = \dfrac{1}{2} \rho V(z)^2[/math]

Además, la torre esta expuesta a unas fuerzas laterales, estas vienen descritas por la siguiente función:

[math]\vec{F}(x, y, z) = -P(z) \cdot \vec{n}[/math]

Finalmente, el campo de temperaturas es representado como:

[math]T(r, z) = T_{\text{base}} - \Delta T_z \left( \frac{z}{H} \right)^n - \Delta T_r \left( 1 - e^{-\frac{r^2}{R_{\text{max}}^2 - r^2}} \right)[/math]

1 .-Ecuación de la torre.

Para definir la torre es necesario hallar el valor de a, c y [math]z_{\text{0}}[/math]. Para ello pasamos la ecuación a coordenadas cilíndricas:
[math]\dfrac{\rho^2}{a^2} - \dfrac{(z - z_0)^2}{c^2} = 1[/math]
.

A continuación, hallamos los parámetros a, c y [math]z_{\text{0}}[/math]. Según el enunciado, obtenemos la coordenada del centro: [math]z_{\text{0}}[/math]=80m.
Para hallar el valor de [math]\mathbf{a}[/math] sustituimos en la ecuación. [math]\dfrac{20^2}{a^2} - \dfrac{(80 - 80)^2}{c^2} = 1[/math], obtenemos que [math]\mathbf{a}[/math]=20.
Tras sustituir de nuevo, hallamos el valor de [math]\mathbf{c}[/math]=34.17

2 .-Ecuación de la torre como una superficie reglada.

3 .-Representación de la superficie parametrizada.

A continuación, vemos la representación de la superficie parametrizada ayudándonos de los parámetros calculados anteriormente

% Parámetros de la torre  
a = 20; % Radio mínimo 
z0 = 80; % Centro del hiperboloide (a 2/3 de H) 
c = 34.17; % Valor de 'c' 
H = 120; % Altura total 

% Crear la malla para parametrizar la superficie 
u = linspace(0, 2*pi, 100); % Ángulo alrededor del eje z (resolución angular) 
v = linspace(0, H, 200); % Altura (resolución vertical) 
[U, V] = meshgrid(u, v); % Crear mallas 2D para u y v 

% Parametrización del hiperboloide 
X = a * cos(U) .* sqrt(1 + ((V - z0) / c).^2); 
Y = a * sin(U) .* sqrt(1 + ((V - z0) / c).^2); 
Z = V; 

% Representar la superficie 
figure; 
surf(X, Y, Z, 'EdgeColor', 'k', 'FaceColor', 'white', 'FaceAlpha', 0.9); % Color con malla 
hold on; 
xlabel('X (m)'); 
ylabel('Y (m)'); 
zlabel('Z (m)'); 
title('Superficie de la Torre de Enfriamiento'); 
axis equal; % Mantener proporciones 
grid on; % Mostrar cuadrícula 
view(3); % Vista en 3D

4 .-Representación del campo escalar de presiones.

Suponiendo que la torre está sujeta a un viento paralelo al vector [math]\vec{i} + \vec{j}[/math].

% Parámetros de la torre 
a = 20; % Radio mínimo 
z0_torre = 80; % Centro del hiperboloide (a 2/3 de H) 
c = 34.17; % Curvatura 
H = 120; % Altura total 
Rho = 1.225; % Densidad del aire (kg/m^3)
V0 = 15; % Velocidad del viento a z0 (m/s) 
z0_viento = 10; % Altura de referencia para el viento (m) 
alpha = 0.14; % Exponente del perfil del viento 
% Crear la malla para parametrizar la superficie 
u = linspace(0, 2*pi, 100); % Ángulo alrededor del eje z (resolución angular) 
v = linspace(0, H, 200); % Altura (resolución vertical) 
[U, V] = meshgrid(u, v); % Crear mallas 2D para u y v 
% Parametrización del hiperboloide 
X = a * cos(U) .* sqrt(1 + ((V - z0_torre) / c).^2); 
Y = a * sin(U) .* sqrt(1 + ((V - z0_torre) / c).^2); 
Z = V; 
% Derivadas parciales para calcular la normal 
dXdu = -a * sin(U) .* sqrt(1 + ((V - z0_torre) / c).^2); % Derivada respecto a u 
dYdu = a * cos(U) .* sqrt(1 + ((V - z0_torre) / c).^2); 
dZdu = 0; % Z no depende de u 
dXdv = (a * cos(U) .* ((V - z0_torre) / c.^2)) ./ sqrt(1 + ((V - z0_torre) / c).^2); % Derivada respecto a v 
dYdv = (a * sin(U) .* ((V - z0_torre) / c.^2)) ./ sqrt(1 + ((V - z0_torre) / c).^2); 
dZdv = 1; % Z depende linealmente de v 
% Producto cruzado para obtener la normal 
Nx = dYdu .* dZdv - dZdu .* dYdv; 
Ny = dZdu .* dXdv - dXdu .* dZdv; 
Nz = dXdu .* dYdv - dYdu .* dXdv; 
% Magnitud del vector normal para normalizar 
N_mag = sqrt(Nx.^2 + Ny.^2 + Nz.^2); 
Nx = Nx ./ N_mag;  
Ny = Ny ./ N_mag; 
Nz = Nz ./ N_mag; 
% Perfil del viento 
V_wind = V0 * (V / z0_viento).^alpha; 
% Presión del viento 
P_wind = 0.5 * Rho * V_wind.^2; 
% Fuerza lateral inducida por el viento 
Fx = -P_wind .* Nx; 
Fy = -P_wind .* Ny; 
Fz = -P_wind .* Nz; 
% Representar la torre con el campo de presión 
figure; 
surf(X, Y, Z, P_wind, 'EdgeColor', 'none'); % Campo de presión como mapa de colores 
hold on; 
quiver3(X(1:10:end, 1:10:end), Y(1:10:end, 1:10:end), Z(1:10:end, 1:10:end), ... 
Fx(1:10:end, 1:10:end), Fy(1:10:end, 1:10:end), Fz(1:10:end, 1:10:end), ... 
2, 'k'); % Representar las fuerzas 
xlabel('X (m)'); 
ylabel('Y (m)'); 
zlabel('Z (m)'); 
title('Presión y fuerzas inducidas por el viento sobre la torre'); 
axis equal; % Mantener proporciones 
grid on; 
view(3); % Vista en 3D 
colorbar; % Barra de colores para el campo de presión 
colormap(jet); % Colormap "jet" para el campo de presión

5 .-Representación de la fuerza en la superficie de la mitad de la torre expuesta.

Debido a la presión del viento, se genera una fuerza la cual actúa sobre la mitad de la torre expuesta. Aquí se muestra su representación:

% Parámetros de la torre
a=20; % Radio mínimo
z0_torre=80; % Centro del hiperboloide (a 2/3 de H)
c=34.17; % Curvatura
H=120; % Altura total
Rho=1.225; % Densidad del aire (kg/m^3)
V0=15; % Velocidad del viento a z0 (m/s)
z0_viento=10; % Altura de referencia para el viento (m)
alpha=0.14; % Exponente del perfil del viento

% Crear la malla para parametrizar la superficie
u=linspace(0,2*pi,100); % Ángulo alrededor del eje z (resolución angular)
v=linspace(0,H,200); % Altura (resolución vertical)
[U,V]=meshgrid(u,v); % Crear mallas 2D para u y v

% Parametrización del hiperboloide
X=a*cos(U).*sqrt(1+((V-z0_torre)/c).^2);
Y=a*sin(U).*sqrt(1+((V-z0_torre)/c).^2);
Z=V;

% Derivadas parciales para calcular la normal
dXdu=-a*sin(U).*sqrt(1+((V-z0_torre)/c).^2); % Derivada respecto a u
dYdu=a*cos(U).*sqrt(1+((V-z0_torre)/c).^2);
dZdu=0; % Z no depende de u
dXdv=(a*cos(U).*((V-z0_torre)/c.^2))./sqrt(1+((V-z0_torre)/c).^2); % Derivada respecto a v
dYdv=(a*sin(U).*((V-z0_torre)/c.^2))./sqrt(1+((V-z0_torre)/c).^2);
dZdv=1; % Z depende linealmente de v

% Producto cruzado para obtener la normal
Nx=dYdu.*dZdv-dZdu.*dYdv;
Ny=dZdu.*dXdv-dXdu.*dZdv;
Nz=dXdu.*dYdv-dYdu.*dXdv;

% Magnitud del vector normal para normalizar
N_mag=sqrt(Nx.^2+Ny.^2+Nz.^2);
Nx=Nx./N_mag;
Ny=Ny./N_mag;
Nz=Nz./N_mag;

% Perfil del viento
V_wind=V0*(V/z0_viento).^alpha;

% Presión del viento
P_wind=0.5*Rho*V_wind.^2;

% Fuerza lateral inducida por el viento
Fx=-P_wind.*Nx;
Fy=-P_wind.*Ny;
Fz=-P_wind.*Nz;

% Filtrar puntos para la mitad expuesta (X > 0)
mask=X>0; % Máscara para filtrar la mitad expuesta
X_half=X.*mask;
Y_half=Y.*mask;
Z_half=Z.*mask;
Fx_half=Fx.*mask;
Fy_half=Fy.*mask;
Fz_half=Fz.*mask;

% Representar la torre con el campo vectorial sobre la superficie
figure;
surf(X,Y,Z,P_wind,'EdgeColor','none'); % Campo de presión como mapa de colores
hold on;
% Representar fuerzas sobre la superficie
quiver3(X_half(1:10:end,1:10:end),Y_half(1:10:end,1:10:end),Z_half(1:10:end,1:10:end),...
Fx_half(1:10:end,1:10:end),Fy_half(1:10:end,1:10:end),Fz_half(1:10:end,1:10:end),...
2,'k'); % Flechas representando fuerzas
xlabel('X (m)');
ylabel('Y (m)');
zlabel('Z (m)');
title('Campo vectorial de fuerzas en la mitad expuesta de la torre');
axis equal; % Mantener proporciones
grid on;
view(3); % Vista en 3D
colorbar; % Barra de colores para el campo de presión
colormap(jet); % Colormap "jet" para el campo de presión

6 .-Representación del campo gradiente de temperatura.

Consiste en la representación del campo del gradiente de temperatura en los puntos de un plano que corta la torre verticalmente pasando por el eje de simetría. Además, la animación muestra la temperatura en varios planos paralelos al suelo.

% Parámetros 
a = 20; % Semi-eje en x e y (m) 
c = 34.17; % Semi-eje en z (m) 
z0 = 80; % Centro del hiperboloide (altura) 
H = 120; % Altura total de la torre (m) 
Rmax = 50; % Radio máximo (m) 
Tbase = 70; % Temperatura en la base (°C) 
Ttop = 25; % Temperatura en la parte superior (°C) 
DeltaTz = Tbase - Ttop; 
DeltaTr = 5; % Variación máxima radial (°C) 
n = 1.5; % Exponente de convección 
% Malla para el hiperboloide 
theta = linspace(0, 2*pi, 50); % Ángulo alrededor del eje z 
z = linspace(0, H, 50); % Coordenada vertical 
% Iniciar figura 
figure; 
for i = 1:length(z) 
% Altura de la capa actual 
zi = z(i); 
% Radio en esta altura 
r = sqrt((1 + (zi - z0)^2 / c^2) * a^2); 
% Coordenadas de la capa 
x = r * cos(theta); 
y = r * sin(theta); 
z_layer = zi * ones(size(x)); 
% Temperatura en esta capa 
T_layer = Tbase - DeltaTz * (zi / H)^n - DeltaTr * (1 - exp(-r^2 / (Rmax^2 - r^2))); 
% Dibujar la capa 
fill3(x, y, z_layer, T_layer, 'EdgeColor', 'none'); % Colores según la temperatura 
hold on; 
% Configuración gráfica 
colormap('jet'); 
colorbar; 
caxis([Ttop, Tbase]); % Escala de colores 
xlabel('x (m)'); 
ylabel('y (m)'); 
zlabel('z (m)'); 
title('Construcción del hiperboloide con el campo de temperatura'); 
xlim([-Rmax, Rmax]); 
ylim([-Rmax, Rmax]); 
zlim([0, H]); 
view(3); 
pause(0.1); 
end 
hold off;

La siguiente figura muestra la representación el campo del gradiente de temperatura en los puntos de un plano que corta la torre verticalmente pasando por el eje de simetría, así como en los puntos de un plano que corta la torre horizontalmente en correspondencia con el radio mínimo.

% Parámetros
a = 20; % Semi-eje en x e y (m) 
c = 34.17; % Semi-eje en z (m) 
z0 = 80; % Centro del hiperboloide (altura) 
H = 120; % Altura total de la torre (m) 
Rmax = 50; % Radio máximo (m) 
Rmin = 10; % Radio interno mínimo (m) 
Tbase = 70; % Temperatura en la base (°C) 
Ttop = 25; % Temperatura en la parte superior (°C) 
DeltaTz = Tbase - Ttop; 
DeltaTr = 5; % Variación máxima radial (°C) 
n = 1.5; % Exponente de convección 
% Malla para el hiperboloide 
theta = linspace(0, 2*pi, 50); % Ángulo alrededor del eje z 
z = linspace(0, H, 50); % Coordenada vertical 
% Iniciar figura 
figure; 
for i = 1:length(z) 
% Altura de la capa actual 
zi = z(i); 
% Radios en esta altura 
r_ext = sqrt((1 + (zi - z0)^2 / c^2) * a^2); % Radio externo 
r_int = max(Rmin, r_ext - 5); % Radio interno (manteniendo hueco mínimo) 
% Coordenadas de la superficie externa 
x_ext = r_ext * cos(theta); 
y_ext = r_ext * sin(theta); 
z_ext = zi * ones(size(x_ext)); 
% Coordenadas de la superficie interna 
x_int = r_int * cos(theta); 
y_int = r_int * sin(theta);
z_int = zi * ones(size(x_int)); 
% Temperatura en esta capa 
T_layer = Tbase - DeltaTz * (zi / H)^n - DeltaTr * (1 - exp(-r_ext^2 / (Rmax^2 - r_ext^2))); 
% Representar la capa externa 
fill3(x_ext, y_ext, z_ext, T_layer, 'EdgeColor', 'none'); % Superficie externa 
hold on; 
% Representar la capa interna 
fill3(x_int, y_int, z_int, T_layer, 'EdgeColor', 'none'); % Superficie interna 
% Conexión entre superficies (laterales) 
for j = 1:length(theta) - 1 
patch([x_ext(j) x_ext(j+1) x_int(j+1) x_int(j)], ... 
[y_ext(j) y_ext(j+1) y_int(j+1) y_int(j)], ... 
[z_ext(j) z_ext(j+1) z_int(j+1) z_int(j)], ... 
T_layer, 'EdgeColor', 'none'); 
end 
% Configuración gráfica 
colormap('jet'); 
colorbar; 
caxis([Ttop, Tbase]); % Escala de colores 
xlabel('x (m)'); 
ylabel('y (m)'); 
zlabel('z (m)'); 
title('Construcción el hiperboloide hueco con el campo de temperatura'); 
xlim([-Rmax, Rmax]); 
ylim([-Rmax, Rmax]); 
zlim([0, H]); 
view(3); 
pause(0.1); 
end 
hold off;

7 .-Superficies isotermas.

Una superficie isoterma, es aquella que tiene una temperatura constante en todos los puntos de la misma. Para visualizarlo, hemos tomado varias temperaturas para ver dichas superficies. Estas, vendrán acompañadas de su gradiente. Animación de las superficies isotérmicas de la torre con gradientes de temperatura.

% Parámetros de la torre 
a = 20; % Semi-eje en x e y (m) 
c = 34.17; % Semi-eje en z (m) 
z0 = 80; % Centro del hiperboloide (altura) 
H = 120; % Altura total de la torre (m) 
Rmax = 50; % Radio máximo (m) 
Tbase = 70; % Temperatura en la base (°C) 
Ttop = 25; % Temperatura en la parte superior (°C)
DeltaTz = Tbase - Ttop; 
DeltaTr = 5; % Variación máxima radial (°C) 
n = 1.5; % Exponente de convección 
% Rango de temperaturas para las superficies isotérmicas 
T_isos = linspace(Ttop, Tbase, 6); % 6 niveles isotérmicos 
% Crear malla 3D para el hiperboloide 
theta = linspace(0, 2*pi, 50); % Ángulo 
z = linspace(0, H, 50); % Altura 
[Theta, Z] = meshgrid(theta, z); 
% Coordenadas de la superficie hiperboloide 
R = sqrt((1 + ((Z - z0).^2) / c^2) * a^2); % Radio en cada altura 
X = R .* cos(Theta); 
Y = R .* sin(Theta); 
% Calcular campo de temperatura 
T = Tbase - DeltaTz * (Z / H).^n - DeltaTr * (1 - exp(-R.^2 ./ (Rmax^2 - R.^2))); 
% Calcular gradientes de temperatura 
[Tx, Tz] = gradient(T, mean(diff(X(1,:))), mean(diff(Z(:,1)))); 
Ty = Tx; % Simetría en Theta 
% Iniciar figura 
figure; 
% Crear animación de superficies isotérmicas 
for i = 1:length(T_isos) 
% Seleccionar superficie isotérmica actual 
T_iso = T_isos(i); 
% Crear máscara lógica para identificar la superficie 
iso_mask = abs(T - T_iso) < 0.5; % Tolerancia de ±0.5°C 
% Filtrar puntos isotérmicos 
X_iso = X(iso_mask); 
Y_iso = Y(iso_mask); 
Z_iso = Z(iso_mask); 
T_iso_colors = T(iso_mask); 
% Graficar puntos de la superficie isotérmica 
scatter3(X_iso, Y_iso, Z_iso, 20, T_iso_colors, 'filled'); 
hold on; 
% Superponer gradiente de temperatura 
quiver3(X_iso, Y_iso, Z_iso, Tx(iso_mask), Ty(iso_mask), Tz(iso_mask), ... 
'k', 'AutoScaleFactor', 0.5); 
% Configuración gráfica 
colormap('jet'); 
colorbar; 
caxis([Ttop, Tbase]); % Escala de colores de temperatura 
xlabel('X (m)'); 
ylabel('Y (m)'); 
zlabel('Z (m)'); 
title(['Superficie isotérmica: T = ', num2str(T_iso), '°C']); 
xlim([-Rmax, Rmax]); 
ylim([-Rmax, Rmax]);
zlim([0, H]); 
view(3); 
grid on; 
% Pausa para animación 
pause(1); 
% Limpiar para el siguiente cuadro 
hold off; 
end