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

De MateWiki
Saltar a: navegación, buscar
Línea 126: Línea 126:
 
colorbar; % Barra de colores para el campo de presión  
 
colorbar; % Barra de colores para el campo de presión  
 
colormap(jet); % Colormap "jet" para el campo de presión  
 
colormap(jet); % Colormap "jet" para el campo de presión  
 +
</syntaxhighlight>
 +
 +
==.-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:
 +
<syntaxhighlight lang="matlab">
 +
% 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
 +
</syntaxhighlight>
 +
==.-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. También, en los puntos de un plano que corta la
 +
torre horizontalmente en correspondencia con el radio mínimo.
 +
<syntaxhighlight lang="matlab">
 +
% 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;
 
</syntaxhighlight>
 
</syntaxhighlight>

Revisión del 20:22 3 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]=.

2 .-Representación de la superficie parametrizada.

A continuación, vemos la representación de la superficie parametrizada ayundá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

3 .-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

4 .-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

5 .-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. También, 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) 
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;