Torres de enfriamiento hiperbólicas (Grupo 18)
| Trabajo realizado por estudiantes | |
|---|---|
| Título | Torres de enfriamiento hiperbólicas (Grupo 18) |
| Asignatura | Teoría de Campos |
| Curso | 2024-25 |
| Autores |
|
| Este artículo ha sido escrito por estudiantes como parte de su evaluación en la asignatura | |
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:
Para los siguientes datos, podemos suponer:
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:
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:
Además, la torre esta expuesta a unas fuerzas laterales, estas vienen descritas por la siguiente función:
Finalmente, el campo de temperaturas es representado como:
Contenido
- 1 .-Ecuación de la torre.
- 2 .-Ecuación de la torre como una superficie reglada.
- 3 .-Representación de la superficie parametrizada.
- 4 .-Representación del campo escalar de presiones.
- 5 .-Representación de la fuerza en la superficie de la mitad de la torre expuesta.
- 6 .-Representación del campo gradiente de temperatura.
- 7 .-Superficies isotermas.
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: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 3D4 .-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ón5 .-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ón6 .-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.
% 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